MCS-51 hardver kialakítása 2/3 Vissza
A mikrokontroller nagyszámú elemből összeintegrált, bonyolult áramkör, amellyel nagyon gyakran építenek hordozható készülékeket. Az ilyen készülékekben a tápellátást elem biztosítja, ezért a mikrokontroller áramfelvétele lényeges tényező. Ugyanezen okból készülnek az NMOS-változat mellet CMOS-kialakÍtású 8051-es változatok is. E technológia lényeges hátránya, hogy nagyobb a chip felülete. A CMOS-változatok magassabb árát viszont ellensúlyozza a kisebb fogyasztás.
Azonban az áramfelvétel, ezzel együtt a fogyasztás is erősen függ az órajel frekvenciájától. Lényeges a feladathoz szükséges órajel frekvencia megválasztása. Különösen a hordozható készülékeknél döntő ez a szempont. A 8051-es CMOS-változata további két lehetőséget biztosít az átlagos áramfelvétel csökkentésére.Ezek csak akkor alkalmazhatók, ha a kontrollerrel kialakított áramkörnek nem kell folytonosan üzemelnie.
Power-down üzemmód
A teljesítményveszteség csökkentésének egyik lehetősége az ún. Power-down (csökkentett teljesítményű) üzemmód alkalmazása.Ebben az üzemmódban csökkenthető a tápfeszültség, ezáltal minimalizálható a fogyasztás.
A Power-down üzemmódban a belső oszcillátor leáll, ezáltal az összes belső funkció is megszűnik. A belső RAM tartalma azonban nem változik, vagyis az éppen aktuális
értékek megmaradnak. Az ALE és a PSEN jelek alacsony szintűek lesznek. A Power-down üzemmódot csak a hardver RESET jel szünteti meg. A RESET jel ugyanakkor az SFR regisztereket inicializálja, ezért eredeti tartalmuk elvész, ugyanakkor a belső RAM tartalma nem változik meg. Emiatt a Power-down üzemmódba lépés előtt feltétlenül biztosítani kell az SFR regiszterek tartalmának mentését a belső RAM-ba.A Power-down üzemmód beállítása a PCON (Power Controll Regiszter) PD bitjének 1-be állításával történik. Ezt az üzemmódot rendszerint a 8051-es bázisú vezérlés feszültségkimaradáskori védelme során használják:
Meghatározott feszültségesés egy megszakítást kér. A megszakításrutin a szükséges adatokat a belső RAM-ba menti és beállítja a PD bitet. A tápfeszültség visszatérése RESET jelet ad a kontrollernek, ezzel befejeződik a Power-down üzemmód.
Idle üzemmód
VisszaAz áramfelvétel az Idle üzemmódban - a Power-down üzemmódhoz hasonlóan - jelentősen csökkenthető. Ekkor az órajel tovább működik, a CPU viszont nem. Az időzítő/számláló egységek, a megszakítás kezelés és a soros adatátviteli port továbbra is használható, ehhez szükséges az órajel.
Az Idle üzemmódba kapcsolás a PCON.0 bit 1-be állításával végezhető. Az üzemmód előnye, hogy a 8051-es nemcsak a RESET-el, hanem me
gszakítással is visszaállítható a normál üzemmódba. A visszaállító megszakításrutinnak csupán a PCON.0 bitet kell törölnie a mikrokontroller újbóli üzemeltetéséhez.A 8051-es család tagjaiban különböző számú időzítő/számláló áramkör van. Ezekhez még további funkciók is kapcsolódhatnak. A 8051/31 típusban a T0 és T1 jelű két időzítő/számláló van. Mindkét áramkör lehetséges üzemmódját, leállítását, indítását, és tartalmának módosítását két SFR - a
TMOD (timer-mód ) és a TCON (timer-control) - regiszterrel lehet beállítani. A TMOD csak bájtosan írható/olvasható, míg a TCON bitjei egyedenként is elérhetőek.A T0 és T1 időzítő/számlálók és üzemmódjaik
VisszaA T0 és a T1 áramkörök időzítőként, vagy eseményszámlálóként használhatók. A működési módot a TMOD-regiszter 2. és 6. C/T jelü bitjeivel (TMOD.2 ill. TMOD.6) kell beállítani. A logikai 1 - hez a számláló üzemmód tartozik. Az időzítő üzemmódban a számtartalom gépi ciklusonként eggyel nő. Ebből következik, hogy az időzít
és alapegysége az oszcillátor periódusidejének 12-ed része.A számláló üzemmódban mindegyik számláló a hozzátartozó bemenetre - T0, T1,(T2) - kapcsolt jel lefutó élénél inkrementálódik. A maximális számlálási frekvencia tehát az órajel frekvenciájának 24-e. A 12 MHz-es oszcillátor használatánál a számlálási frekvencia maximálisan 500 kHz.
Az áramkört kiegészítő - szoftverből vezérelhető kapu - előnyösen használható a pontos eseményszámlálásnál. A kapuzás a TR0
és TR1 bitekkel (TMOD.7 és a TMOD.3) történik.A T0 ill. T1-es jelű áramkörök négy különböző üzemmódban működtethetők. Az üzemmódokat a T1-nél a TMOD.4 (M1
0) és a TMOD.5 (M11), illetve a T0-nál pedig a TMOD.0 (M00) és TMOD.1 (M10) bitekkel kell kiválasztani. Az M0-M1 bitekből alkotott bináris szám értéke az üzemmód index-e. Az egyes üzemmódok a következők:0-ás üzemmód Vissza
A 0-ás üzemmód a 8048-as mikrokontroller időzítő/számlálójának a működésével egyezik meg. A TH0 (TH1) regiszter 8 bites, míg a TL0 (TL1) csak 5 bites. Az áramkörök tehát egy 32-es elosztóval rendelkező 8-bites számlálóként használhatók.

A számláló túlcsordulása 1-be írja a megszakításkérő bitet (Timer-Interrupt-Flag TF0/TF1). A számlálandó impulzusokat külső és belső vezérlés együttesen kapcsolja a számlálóra. A feltételek, - az ábrának megfelelően - hogy a TR0/TR1 bit 1- szintű és ugyanakkor az üzemmódot vezérlő TMOD regiszter TMOD.3/TMOD.7 bitje alacsony szintű, vagy az INT0/INT1 csatlakozási ponton magas szint legyen. A számlál
ók külső-, (hardver) és belső-, (szoftver) vezérelhetősége nagyon széleskörű, rugalmas felhasználást biztosít.1-es üzemmód Az 1-es üzemmód hasonló a 0-áshoz, azzal az eltéréssel, hogy a számláló 16-bites.
2-es üzemmód
A számláló a 2-es üzemmódban 8 bites, de automatikus visszatöltés is történik. A TL0/TL1 regiszter tulcsordulása a megfelelő megszakításkérő bitet (TF0/TF1) beállítja és ugyanakkor a TH0/TH1 regiszter tartalmát beírja a TL0/TL1 regiszterbe. A TH0/TH1 regiszter tartalma nem változik. Ezek felülírása szoftver úton végezhető. A meg-oldással programból változtatható késleltetés valósítható meg.

3-as üzemmód Vissza
A 3-as üzemmódba csak a T0-ás időzítő/számláló áramkör üzemeltethető. Ha a T1-et állítjuk 3-as módba, akkor az leáll. Ebben a módban TL0 és a TH0 regiszterek önálló 8 bites számlálóként használhatóak és egymástól teljesen függetlenül dolgoznak. Az üzemmódot akkor használják, ha több időzítő funkció is szükséges. (Megjegyzés: a TH0 csak késleltetőként működtethető!)
Ha a T0 a 3-as módban üzemel, akkor T1-es áramkör a többi üzemmódban azzal a kikötéssel dolgozik, hogy a belső leállítás nem működik, és nem kezdeményezhet megszakítást. ( A T1 a soros kommunikációs csatorna Baud-rate generátoraként is
használható )
A T2-es időzítő/számláló
A T2 16 bites időzítő/számláló áramkör - a 8051-es kivételével - a család minden tagjában van. A T2 sokkal összetettebb áramkör, mint a T0 és a T1. Alapvetően a T2 is időzítésre vagy eseményszámlálásra használható. Az üzemmódot a T2CON.1 bittel lehet kiválasztani. Ugyanakkor az áramkör további funkciókkal van bővítve. A T2 három különböző - Capture, Auto-Reload és Baudrate-Generátor - üzemmódban használható. Az üzemmód kiválasztását a T2CON.0, a T2CON.2, valamint a T2CON.4 és T2CON.5 bitek végzik.

Capture üzemmód Vissza
Ebben az üzemmódban a TH2 és a TL2 regiszterek tartalma az RCAP2H, ill. az RCAP2L regiszterekbe átírható. Az átírást a T2EX bemenetre ( 2 láb ) adott lefutó él vezérli. A vezérlést az EXEN2 bittel engedélyezhető vagy tiltható ( a logikai 1 engedélyez ). Az adatátvitellel egyidejűleg a T2 megszakítása is beíródik. Az RCAP2H és RCAP2L regiszterek tartalma szoftverből állítható. Mivel a megszakítási folyamat hardvervezérelt, ezért ebben az üzemmódban a külső esemény idejét vagy frekvenciáját mérhetjük.
Auto-Reload üzemmód
Az üzemmódban további választási lehetőség van. Amikor az EXEN2 bit értéke 0, akkor a T2 minden túlcsordulásakor az RCAPx regiszterek tartalma átíródik. A programozott számtaratalom 0-tól eltérő, tetszőleges 16 bites érték lehet. Ebben az üzemmódban - RCAPx értékétől függő - változtatható frekvenciájú jel állítható elő. Az EXEN2 bit 1 értékénél az átí
rást a T2EX bemenetre érkező negatív él is vezérli.Baudrate-Generátor üzemmód
Ennek az üzemmódnak a soros adatátvitel ütemezésében van szerepe.
A megszakítások és használatuk
A mikrokontroller megszakításainak segítségével oldhatók meg az események valós idejű lekezelése. A megszakítás (Interrupt) egy hardver esemény kiszolgálására szolgál. A kiszolgálást kérő jel - hozzá tartozó - megszakítás- kérő (Interrupt -Request) flag-et 1-be állítja
A megszakítást külső-, (pl. a megfelelő bemenetre érkező feszültségszint, vagy szintváltás) illetve belső esemény (pl. az egyik számláló túlcsordulása) kérhet. Mindegyik megszakításhoz meghatározott prioritás rendelhető. Amikor egy megszakítást kérő jel érkezik, akkor az éppen futó program végrehajtása felfüggesztődik és a megszakítást kiszolgáló (Interrupt-Service) rutin fog futni. Ha mikrokontroller éppen egy azonos ,vagy magasabb prioritású megszakítást szolgál ki, akkor csak a futó rutin bef
ejezése után hívja az újabb megszakítás-rutint.A 8051 mikrokontroller megszakítás-rutinjainak kezdőcíme - a legtöbb mikroprocesszorral ellentétben - állandó. Erre a címre egy ugró-utasítást kell beírni, amely a megszakítás-rutinra adja át a vezérlést. A rutinból a főprogramba történő visszatérést a
RETI utasítás hajtatja végre.Megszakítás források Vissza
A 8051, ill. a 80C51 típusoknál öt megszakítás forrás és két prioritási szint van. A 8052 típusú mikrokontrollerbe még egy további megszakításforrást (T2) integráltak. Megkülönböztetünk külső és belső megszakítás-forrásokat. A külső megszakításokat (INT0,INT1) a megfelelő bemenetre (12-es ill. 13-as lábak) adott feszültségszint, vagy negatív él indítja. Az egyes bemenetek szint-, vagy él-érzékenységét a TCON (Timer-Control) regiszter IT0,illetve IT1 bitjeivel lehet megválasztani. Az egyes megszakítások végre-hajtását a TCON.1 (IE0) illetve a TCON.3 (IE1) bitek 1-be írásával engedélyezhetjük.
A belső megszakításokat - az előzőekkel ellentétben - nem külső, hanem a tokon belüli esemény kezdeményezi. A felhasználó ezért csak közvetetten kezdeményezheti. A belső megszakításra példa az ES, amelyet a soros vonal indít az RI vagy a TI beíráséval. További belső megszakítási források még a TF0 és a TF1.Ezeket
a megfelelő időzítő/számláló (T0,illetve T1) túlcsordulása indítja. A táblázat foglalja össze a megszakításforrásokat és kezdőcímeiket.
|
Megszakítás-forrás |
Kérő-flag |
Kezdő-cím |
|
0-ás külső megsz. |
IE0 |
0003 H |
|
Timer 0 megsz. |
TF0 |
000B H |
|
1-es külső megs z. |
IE1 |
0013 H |
|
Timer 1 megsz. |
TF1 |
001B H |
|
Soros vonal megsz. |
RI vagy TI |
0023 H |
A 8052-es mikrokontroller kibővített megszakítása:
|
Timer 2 megsz. vagy külső töltés |
TF2 vagy EXF2 |
002B H |
Megszakítások műveletei
A külső megszakítás-forrás megszakítást kérő jelének LOW, vagy HIGH szintje minden esetben legalább egy teljes gépi ciklus időtartamáig kell fennálljon. Csak ezzel biztosítható a megszakítás-kérés biztonságos felismerése. A 8051 megszakítás-vezérlő logikája bármelyik megszakítási kérelem felismerése után egy LCALL utasítást generál. A megszakítás lekezelése tehát a következő lépésekből áll:
Ellenőrzés, hogy kiadható-e az LCALL utasítás. Ha a kérés pillanatában azonos, vagy magasabb prioritásu megszakítás kiszolgálása folyik, akkor a kontroller nem ad ki LCALL utasítást. Az alacsonyabb szintü megszakítás-végrehajtást egy magasabb prioritású megszakítja.Ha a megszakítás-kérés utasítás végrehajtása közben érkezik, akkor először befejeződik az, és csak utána történik a megszakítás-rutin hívása.
A megszakításkiszolgáló rutinokat minden esetben a RETI ( Return from Interrupt ) utasítással kell befejezni. Ez jelzi a megszakításvezérlő rendszernek, hogy egy kiszolgálás befejeződött.