Vissza a főoldalra    Vissza a PIC főoldalra

<< 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.

A programmemória és kezelése
10.1-1. Ábra

Vissza a lap tetejére

      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 >>

Vissza a főoldalra    Vissza a PIC főoldalra