Sunteți pe pagina 1din 9

MICROCONTROLERE PIC PE 8 BII Setul de instruciuni

Instruciuni de transfer Nr. Crt. 1 2 3 4 5 Mnemonic, operanzi MOVF f,d Descriere Move f Move W to f MOVe Literal to W Clear f Clear W Operaie dest f fW Wk f0 W0 Nr. Cod main Indicatori Cicli Msb Lsb de condiie 1 1 1 1 1 00 1000 dfff ffff 00 0000 1fff ffff 11 00xx kkkk kkkk 00 0001 1fff ffff 00 0001 0xxx xxxx Z Z Z Z

MOVWF f MOVLW k CLRF CLRW f

Observaii: dest = W dac d=0 sau dest = f dac d=1. Dac valoarea transferat a fost 0, Z=1; altfel, Z=0 Exemple: MOVF FSR, W ; Coninutul registrului FSR se copie n W MOVF INDF, W ; Coninutul locaiei RAM de la adresa din FSR (adresare indirect) se copie n W ; MOVF FSR, F Coninutul registrului FSR este copiat n el nsui (pentru a testa valoarea din FSR) ; MOVWF FSR Coninutul registrului W este copiat n registrul FSR MOVWF INDF ; coninutul registrului W este copiat n locaia adresat de FSR ; MOVLW 0x5A iniializeaz W cu 0x5A MOVLW const ; valoarea constantei simbolice const se ncarc n W MOVLW HIGH(tabel) ; octetul mai semnificativ al adresei tabelului se ncarc n W CLRF FSR ; FSR=0 CLRW ; W=0

Instruciuni aritmetice Nr. Crt. 6 7 8 9 Mnemonic, operanzi ADDWF ADDLW INCF INCFSZ f,d k f,d f,d Descriere ADD W and f ADD Literal and W Increment f Increment f, Skip if 0 Operaie dest W + f W k +W dest f + 1 dest f + 1 if dest=0, PC=PC+1 10 SUBWF 11 SUBLW 12 DECF f,d k f,d Substract W from f SUBstract W from Literal Decrement f Decrement f dest f - W Wk-W dest f - 1 dest f - 1 if dest=0, PC=PC+1 Exemple: ADDWF SUBWF ADDWF SUBLW INCF INCF DECFSZ FSR, W INDF, F PCL 0x20 CNT, F INDF, W CNT, F ; Coninutul registrului FSR se adun cu cel al registrului W, rezultatul n W ; Din coninutul locaiei adresate de FSR se scade coninutul registrului W ; La valoarea din PCL se adaug valoarea din W ; Din valoarea 0x20 se scade W, rezultatul n W ; Coninutul locaiei CNT este incrementat ; Coninutul locaiei adresate de FSR este incrementat i ncrcat n W ; CNT este decrementat i dac devine 0 se sare peste instruciunea urmtoare 1 1 1 1(2) 00 0010 dfff ffff 11 110x kkkk kkkk 00 0011 dfff ffff 00 1011 dfff ffff C, DC, Z C, DC, Z Z Nr. Cod main Indicatori Cicli Msb Lsb de condiie 1 1 1 1(2) 00 0111 dfff ffff 11 111x kkkk kkkk 00 1010 dfff ffff 00 1111 dfff ffff C, DC, Z C, DC, Z Z

13 DECFSZ f,d

Instruciuni logice Nr. Crt. Mnemonic, operanzi Descriere ADD W and f AND Literal and W Inclusive OR W with f Inclusive OR literal with W eXclusive OR W with f eXclusive OR Literal with W COMplement f Rotate Left f through Carry Rotate Right f through Carry SWAP nibbles in f Operaie dest W f WWk dest W f WWk dest W f WWk dest f dest f <<1 dest f >>1 destf3:0 f7:f4 Nr. Cod main Indicatori Cicli Msb Lsb de condiie 1 1 1 1 1 1 1 1 1 1 00 0101 dfff ffff 11 1001 kkkk kkkk 00 0100 dfff ffff 11 1000 kkkk kkkk 00 0110 dfff ffff 11 1010 kkkk kkkk 00 1001 dfff ffff 00 1101 dfff ffff 00 1100 dfff ffff 00 1110 dfff ffff Z Z Z Z Z Z Z C C

14 ANDWF f,d 15 ANDLW 16 IORWF 17 IORLW 18 XORWF k f,d k f,d

19 XORLW k 20 COMF 21 RLF 22 RRF 23 SWAPF Exemple: ANDWF IORWF XORWF ANDLW COMF RLF SWAPF FSR, F INDF, W REZ, W 0xF0 REG,F INDF,F REG,W f,d f,d f,d f,d

; I logic ntre coninutul registrului FSR i cel al registrului W, rezultatul n FSR ; SAU ntre locaia indicat de FSR i registrul W, rezultatul n W ; XOR ntre locaia REZ i registrul W, rezultatul n W ; Foreaz n 0 cei mai puin semnificativi 4 bii din W ; Complementeaz (fa de 1) coninutul locaiei REG ; Rotete spre stnga cu o poziie coninutul locaiei adresate de FSR, prin Carry ; W REG3:0 REG7:4

Instruciuni de lucru pe bit Nr. Crt. Mnemonic, operanzi f,b f,b f,b f,b
Descriere

Nr. cicli fb=0 fb=1 if fb=0, PC=PC+1 if fb=1, PC=PC+1 1 1 1(2) 1(2)

Cod main Indicatori Msb Lsb de condiie 01 00bb bfff ffff 01 01bb bfff ffff 01 10bb bfff ffff 01 11bb bfff ffff

24 BCF 25 BSF 26 BTFSC 27 BTFSS Exemple: BCF REG, 7 BSF INDF, 4 BTFSC GOTO zero ... BTFSS GOTO unu ...

Bit Clear f Bit Set f Bit Test f, Skip if Clear Bit Test f, Skip if Set

; Bitul 7 din locaia REG este resetat ; Bitul 4 din locaia adresat de FSR este setat FLAG,3 bit3unu ; testeaz dac bitul 3 din locaia FLAG este 0 ; dac a fost fals, se execut instruciunea ; dac a fost adevrat, se continu de aici

FLAG,2 ; testeaz dac bitul 3 din locaia FLAG este 1 ; bit2zero dac a fost fals, se execut instruciunea ; dac a fost adevrat, se continu de aici

Instruciuni de ramificare Nr. Crt. Mnemonic, operanzi k


Descriere

Nr. Cod main Indicatori cicli Msb Lsb de condiie


TOS PC+1 PC10:0 k PC12:11PCLATH4:3

28 CALL

CALL subroutine

10 0kkk kkkk kkkk

29 GOTO 30 RETURN 31 RETLW 32 RETFIE

Go to address RETURN from subroutine

PC10:0 k PC12:11PCLATH4:3 PC TOS

2 2 2 2

10 1kkk kkkk kkkk 00 0000 0000 1000 11 01xx kkkk kkkk 00 0000 0000 1001

RETURN with Literal in W PC TOS, W k RETURN from interrupt


PC TOS, GIE 1

Exemple: CALL GOTO RETURN RETLW RETFIE rutina loop A ; apeleaz secvena de cod de la adresa rutina ; sare la adresa loop ; revine la adresa din vrful stivei ; revine la adresa din vrful stivei cu W = A ; revine la adresa din vrful stivei, revalideaz ntreruperile (GIE=1)

Realizarea salturilor cu instruciuni GOTO (salt la adrese cunoscute la momentul scrierii codului) RESET movlw HIGH main movwf PCLATH goto main nop movlw HIGH rutint movwf PCLATH goto rutint ; adresa de intrare dup reset ; ncarc PCLATH cu codul paginii de memorie n care se afl main ; sare la adresa main ; adresa de intrare dup reset ; ncarc PCLATH cu codul paginii de memorie n care se afl rutint ; sare la adresa rutint

INT

Realizarea salturilor cu instruciuni de modificare explicit a registrului PCL mowlw movwf mowlw movwf HIGH eticheta PCLATH LOW eticheta PCL ; ncarc PCLATH cu octetul superior al adresei eticheta ; ncarc PCL cu octetul inferior al adresei eticheta

Accesul la date constante n memoria program folosind adresarea relativ la PC movlw movwf movf call movwf string addwf retlw retlw retlw HIGH string PCLATH index,w string PORTB PCL,F S i r ; ; ; ; ; ; ; ; ncarc PCLATH cu octetul superior al adresei string preia n W indexul n tabel apeleaz rutina string afieaz caracterul ASCII din W calculeaz saltul revine cu S n W revine cu i n W revine cu r n W

Nr. Crt.

Mnemonic, operanzi

Descriere

Nr. Cod main Indicatori cicli Msb Lsb de condiie


WDT 0 Prescaler WDT 0 /TO 1, /PD 0 WDT 0 Prescaler WDT 0 /TO 1, /PD 1

33 SLEEP

Go into standby mode

00 0000 0110 0011

/TO, /PD

34 CLRWDT

Clear Watchdog Timer

00 0000 0110 0100

/TO, /PD

35

NOP

No operation

00 0000 0xx0 0000