WebElektronika

Típusátalakítások a PIC18F családban

person access_time 2014.04.03.
Mikrovezérlők használata során gyakran kell különböző átalakításokat végeznünk, amelyekre vannak módszerek, érdekes megvalósítások. Az MCC18-as fordító függvényei most nem kerülnek bemutatásra.


Mikrovezérlők használata során gyakran kell különböző átalakításokat végeznünk. Ezért most bemutatjuk a leggyakrabban előforduló konverziókat, amelyek fordítófüggetlenek.

A PIC18-as fordítóknál sincs "byte" típus, de ez nem is baj, hiszen mind a "byte", mind a "char" nyolcbites, viszont a "char" előjeles. Tehát a "byte" megfelel az "unsigned char"-nak.
 

int típusból byte

Készítsünk egy projektet a PIC18F család egyik mikrovezérlőjére (pl.: PIC18F14K50). Ennek a projectnek a segítségével fogjuk az "int" típusú számot átalakítani "unsigned char"-rá. Hangsúlyozzuk, a most bemutatásra kerülő módszerek nem fordító-, vagy eszközfüggők. Vegyünk fel 2x2 byte (unsigned char) és egy int típusú változót (1. ábra).


1. ábra   Int-ből byte-ok
 

A kívánt eredményt kétféleképpen fogjuk elérni. Először az átalakítandó számot elosztjuk 256-tal (felső byte), illetve modulo 256-tal (alsó byte). A modulo (maradék) osztás eredménye az "alsó" byte-ba kerül. Az "int" típusú eredmény két byte-on kerül ábrázolásra.
A másik megoldás az, amikor az átalakítandó számot balra léptetjük, illetve maszkoljuk. A szimulációs eredményen jól látható, hogy mind a két megoldás ugyanazt az eredményt adja  (2. ábra).


2. ábra   Szimulációs eredmények a watch ablakban
 

long típusból byte

A "long" típusú változó négy byte-on kerül ábrázolásra, az átalakítása byte-okra ugyanúgy történik, mint az előző részben, itt is maszkolás és léptetés történt (3. ábra).


3. ábra   Long-ból byte-ok
 

Ha szimuláljuk a programunk működését az MpLAB fejlesztőkörnyezetben, akkor a következő eredményt kapjuk (4. ábra).


4. ábra   Szimulációs eredmény
 

byte típusból int

Nézzük meg most azt az esetet, amikor nem egészből (int, long) kell byte-okat előállítanunk, hanem byte-okból egész típust.

Írjuk meg egy projekt keretén belül a következő programot (5. ábra). A felső byte-ot (amely az MSB bitet tartalmazza) megszorozzuk 256-tal, és az így kapott értékhez hozzáadjuk az alsó byte tartalmát.


5. ábra   Byte-okból int
 

A program lefordítása és futtatása után a következő szimulációs eredményt kapjuk (6. ábra) :


6. ábra   Szimulációs eredmény a Watch ablakban
 

A következő részben azt nézzük meg, hogy az MCC18-as fordító milyen lehetőségeket kínál a PIC18F-es mikrovezérlők programozóinak.