sexta-feira, 2 de julho de 2010

Introdução ao I / O Registos - Parte 1


Este tutorial vai te ensinar como usar a portas I / O em um microcontrolador AVR. Eu vou estar usando um ATmega8 mas os princípios gerais aplicáveis a qualquer microcontrolador AVR.

Introdução

O ATmega8 possui 23 portas de I / O, que são organizados em três grupos:
  • Port B (PB0 para PB7)
  • Port C (PC0 a PC6)
  • Port D (PD0 para FD7)

Estes são mostrados no diagrama de pinagem abaixo.

Image

Todos os pinos de I / O têm funções secundárias. Estes são mostrados em parênteses no diagrama de pinagem.

PC6 é quase sempre utilizado como um pino de reset e normalmente não está disponível para I / O. PB6 PB7 e são frequentemente utilizados para osciladores de cristal externo, mas não neste tutorial.

Port Registos

Os seguintes registos são usados para leitura e escrita para a portas I / O.

RegistrarTipoDescriçãoNotas
DDRBRead / WritePort B Direção dados Cadastre-se1 = saída, 0 = input
PORTBRead / WriteData Port B Registre-se
PINBSomente leituraPort B Registro de Entrada
DDRCRead / WritePort C Direção dados Cadastre-se1 = saída, 0 = input
PORTCRead / WriteData Port C Registar
PINCSomente leituraPort C Registo de Entrada
DDRDRead / WritePort D Direção dados Cadastre-se1 = saída, 0 = input
PORTDRead / WriteData Port D Registre-se
PindSomente leituraRegistre-se Port D Input

Cada um destes registos são de 8 bits, com cada bit (com exceção do bit 7 do registo Port C), correspondentes a um único pino.

Para os exemplos de código que estará usando literais binário. Considere o seguinte bloco de código.

Código:
PORTD = 0b11110001;
PORTD = 0xF1;
PORTD = 241;

Cada linha está fazendo a mesma coisa. Em cada caso, um valor literal está sendo atribuído à PORTD. No primeiro caso, o valor está sendo expresso em binário, no segundo ele está sendo expresso em hexadecimal e, em último caso está sendo expresso em decimal.

O bit mais à direita (bit menos significativo) representa o pino 0 da porta D (PD0), enquanto o bit mais à esquerda (bit mais significativo) representa o pino 7.

Saída

Vamos começar por construir um circuito com 8 LEDs ligados aos pinos da porta D.

Image

Image