Vissza a főoldalra    Vissza a PIC főoldalra

<< Előző oldal   Vissza a tartalomjegyzékhez   Következő oldal >>

 


7.6. Megszakítás programozás


      A megszakításkezelés programozása két részből,
     ˇ a főprogramban elhelyezett megszakítás-beállító, -engedélyező és -tiltó programsorok;
     ˇ és a megszakításkezelő szubrutin megírásából áll.

      Egy megszakítás beállítást mutat be a következő programrészlet.

  ...    
  clrf STATUS ;a regiszter nullázása
  clrf INTCON ;az engedélyező és jelzőbitek törlése
  clrf PIR1 ;a periféria megszakítás jelzőbitek törlése
  bsf STATUS,RP0 ;az 1. memórialap kiválasztása
  movlw B'01101010' ;a megszakítás engedélyező maszk bevitele
  movwf PIE1 ;a maszk érvényesítése
  bcf STATUS,RP0 ;a 0. memórialap kiválasztása
  ...    
  bsf INTCON,GIE ;globális megszakítás engedélyezés
  ...    

      A megszakításkezelő szubrutin (alprogram) feladatai:
     ˇ szükség esetén a W munkaregiszter és a STATUS regiszter értékének mentése és a megszakításkezelés után ezek helyreállítása;
     ˇ több engedélyezett megszakítás esetén a forrás prioritásos meghatározása;
     ˇ a megszakításkérés kezelése;
     ˇ a lekezelt megszakításkérés jelzőbitjének törlése.

Vissza a lap tetejére

      A következő folyamatábra egy tipikus megszakításkezelő szubrutint mutat be.

A megszakításkezelő szubrutin folyamatábrája
7.6-1. Ábra

Vissza a lap tetejére

      A folyamatábra alapján a következő program állítható össze.

  ...    
isr: movwf W_TEMP ;a W másolása a W_TEMP-be
  swapf STATUS,W ;a STATUS bitcserés másolása a W-be
  movwf STATUS_TEMP ;a W (STATUS) másolása a STATUS_TEMP-be
  clrf STATUS ;a 0. memórialap kiválasztása
  btfsc INTCON,T0IF ;Timer0 túlcsordulás vizsgálata
  goto t0i ;ugrás, ha a Timer0 túlcsordult
  btfsc INTCON,RBIF ;B port változás vizsgálata
  goto rbi ;ugrás, ha változás történt
  btfsc PIR1,ADIF ;A/D átalakító jelzőbit vizsgálata
  goto adi ;ugrás, ha a konverzió befejeződött
  goto end ;nincs aktív jelzőbit
t0i: ... ;a túlcsordulási esemény lekezelése
  ...
  bcf INTCON,T0IF ;a jelzőbit nullázása
  goto end ;ugrás a szubrutin végére
rbi: ... ;a változás lekezelése
  ...
  bcf INTCON,RBIF ;a jelzőbit nullázása
  goto end ;ugrás a szubrutin végére
adi: ... ;az A/D eredmény kezelése
  ...
  bcf PIR1,ADIF ;a jelzőbit nullázása
end: swapf STATUS_TEMP,W ;a STATUS_TEMP bitcserés másolása a W-be
  movwf STATUS ;a STATUS_TEMP másolása a STATUS-ba
  swapf W_TEMP,F ;a W_TEMP bitcseréje
  swapf W_TEMP,W ;a W_TEMP másolása a W-be
  retfie   ;visszatérés a megszakításból
  ...    

      Ha a jelzőbitek vizsgálata során a szubrutin nem talál aktív jelzőbitet, akkor hibás programműködésről van szó. Ennek lekezelésére beépíthető egy külön programrész, amely megteszi a szükséges lépéseket. A hiba oka valószínűleg egy akaratlanul engedélyezett megszakítás.

  Tudomány és Technika (test@t-es-t.hu)


 

<< Előző oldal   Vissza a tartalomjegyzékhez   Vissza a lap tetejére   Következő oldal >>

Vissza a főoldalra    Vissza a PIC főoldalra