Tudomány és Technika | PIC mikrovezérlők | Adatlapok |
<< Előző oldal Vissza a tartalomjegyzékhez Következő oldal >>
7.1. A PIC16F505 mikrovezérlő programmemóriája
A PIC16F505 mikrovezérlőbe két teljesen különálló memóriablokk van elhelyezve: a FLASH programmemória és az SRAM adatmemória.
A PIC16F505 mikrovezérlő programmemóriája 1024 db 12-bites memóriarekeszből áll.
A programmemória, a programszámláló és a két-szintes hardver verem kapcsolatának blokkvázlata látható a következő ábrán.
7.1-1. Ábra
A 12-bites programmemória a következő részekből áll:
ˇ
1024-szavas felhasználói memória, amely a mikrovezérlő működtető-programját tárolja (a Reset-vektor által kijelölt utolsó helyen egy MOVLW xx utasítás áll, amely a mikrovezérlő Reset utáni indulásakor a belső RC oszcillátor kalibrációs értékét tölti be a munkaregiszterbe);
ˇ
4-szavas felhasználói azonosító mező, amely csak programozási üzemmódban érhető el, de ezen memóriarekeszek esetében adattárolásra csak az alsó 4-bites rész használható, a felső nyolc bitet "1"-esekkel kell feltölteni: 1111 1111 xxxx;
ˇ
a belső RC oszcillátor kalibrációs értékét tároló háttérregiszter (404h), amelynek segítségével a felhasználói programmemória törlése után a kalibrációs érték a 3FFh helyre visszaírható (csak programozási üzemmódban érhető el);
ˇ
a konfigurációs szó (7FFh), amely a mikrovezérlő hardverbeállításait határozza meg (csak programozási üzemmódban érhető el).
Az 1024-szavas programmemória címzését a 10-bites programszámláló (PC) végzi, amelynek az adatmemóriába beágyazott alsó 8 bitje általános adatregiszterként kezelhető. A programszámláló értéke normál sorrendű programfutásnál minden utasításbeolvasás után eggyel nő. A Reset-működés során 3FFh-ra áll be, majd a kalibrációs utasítás beolvasása után túlcsordul 000h-ra és az itt elhelyezett utasítással kezdi a felhasználói program végrehajtását.
Programelágazások esetén a programmemória-cím alsó része közvetlenül az elágazó utasításból kerül a programszámlálóba, a felső rész értékadása pedig szoftverből történik, az alábbiaknak megfelelően.
A GOTO utasítás tartalmazza a cím alsó 9-bitjét, a felső bit a STATUS regiszter PA0 bitje, amelyet a felhasználói programnak még a GOTO utasítás kiadása előtt be kell állítania. (A külön kezelendő PA0 bit a programmemóriát két 512-szavas lapra osztja. Lapváltás esetén a PA0 bitet módosítani kell!) A következő ábra a GOTO utasítás címbeállítását mutatja be.
7.1-2. Ábra
A CALL szubrutinhívó utasítás és a PCL regiszter közvetlen írásával működő "számított ugrások" csak a memórialapok alsó 8-bites címtartományát (256 szó) képesek elérni, mivel ilyen esetekben a PC 8. bitje automatikusan nullára áll be. A szubrutinhívások és "számított ugrások" címbeállítását mutatja be a következő ábra.
7.1-3. Ábra
A szubrutinhívásoknak és a "számított ugrásoknak" a programmemória-lapok első 256 szavának valamelyikére (a 000h..0FFh vagy 200h..2FFh címekre) kell irányulnia!
Szubrutinhívás esetén a visszatérési cím a 2-szintes hardver verembe kerül, amely így két szint mélységű szubrutin-egymásbaágyazódást tesz lehetővé. A verem nem része az adatmemóriának, így nem is írható vagy olvasható szoftveresen, mintahogy a veremmutató sem. A verem állapotáról vagy esetleges túlcsordulásáról a felhasználó nem kap tájékoztatást.
Szubrutinhívás esetén a normál sorrendű programfutásra való visszatérés nem igényel memórialapozási műveleteket, mivel a veremben a teljes 10-bites visszatérési cím tárolódik.
A szubrutinhívások és számított ugrások részletes bemutatása és programozási példái megtalálhatók a Kisteljesítményű 8 bites PIC mikrovezérlők Felhasználói Kézikönyvben.
Tudomány és Technika (test@t-es-t.hu)
<< Előző oldal Vissza a tartalomjegyzékhez Vissza a lap tetejére Következő oldal >>
Tudomány és Technika | PIC mikrovezérlők | Adatlapok |