TECHNIKA MIKROPROCESOROWA Porty równoległe wejścia

Transkrypt

TECHNIKA MIKROPROCESOROWA Porty równoległe wejścia
LABORATORIUM
TECHNIKA MIKROPROCESOROWA
Porty równoległe wejścia/wyścia mikrokontrolera
ATmega
Opracował:
Tomasz Miłosławski
1. Cel ćwiczenia
Celem ćwiczenia jest zapoznanie się ze sposobami konfiguracji i programowania
równoległych portów wejścia-wyjścia (I/O) mikrokontrolera rodziny AVR ATmega oraz
ich wykorzystania w sterowaniu urządzeń wykonawczych i identyfikacji zewnętrznych
sygnałów cyfrowych.
2. Charakterystyka portów równoległych AVR ATmega
Porty równoległe są podstawowymi urządzeniami wejścia/wyjścia systemów
mikroprocesorowych. Przeznaczone są przykładowo do transmisji informacji w postaci
równoległej, binarnego sterowania w urządzeniach przemysłowych, komunikacji
wizualnej z operatorem, przyjmowania informacji z przycisków, klawiatur itp. Najczęściej
porty zorganizowane są w grupy linii o długości słowa zgodnej ze słowem
mikrokontrolera, np. 8 linii dla urządzeń 8-bitowych. W mikrokontrolerze AVR ATmega
porty opisane są jako np.: PORTA, PORTB, PORTC, PORTD. Każda linia wybranego
portu może być konfigurowana indywidualnie jako:
- wyjście (OUTPUT),
- wejście (INPUT),
- wejście z pociągnięciem do VCC (INPUT with pull-up).
Pojedyncze linie portu oznaczane są za pomocą symboli PA0-PA7, PB0-PB7, PC0-PC7,
PD0- PD7.
Stan portów oraz ich konfigurację określa się za pomocą trzech rejestrów:
- DDRx - Data Direction Register x
- PORTx - Data Register x
- PINx - Input Pins Adress x
Tabela 1. Konfiguracja linii portów
DRRxn
PORTxn
KIERUNEK
Pull-up
Stan
0
0
wejście
NIE
wejście Hi-Z
0
1
wejście
TAK
Wejście podciągnięte
do VCC
1
0
wyjście
NIE
stan niski
1
1
wyjście
NIE
stan wysoki
x - oznaczenie port A, B, C, D
n - numer linii portu 0, 1, 2, 3, 4, 5, 6, 7
Hi-Z - stan wysokiej impedancji
2
Program Listing 1 przedstawia przykładową konfigurację portu równoległego
PORTA, gdzie linie PA3..0 są skonfigurowane jako wyjścia, a linie PA7..4 jako wejścia.
Listing 1
#include <avr.io.h>
int main (void)
{
DDRA = 0x0F;
PORTA = 0xC3;
.
.
.
.
while (1);
}
// DDRA = 0000FFFF
// PORTA = 11000011
Po określeniu kierunku portu stan wyjść ustalony został następująco:
PA1..0 = 1,
PA3..2 = 0,
natomiast stan wejść:
PA5..4 - wejście Hi-Z,
PA7..6 - wejście z podciągnięciem do VCC.
Sposób w jaki można dokonać odczytu i ustawienia wybranych linii portu przestawia
program Listing 2.
Listing 2
#include <avr.io.h>
int main (void)
{
DDRA = 0x0F;
// DDRA = 0000FFFF
PORTA = 0xC3;
// PORTA = 11000011
while (1)
{
// test stanu linii PA7
if ( PINA & 0x80 )
{
PORTA = PORTA & 0xFE; // PA0 = 0
}
else
{
PORTA = PORTA | 0x01; // PA0 = 1
}
}
while (1);
}
3
3. Ćwiczenia programowe
ZADANIE 1
Napisać program generujący przebieg prostokątny o częstotliwości 10Hz na wyjściu linii
portu PB0. Stan linii portu ma być sygnalizowany za pomocą diody LED D0 na zestawie
dydaktycznym ZL3AVR.
ZADANIE 2
Napisać program sterowania diodami LED D0-D7 przez PORTB zestawu dydaktycznego
ZL3AVR dla uzyskania widocznego efektu świecącego punktu biegnącego w lewą stronę. Po
osiągnięciu skrajnej lewej diody cykl powinien się powtarzać.
ZADANIE 3
Napisać program sterowania diodami LED D0-D7 przez PORTB zestawu dydaktycznego
ZL3AVR dający efekt świecącej linijki o zwiększającej się długości w prawo od 1 diody do
8 diody. Następnie diody powinny być wygaszane od prawej do lewej strony.
4

Podobne dokumenty