A PIC mikrokontroller család 1/2
A PIC16C mikrovezérlő család
A PIC mikrovezérlő sorozat a Microchip Technology Inc. fejlesztése. A legolcsóbb, legkisebb elemek a 16C5x áramkörök a 16C6x, 16C7x és 16C8x elemek már komolyabb lehetőségeket biztosítanak ( utóbbiak közös elnevezése a PIC16Cxx ).
A PIC áramkörök többsége EPROM chip, a program tárolásán kívül a konfigurációs részletek is az EPROM egyes bitjeiként jelennek meg. Egy konkrét típus egyféle chip. Ez az egyféle chip azonban különféle tokozással készülhet: átprogramozható változat (kvarcablakos, drága tokozásban), egyszer programozható kivitel (olcsó műanyag tokozással), s a gyártó maga is vállalja a tömeges beprogramozást. A PIC mikrovezérlők használatához az univerzális EPROM, PLD és mikrokontroller programozó készülékek közül nem mindegyik alkalmas. Célszerű komplett PIC fejlesztő rendszert beszerezni, amely a programfejlesztést, a szimulációt, a program letöltését egyaránt lehetővé teszi. A PARALAX cég szakosodott a PIC mikrovezérlőkre, számos fejlesztő készletük van forgalomban.
Mivel a mikrovezérlők felhasználói közül sokan már megszokták az ipari szabványnak tekinthető 8051-es utasításkészletet, a PARALAX olyan programfejlesztő rendszert is ajánl, mely a 8051 jellegű utasításokat is fogadja és PIC utasításokká alakítva beépíti a PIC programjába.
A PIC mikrovezérlők 8 bitesek, a 16C5x család utasításkészlete 33 utasításból áll, a 16Cxx áramkörök esetében az utasításkészlet kicsit bővült, 35 utasítást tartalmaz. Ezek kis számok, tehát jogos a gyártónak az a kitétele, hogy a PIC mikrovezérlők központi egysége (CPU) RISC jellegű - ez redukált utasításkészletet jelent. Minden utasítás egy szavas, a végrehajtásuk egyetlen gépi ciklust igényel ( kivéve az ugró utasítások ). Az utasítások nem 8 bitesek, hanem a 16C5x családnál 12 bit hosszúságúak, a 16Cxx elemeknél 14 bitesek. A címzési lehetőségek sokoldalúak ( direkt, indirekt, relatív címzés ). Mint a mikrovezérlők többsége, a PIC áramkörök is a Harvard architektúrát követik, azaz különálló program- és adattárolót tartalmaznak. Így lehetséges, hogy a programtároló 12, 14 ill. 16 bites, míg az adattároló 8 bites.
A PIC mikrokontrollerek csak a belső programtárból képes utasításokat végrehajtani s csak a belső adattárat tudja kezelni - nem lehet külső memória áramköröket hozzákapcsolni. Ez először hiányosságnak tűnhet, hiszen más mikrovezérlő családok esetében azok előnyös képeségeként tüntetik fel, hogy külső memóriákkal is működtethető. A külső memóriákat azonban a mikrokontrollerek kizárólag Port pontjaikon keresztül képesek kezelni, az ilyen működtetés a szaba
d jelcsatlakozások számát jelentősen csökkenti. A PIC család belső program- és adattár kapacitása széles tartományban választható. A PIC16C5x elemek még nem, de a 16Cxx áramkörök már sokoldalú megszakítási rendszerrel rendelkeznek.A különböző PIC típusokba
n 1-4 db párhuzamos Port található, s minden típusban megtalálható egy időzítő/számláló egység, mely a valós idő mérésére vagy események számlálására alkalmas, valamint a mikrovezérlő működési biztonságát megnövelő watchdog timer. A további egységek opcionálisak, egyes változatokban szerepelnek, másokban nem ( további számlálók, soros Port aszinkron ill. szinkron átvitelre, A/D konverter analóg multiplexerrel, EEPROM adattároló ).A CMOS technológiának köszönhetően a PIC-ek kis fogyasztásúak és széles tápfe
szültség tartományban használhatók. A stand-by állapot tápáram igénye kisebb mint 1 A.A PIC mikrovezérlők a
RESET áramköri megoldások, az oszcillátor kapcsolási lehetőségek, az átfedéses utasítás végrehajtás és az utasításkészlet szempontjából egységesek.A PIC mikrokontrollerek oszcillátor típusai
A PIC mikrovezérlők minden típusa többféle oszcillátorral működhe
t - az oszcillátortípust az EPROM-ban ( esetenként EEPROM-ban ) kialakított konfigurációs biztosítékokkal lehet kiválasztani. A kvarcablakkal tokozott változatok és az EEPROM alapú PIC-ek esetén a felhasználó a beprogramozással egyidejűleg, a fejlesztő egység segítségével állíthatja be az oszcillátor típusát.Az egyszer programozható OTP (One Time Programmable) mikrovezérlőket zárt műanyag tokozással gyártják, ezeknél az oszcillátor típusát a gyártó már beállította. Az áramkör típusjele ilyenkor az oszcillátor típusára utaló betűkkel végződik, a kvarcablakos változatok típusjelének a végén JW áll. A négy oszcillátor lehetőség a következő:
LP: kisteljesítményű kvarcoszcillátor,
XT: kvarcoszcillátor,
HS: nagy sebeségű kvarcoszcillátor,
RC: ellenállás/kondenzátor hangolású oszcillátor.
A PIC mikrokontrollerekre közvetlenül ráköthető egy rezgőkvarc vagy egy kerámia rezonátor. Ezt a megoldást az XT, LP vagy HS üzemmódokban lehet alkalmazni. A gyártó a beépítésre kerülő kondenzátorok értékére is ad aján
lást.

A kvarcoszcillátor a PIC mikrovezérlők belső elemeinek használata nélkül, önálló külső áramkörként is megépíthető, s a PIC mint külső órajelet, tudja ekkor fogadni az oszcillátor impulzusait az OSC1/CLKIN bemeneten (OSC2 bekötetlen). A külső oszcillátor alkalmazása akkor célszerű, ha annak jelét más áramkörökhöz is el kell vezetni.
A RESET folyamatot három esemény indíthatja el:
A jelek után minden esetben azonnal indul az oszcillátor start-up időzítő (OST) áramkör, melynek számlálási idejéig (18ms a névleges érték) a mikrovezérlő még RESET helyzetben marad, majd megindul a normál működés.
A PIC mikrovezérlők
bemenetén a tápfeszültség bekapcsolásakor automatikusan működő RESET áramkört (Power-Up Reset) alakíthatunk ki. Ez a megoldás hosszú RESET időtartamot adhat, ami akkor lehet előnyös, ha a bekapcsolt tápfeszültség csak lassan éri el a névleges értékét.

Ha előre nem becsülhető meg a tápfeszültség növekedési üteme a bekapcsolás után, akkor az RC tagnál komolyabb áramköri megoldást alkalmaznak. A tápfeszültség névleges értékét egy Zener diódás kapcsolás érzékeli, s a küszöbszint felett megszünteti a RESET állapotot. Egy ilyen jellegű
áramkört mutat be az ábra.

A rendszer megbízhatósága, üzembiztonsága múlik ezen az áramköri részleten. Ha a RESET kialakítás nem megfelelő, és a belső folyamatok nem mennek végbe a RESET időtartama alatt, a mikrovezérlő egy véletlenszerű állapottal kezdi meg a működését. Ha ebből a helyzetből nem is képes kimenekülni, a teljes működésképtelenség alakul ki.A beépített vezérlő egységeknek általában nincs RESET gombjuk, végső megoldásként a felhasználó cs
ak kikapcsolhatja majd újra bekapcsolhatja a készüléket - de ekkor ismét ugyanaz a RESET folyamat játszódik csak le. Érdemes a tápegység felépítését, a táplálási rendszert tanulmányozni, s a RESET áramkört azoknak megfelelően úgy kialakítani, hogy minden bekapcsoláskor 100 -os biztonsággal megvalósuljon a belső RESET folyamat. VisszaÁtfedéses (pipe-line) utasítás-végrehajtás
A PIC mikrovezérlőkben külön vezérlő egység kezeli a programmemória kiolvasását és az utasítás végrehajtást. Így lehetséges, hogy az egyik utasítás végrehajtása alatt a másikat a CPU előre kiolvashatja a programmemóriából. A PIC-ek esetében ez az utasítás 'elő-olvasás' nem esetleges folyamat, hanem az alapműködés eleme.
Az alaposzcillátor ( OSC1 ) impulzusaiból a PIC belső időzítő-vezérlő egysége négy, egymást át nem fedő impulzus sorozatot állít elő, melyek frekvenciája az OSC1 frekvenciájának negyedrésze ( Q1, Q2, Q3, Q4). A négy leosztott órajel egy-egy impulzusa alkot egy gépi ciklust. A belső események a leosztott órajele
khez kötötten, szigorú rendben zajlanak:a következő gépi ciklusban az utasítás dekódolódik és végrehajtódik, miközben a fenti rendben egy következő utasítást olvas be a CPU a programtárból.
Minden utasítás értelmezése és végrehajtása egyetlen gépi ciklus alatt megtörténik, az ugró utasítások esetén az időközben beolvasott utasítás szó helyett másikat kell a programtárból kiolvasni, ezért az ugró utasításoknál egy további gépi ciklus is szükséges. A PIC mikrovezérlők átfedéses utasítás végrehajtása tehát gépi ciklusonként megvalósítja egy-egy utasítás végrehajtását, pedi
g tulajdonképpen ez két gépi ciklust igényelne.A PIC mikrovezérlők utasításkészlete
A PIC mikrovezérlők utasításkészletében 33 utasítás mnemonikja megegyezik, akár 16C5x, akár 16Cxx áramkörröl legyen is szó. Mivel a mnemonikok megegyeznek, a PIC szoftver fejlesztő rendszerek minden típushoz használhatóak.
A PIC16C5x áramkörök utasításai 12 bit hosszúak, az utasításkészlet 33 utasításból áll. A PIC16xx mikrokontrollerek utasításai 14 bit hosszúságúak, a készlet 35 utasításból áll. Az utasítások felépítését az ábra szemlélteti.

|
Mnemonik, operandus |
Leírás |
Ciklus |
Módosuló flag |
Megj. |
|||
|
BÁJT ORIENTÁLT, FÁJL REGISZTERES UTASÍTÁSOK |
|||||||
|
ADDWF |
f,d |
W + f |
1 |
C,DC,Z |
1,2 |
||
|
ANDWF |
f,d |
W és f És kapcsolata |
1 |
Z |
1,2 |
||
|
CLRF |
f |
f törlése |
1 |
Z |
2 |
||
|
CLRW |
W törlése |
1 |
Z |
||||
|
COMF |
f,d |
f negálása |
1 |
Z |
1,2 |
||
|
DECF |
f,d |
f -1 |
1 |
Z |
1,2 |
||
|
DECFSZ |
f,d |
f -1, ha az eredmény 0, a következő utasítást átlépi |
1(2) |
1,2,3 |
|||
|
INCF |
f,d |
f +1 |
1 |
Z |
1,2 |
||
|
INCFSZ |
f,d |
f +1, ha az eredmény 0, a következő utasítást átlépi |
1(2) |
1,2,3 |
|||
|
IORWF |
f,d |
W és f VAGY kapcsolata |
1 |
Z |
1,2 |
||
|
MOVF |
f,d |
f másolása |
1 |
Z |
1,2 |
||
|
MOVWF |
f |
f-be kerül W tartalma |
1 |
||||
|
NOP |
Nincs működés |
1 |
|||||
|
RLF |
f,d |
f tartalma balra lé ptetődik a Carry flag-en keresztül |
1 |
C |
1,2 |
||
|
RRF |
f,d |
f tartalma jobbra léptetődik a Carry flag-en keresztül |
1 |
C |
1,2 |
||
|
SUBWF |
f,d |
f - W |
1 |
C,DC,Z |
1,2 |
||
|
SWAPF |
f,d |
f alsó és felső 4 bitjét felcseréli |
1 |
1,2 |
|||
|
XORWF |
f,d |
W és f XOR kapcsolata |
1 |
Z |
1,2 |
||
|
Mnemonik, operandus |
Leírás |
Ciklus |
Módosuló flag |
Megj. |
||
|
BIT ORIENTÁLT, FÁJL REGISZTERES UTASÍTÁSOK |
||||||
|
BCF |
f,b |
f-ben a b bitet 0-ra törli |
1 |
1,2 |
||
|
BSF |
f,b |
f-ben a b bitet 1-be állítja |
1 |
1,2 |
||
|
BTFSC |
f,b |
Ha f b bitje 0, akkor a következő utasítást átlépi |
1(2) |
3 |
||
|
BTFSS |
f,b |
Ha f b bitje 1, akkor a következő utasítást átlépi |
1(2) |
3 |
||
|
Mnemonik, operandus |
Leírás |
Ciklus |
Módosuló flag |
||||
|
LITERAL (KONSTANSOS) ÉS VEZÉRLŐ UTASÍTÁSOK |
|||||||
|
+ADDLW |
k |
W + k összeg W-be kerül |
1 |
C,DC,Z |
|||
|
ANDLW |
k |
W és k ÉS kapcsolata W-be kerül |
1 |
Z |
|||
|
CALL |
k |
Szubrutinra ugrás |
2 |
||||
|
CLRWDT |
Törli a Watchdog Timer-t (WDT) és az előosztóját |
1 |
|
||||
|
GOTO |
k |
Feltétel nélküli ugrás, k értéke a PC-be íródik |
2 |
||||
|
IORLW |
k |
W és k VAGY kapcsolata |
1 |
Z |
|||
|
MOVLW |
k |
W-be kerül k |
1 |
||||
|
#OPTION |
W-t betölti az OPTION regiszterbe |
1 |
|||||
|
+RETFIE |
Visszatérés a megszakítást kezelő szubrutinból |
2 |
|||||
|
RETLW |
k |
Szubrutinból visszatérés és W-be kerül k |
2 |
||||
|
+RETURN |
Szubrutinból visszatérés |
2 |
|||||
|
SLEEP |
A processzor Sleep üzemmódba lép |
1 |
|
||||
|
+SUBLW |
k |
W - k különbség W-be kerül |
1 |
C,DC,Z |
|||
|
#TRIS |
f |
W-t betölti az I/O vezérlő regiszterbe |
1 |
||||
|
XORLW |
k |
W és k XOR kapcsolata |
1 |
Z |
|||
Megjegyzések:
# Csak a 16C5x típusoknál szereplő utasítások.
+ Csak a 16Cxx családnál szereplő utasítások.
Az utasítások ismertetésénél alkalmazott jelöléseket a táblázat foglalja össze.
|
Jelölés |
Magyarázat |
|
f |
Regiszter fájl cím |
|
W |
Munkaregiszter |
|
b |
Bit cím egy 8 bites fájl regiszteren belül |
|
k |
Konstans (literal) illetve cím adat |
|
d |
Cél kijelölő elem (default érték d=1), d=0: az eredmény a W-be kerül, d=1: az eredmény az f fájl regiszterbe kerül. |
|
PC |
Programszámláló |
|
C,DC,Z, |
A Státusz regiszter ( SWR) jelző bitjei |