Fórum témák

» Több friss téma
Cikkek » Nulláról a robotokig - PIC Mikrovezérlők I rész
Nulláról a robotokig - PIC Mikrovezérlők I rész
Szerző: Topi, idő: Jún 12, 2007, Olvasva: 119630, Oldal olvasási idő: kb. 1 perc
Lapozás: OK   15 / 24

A lényeg a feltételkezelés. Ebben a részben először egy egyszerűbb példát láthatunk, majd a tanultakat az előző programunkba építjük.

  1. MOVLW   b'00000000'   ;Literális értéket bele a Workbe
  2. BTFSC   PORTA,0       ;Ha a PORTA 0. bitje 0 akkor átugorja a 3. sort
  3. MOVLW   b'00000001'   ;Ha nem ugrottuk át, akkor a Work-be töltjük az értéket
  4. MOVWF   PORTD         ;Kirakjuk a PORTD-re

A következő fájl, csak ezt a feltétel kezelést tartalmazza. Hogy ki tudjuk próbálni, fordítsuk le, égessük be, és nyomkodjuk az S1 feliratú gombot!

Az egész ASM letölthető innen: asm_input.zip

Ha beleégettük és kipróbáltuk, rájövünk, hogy a a LED pont fordítva világít. Ennek az az oka, hogy a gombok felhúzó ellenállásai miatt felengedett állapotban van 1-es szint, lenyomott állapotban pedig 0-ás szint van a PIC bemenetén. Vagyis a bit tulajdonképpen azt jelenti, hogy "felvan-e engedve a gomb". Ezért ha azt akarjuk, hogy akkor világítson a LED amikor lenyomjuk használjuk a BTFSC ellenkezőét, a BTFSS-t.

Mostpedig ha már ilyen jól begyakoroltuk a bevitel és feltétel kezelést, vegyítsük össze a kettőt. Vezéreljük a gombokkal a LED-ek forgás irányát.

  1. MAIN
  2.  BTFSS   PORTA,0   ;Következő sor végrehajtása ha lenyomva S1
  3.  RLF  PORTD,F   ;Balra forgatja a biteket (F most egyenlő a PORTD-vel)
  4.  BTFSS   PORTA,1   ;Következő sor végrehajtása ha lenyomva S2
  5.  RRF  PORTD,F   ;Jobbra forgatja a biteket
  6.  CALL DELAY
  7.  GOTO MAIN   ;Visszaugrunk a legelejére

A fentebbi a legfontosabb sor. Ha a PORTA 0. bitjén lévő gomb van lenyomva, akkor végrehajtódik az RLF parancs, vagyis balra forgatja a biteket. Ha a PORTA 1. bitjén lévő gomb le van nyomva, akkor pedig  végrehajtjuk az RRF parancsot, vagyis jobbra forgatjuk a biteket.

Az RLF és RRF parancsok használják a C jelzőbitet. Mikor egy bit "leforgott" a 8 bitről, akkor a leesett bitet eltárolja a C jelzőbitben. A következő forgatásnál az új helyre azt a bitet teszi be. Így előfordulhat, hogyha "szemét" van a C jelzőbitben, akkor beleforgatja azt a PORTD-be is. Ezért a forgatás és eleve a MAIN rész előtt, hívjuk meg a CLRC parancsot.

A már módosított ide-oda futós program letöltése: asm_forgo.zip


(Kattints a képre, és töltsd le a videót)

Folytassuk az assembly nyelv debugolásával...


A cikk még nem ért véget, lapozz!
Következő: »»   15 / 24
É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