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.
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.
Registrar | Tipo | Descrição | Notas | ||||||
---|---|---|---|---|---|---|---|---|---|
DDRB | Read / Write | Port B Direção dados Cadastre-se | 1 = saída, 0 = input | ||||||
PORTB | Read / Write | Data Port B Registre-se | |||||||
PINB | Somente leitura | Port B Registro de Entrada | |||||||
DDRC | Read / Write | Port C Direção dados Cadastre-se | 1 = saída, 0 = input | ||||||
PORTC | Read / Write | Data Port C Registar | |||||||
PINC | Somente leitura | Port C Registo de Entrada | |||||||
DDRD | Read / Write | Port D Direção dados Cadastre-se | 1 = saída, 0 = input | ||||||
PORTD | Read / Write | Data Port D Registre-se | |||||||
Pind | Somente leitura | Registre-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;
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.