Fórum témák

» Több friss téma
Cikkek » Nulláról a robotokig - PIC Mikrovezérlők III rész
Nulláról a robotokig - PIC Mikrovezérlők III rész
Szerző: Topi, idő: Júl 13, 2007, Olvasva: 51475, Oldal olvasási idő: kb. 1 perc
Lapozás: OK   8 / 19

Nagyrészében ugyan azt kell csinálni, mint az előzőnél, az RB0/INT esetén.

  1. LIST P=16F877
  2.  #INCLUDE "P16F877.INC"
  3.  ERRORLEVEL 0, -302  ; suppress bank selection messages
  4.  __CONFIG _XT_OSC&_CP_OFF&_WDT_OFF&_LVP_OFF
  5.  CBLOCK 0x70   ;A Minden BANK-ból látható GPR kezdőcím
  6.   W_SAVE
  7.   STATUS_SAVE
  8.  ENDC
  9.  
  10.  
  11. #include "m_bank.asm"
  12.  
  13.  
  14.  ORG 0
  15.  GOTO MAIN   ;Beugrunk a MAIN loopba
  16.  
  17.  
  18.  ORG 4
  19.  ; Elmentjük a Work és Status regisztereket
  20.  MOVWF W_SAVE   ;Először a Work regisztert
  21.  MOVFW STATUS   ;STATUS-t bele a már lementett Workbe
  22.  MOVWF STATUS_SAVE  ;Status_save-be beletölti a Worköt
  23.  
  24.  
  25.  BCF  INTCON,RBIF  ;Töröljük az RBIF flag bitet (Jelezzük, kezeltük a megszakítást RB4:7)
  26.  MOVLW B'11111111'
  27.  XORWF PORTD,F   ;XOR PORTD bitjeit
  28.  
  29.  
  30.  ; Visszatöltjük a Work és Status regisztereket
  31.  MOVFW STATUS_SAVE
  32.  MOVWF STATUS
  33.  MOVFW W_SAVE
  34.  
  35.  
  36.  RETFIE     ;Visszajövünk az interruptból
  37.  
  38.  
  39.  
  40. MAIN
  41.  BANK1     ;Unit az m_bank.asm-ben
  42.  MOVLW B'00000000'  ;Betöltjük az akksiba a TRISD-be valót
  43.  MOVWF TRISD   ;Beletöltjük (mind kimenet a nulla miatt)
  44.  MOVLW B'11110000'  ;Betöltjük az akksiba a TRISB-be valót
  45.  MOVWF TRISB   ;Felső 4 bemenet (RB4-RB7)
  46.  BANK0     ;BANK0-ba visszalépünk
  47.  
  48.  
  49.  MOVLW B'01010101'  ;Betöltjük az akksiba a PORTD-be valót
  50.  MOVWF PORTD   ;Beletöltjük a PORTD-be
  51.  
  52.  
  53.  ;Beállítjuk az RB4:7 interruptot
  54.  BSF  INTCON,RBIE   ;Engedélyezzük az interruptot az RB4:7-re
  55.  BSF  INTCON,GIE   ;General Interrupt Enable bitet 1-re állítva bekapcsolunk mindent
  56.  
  57.  
  58. LOOP
  59.  NOP
  60.  GOTO LOOP     ;Vissza a végtelen ciklusba
  61.  
  62.  
  63.   END       ;Teljes program végét jelentő END

Ugyan azt csinálja mint az előző program, de gombnyomás hatására itt egyfolytában fog "változni", így csak azt látjuk, hogy nagyon gyorsan villognak a LED-ek, és annak ellenére, hogy csak minden második világít, folyamatos teljes soros világítást láthatunk. Ennek oka a szem tehetetlensége, így egybemosódik a kép.

Az egész program forráskód, segéd rutinok és fordított hex: rb47_asm.zip

Ugyan ezt nézzük C nyelven...


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