Portas de leitura AVR em si. Estudo do sistema de comando AVR Microcontroller

Introdução

Todas as portas de E / S (PVW) AVR Microcontroladores trabalham no princípio da gravação de leitura - gravação ao usá-las como portas de portas universais de E / S. Isso significa que mudar a direção da porta de E / S de uma linha de porta por comandos SBI e CBI ocorrerá sem alterações falsas na direção da parte de E / S de outras linhas de porta. Isso também se estende a alterar o nível lógico (se a linha da porta estiver configurada para a saída) ou para ativar / desativar resistores de pull-up (se a linha estiver configurada para entrar). Cada buffer de saída tem uma característica de controle simétrico com correntes de saída de alto fluxo e fluxo. O driver de saída tem uma capacidade de carga que permite controlar diretamente os indicadores LED. Alternativamente Resistor seletivo, o aperto para a potência da energia pode ser conectado a todas as linhas de porta, cuja resistência não depende da tensão de alimentação. Em todas as linhas PVV, os diodos de proteção são instalados conectados ao VCC e GERAL (GND), conforme mostrado na Figura 29. Uma lista detalhada de parâmetros PVV é dada na seção "Características elétricas".

Figura 29 - Diagrama de linha PVV equivalente

Links para registros e bits de registros em esta seção Dases em geral. Ao mesmo tempo, o símbolo "X" substitui o nome do PVV, e o símbolo "N" substitui o número de descarga PVV. No entanto, ao fazer um programa, você deve usar a forma exata de gravação. Por exemplo, portb3, o que significa que uma categoria de 3 porta B, neste documento é registrada como Portxn. Os endereços dos registros de E / S físico e a distribuição de suas descargas são mostradas na "descrição dos registros de porta de E / S".

Para cada porta de E / S na memória de E / S, três células são reservadas: uma sob o registro de dados - Portx, o outro para o registro de data de dados - DDRX e o terceiro sob o estado das entradas da porta - PINX. Uma célula que armazena os estados nos insumos das portas é apenas legível e os registros de dados e registros de dados têm acesso bidirecional. Além disso, definir o aperto SFIOR PUD PUD, reforçando os resistores que o registro do PUD desativa em todas as saídas de todas as portas.

Abaixo está uma descrição da porta de E / S para a Universal Digital I / O. A maioria das conclusões da porta suporta funções alternativas do dispositivos periféricos microcontrolador. Uma descrição alternativa do recurso é ainda fornecida na subseção "funções alternativas de porta" (veja também a descrição das funções dos módulos periféricos correspondentes).

Observe que, para algumas portas, a resolução de funções alternativas de algumas conclusões torna impossível usar outras saídas para a saída de entrada digital universal.

Portos como Universal Digital E / S

Todas as portas são portas de E / S bidirecionais com resistores de pull-up opcionais. A Figura 30 ilustra um diagrama de função de uma linha de porta de saída de entrada, indicada como PXN.


Figura 30 - Organização da Universal Digital I / O (1)

Aproximadamente. 1: WPX, WDX, RRX, RPX e Sinais RDX são comuns dentro de uma porta. Os sinais Clki / O, Sleep e Pud são comuns a todos os portos.

Configuração de conclusões

O modo e condição para cada saída são determinados pelo valor dos dígitos correspondentes de três registros: DDXN, Portxn e PINXN. Conforme mostrado na "descrição dos registros de porta de E / S", o acesso aos bits DDXN é possível no endereço DDX no espaço de E / S e, respectivamente, aos bits do portxn no endereço do Portx, e pinxn bits no PINX.

DDXN DDRX DdRx bits determinam a direção da linha de E / S. Se DDXN \u003d 1, o PXN estiver configurado para exibir. Se DDXN \u003d 0, o PXN estiver configurado para entrar.

Se Portxn \u003d 1 ao configurar a linha de porta para entrada, a conexão do resistor de aperto é permitida. Para desativar este resistor, você deve escrever para o log do portxn. 0 ou configure a linha da porta para a saída. Durante a redefinição, todas as linhas de porta estão no terceiro estado (altamente pressionado), mesmo que a sincronização não funcione.

Se portxn \u003d 1 ao configurar a linha da porta para a saída, o estado de saída será determinado pelo valor do portxn.

Como a entrada simultânea nos registros DDRX e Portx não é possível, então ao alternar entre o terceiro estado ((DDXN, Portxn) \u003d 0 b00) e a saída do log. 1 (((ddxn, portxn) \u003d 0b11) Um estado intermediário deve ocorrer ou com um resistor de aperto conectado ((DDXN, portxn) \u003d 0b01) ou com a saída do log. 0 ((ddxn, portxn) \u003d 0b10). Como regra, a transição por meio de um estado com a conexão do resistor pull-up é equivalente ao estado de saída do log.1, se a saída do microcontrolador estiver associada a uma entrada de alta impedância. Caso contrário, é necessário estabelecer o bit SFIOR PUD PUD \u200b\u200bpara desligar todos os resistores de aperto em todas as portas.

Mudando entre inserir resistores e saída nível baixo associado a um problema semelhante. Portanto, o usuário é forçado a usar ou terceiro estado ((ddxn, portxn) \u003d 0b00) ou log de saída. 1 ((ddxn, portxn) \u003d 0b11) como uma etapa intermediária.

A Tabela 25 resume a ação dos sinais de controle para o status de saída.

Tabela 25 - Definir a saída da porta

Ddxn. Portxn. Pud (em sfior) Saída de entrada Resistor de aperto Comente
0 0 X. Entrada Não
0 1 0 Entrada sim PXN será a fonte atual ao aplicar um nível externo
0 1 1 Entrada Não Terceiro Estado (Z-Estado)
1 0 X. Resultado Não Log de saída. 0 (corrente de fluxo)
1 1 X. Resultado Não Log de saída. 1 (corrente de fluxo)

Leia o status de saída

Independentemente do valor do arquivo de dados DDXN, o status da saída da porta pode ser entrevistado através do bit de registro PINXN. Como mostrado na Figura 30, o bit de registro PINXN e a trava do gatilho precedem é um sincronizador. Esta abordagem Permite que você evite a metastabilização se a alteração na saída ocorreu perto da frente da sincronização interna. No entanto, essa abordagem está associada à ocorrência do atraso. A Figura 31 apresenta um diagrama temporário de sincronização durante a pesquisa anexada externamente ao nível de saída. A duração dos atrasos mínimos e máximos na distribuição do sinal é indicado como TPD, Max e TPD, min, respectivamente.


Figura 31 - Sincronização durante a pesquisa do nível aplicada à saída

Nos exemplos a seguir, é mostrado como instalar nas linhas 0 e 1 da porta até o log. 1, e nas linhas 2 e 3 - log. 0, bem como configurar as linhas 4 ... 7 Para inserir com a conexão de resistores de aperto nas linhas 6 e 7. O status resultante das linhas é lido de volta, mas, levando em conta o acima, o NOP A declaração está habilitada para garantir a possibilidade de ler apenas o estado atribuído de algumas conclusões.

Código de amostra no montador (1) ...; Deixe-me puxar e instalar altos níveis de saída; Determinar as instruções dessas linhas de portas LDI R16, (1<

Aproximadamente. 1: O programa montador usa dois registros de tempo para minimizar o intervalo de tempo do ajuste de resistores pull-up em descargas 0, 1, 6 e 7 para a instalação correta da direção da direção da direção da direção, permitindo o log. 0 nas linhas 2 e 3 e substituindo um alto nível em descargas 0 e 1, formado ao conectar os resistores de aperto a um alto nível de um driver de alta corrente.

Resolução de Entrada Digital e Modos de Sono

Como mostrado na Figura 30, o sinal digital de entrada pode ser hospedado na entrada Total Schma Trigger. O sinal marcado na figura como o sono é definido quando o microcontrolador é traduzido para o modo de baixa, modo econômico, modo de serviço e modo avançado. Isso evita o aumento do consumo atual se alguns sinais de entrada estiverem em estado flutuante ou o nível do sinal analógico de entrada estará próximo do VCC / 2.

O sinal de sono é ignorado pelas entradas de interrupções externas. Se solicitações para interrupções externas estiverem desativadas, o SLEATE é válido para essas conclusões. O sono também é ignorado em alguns outros insumos ao executar suas funções alternativas (consulte "Funções de porta alternativas").

Se na saída de uma interrupção assíncrona externa, configurada para interromper a frente crescente, queda frontal ou qualquer alteração, há um nível de log. 1 e, ao mesmo tempo, a interrupção externa não é permitida, o sinalizador correspondente da interrupção externa será definido na saída dos modos de sono acima mencionados, porque A função de shunt de entrada nos modos de sono resulta em alterações lógicas.

Conclusões não conectadas

Se várias conclusões permanecerem não utilizadas, recomenda-se garantir a presença de um nível lógico específico. Apesar do fato de que a maioria das entradas digitais estiver desabilitada em modos de sono profundos, conforme descrito acima, é necessário evitar que as entradas flutuantes para evitar o aumento do consumo de corrente em todos os outros modos do microcontrolador, onde a entrada digital é permitida (reset, modo ativo e modo ocioso).

O método mais simples de garantir a presença de um certo nível em uma produção não utilizada é resolver a conexão do resistor de aperto interno. No entanto, neste caso, no modo de reset, os resistores de pull-up serão desativados. Se o baixo consumo for necessário e, no modo de reinicialização, é necessário instalar um resistor de aperto externo a uma potência Plus ou menos. As saídas de conexão diretamente ao VCC ou GND não são recomendadas, porque Pode haver uma corrente perigosa com uma configuração aleatória de tal saída na saída de dados.

As operações bitched são baseadas em operações lógicas que já consideramos anteriormente. Eles desempenham um papel fundamental na programação de microcontroladores AVR e outros tipos. Quase nenhum custo custa sem o uso de operações batidas. Antes disso, os evitamos intencionalmente para facilitar o processo de estudar a programação de MK.

Em todos os artigos anteriores, nós programamos apenas portas de E / S A e não usamos nós adicionais incorporados, por exemplo, como temporizadores, conversores analógicos-digitais, interrupções e outros dispositivos internos sem os quais MK perde toda a sua potência.

Antes de prosseguir com o desenvolvimento dos dispositivos MK integrados, você deve aprender como gerenciar ou verificar os bits individuais dos registros do AVR MK. Anteriormente, realizamos uma verificação ou definimos as descargas de uma só vez. Vamos lidar com o que é a diferença e depois continua mais longe.

Operações de engarrafamento

Na maioria das vezes, ao programar os microcontroladores AVR, usamos porque tem uma maior visibilidade comparada e bem clara para os programadores iniciantes MK. Por exemplo, precisamos instalar apenas o 3º bit da porta D. Para isso, como já sabemos, você pode usar o seguinte código binário:

PORT \u003d 0B00001000;

No entanto, definimos a 3ª categoria por esta equipe, e todos os outros (0, 1, 2, 4, 5, 6 e 7) descartamos em zero. E agora vamos apresentar a situação que a 6ª e a 7ª descarga estão envolvidas como as entradas do ADC e, neste momento, para as conclusões correspondentes do MK recebem um sinal de qualquer dispositivo, e aplicamos ao comando acima, redefinir esses sinais. Como resultado, o microcontrolador não os vê e acredita que os sinais não vieram. Portanto, em vez de tal equipe, devemos aplicar outro, o que teria instalado apenas 3 bits por unidade, sem afetar os outros bits. Para isso, a seguinte operação batida é geralmente aplicada:

Portde | \u003d (1<<3);

A sintaxe que descreveremos em detalhes abaixo. E agora mais um exemplo. Suponha que precisemos verificar o status da 3ª descarga do registro do PIND, verificando assim o estado do botão. Se esta descarga for redefinida para zero, sabemos que o botão é pressionado e, em seguida, o código de comando é executado que corresponde à condição do botão pressionado. Nós usamos anteriormente a seguinte entrada:

if (pind \u003d\u003d 0b00000000)

(qualquer código)

No entanto, com a ajuda, não verificamos separados, - 3º e imediatamente todos os bits do registro do PIND. Portanto, mesmo se o botão for pressionado e a descarga desejada for redefinida, mas neste momento o sinal receberá um sinal para qualquer outra saída da porta D, a vida correspondente será instalada em uma, e a condição entre parênteses será falso. Como resultado, o código localizado em suportes encaracolados não será executado mesmo quando o botão for pressionado. Portanto, para verificar o estado do terceiro bit individual do registro do PIND, uma operação em lote deve ser aplicada:

se (~ PIND & (1<<3))

(qualquer código)

Para trabalhar com bits separados do microcontrolador no arsenal de programação C, há com o qual você pode alterar ou verificar o status de um ou mais bit individuais imediatamente.

Instalando um bit separado

Para instalar um bit separado, por exemplo, a porta D, uma operação dobrada é aplicada ou. Foi ela que usamos no início do artigo.

PORT \u003d 0B00011100; // significado inicial

PORTD \u003d PORTD | (1<<0); применяем побитовую ИЛИ

Portde | \u003d (1<<0); // сокращенная форма записи

PORTD \u003d\u003d 0B00011101; // Result.

Este comando executa a instalação de uma descarga zero e as restantes folhas inalteradas.

Por exemplo, instale outra 6ª categoria de porta D.

PORT \u003d 0B00011100; // o estado inicial da porta

Portde | \u003d (1<<6); //

PORTD \u003d\u003d 0B01011100; // Result.

Para gravar uma unidade imediatamente em vários bits separados, como zero, sexto e sétimo porto B. A próxima entrada se aplica.

Portal \u003d 0b00011100; // significado inicial

Portal | \u003d (1<<0) | (1<<6) | (1<<7); //

Portal \u003d\u003d 0B1011101; // Result.

Reset (reset) bits individuais

Para redefinir um bit separado, três comandos anteriormente revisados \u200b\u200bsão aplicados: .

Vamos redefinir a 3ª categoria do registro do portc e deixar inalterado o resto.

Portc \u003d 0b00011100;

Portc & \u003d ~ (1<<3);

Portc \u003d\u003d 0b00010100;

Realizar ações semelhantes para as 2 e 4ª categorias:

Portc \u003d 0b00111110;

Portc & \u003d ~ ((1<<2) | (1<<4));

Portc \u003d\u003d 0b00101010;

Comutação de bits

Além da instalação e redefinição, também é usado um comando útil, que muda um bit separado para o estado oposto: um em zero e vice-versa. Esta operação lógica é amplamente utilizada na construção de vários efeitos de iluminação, por exemplo, como a Garland de Ano Novo. Considere o exemplo do Porta

Porta \u003d 0b00011111;

Porta ^ \u003d (1<<2);

Porta \u003d\u003d 0b00011011;

Altere o estado de zero, segundo e sexto bits:

Porta \u003d 0b00011111;

Porta ^ \u003d (1<<0) | (1<<2) | (1<<6);

Porta \u003d\u003d 0b01011010;

Verifique o estado de um bit separado. Deixe-me lembrá-lo de que a inspeção (ao contrário da gravação) da porta de E / S é realizada ao ler dados do registro do PIN.

Na maioria das vezes, o cheque é realizado por um dos dois operadores de ciclo: se e enquanto. Já estamos familiarizados com esses operadores.

Verificando a descarga para a presença de zero lógico (reset) com e se

if (0 \u003d\u003d (PIND & (1<<3)))

Se o terceiro dígito da porta D for redefinido, o código 1 será executado. Caso contrário, o Código2 é executado.

Ações semelhantes são realizadas com essa forma de gravação:

se (~ PIND & (1<<3))

Verifique a descarga para a presença de uma unidade lógica (instalação) com e se

se (0! \u003d (PIND & (1<<3)))

iF (PIND & (1<<3))

Os dois ciclos acima funcionam de forma semelhante, mas podem, devido à flexibilidade da linguagem de programação C, têm uma forma diferente de gravação. Operação! \u003d Indica não é igual. Se a terceira descarga da porta PD I / O estiver definida (unidade), ele será executado code1, se não - code2.

Esperando por um pedaço com enquanto

enquanto (PIND & (1<<5))

O Código1 será executado enquanto a 5ª categoria de registro do PIND estiver definida. Ao redefinir, o código 2 será executado.

Esperando pela instalação de batalha com enquanto

Aqui, a sintaxe da linguagem C permite escrever código com duas maneiras mais comuns. Na prática, ambos os tipos de gravação são aplicados.

Um dos aspectos mais importantes da programação do microcontrolador é trabalhar com registros e portas. Os microcontroladores da série AVR têm vários registros de E / S e 32 registros de uso geral. O programador não pode gravar diretamente um número para um registro de entrada / saída. Em vez disso, ele deve escrever um número para um registro de uso geral e copiar o valor desse registro para o registro de E / S. Os registros de trabalho são indicados como R1, R2, ..., R31.

Para simplificar os programas de redação, é muito conveniente dar aos registros de nome. É aconselhável dar nomes correspondentes a informações armazenadas. Por exemplo, se o registro R16 for usado para armazenar informações temporárias, ela pode ser chamada de temp. Isto se faz do seguinte modo:

Para não "ligar" os registros de E / S e os principais registros do microcontrolador, é suficiente no início do programa para conectar o arquivo de cabeçalho que se aplica ao microcontrolador usado. Aqueles. Não terá que dar nomes de portos de portos, temporizadores / contadores, etc. Por exemplo, se o programa for projetado para o microcontrolador AT90S8515:

Incluem "8515def.inc"

Para o microcontrolador AT90S1200, o primeiro microcontrolador AVR, os registros de entrada / saída têm números de US $ 0 a $ 3F (depende do modelo MK). Separadamente, você pode selecionar os registros de E / S de portal, PINB, PORTD, PIND (eles têm notação alfabética após conectar 1200Def.inc, e seus endereços US $ 18, US $ 16, US $ 12, US $ 10 - concordam muito difícil manter as constantes digitais na minha cabeça, nomes de letras mais fáceis). As últimas portas de Microcontroladores AVR são muito maiores, são chamadas A, B, C, D, E ...

Considere a localização das descobertas do popular microcontrolador atty2313. As pernas 2-9, 11 com os nomes PD0 - PD7 são portas, de forma semelhante à porta B. Por favor, note que a porta B é um a oito bits, e a porta D é sete.

As portas podem funcionar como entradas e como saídas. Se a porta funcionar como uma entrada, para contar os valores, você precisará acessar o registro PINB ou PIND - dependendo de qual porta é lida. Se alguns pinheiros são níveis altos correspondentes ao log. "1", então os bits correspondentes nos valores de leitura serão instalados em "1". Conclusões são capazes de resistir a uma corrente até 20 mA, mas não vale a pena esquecer a corrente total de todas as portas da porta. Existem limitações. Se a porta estiver em saída, os valores nas linhas de porta serão instalados registrando o valor correspondente para o registro de porta de porta ou porta. Para estabelecer um log. "1" na saída da porta, o bit correspondente no registro de porta ou portde deve ser instalado.

O ponto de trabalho mais importante com a porta é trabalhar com o registro de trava responsável pela operação das linhas de porta para a entrada ou saída. O nome deste registro DDRX, onde x é a letra da porta. Para fazer as pernas, devemos escrever para os bits correspondentes "1". Por exemplo, queremos fazer o porto PB7 da porta na entrada, e as pernas restantes saídas, então, para isso, você precisa gravar no valor de registro DDRB 0b01111111. Prefixo 0b significa que o número é gravado em forma binária. Ao iniciar, os registros DDRX são redefinidos, ou seja, Todas as pernas são insumos. Pernas não utilizadas recomendadas no dispositivo para fazer insumos.

Considere um programa simples que trabalha com um porto de um microcontrolador:

Incluem "8515def.inc"; Conecte o arquivo com as descrições do registro .DEF Temp \u003d R16 RJMP redefinir; Vector de transição quando redefinição reset: ldi temp, 0b00000011; Determinar PC0 e PC1 como DDRC, Temp LDI Temp, 0B00000001; Nós acendemos o LED na perna PC0 OUT Portc, Temp em Temp, Pinc; Leia os níveis do porto c ... Loop :; Ciclo principal nop rjmp loop

Pedaço

Leitura / escrita

Valor inicial

· Bit 7 - Permissão de todas as interrupções. Para resolver interrupções, este bit deve ser definido como 1. A resolução de uma interrupção específica é realizada pelo registro de interrupções EIMSK e TIMSK. Se este bit for apagado (\u003d 0), nenhuma das interrupções será processada. O hardware bit é apagado após a ocorrência da interrupção e é instalada para a resolução subseqüente de interrupção pelo comando RETI.
· Bit 6 - Copiar bit de conservação. Os comandos de cópia do BLDO e BST BITS usam esse bit como fonte e receptor durante as batalhas. O bit de comando BST do objetivo geral é copiado para bit t, o bit de comando bld é copiado para os bits de registro de uso geral.
· Bit 5 - Bandeira de semi-mannenos. Indica a transferência entre o Tetrad ao realizar uma série de operações aritméticas.
· Bit 4 - sinal do sinal. O bits tem o valor do resultado de uma operação excluindo ou (n (+) v) acima das bandeiras do valor negativo (n) e acréscimos à bandeira de dois transbordamento (v).

· Bit 3 - além de duas bandeira de transbordamento. Suporta a aritmética das adições a dois.
· Bit 2 - bandeira de valor negativo. Esta bandeira indica um resultado negativo de várias operações aritméticas e lógicas.
· Bit 1 - bandeira de valor zero. Esta bandeira indica um resultado zero de várias operações aritméticas e lógicas.
· Bit 0 - bandeira de transferência. Esta bandeira indica a transferência de operações aritméticas e lógicas.

O microcontrolador AT90S8535 tem 4 portas de E / S paralelas A, B, C e D.
Port A é uma porta bidirecional de 8 bits. A interação com a porta A é realizada através de três registros no espaço de entrada / saída de dados: registro de dados - Porta, $ 1B ($ 3B), registro de direção de dados - DDRA, $ 1A ($ 3A), registro de dados de entrada - Pina, US $ 19 (US $ 39). O registro Pina fornece apenas a possibilidade de leitura, e os registros da Porta e DDRA são a possibilidade de ler e escrever. O registro de pina não é um registro no sentido total da palavra. Recurso para assegurar a leitura do estado físico de cada saída da porta. A porta A também serve para inserir sinais A / D analógicos.

Porta Data Register A -Porta.

Pedaço

Leitura / escrita

Valor inicial

Registre-se de dados de dados portuários A -Ddra.

Pedaço

Leitura / escrita

Valor inicial

Porto a -Pina.

Pedaço

Leitura / escrita

Valor inicial

Porta B é uma porta de E / S bidirecional de 8 bits. Bem como a porta e a interação com o porto são realizados através de três registros no espaço de entrada / saída de dados: registro de dados - Portal, US $ 18 (US $ 38), registro de direção de dados - DDRB, US $ 17 (US $ 37) e Registo de entrada - PINB, US $ 16 (US $ 36). O registro PINB fornece apenas leitura. O registro de PINB não é um registro no sentido total da palavra. Recurso para assegurar a leitura do estado físico de cada saída da porta. As fotos da porta podem realizar funções alternativas indicadas na tabela. 2.1.

Tabela 2.1. Funções alternativas de descobertas portuárias em

Saída de porta

Recurso alternativo

T0 - Timer / Timer / Contador de Cauda Entrada 0

T1 - entrada do relógio / metro 1

AIN0 - Conclusão do comparador positivo

AIN1 - Conclusão do comparador negativo

- Seleção de login SPI

Mosi - Instalação Líder Saída / Speed \u200b\u200bSPI Entrada

MISO - Instalação Login Login / Saída de Velocidade SPI

SCK - sinal de relógio SPI

Ao usar conclusões para funções alternativas, os registros do porta, DDRB devem ser instalados de acordo.

Registro de dados portuários.B.Porta.

Pedaço

Leitura / escrita

Valor inicial

Registro de Direcionar Dados da porta B -Ddrb.

Pedaço

Leitura / escrita

Valor inicial

Registro de dados de entrada B -PINB.

Pedaço

Leitura / escrita

Valor inicial

A porta C é uma porta de E / S de bidirecional de 8 bits. Além disso, como as portas A e em interação com a porta C são realizadas através de três registros na memória / saída / saída de dados / saída: registro de dados - Portc, US $ 15 (US $ 35), registro de direção de dados - DDRC, $ 14 ($ 14 34) e registro de dados de entrada - PINC, US $ 13 (US $ 33). O registro de pincas fornece apenas a possibilidade de leitura, e os registros do Porc e DDRC são a possibilidade de ler e escrever. O registro de pincas não é um registro no sentido total da palavra. Recurso para assegurar a leitura do estado físico de cada saída da porta.
Na porta com apenas duas saídas podem realizar funções alternativas: conclusões PC6 e PC7 executam as funções do TSC1 e TIMER TIMER / Counter 2.

Registro de dados portuários.C.Porc.

Pedaço

Leitura / escrita

Valor inicial

Registro de Dados da porta Diretora C -DDRC.

Pedaço

Leitura / escrita

Valor inicial

Registro de dados de entrada c -PINC.

Pedaço

Leitura / escrita

Valor inicial

Porta D é uma porta de E / S de bidirecional de 8 bits. Além disso, como nos portos A, B e com interação com a porta D, através de três registros no espaço de entrada / saída de dados: registro de dados - PORDD, US $ 12 (US $ 32), registro de direção de dados - DDRD, US $ 11 (US $ 31) e registro de entrada - PIND, US $ 10 (US $ 30). O registro de Pind fornece que os registros de leitura e DDR e DDRD estão lendo e escrevendo. Registro de Pind não é um registro no sentido total da palavra. Recurso para assegurar a leitura do estado físico de cada saída da porta.
As conclusões da porta D podem executar funções alternativas especificadas na tabela. 2.2.

Tabela 2.2. Funções alternativas de conclusões portuárias d

Saída de porta

Recurso alternativo

RXD - entrada do receptor de UART

TXD - Saída do Transmissor UART

INT0 - entrada de interrupção externa 0

Int1 - entrada de interrupção ao ar livre 1

OC1B - comparação de saída do temporizador / contador 1

OC1A - comparação e temporizador / contador 1

ICP - Timer Capture Trigger Entrada 1

OC2 - Timer / Contador de Saída de Saída Saída 2

Ao usar saídas para funções alternativas, os registros DDRD, DDRD devem ser instalados de acordo.

Registro de dados portuários.D.Porta.

Pedaço

Leitura / escrita

Valor inicial

Registro de dados portuáriosD.Ddrd.

Pedaço

Leitura / escrita

Valor inicial

Registro de entrada da porta.D.PIND.

Pedaço

Leitura / escrita

Valor inicial

Como a primeira consideração é a primeira, então todos os alunos primeiro fazem o mesmo trabalho para a aquisição de habilidades estudantis para trabalhar com o complexo laboratorial. De seus empregos, eles são introduzidos no PEVM o mesmo problema de subtração entre os 5º 3, mostrados no parágrafo 1.5.3.1. Depois de compilar o programa, é escrito para o microcontrolador no local de trabalho e seu trabalho é demonstrado pelo professor.
Após um conhecido com o complexo, o aluno começa a realizar uma tarefa individual. Na presença de tempo, o professor pode complicar a tarefa individual.