MCS-51 hardver kialakítása 3/3 Vissza
A portokon keresztül történik a mikrokontroller és a külvilág közötti adatcsere. A 8051-es család tagjainál egyre több periféria-funkciót integráltak egy tokba. 8051 portjai eltérnek a hagyományos számítástechnikai I/O áramköröktől. A mikrokontrollernél egy 8 bites port több funkciót is elláthat. Így pl. busz-meghajtást, vagy soros adatátviteli interfész feladatát.
A négy port tulajdonképpen 32 db. önálló egy-bites port, amelyek bitenként címezhetőek is. Ez azt jelenti, hogy bármelyik port-bit egyedileg írható, olvasható. A portok mindegyik bitjéhez egy-egy tároló (Latch) tartozik, melyek a megfelelő SFR bitjei. Ezek mindegyikéhez kimeneti meghajtó, és bemeneti illesztő áramkör kapcsolódik. A legtöbb porthoz - az alap funkció mellett - egy-egy alternatív funkció is tartozik, de egy adot
t alkalmazásban csak az egyik funkció használható. Az ábra egy ilyen láb általános kialakítását mutatja be, egyes portok áramkörei ettől kisebb mértékben eltérnek, de jól illusztrálja a portok tényleges működését.

Az egyes portokhoz kapcsolódó alternatív, másodlagos funkciók a következők:
P0 - a külső memória írás/olvasás ciklusokban időmultiplex módon a cím-, és adatbusz funkciót teljesít az alábbi sorrendben:
P1 - csak I/O funkciót lát el.
P2 - a külső memória írás/olvasás ciklusokban címbusz felső bájtját (A8..A15) adja.
P3 - különböző be-, ill. kimenőjeleket illeszt.
|
Láb |
Szimbólum |
Funkció |
|
P3.0 |
RXD |
Soros vonal bemenete |
|
P3.1 |
TXD |
Soros vonal kimenete |
|
P3.2 |
|
0-ás külső megszakítás |
|
P3.3 |
|
1-es külső megszakítás |
|
P3.4 |
T0 |
0-ás időzítő/számláló bemenete |
|
P3.5 |
T1 |
1-es időzítő/számláló bemenete |
|
P3.6 |
WR |
Író-jel |
|
P3.7 |
RD |
Olvasó-jel |
Amikor az egyes portokat az alternatív funkciójukban kívánjuk használni, akkor az alábbiakra kell figyelni:
Az egyes portok bitjeinek áramköri felépítése kismértékben különbözik. A különböző felépítésű portok között azonos, hogy mindegyik bithez egy-egy tároló tartozik. Ezek D-flip-flopok, amelyek mindegyike valamelyik SFR egyik bitje. A belső buszról az adatot a WRITE LATCH (a D-flip-flop clock-ja) jel írja be a flip-flopba. A tárolóba írt tartalom - a P1 portot kivéve - a belső vezérlő jeltől függően jelenik meg a hozzátartozó lábon, vagyis csak az alapfunkcióban. Az alternatív funkció esetében a kontroll
er egy másik SFR tartalmát kapcsolja a lábakra.Fordított irányban, vagyis amikor egy jelet olvasunk be, akkor két lehetőség van: vagy a kiválasztott lábon lévő jelet (READ PIN), vagy a tároló (READ LATCH) jelét olvassuk be. Egyes utasítások a tároló olvasásra, mások pedig a lábon lévő jel beolvasására alkalmasak( READ-MODIFY-WRITE utasítások ).
A tárolók csak a kimenő-jeleket tárolják. A bemeneti jeleket a beolvasás után külön tárolni kell mert azok elvesznek. A felhasználáskor a programban kell gondoskodni a jelek változásának figyeléséről. Erre az ismételt lekérdezés (polling) alkalmas. Amikor ez nem alkalmazható, akkor külső hardverrel kell megszakítást kérni a figyelt szintváltásnál.
VisszaA 0-ás (P0) port
A P0 alternativ funkciója a külső tárolók és a kontroller közötti adatforgalomhoz kapcsolódik. E port adja egyrészt a cím busz alsó 8 bitjét ,másrészt pedig a klasszikus értelembe vett adatbuszt. A belső CONTROL jel kapcsolja a port-funkciót (CONTROL=0) ill. a külső memóriakezelői funkciót. Mielőtt a port
on keresztül a külső memóriából olvasás tőrténik, a tárolóba 1 íródik. Ezzel a port eredeti tartalma elvész.A P0 port az egyetlen, amelynek nincs belső felhúzó ellenállása, ill. a feladatot egy felhúzótranzisztor látja el. Ez a tranzisztor csak akkor vezet, ha a CONTROL jel és az adott címbit is magas szintű, vagyis amikor az alternatív funkcióban 1 értékű címbitet ad ki. Egyéb felhasználáskor nyitott-kollektoros a kimenet. Ebből következik, hogy a P0 kimeneti portként való használata esetén külső felhúzó
ellenállásra van szükség.Az 1-es (P1) port
A 8051mikrokontroller egyetlen portja, amelyikhez nincs alternatív funkció is rendelve. A felépítése is ezért egyszerű. Egy D-tárolóból, két és kapuból valamint egy végtranzisztorból és felhúzó ellenállásból áll. Az ÉS kapuk a lábról (READ PIN) illetve a tárolóból (READ LATCH) történő olvasást vezérlő belső jeleket kapuzzák.
A 2-es (P2) port
A P2 port alternatív funkciója - a P0-áshoz hasonlóan - a külső memória és mikrokontroller közötti adat írás-, olvasáshoz kapcsolódik. Ilyenkor ez a port adja a címbuszra a cím felső 8 bitjét.A címszolgáltatást, ill. a hagyományos portfunkciót a belső CONTROL jel határozza meg. Ha nem használjuk ezt a portot bemenetként, akkor nem is kell a tárolóba 1-t írni.
A port tárolóiba írt információ a címzési funkció végrehajtása alatt változatlan. Ezért a belső CONTROL jel inaktiválódásakor ismét a lábakra kerül az eredetileg beírt információ.
A 3-as (P3) port
A P3 port alternatív funkciója bitenként más és más. Egyesek be-, mások pedig kimeneti jeleket szolgáltatnak. A P0 és a P2-es portokkal ellentétben, itt bitenként külön használhatók az alternatív, vagy az alap port funkciók. Egy lábról történő olvasáskor nincs szétválasztva áramkörileg az alternatív-, és a portfunkció. Amikor egy bemeneti jelet (pl.az INT0-át) kívánunk használni, akkor azt a programban inicializálni kell, vagyis a lábhoz tartozó D-tárolóba 1-t kell írni. A tároló kimenete és az alternatív jel között ÉS kapcsolat van. Ezért alapfunkció - normál port - használatakor előbb az alternatív jelet kell 1-be írni. Az alternatív funkció érvényesülése viszont csak a tároló 1-be írásával biztosítható.
A portok terhelhetősége ( fan-out )
VisszaMiután az egyes portok áramköri kialakítása különböző, ezért különbözik az általuk vezérelhető TTL bemenetek száma is. A P0 maximálisan 8 LS-TTL bemenetet tud meghajtani. A P1 - P3 portok átlagosan 4 egységgel terhelhetők. Figyelni kell arra, hogy a P0 port kimenetéhez - kivéve, ha csak külső tárolók eléréséhez használjuk - felhúzó
-ellenállást kell csatlakoztatni.READ-MODIFY-WRITE utasítások
A 8051-es családnál mód van arra, hogy csak egy lábon lévő jelet (READ PIN), vagy csak a hozzátartozó tároló tartalmát olvassuk be (READ LATCH). Az olvasási módok között szoftverben választh
atunk. Azokat az utasításokat, - amelyek a tárolók tartalmát olvassák ki - nevezik READ-MODIFY-WRITE (olvas - változtat - ír) utasításoknak. A READ-MODIFY-WRITE típusú utasítások a címzett tároló tartalmát kiolvassák, az adott értékre változtatva írják vissza azt. VisszaA 8051-es család tagjainak egyetlen sorosvonal-illesztő egysége van. Ezen keresztül külső készülékell vagy rendszeren belüli processzorral adatátvitel valósítható meg. A sorosvonal-kezelő teljes duplex, vagyis egyidejűleg folyhat az adás és a vétel is. Az egyidejűség annak ellenére lehetséges, hogy mind az olvasásnál mind pedig az írásnál az SBUF speciális funkcióregisztert címezzük. Fizikailag az SBUF két különálló regiszter, és így elérésük egymástól független.
A 8051-es soros kommunikációja négy különböző üzemmód szerint állítható be. Az üzemmód kiválasztása az
SM1 (SCON.6) és SM0 (SCON.7) bitekkel történik.
|
Üzemmód |
SM0 |
SM1 |
A bitek száma |
Baudrate |
|
0 |
0 |
0 |
8 |
Foszc/12 |
|
1 |
0 |
1 |
10 |
Változtatható |
|
2 |
1 |
0 |
11 |
Foszc/32 vagy foszc/64 |
|
3 |
1 |
1 |
11 |
Változtatható |
Az adatátvitel - mindegyik üzemmódban - a legkisebb helyiértékű (LSB) bittel kezdődik.
A 0-ás üzemmód
Ez az üzemmód az ún. Shift Register Mode, ez passzív partnerrel létrehozott adás, vétel lebonyolítására alkalmas. Az adatok adása és vétele is az RXD ( P3.0 ) lábon keresztül folyik. A szinkronozást a TXD ( P3.1 ) lábon kiadott ütemezőjel végzi. Az adatátvitel sebessége (Baudrate) csak foszc/12 lehet, az adatok 8 bitesek.
Az 1-es üzemmód
Ebben az üzemmódban a TXD jelű láb az adóvonal, míg az RXD jelű a vevő. Az adatátvitel 10 bites - startbit (0), 8 adatbit(LSB először), stopbit (1). A stopbit az RB8 ( SCON.2 ) bitbe is átíródik.
Az adatátvitel sebessége a Timer 1 segítségével, annak beállítási határán belül változtatható. Mind az adást, mind pedig a vételt a T1 túlcsordulási jel ütemezi. A 8032/52-es típusú mikrokontrollerekben a T2 is használható az adás vagy a vétel szinkronozásához. Azokban a változatokban, ahol van T2, az adás és a vétel eltérő sebeségű ütemezése megoldható, mégpedig úgy, hogy az egyik számláló az adást, a míg a másik pedig a vételt szinkronozza.
A 2-es, 3-as üzemmódok
A két üzemmód csak a baudrate választásában tér el egymástól. A 2-es üzemmódban csak meghatározott baudrate - foszc/32 vagy foszc/64 - választható. A 3-as üzemmódban a T1 számláló szabadon programozható és így változtatható az ütemezés frekvenciája. Mindkét árviteli módozat 11 bites - startbit (0), 8 adatbit (LSB-vel kezdve), programozható 9.adatbit, stopbit (1). A 9.adatbit paritásjelző bitnek is használható. Ilyenkor adás előtt a PSW regiszter P bitjét ( PSW.0 ) - amely a paritás értékét jelzi - át kell írni a TB8 ( SCON.2 ) bitbe. Az adás a TXD, a vétel az RXD lábon keresztül történik. Azokban a mikrokontroller változatokban, ahol van T2-es számláló, az adás és a vétel eltérő sebeségű ütemezése itt is megoldható.
Többkontrolleres kommunikáció Vissza
A többkontrolleres rendszerek általában ún. master-slave felépitésűek. Ebben egy master és több slave kontroller dolgozik együtt. A soros vonal kezelés itt a 2-es és a 3-as üzemmódban valósítható meg. Mindegyik slave-nek önálló címe van. A master és a slave-ek közötti adatátvitel két lépésben zajlik. Először a címet hordoz
ó bájt kerül a soros vonalra. A csatlakozó kontrollerek közül csak a címzett fogja a következő bájtot venni. A helyes működés előfeltétele, hogy a cím- és adatbájtot egyértelműen meg lehessen különböztetni. A 8051-es rendszerekben erre használható a 9.adatbit. Amikor ez a bit 1, akkor cím, és amikor 0, akkor adat a másik 8 bit. Az SM2 bit ( SCON.5 ) 1-be írásával a slave kontrollerek címként kezelik a vett adatot. Midegyik kontroller egyidejűleg vizsgálja meg a vonalra küldött címbájtot. Az a slave kontroller törli az SM2 bitjét, amelyik a saját címét azonosította. Ezután csak ez veszi az adatbájtot.A baudrate előállítása a T1 és a T2 számlálókkal
A T1 használata baudrate generátorként
A soros átviteli csatorna adás-vételi sebessége az alkalmazott oszcillátorfrekvenciától és a programozási módtól függ. A 0-ás és a 2-es üzemmódokban a baudrate állandó érték. Az 1-es és a 3-as üzemmódokban a T1 ( ahol van, a T2 ) használható az ütemezőjel előállítására. Ennek értékét programozni lehet. Az átvitel szinkronozásához a bemenőjel a T1 számláló túlcsordulása ( Timer-Overflow TF1 ) lesz. Az átvitel baudrate értékét a következő összefüggés segítségével számíthatjuk ki:
Baudrate = 2SMOD/32 * ( T1 túlcsordulása )
Amikor a T1-et az Auto-Reload ( mód 2 ) módban alkalmazzuk, akkor az összefüggés a következő lesz:
Baudrate = 2SMOD/32 * foszc/12 * 256 (TH1)
A táblázat foglalja össze az előállítható szabványos baudrate értékeket az 1-es és 3-as módokban. ( T1 időzítő üzemmódban ) A 0-ás és a 2-es üzemmódokban 12MHz-es órajel esetén nagyobb átviteli sebességet lehet elérni. A 0-ás módban ez közel 1 MBaud, és a 2-es módban 375 KBaud vagy 187,5 KBaud.
|
Baudrate |
f oszc MHz |
SMOD |
T1 mód |
Beírt érték |
|
62500 |
12,0 |
1 |
2 |
00FF H |
|
19200 |
11,059 |
1 |
2 |
00FD H |
|
9600 |
11,059 |
0 |
2 |
00FD H |
|
4800 |
11,059 |
0 |
2 |
00FA H |
|
2400 |
11,059 |
0 |
2 |
00F4 H |
|
1200 |
11,059 |
0 |
2 |
00E8 H |
|
137,5 |
11,986 |
0 |
2 |
001D H |
|
110 |
6,0 |
0 |
2 |
0072 H |
|
110 |
12,0 |
0 |
1 |
FEEB H |
T2 használata baudrate generátorként
A T2 időzítő ugyanúgy használható ütemezőjel-adó
nak, mint a T1. Ekkor az adáshoz a TCLK (T2CON.4), míg vételhez az RCLK (T2CON.5) bitet kell 1-be írni. A T1 vagy a T2 túlcsordulását választva a soros átvitel vezérlésére, megoldható az adás és a vétel független ütemezése.Amikor aT2 baudrate generátor, akkor Auto-Reload üzemmódba kell beállítani. A számláló túlcsordulása vezérli az RCAP2H és RCAP2L regiszterek taratlmának ismételt betöltését. Mivel a T2-nél 16 bites a beállítható modulus, ezért sokkal szélesebb tartományban változtatható a baudrate, mint a T1-el. Az ütemezés frekvenciáját a következő egyenlőség alapján számíthatjuk:
Baudrate = (foszc/36) * 1/ 65536 (RCAP2H,RCAP2L)
Az RCAP2H és RCAP2L 8 bites regiszterek tartalma a programozható 16 bites szó. Ebben az üzemmódban a számláló túlcsordulása nem írja be a TF2 bitet, ezért nem indít megszakítást sem. Ha EXEN2 bitet 1-be írjuk, akkor a T2EX bemenetre érkező negatív él megszakítást fog kezdeményezni, de nem tölti fel újból a T2 regiszterit. Így itt a T2EX bemenet különálló megszakításként alkalmazható.
Az RCAP2x regiszterek tartalma írható és olvasható, azonban a felülírás megváltoztatja a soros vonal működési sebességét. Ez a tulajdonság viszont felhasználható változtatható négyszögjel előállítására is.