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: 94352, Oldal olvasási idő: kb. 2 perc
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! Értékeléshez bejelentkezés szükséges! |
Bejelentkezés
Hirdetés |