Академический Документы
Профессиональный Документы
Культура Документы
c|k
=
Freq. de re|g|u unte
129-d
A Au ul la as s S Si is st te em ma as s D Di ig gi it ta ai is s 2 2 2 20 01 12 2/ /2 20 01 13 3
ATmega 128 Pgina 14
P Po or rt to o d de e I I/ /O O ( (r re ep pr re es se en nt ta ad do o u um m n ni ic co o b bi it t d de e u um m p po or rt to o) )
1 Registo de direo de dados do porto de E/S (DDRx). Para cada um dos bits do porto, a
escrita de um 0 neste registo programa o porto com entrada de dados. A escrita de um 1
programa o bit do porto como sada de dados.
2 Registo de sada de dados do porto de E/S (PORTx). Se o bit do porto estiver
programado como sada de dados, a escrita de um 0 ou um 1 neste registo faz com que
esse valor aparea no pino de sada (5). Se o bit estiver programado como entrada de dados, a
escrita de um 0 desactiva o pull-up interno, a escrita de um 1 activa o pull-up interno.
3 Registo de entrada de dados do porto de E/S (PINx). Se o bit do porto estiver
programado como entrada, os valores presentes no pino exterior (5) podem ser lidos para o
registo PINx.
4 Resistncia de pull-up interna. No caso do bit do porto estar programado como entrada
de dados, podemos optar por inserir esta resistncia de pull-up caso o dispositivo exterior no
consiga definir o valor lgico 1.
5 Pino exterior para entrada / sada de dados.
A Au ul la as s S Si is st te em ma as s D Di ig gi it ta ai is s 2 2 2 20 01 12 2/ /2 20 01 13 3
ATmega 128 Pgina 15
Registos dos Portos (Porto A)
Registo Especial de IO
PUD Pull Up Disable. O valor 1 escrito neste bit desactiva todos os pull up
internos dos diferentes portos do ATmega128
Exemplo 1
Programar o Porto A como entrada de dados, activando os pull-ups internos
Linguagem Assembly Linguagem C
clr r16 ; escreve 0s em DDRA para DDRA = 0;
out DDRA ; programar o porto como entrada
ser r16 ; escreve 1s em PORTA para PORTA = 0xFF;
out PORTA ; activar os pull-ups internos
A Au ul la as s S Si is st te em ma as s D Di ig gi it ta ai is s 2 2 2 20 01 12 2/ /2 20 01 13 3
ATmega 128 Pgina 16
Exemplo 2
Programar o Porto C como sada de dados e inicializ-lo com o valor 8(0b00001000)
Linguagem Assembly Linguagem C
ldi r16,0b00001000 ; escreve 8 em PORTC PORTA = 0b00001000;
out PORTC ; programar o porto como sada
ser r16 ; escreve 1s em DDRC para DDRA = 0xFF;
out DDRC ; programar o porto como sada
Exemplo 3
Programar os 6 bits sig do Porto A como entrada de dados e os 2 bits +sig como sada de dados.
Desactivar os pull-ups internos das entradas e inicializar os bits de sada com 11
Linguagem Assembly Linguagem C
ldi r16,0xC0 ; programa o DDRA DDRA = 0xC0;
out DDRA
ldi r16,0b11000000 ; bits de sada a 1 e pull_ups PORTA = 0xC0;
out PORTA ; internos desactivados