Porty we wy


4. UKAADY WEWNTRZNE MIKROKONTROLERA SAB 80C537
4.1. Porty wejścia-
-wyjścia
-
-
4.1.1. Opis portów wejścia-
-wyjścia
-
-
Porty wejścia wyjścia służą do komunikacji mikrokontrolera z otoczeniem. Umożliwiają dołączenie do
niego klawiatury, wyświetlacza lub innych urządzeń sterujących i wykonawczych (np. przekazników).
Mikrokontroler SAB 80C537 wyposażony jest w siedem 8-bitowych portów wejścia wyjścia (P0 P6),
8-bitowy port wejść cyfrowych i analogowych P7, 4 bitowy port wejść cyfrowych i analogowych P8
oraz dwa porty szeregowe S0 i S1 do dwustronnej komunikacji.
" Porty P0 P6 są portami wejścia wyjścia ogólnego przeznaczenia, umożliwiającymi wykorzystanie
56 linii wejścia-wyjścia, przy czym porty te realizują też pewne funkcje alternatywne w zależności od
konfiguracji pracy mikrokontrolera. Wykaz funkcji zamieszczono w tabeli 4.1.
Szczególną rolę w pracy mikrokontrolera SAB 80C537 pełnią porty P0 i P2. Ponieważ mikrokontroler
nie jest wyposażony w wewnętrzną pamięć programu ROM, do portów P0 i P2 dołączona jest
zewnętrzna pamięć RAM o maksymalnej pojemności 64 kB, służąca jako pamięć programu i pamięć
danych (konfiguracja wg von Neumanna). W przypadku adresowania pamięci 8-bitowym rejestrem
wskaznikowym R0 lub R1 port P0 służy do przesyłania 8-bitowego adresu komórki pamięci i bitów
danych. W przypadku adresowania 16-bitowym rejestrem wskaznikowym DPTR 8 mniej znaczących
bitów adresu i bity danych przesyłane są przez port P0, natomiast port P2 służy do przesłania 8
bardziej znaczących bitów adresu. Taka konfiguracja portów P0 i P2 powoduje, że nie mogą być one
wykorzystane jako standardowe porty wejścia wyjścia.
" Porty P7 i P8
Porty P7 i P8 są portami jednokierunkowymi. Linie obydwu portów mogą służyć jedynie jako
wejścia cyfrowe, a w przypadku pomiaru napięcia przetwornikiem A/C wejścia te są równoważne
kanałom analogowym AN0 AN11 (kanały AN0 AN7 dla portu P7 oraz AN8 AN11 dla portu P8).
Należy pamiętać, że porty P7 i P8 nie są adresowalne bitowo: stany wszystkich wejść tych portów
odczytywane są jednocześnie za pomocą rozkazu adresowania bajtowego.
Tabela 4.1. Wykaz funkcji alternatywnych portów wejścia-wyjścia
Port Symbol Funkcja
Wejście 3 zewnętrznego przerwania, wyjście
P1.0 porównania komparatora 0, wejście zapamiętania
INT3/CC0
0
Wejście 4 zewnętrznego przerwania, wyjście
P1.1 INT4/CC1 porównania komparatora 1, wejście zapamiętania
1
Wejście 5 zewnętrznego przerwania, wyjście
P1.2 INT5/CC2 porównania komparatora 2, wejście zapamiętania
2
Wejście 6 zewnętrznego przerwania, wyjście
P1.3 INT6/CC3 porównania komparatora 3, wejście zapamiętania
3
Wejście 2 zewnętrznego przerwania, wyjście
P1.4 porównania komparatora 4, wejście zapamiętania
INT2 /CC4
4
P1.5 T2EX Wejście zewnętrznego wyzwolenia dla
autoładowania licznika T2
P1.6 CLKOUT Wyjście zegara systemowego
Wejście zewnętrznego wyzwolenia dla
P1.7 T2
autoładowania licznika T2
P3.0 RXD0 Wejście portu szeregowego, kanał 0
P3.1 TXD0 Wyjście portu szeregowego, kanał 0
Wejście 0 zewnętrznego przerwania, bramka
P3.2
INT0
kontrolna zegara 0
Wejście 1 zewnętrznego przerwania, bramka
P3.3
INT1
kontrolna zegara 1
P3.4 T0 Wejście zewnętrzne licznika/zegara T0
P3.5 T1 Wejście zewnętrzne licznika/zegara T1
Zapis danych pamięci zewnętrznej
P3.6
WR
Odczyt danych pamięci zewnętrznej
P3.7
RD
P4.0 CM0 Wyjście komparatora CM0
P4.1 CM1 Wyjście komparatora CM1
P4.2 CM2 Wyjście komparatora CM2
P4.3 CM3 Wyjście komparatora CM3
P4.4 CM4 Wyjście komparatora CM4
P4.5 CM5 Wyjście komparatora CM5
P4.6 CM6 Wyjście komparatora CM6
P4.7 CM7 Wyjście komparatora CM7
P5.0 CCM0 Wyjście komparatora równoległego 0
P5.1 CCM1 Wyjście komparatora równoległego 1
P5.2 CCM2 Wyjście komparatora równoległego 2
P5.3 CCM3 Wyjście komparatora równoległego 3
P5.4 CCM4 Wyjście komparatora równoległego 4
P5.5 CCM5 Wyjście komparatora równoległego 5
P5.6 CCM6 Wyjście komparatora równoległego 6
P5.7 CCM7 Wyjście komparatora równoległego 7
Zewnętrzne wejście sterujące przetwornikiem A/C
P6.0
ADST
P6.1 RXD1 Wejście portu szeregowego, kanał 1
P6.2 TXD1 Wyjście portu szeregowego, kanał 1
DIN7.0 DIN7.7 Wejścia cyfrowe P7.0 P7.7
P7.0 P7.7
AN0 AN7 Wejścia analogowe AN0 AN7
DIN8.0 DIN8.3 Wejścia cyfrowe P8.0 P8.3
P8.0 P8.3
AN8 AN11 Wejścia analogowe AN8 AN11
W przypadku współpracy z zewnętrzną pamięcią
P0 programu i danych 8 mniej znaczących bitów
adresu i danych
W przypadku współpracy z zewnętrzną pamięcią
P2 programu i danych 8 bardziej znaczących bitów
adresu
Ze względu na różne przeznaczenie, porty mikrokontrolera SAB 80C537 mają różną budowę, jednak
w strukturze każdego z nich można wyróżnić zatrzask danych w postaci przerzutnika typu D,
sterownik wyjścia oraz bufor wejściowy. Schematy portów przedstawiono na rysunkach 4.1 4.4.
Porty wejścia wyjścia P1 P6 wyposażone są w wewnętrzny układ polaryzujący zbudowany
z tranzystorów wykonanych w technologii FET. Każda linia wejścia wyjścia portu może być
niezależnie skonfigurowana jako wejście lub jako wyjście, przy czym aby wybrana linia portu mogła
być wykorzystana jako wejściowa, należy ustawić ją w stan jedynki logicznej. Możliwe jest wówczas
wymuszanie stanu zera logicznego na wybranej linii portu poprzez zwieranie jej do masy układu. W
przypadku konfiguracji linii portu jako wyjściową, sygnał wyjściowy rejestru portu steruje
bezpośrednio tranzystorem wyjściowym, wymuszając odpowiedni stan na końcówce układu.
Schemat standardowych portów wejścia wyjścia przedstawiono na rys. 4.1.
odczyt
rejestru
VCC
wewnętrzny
układ
wewnętrzna
polaryzujący
magistrala
Q
D
danych
końcówka
sygnał
Px. n
CLK
Q
zapisu do
rejestru
odczyt
końcówki
Rys. 4.1. Schemat standardowych portów wejścia wyjścia
Nieco inną budowę mają porty P0 i P2. Posiadają one w swojej strukturze przełącznik, który
w przypadku, gdy mikrokontroler komunikuje się z pamięcią zewnętrzną odłącza tranzystor
wyjściowy od rejestru portu. Wówczas zawartość rejestru portu nie ma wpływu na jego sygnał
wyjściowy. Tranzystor wyjściowy portu P0 podłączony do zródła zasilania pozwala na uzyskanie
większego prądu wyjściowego do sterowania wejść zewnętrznych pamięci. W przypadku gdy port P0
pracuje jako normalny port wejścia wyjścia, tranzystor ten pracuje jako zródło prądowe. Ponieważ
port P0 nie ma układu polaryzującego, w przypadku gdy linie portu wykorzystywane są jako wyjścia,
konieczne jest dołączenie do tych linii zewnętrznego rezystora polaryzującego o wartości ok. 10 k&!.
Gdy do rejestru portu wpisana jest jedynka, wówczas tranzystory wyjściowe są zatkane i w tych
warunkach linie portu pracują jako wejścia o dużej impedancji. Schemat portu P0 przedstawiono na
rys. 4.2.
VCC
adres/dana sterowanie
odczyt
rejestru
końcówka
wewnętrzna P0.n
magistrala Q
D
danych
sygnał
CLK
Q
zapisu do
rejestru
odczyt
końcówki
Rys. 4.2. Schemat portu P0
Budowa portu P2 jest nieco prostsza niż portu P0, gdyż przez port P2 może być dodatkowo wysyłany
tylko bardziej znaczący bajt adresu. Obciążeniem tranzystora wyjściowego, podobnie jak
w pozostałych portach jest zródło prądowe. Należy przy tym zaznaczyć, że wewnętrzny układ
polaryzujący, w który wyposażone są wszystkie porty mikrokontrolera za wyjątkiem portu P0 nie jest
liniowym rezystorem, lecz specjalnym układem zbudowanym z tranzystorów polowych. Schemat
portu P2 przedstawiono na rys. 4.3.
odczyt
VCC
adres sterowanie
rejestru
wewnętrzny
układ
polaryzujący
wewnętrzna
końcówka
D Q
magistrala
P2.n
danych
sygnał
CLK
Q
zapisu do
rejestru
odczyt
końcówki
Rys. 4.3. Schemat portu P2
Niektóre z linii portów wejścia wyjścia P1, P3, P4, P5 i P6 realizują dodatkowe funkcje alternatywne.
Schemat budowy linii portów wykonujących takie funkcje (patrz tabela 4.1) przedstawiono na rys.
4.4.
alternatywna
odczyt funkcja VCC
wewnętrzny
rejestru wyjściowa
układ
polaryzujący
końcówka
wewnętrzna
Q
D
Px.n
magistrala
danych
sygnał
zapisu do CLK
Q
rejestru
odczyt
końcówki
alternatywna
funkcja
wejściowa
Rys. 4.4. Schemat portów realizujących funkcje alternatywne
Aby funkcje alternatywne portu mogły być aktywne, do rejestru danego portu należy wpisać jedynkę
logiczną. Sygnał alternatywnej funkcji wyjściowej wyprowadzony jest wspólnie z sygnałem rejestru
portu przez dwuwejściową bramkę NAND, natomiast sygnał alternatywnej funkcji wejściowej jest
doprowadzony do odpowiednich układów wewnętrznych poprzez dodatkowe bufory.
Wszystkie rejestry portów mikrokontrolera SAB 80C537 umieszczone są w przestrzeni adresowej
wewnętrznej pamięci danych w obszarze rejestrów specjalnych SFR (patrz rozdział 2, tabela 2.2).
Sterowanie portami odbywa się więc w podobny sposób, jak jest w przypadku pozostałych rejestrów
mikrokontrolera. Rejestry portów należą do grupy rejestrów adresowanych bitowo i bajtowo. Dzięki
temu możliwe jest ustawianie każdego bitu rejestru danego portu (lub odczytanie stanu dowolnego
bitu rejestru portu) niezależnie, wykorzystując rozkazy operacji na bitach. Należy przy tym zwrócić
uwagę, że adres najmłodszego bitu rejestru portu jest zarazem adresem całego rejestru. Oczywiście
możliwe jest modyfikowanie zawartości całego rejestru portu (lub odczytywanie jego stanu)
rozkazami operującymi na bajtach, np. rozkazem MOV.
Dane przesyłane do portu zapisywane są w buforowym rejestrze wyjściowym. Stan tego
rejestru nie zmienia się aż do ponownego wpisania nowych wartości.
Odczytywanie danej z portu odbywa się przez bufory, przy czym dana może zostać odczytana albo z
rejestru portu, albo bezpośrednio z końcówki portu: zależy to od użytego rozkazu.
Pobieranie danych z końcówek układu odbywa się poprzez rozkazy służące do odczytania danych z
wejść mikrokontrolera i testowania ich oraz przesyłania do pamięci lub do innego rejestru
mikrokontrolera, np. MOV R0,P1; ADD A,P1; ANL A,P1; JB P1.0,d; CJNE A,P5.
Do odczytywania danych z rejestru wyjściowego portu służą rozkazy, których wykonanie powoduje
odczytanie, modyfikację i ponowne zapisanie danych do portu. Należy przy tym pamiętać, że rozkazy
te dotyczą stanu wyjść mikrokontrolera wymuszanego przez zawartość rejestru wyjściowego portu.
W niektórych przypadkach stan rejestru wyjściowego portu nie jest zgodny ze stanem logicznym,
określonym przez poziom napięcia na końcówkach układu. Dzieje się tak na przykład, wtedy gdy
bezpośrednio do wyjścia portu przyłączona jest baza tranzystora. Aby wprowadzić tranzystor w stan
przewodzenia należy do komórki rejestru portu wpisać stan jedynki logicznej. Ponieważ spadek
napięcia na złączu baza emiter przewodzącego tranzystora wynosi 0,6 0,7V, więc odczytując stan
końcówki portu otrzymamy wartość zera logicznego.
Rozkazy modyfikujące zawartość rejestru wyjściowego portu, ale nie zmieniające stanu logicznego na
końcówkach układu przedstawiono poniżej, przy czym w opisie rozkazów użyto oznaczeń:
Pi  adres portu jako rejestr specjalny SFR, np. P1,
Pi.x  adres bitu x portu i np. P1.1,
r  oznacza A lub argument bezpośredni #n (patrz też: zał. 1 lista rozkazów),
d  przesunięcie
MOV Pi.x,C
ANL Pi,r
INC Pi
JBC Pi.x
SETB Pi.x
ORL Pi,r
DEC Pi
DJNZ Pi,d
CLR Pi.x
XRL Pi,r
CPL Pi.x
4.1.2. Przykłady programowania portów
Przykład 1
;*****************************************************************************************
;Program generowania przebiegu o częstotliwości zegara systemowego i wypełnieniu 50% na wyjściu P1.0
;*****************************************************************************************
ORG 50h ;Adres programu
LOOP1: CPL P1.0 ;Zmiana stanu bitu P1.0
SJMP LOOP1 ;Skok do początku programu
Przykład 2
;***************************************************************************
;Program generowania przebiegu o częstotliwości 1kHz i wypełnieniu 50% na wyjściu P1.1
;***************************************************************************
DEL_1 EQU 0FAh ;Deklaracja opóznienia czasowego decydującego
;o częstotliwości
ORG 100h ;Adres początku programu
LOOP2: MOV R0,#DEL_1 ;Przesłanie do akumulatora wartości opóznienia zmiany
;stanu bitu P1.1
LOOP3: DJNZ R0,LOOP3
CPL P1.1 ;Zmiana stanu bitu P1.1
SJMP LOOP2 ;Skok do początku programu
Przykład 3
;***************************************************************************
;Program generowania przebiegu o częstotliwości 1kHz i wypełnieniu 25% na wyjściu P1.2
;***************************************************************************
DEL_2 EQU 5Ah ;Deklaracja opóznienia czasowego 2
DEL_3 EQU 0FAh ;Deklaracja opóznienia czasowego 3
ORG 150h ;Adres programu
LOOP4: MOV R0,#DEL_2 ;Wartość opóznienia zmiany stanu bitu P1.2
LOOP5: DJNZ R0,LOOP5
CPL P1.2 ;Zmiana stanu bitu P1.2
MOV R0,#DEL_3 ;Wartość opóznienia zmiany stanu bitu P1.2
LOOP6: DJNZ R0,LOOP6
CPL P1.2 ;Zmiana stanu bitu P1.2
SJMP LOOP4 ;Skok do początku programu
Przykład 4
;**********************************************************
;Generowanie przebiegu PWM na wyjściu P1.3 przy użyciu licznika T2.
;Program wykorzystuje komparator CC3
;**********************************************************
;------------------------------------
;Deklaracja stałych programu
;------------------------------------
TIMER EQU 11h ;Autoładowanie po przepełnieniu licznika, taktowanie
;sygnałem wewnętrznym bez dodatkowego
dzielnika
COMP_EN EQU 80h ;Odblokowanie trybu porównania i wpisu
RELOAD_L EQU 00h ;Wartość początkowa licznika T2 po przepełnieniu
RELOAD_H EQU 0FFh ;Wartość początkowa licznika T2 po przepełnieniu
COMP_L EQU 37h ;Wartość porównania rejestru CCL3
COMP_H EQU 0FFh ;Wartość porównania rejestru CCH3
;----------------------
;Program główny.
;----------------------
ORG 200h ;Adres początku programu
ORL T2CON,#TIMER ;Konfiguracja licznika T2
MOV CCEN,#COMP_EN ;Wybór komparatora CC3
MOV CRCL,#RELOAD_L ;Wpis wartości początkowej L, częstotliwość
MOV CRCH,#RELOAD_H ;Wpis wartości początkowej H, częstotliwość
MOV CCL3,#COMP_L ;Wpis wartości porównania L, wypełnienie
MOV CCL3,#COMP_H ;Wpis wartości porównania H, wypełnienie


Wyszukiwarka

Podobne podstrony:
C w7 pliki operacje we wy
Systemy wyklad ochrona we wy
SO 11 WE WY
LINIE WE WY
sysop we wy
we,wy
uklady we wy
Jedel J cyberatak na porty
Obudź we mnie Venus Sixteen
We wish you a Merry Christmas
ŻYCIE WE WSZECHŚWIECIE(1)
Tyszka Rodzina we współczesnym świecie
Wy pkm 14 SP II
O szukaniu diabła we wszystkich rzeczach
wspolpraca;z;we;dwoje;pl,site,3
flex pierwsza aplikacja we flex
Bon Jovi More Than We?rgained For

więcej podobnych podstron