Fórum témák

» Több friss téma
Cikkek » PIC-ekről kezdőknek
PIC-ekről kezdőknek
Szerző: mspike, idő: Jan 10, 2006, Olvasva: 94185, Oldal olvasási idő: kb. 4 perc
Lapozás: OK   4 / 7
A itt leírt parancsokat PIC assembly-ben használhatjuk. (MPLAB IDE nevű programban erre is módunk van erről késöbb). A parancsok összefoglalva angolul :

Nos gondolom legtöbbünk tud minimálisan angolul, de azért leírom mi mit is csinál és, hogy értelmezzük ezt a táblázatot. Nézzük hát, az első oszlopba látjuk mik a parancsok és, hogy hány operandust kell mögéírni. A kis f betű általában egy regiszter helyét jelöli. A kis d a célt jelöli ide általában W vagy F-et lehet írni, tehát ha W-t írunk az eredmény a Wevébe kerül. Ha F-et akkor az operandusok közt szereplő regiszterbe kerül. A kis k konstansokat jelöl. A kis b pedig azt jelöli, hogy hányadik biten akarjuk elvégezni a műveletet. (LSD. késöbb) Második oszlopba láthatjuk angolul a jelentést. Harmadik oszlopban látjuk, hogy hány belső ciklus kell a parancs végrehajtásához, ez időzítésnél, futásidő számításnál nagyon hasznos. A 14bites opkód nagyon jó, ha megvan de számunkra még semmi haszna nem lesz... hacsak nem akarja valaki bitenként programozni a picet, vagy ha valaki írni akar egy új nyelvet pic programozáshoz, de akkor nem hiszem, hogy idáig eljutott ezzel a cikkel . Az ötödik oszlop annál hasznosabb számunkra. Bizonyos utasítások állítják a STATUS regiszter egyes bitjeit. A betük jelentése, és erre még a STATUS regiszter taglalásánál visszatérek... C - carry, Z-zero, DC-Digit Carry. Ezek ismerete elengedhetetlen bármely processzoros rendszerbe, és ez még közelse az összes úgynevezett FLAG. A Flagek mindig az előző utasításra vonatkoznak. Carry az a bit ami már nem fér bele a 8bitbe, úgyis vehetjük mint egy felső 9. bit. Akik foglalkozott digitális technikával alighanem ismeri ezt a fogalmat, aki nem majd késöbb ráérez mi is ez. A Z flag, azt jelzi, hogy az előző eredmény 0, ez is roppant hasznos, pl. összehasonlításoknál. A DC már egy speciálisabb dolog, a 8 bitet kétszer 4 bitnek veszük és az alsó és fölső 4 bit közti bitátlépést jelöli ez a flag. Ennek főleg BCD kódolásnál van jelentősége. Ezt is késöbb megértjük jobban. Nos akkor nézzük mit is csinálnak ezek a parancsok.

ADDWF f,d Hozzáadja a W tartalmát egy regiszterhez majd az eredményt a megadott helyre teszi F-a regiszterbe W-a wewébe.
ANDWF f,d Összeéseli W tartalmát egy regiszterrel, eredményt a leírt módon helyezi el, ezt már nem írom ki mindenhova, remélem érthető
CLRF f Törli az adott regisztert
CLRW Törli a W-t. Ezt igen ritkán használjuk, hiszen mikor új adatot rakunk W-be az autómatikusan felülírja az előző értéket.
COMF f Komplementálja az adott regisztert. (kettes komplemensét képzi. Ez csak adott számításoknál használják, pl. kivonás, de a kivonásra külön parancs van így ott most pont nem...
DECF f Csökkenti a regiszter tartalmát eggyel. reg=reg-1; vagy aki c-hez szokott c--
DECFSZ f Csökkenti a regisztert eggyel, és ha elérjük a nullát akkor a következő utasítást átugorja, ez remekül használható számlálós ciklus megírásához. Késöbb kitérünk rá
INCF f Növeli a regiszter tartalmát eggyel c-ben reg++;
INCFSZ Növeli a regiszter tartalmát eggyel és ha nulla az eredmény átugorja a következő utasítást. Itt van egy kis trükk, hiszen, hogy lehetne egy regiszter tartalma nulla ha növeljük. Negatív számokról itt nincs szó, de ha a regiszter eléri a maximális értékét FFH-t akkor ha hozzáadunk egyet "átfordul" tehát FFH +1 értéke 8biten nem 100H lesz hanem 00H.
MOVF f,d A regiszter tartalmát átteszi a W-be vagy önmagába. Ennek elsőre kevés értelme van, de ha jobban beleássuk magunkat, ha megszeretnénk vizsgálni, hogy a regiszter üres-e akkor visszatesszük magába és megnézzük a Z flaget.
MOVWF f A W tartalmát beleteszi a regiszterbe.
NOP Látszólag megint egy értelmetlen utasítás, pontosan semmit se csinál, csak lefoglal egy utasításnyi időt, éppen ezért késleltetési szerepe van. Ha szeretnénk várakozni egy kevesett de nem kell halálpontosnak lennie az időzítésnek, akkor nem fogunk a számlálókkal bajlódni, hanem beteszünk egy pár sort, ami pár ezerszer végrehajt egy nop-ot. Vagy ha pl. nagyon rövid időt kell várnunk akkor lehet, hogy 3-4nop is elég
RLF f,d Balra rotálja a regisztert, értelme ennek is van de ez már kicsit mélyebb digitális ismereteket feltételez. Lényegében a register bitjeit elforgatja (eltolja, de ami kiesne felül alul visszajön
RRF f,d Ugyan az mint az előbb, csak jobbra tolja forgat.
SUBWF f,d A W tartalmát kivonja a regiszterből
SWAPF f,d Megcseréli a regiszter alsó és felső 4 bitjét
XORWF f,d XOR logikai műveletet hajt végre W és a regiszter között. Értelme ennek elég sokvan, az adott műveleten kívül pl. HASH kód képzésénél is jóljön ez a parancs.
BCF f,b A megadott regiszter b-edik bitjét 0-ba állítja
BSF f,b A megadott regiszter b-edik bitjét 1-be állítja
BTFSC f,b A megadott regiszter b-edik bitjét vizsgálja ha nulla kihagyja a következő utasítást
BTFSS f,b A megadott regiszter b-edik bitjét vizsgálja és kihagyja a következő utasítást ha az adot bit 1-es
ADDLW k Hozzáad egy konstanst W-hez
ANDLW Összeéseli W és konstans értékét, maszkolásnál jól jön !
CALL k Meghívja a megadott subrutint erről késöbb
CLRWDT Törli a Watchdog timer-t, ezt itt nem fogjuk tárgyalni, röviden annyi a történet, hogy van a PIC-ekben egy teljesen külön futó időzítő, saját meghajtással ami teljesen független a pic oszcillátorától. Ha ezt engedélyezzük akkor bizonyos időkön belül törülnünk kell, ha nem és a Watchdog eléri a maximális értékét akkor reseteli a pic-et... ennek főleg ipari alkalmazásokban van jelentősége. Cikkkis ha befagy egy emelő vagy akármi más életveszélyes dolod De miután ennek használata külön művészet így itt most ezt kihagynám.
GOTO k Ugrik egyett a programban adott helyre, hogy mi is a különbség a GOTO és CALL között biztos sokan tudják, de késöbbiekben tárgyaljuk
MOVLW k Egy konstanst tesz a W-be. NAGYON FONTOS parancs. Enélkül nem tudnánk értékeket pakolni a regiszterekbe erről is késöbb...
Nos a kimaradt parancsok már elég speciális esetek, ezeket a késöbbiekben taglaljuk majd. Nézzük a fizikai feltételeit a munkánknak...
A cikk még nem ért véget, lapozz!
Következő: »»   4 / 7
Értékeléshez bejelentkezés szükséges!
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem