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: 94142, Oldal olvasási idő: kb. 2 perc
Lapozás: OK   3 / 7
A program futása

A picek egyszerű állatok, a programot sorról sorra hajtják végre, tehát ahogy jön a program memóriában. Ez persze szép, de nem igaz. A program ugyanis tartalmazhat ugrásokat (GOTO) és subrutin hívásokat (CALL). Viszont egy dolgot ne felejtsünk el, a program végrehajtás mindig a 0x0000H programmemória címen kezdődik. Tehát amit a legelső sorba írunk minden bekapcsoláskor végre hajtódik. A 877-nél a megszakítás vektor 0x0004h. Ez azt jelenti, hogy a program memória 4. rekeszére ugrik a program ha megszakítás történik. (Megszakítás olyan esemény ami a program futását megszakítja és más rekeszen folytatja a program futását. Ilyen lehet a számlálók lejárta, egy külső nyomógomb megnyomása, egy soros adat vétele... stb. A megszakítás kezelése innentől ránk van bízva. Az, hogy miért volt megszakítás a belső regiszterekből tudjuk meg. (erről még késöbb). Visszatérve azért fontos a megszakítás vektor mert ha programunk megszakításokkal dolgozik akkor a 0x0004h címen vagy egy ugrásnak kell lennie, vagy ide írjuk a megszakítás rutint és a program kezdődik úgy hogy GOTO mainprg. (a mainprg csak példa egy cimkére !!! Ide jön majd a főprogramrész memóriabeli helye, vagy cimkéje erről is késöbb) Remélem mostanra érthető a program futás menete.

A belső regiszterek

Nos fontos, hogy miként is tudjuk használni a perifériákat és az I/Okat. Minden periféria használ belső regisztereket, ezek írásával és olvasásával hatunk rájuk. A belső regiszterek BANK-okba vannak rendezve.


Itt láthatóak a 877-es belső regiszterei. Néhányat vegyünk át röviden.
TMR0 A 0. számláló értéke
PCL A programszámláló alsó byte-ja (relatív ugrást csak bizonyos határokon belül tudunk végezni)
STATUS Bitenként értelmezendő erre még kitérek
FSRIndirekt címzéshez (még ne...)
PORTx Az RA kimenetekhez tartozik, ha ezt írjuk a lábakon megjelenik a megfelelő érték (IRÁNYT KELL VÁLASZTANI !!!) Ha olvassuk megkapjuk a lábakra adott feszültségek digitális értékét. Ahol csak 3 kivezetés van mint pl. PORTE ott az alsó 3 bit értelmezhető a többi bit írása nincs hatással semmire, olvasásuk pedig fals értékeket ad.
PCLATHA program memória felső byte-ja
INTCON Megaszakítás beállítások
PIRxMegszakítás FLAGEK (innen derül ki mi okozta a megszakítást
TMR1L/HA Timer1 16 bites ezért 2*8 biten olvashatjuk írhatjuk
T1CONTimer1 beállításai, gondolom a T2CON innentől egyértelmű

itt egyenlőre ugorjunk egy nagyott a többit is taglalom majd a periféria bemutatásnál.

GPR General Purpose Register - Általános célú regiszter ezekbe bármit írhatunk majd olvashatjuk a már említett változók.
W [Wevé] = Z80 Akuja, egyetlen 8 byteos regiszter, azért van rá szükség mert a PIC nem tud közvetlen adatmozgatást két regiszter között, tehát amit írni akarunk egyik regiszterből a másikba azt betesszük a W-be majd a W-t írjuk bele a másik regiszterbe. Ez kicsit úgy tűnik megvan csavarva és meg is van, de a gyorsaság kárpotól minket.

Nos mikor kiadunk egy adatmozgató utasítást ezekkel a regiszterekkel babrálhatunk.
nézzük az utasításokat.
A cikk még nem ért véget, lapozz!
Következő: »»   3 / 7
Értékeléshez bejelentkezés szükséges!
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.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