Page 14 - Microcontrolere - Indrumator de laborator
P. 14

MOVLW         100h
                 MOVWF         CONTOR
             adr_3:
                 DECFSZ        CONTOR, 1      ; Execuția acestei instrucțiuni scade
                                              ; 1 din conținutul locației de memorie
                                              ; de date și se testează dacă rezultatul
                                             ; este zero.
                 ; În caz de rezultat nul, PC adresează instrucțiunea SUBWF ce urmează
                 ; după instrucțiunea GOTO (incrementare PC cu doi). Altfel, se execută
                 ; instrucțiunea GOTO care va avea ca efect decrementarea PC cu o unitate,
                 ; iar instrucțiunea de la adresa adr_3 va fi executată din nou

                 GOTO          adr_3
                 SUBWF         CONTOR, 0
             ...
                 Un  caz  particular  al  instrucțiunii  GOTO  este  acela  în  care  conținutul  PC
          rămâne  neschimbat  în  urma  executării  unei  instrucțiuni,  după  cum  se  indică  în
          instrucțiunile următoare:
                 GOTO          $
          sau
          adr_4:  GOTO         adr_4 ; buclă infinită de așteptare.
          Aceste instrucțiuni se folosesc în special în cazul în care microcontrolerul se găsește
          într-o  stare  de  așteptare  de  întreruperi.  Dacă  apare  o  întrerupere  (de  exemplu,
          recepționarea  unui  octet  la  portul  serial  EUSART)  și  întreruperea  respectivă  este
          nemascată, numărătorul de program PC se încarcă cu adresa subrutinei de deservire a
          cererii de întrerupere,  după care în numărătorul de program PC se încarcă din nou
          adresa la care se execută bucla de așteptare infinită.

               D) Incrementarea automată a conținutului numărătorului de program PC cu o
          unitate după execuția unei instrucțiuni, mai poate fi întreruptă de o instrucțiune de tip
          CALL, a cărei execuție reprezintă un apel de subrutină. În cazul utilizării instrucțiunii
          CALL se folosește din Fig. 1.1 și o stivă de memorie organizată pe opt nivele, fiecare
          nivel  fiind  astfel  conceput  ca  să  rețină  o  adresă  codată  pe  13  biți  folosită  pentru
          accesarea  memoriei  de  program.  Instrucțiunea  CALL  este  folosită  împreună  cu
          instrucțiuni  de  revenire,  de  ex.  instrucțiunea  RETURN.  Cu  ajutorul  secvenței
          următoare de instrucțiuni se poate observa rezultatul unei instrucțiuni de tip CALL, în
          cazul unei testări software a  apariției unei întreruperi la recepționarea unui octet pe
          portul serial EUSART al microcontrolerului PIC16F887.
               …
          adr_5:  BTFSS        PIR1, RCIF ; Se așteaptă ca bitul RCIF din registrul cu
                                            ; funcții speciale PIR1 să treacă în 1 logic, fapt
                                            ; ce semnifică existența unui octet necitit
                                            ; în bufferul de recepție.
                                            ; După citirea octetului, bitul RCIF se

                                              11
   9   10   11   12   13   14   15   16   17   18   19