<< Előző oldal Vissza a tartalomjegyzékhez Következő oldal >>
10.1. Programmemória
A közepes teljesítményű PIC mikrovezérlőkbe két teljesen különálló memóriablokk van elhelyezve, az EPROM vagy FLASH programmemória és az
adatmemória (RAM).
A programmemória 14 bites szóhosszúságú és a 13 bites programszámláló miatt 8kx14 bit maximális nagyságú. (A közepes teljesítményű PIC mikrovezérlőket 0,5k; 1k; 2k; 4k és 8k programmemóriájú változatokban gyártják.)
Mivel minden utasítás egyszavas, könnyen megállapítható egy adott programhoz szükséges memóriaméret. (8kx14 bit programmemóriában 8192 db utasítás fér el.)
A maximálisan 8k programmemória szoftver elérési oldalról 2k-s lapokra van osztva (0h..7FFh; 800h..FFFh; 1000h..17FFh; 1800h..1FFFh). A programmemória, a programszámláló és a nyolc-szintes hardver verem kapcsolatának blokkvázlata látható a következő ábrán.
10.1-1. Ábra
Normál sorrendű programvégrehajtásnál a programszámláló (PC) minden utasításbeolvasás után 1-gyel nő. Ez a működési mód nem igényel különleges lapozási technikákat, a programszámláló egyszerűen átlép egyik lapról a másikra.
Programelágazások esetén viszont (a 2k-nál nagyobb programmemóriájú mikrovezérlőknél) az esetleges lapváltást a felhasználói programnak kell megoldania. Erre a CALL szubrutinhívásnál és a GOTO feltétel nélküli ugrásnál van szükség, ugyanis ezekben az utasításokban nincs tárolva a teljes cím, csak annak alsó 11 bitje.
A lapozást a fenti ábrán is látható PCLATH vezérlő regiszter (az adatmemóriában) legalsó 5 bitjének módosításával kell végezni.
Mivel a nyolc-szintű hardver verem 13 bites szóhosszúságú, a szubrutinból való visszatéréskor már nincs szükség lapozásra; a verem legfelső tárolt címe egyszerűen beíródik a programszámlálóba.
A mikrovezérlő Reset-folyamata során a PC programszámláló nullázódik, tehát a programfutás a 0h programmemória-címről indul.
Megszakításelfogadás után a PC értéke a verembe kerül majd utána a 0004h cím töltődik be, vagyis a programfutás innen folytatódik. A megszakításkezelő programrésznek így a 0004h címen kell kezdődnie. A 0004h cím PC-be töltődésekor a PCLATH regiszter nem nullázódik le (és nem is követi a PCH értékét). Ezért a megszakításkezelő programnak a PCLATH regisztert a kívánt értékre kell állítania még mielőtt az felhasználásra kerülne (CALL, GOTO, számított GOTO). A megszakításkezelő szubrutinból való visszatéréskor a visszatérési cím a veremből a PC-be töltődik és a program a megszakítás helyétől folytatódik.
A programmemória végére (vagy a konfigurációs területre) szükség esetén a gyártó elhelyez bizonyos kalibrációs értékeket, amelyek az eszköz (illetve annak belső perifériáinak) pontos működéséhez szükségesek. Ezeket még a programmemória első törlése előtt ki kell olvasni és fel kell jegyezni, hogy a szoftverben felhasználhatóak legyenek. (Ilyen például a belső RC oszcillátor kalibrációs értéke.)
A programmemória tartalmaz bizonyos nagyságú a programból nem elérhető konfigurációs memóriaterületet. Ezen memóriaterületen van elhelyezve:
ˇ
a 4 szavas azonosító mező a 2000h..2003h címeken, ahol a felhasználó bármilyen számadatot tárolhat (azonosító, ellenőrző összeg...);
ˇ
az újabb fejlesztésű mikrovezérlőknél a 2006h címen egy típusazonosító, amelynek kiolvasásával a mikrovezérlő típusa egyértelműen azonosítható;
ˇ
és a 2007h címen a konfigurációs szó.
Ezek a memóriahelyek csak programozáskor írhatóak és olvashatóak.
Tudomány és Technika (test@t-es-t.hu)
<< Előző oldal Vissza a tartalomjegyzékhez Vissza a lap tetejére Következő oldal >>