Você está na página 1de 14

Apndice A - Conjunto de Instrues

Pgina 1 de 14

Microcontroladores PIC
on-line GRTIS!

Indice Sistema de desenvolvimento Contacte-nos

Apndice A
Conjunto de Instrues
z z z z z z z z z

A.1 A.2 A.3 A.4 A.5 A.6 A.7 A.8 A.9

MOVLW MOVWF MOVF CLRW CLRF SWAPF ADDLW ADDWF SUBLW

z z z z z z z z z

A.10 A.11 A.12 A.13 A.14 A.15 A.16 A.17 A.18

SUBWF ANDLW ANDWF IORLW IORWF XORLW XORWF INCF DECF

z z z z z z z z z

A.19 A.20 A.21 A.22 A.23 A.24 A.25 A.26 A.27

RLF RRF COMF BCF BSF BTFSC BTFSS INCFSZ DECFSZ

z z z z z z z z

A.28 A.29 A.30 A.31 A.32 A.33 A.34 A.35

GOTO CALL RETURN RETLW RETFIE NOP CLRWDT SLEEP

A.1 MOVLW
Sintaxe: Descrio: Operao: Operando: Flag:

Escrever constante no registo W


[rtulo] MOVLW k A constante de 8-bits k vai para o registo W.

k(W) 0 k 255
1 1 MOVLW 0x5A Depois da instruo: W= 0x5A W = 0x10 e REGISTAR = 0x40 W = 0x40 MOVLW REGISTAR Antes da instruo: Depois da instruo:

Nmero de palavras: Nmero de ciclos: Exemplo 1: Exemplo 2:

A.2 MOVWF
Sintaxe: Descrio: Operao: Operando: Flag:

Copiar W para f
[rtulo] MOVWF f O contedo do registo W copiado para o registo f

W(f) 0 f 127
1 1 MOVWF OPTION_REG Antes da instruo: Depois da instruo: OPTION_REG = 0x20 W = 0x40 OPTION_REG = 0x40 W = 0x40

Nmero de palavras: Nmero de ciclos: Exemplo 1:

Exemplo 2:

MOVWF INDF Antes da instruo: FSR = 0xC2 Contedo do endereo 0xC2 = 0x00 Depois da instruo: FSR = 0xC2 W = 0x17 W = 0x17

http://www.i-magazine.com.br

12/8/2003

Apndice A - Conjunto de Instrues

Pgina 2 de 14

Contedo do endereo 0xC2 = 0x17

A.3 MOVF
Sintaxe: Descrio:

Copiar f para d
[rtulo] MOVF f, d O contedo do registo f guardado no local determinado pelo operando d Se d = 0, o destino o registo W Se d = 1, o destino o prprio registo f A opo d = 1, usada para testar o contedo do registo f, porque a execuo desta instruo afecta a flag Z do registo STATUS.

Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos: Exemplo 1:

f(d) 0 f 127, d [0, 1]


Z 1 1 MOVF FSR, 0 Antes da instruo: W = 0x00 Depois da instruo: Z=0 W = 0xC2 FSR = 0xC2

Exemplo 2:

MOVF INDF, 0 Antes da instruo: FSR = 0xC2 contedo do endereo 0xC2 = 0x00 Depois da instruo: FSR = 0xC2 contedo do endereo 0xC2 = 0x00 Z=1 W = 0x00 W = 0x17

A.4 CLRW
Sintaxe: Descrio: Operao: Operando: Flag:

Escrever 0 em W
[rtulo] CLRW O contedo do registo W passa para 0 e a flag Z do registo STATUS toma o valor 1.

0(W)
Z 1 1 CLRW Antes da instruo: Depois da instruo: Z=1 W = 0x55 W = 0x00

Nmero de palavras: Nmero de ciclos: Exemplo:

A.5 CLRF
Sintaxe: Descrio: Operao: Operando:

Escrever 0 em f
[rtulo] CLRF f O contedo do registo f passa para 0 e a flag Z do registo STATUS toma o valor 1.

0f 0 f 127

http://www.i-magazine.com.br

12/8/2003

Apndice A - Conjunto de Instrues

Pgina 3 de 14

Flag: Nmero de palavras: Nmero de ciclos: Exemplo 1:

Z 1 1 CLRF STATUS Antes da instruo: Depois da instruo: Z=1 STATUS = 0xC2 STATUS = 0x00

Exemplo 2:

CLRF INDF Antes da instruo: Depois da instruo: Z=1 FSR = 0xC2 FSR = 0xC2 contedo do endereo 0xC2 = 0x33 contedo do endereo 0xC2 = 0x00

A.6 SWAPF
Sintaxe: Descrio:

Copiar o contedo de f para d, trocando a posio dos 4 primeiros bits com a dos 4 ltimos
[rtulo] SWAPF f, d Os 4 bits + significativos e os 4 bits significativos de f, trocam de posies. Se d = 0, o resultado guardado no registo W Se d = 1, o resultado guardado no registo f Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos: Exemplo 1:

f <0:3> d <4:7>, f <4:7> d <0:3>, 0 f 127, d [0, 1]


1 1 SWAPF REG, 0 Antes da instruo: Depois da instruo: W = 0x3F REG = 0xF3 REG = 0xF3

Exemplo 2:

SWAPF REG, 1 Antes da instruo: Depois da instruo: REG = 0xF3 REG = 0x3F

A.7 ADDLW
Sintaxe: Descrio: Operao: Operando: Flag:

Adicionar W a uma constante


[rtulo] ADDLW k O contedo do registo W, adicionado constante de 8-bits k e o resultado guardado no registo W.

(W)+kW 0 k 255
C, DC, Z 1 1 ADDLW 0x15 Antes da instruo: Depois da instruo: W= 0x10 W= 0x25 W = 0x10 W = 0x47

Nmero de palavras: Nmero de ciclos: Exemplo 1:

Exemplo 2:

ADDLW REG Antes da instruo: REG = 0x37 Depois da instruo:

http://www.i-magazine.com.br

12/8/2003

Apndice A - Conjunto de Instrues

Pgina 4 de 14

A.8 ADDWF
Sintaxe: Descrio:

Adicionar W a f
[rtulo] ADDWF f, d Adicionar os contedos dos registos W e f Se d=0, o resultado guardado no registo W Se d=1, o resultado guardado no registo f

Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos: Exemplo 1:

(W) + ( f ) d, d [0, 1] 0 f 127


C, DC, Z 1 1 ADDWF FSR, 0 Antes da instruo: FSR = 0xC2 Depois da instruo: FSR = 0xC2 W = 0xD9 W = 0x17

Exemplo 2:

ADDWF INDF,0 Antes da instruo: FSR = 0xC2 contedo do endereo 0xC2 = 0x20 Depois da instruo: FSR = 0xC2 Contedo do endereo 0xC2 = 0x20 W = 0x37 W = 0x17

A.9 SUBLW
Sintaxe: Descrio: Operao: Operando: Flag:

Subtrair W a uma constante


[rtulo] SUBLW k O contedo do registo W, subtrado constante k e, o resultado, guardado no registo W.

k-(W)W 0 k 255
C, DC, Z 1 1 SUBLW 0x03 Antes da instruo: Depois da instruo: Antes da instruo: Depois da instruo: Antes da instruo: Depois da instruo: W= 0x01, C = x, Z = x W= 0x02, C = 1, Z = 0 W= 0x03, C = x, Z = x W= 0x00, C = 1, Z = 1 W= 0x04, C = x, Z = x W= 0xFF, C = 0, Z = 0 W = 0x10 W = 0x27 Resultado < 0 Resultado = 0 Resultado > 0

Nmero de palavras: Nmero de ciclos: Exemplo 1:

Exemplo 2:

SUBLW REG Antes da instruo: REG = 0x37 Depois da instruo: C=1 Resultado > 0

A.10 SUBWF
Sintaxe: Descrio:

Subtrair W a f
[rtulo] SUBWF f, d O contedo do registo W subtrado ao contedo do registo f Se d=0, o resultado guardado no registo W Se d=1, o resultado guardado no registo f

http://www.i-magazine.com.br

12/8/2003

Apndice A - Conjunto de Instrues

Pgina 5 de 14

Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos: Exemplo:

( f ) - (W) d 0 f 127, d [0, 1]


C, DC, Z 1 1 SUBWF REG, 1 Antes da instruo: Depois da instruo: Antes da instruo: Depois da instruo: Antes da instruo: Depois da instruo: REG= 3, W= 2, C = x, Z = x REG= 1, W= 2, C = 1, Z = 0 REG= 2, W= 2, C = x, Z = x REG=0, W= 2, C = 1, Z = 1 REG=1, W= 2, C = x, Z = x REG= 0xFF, W=2, C = 0, Z = 0 Resultado < 0 Resultado = 0 Resultado > 0

A.11 ANDLW
Sintaxe: Descrio: Operao: Operando: Flag:

Fazer o E lgico de W com uma constante


[rtulo] ANDLW k executado o E lgico do contedo do registo W, com a constante k O resultado guardado no registo W.

( W ) .AND. k W 0 k 255
Z 1 1 ANDLW 0x5F Antes da instruo: Depois da instruo: W= 0xA3 ; W= 0x03; W = 0xA3 REG = 0x37 Depois da instruo: W = 0x23 ; ; ; ; 0101 1111 1010 0011 0000 0011 1010 0011 0011 0111 0010 0011 (0x5F) (0xA3) (0x03) (0xA3) (0x37) (0x23)

Nmero de palavras: Nmero de ciclos: Exemplo 1:

Exemplo 2:

ANDLW REG Antes da instruo:

A.12 ANDWF
Sintaxe: Descrio:

Fazer o E lgico de W com f


[rtulo] ANDWF f, d Faz o E lgico dos contedos dos registos W e f Se d=0, o resultado guardado no registo W Se d=1, o resultado guardado no registo f

Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos: Exemplo 1:

(W) .AND. ( f ) d 0 f 127, d [0, 1]


Z 1 1 ANDWF FSR, 1 Antes da instruo: W= 0x17, FSR= 0xC2; ; 0001 1111 0000 0010 0001 1111 0000 0010 (0x17) (0xC2) (0x02) (0x17) (0x02) 1100 0010

Depois da instruo: W= 0x17, FSR= 0x02 ; Exemplo 2: ANDWF FSR, 0 Antes da instruo: Depois da instruo: W= 0x17, FSR= 0xC2; ; W= 0x02, FSR= 0xC2;

1100 0010

(0xC2)

http://www.i-magazine.com.br

12/8/2003

Apndice A - Conjunto de Instrues

Pgina 6 de 14

A.13 IORLW
Sintaxe: Descrio: Operao: Operando: Flag:

Fazer o OU lgico de W com uma constante


[rtulo] IORLW k executado o OU lgico do contedo do registo W, com a constante de 8 bits k, o resultado guardado no registo W.

( W ) .OR. k W 0 k 255
Z 1 1 IORLW 0x35 Antes da instruo: Depois da instruo: Z= 0 W= 0x9A W= 0xBF

Nmero de palavras: Nmero de ciclos: Exemplo 1:

Exemplo 2:

IORLW REG Antes da instruo: Depois da instruo: Z=0 W = 0x9A W = 0x9F contedo de REG = 0x37

A.14 IORWF
Sintaxe: Descrio:

Fazer o OU lgico de W com f


[rtulo] IORWF f, d Faz o OU lgico dos contedos dos registos W e f Se d=0, o resultado guardado no registo W Se d=1, o resultado guardado no registo f

Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos: Exemplo 1:

(W) .OR. ( f ) d 0 f 127, d [0, 1]


Z 1 1 IORWF REG, 0 Antes da instruo: Depois da instruo: Z= 0 REG= 0x13, W= 0x91 REG= 0x13, W= 0x93

Exemplo 2:

IORWF REG, 1 Antes da instruo: Depois da instruo: Z= 0 REG= 0x13, W= 0x91 REG= 0x93, W= 0x91

A.15 XORLW
Sintaxe: Descrio: Operao: Operando: Flag:

OU- EXCLUSIVO de W com uma constante


[rtulo] XORLW k executada a operao OU-Exclusivo do contedo do registo W, com a constante k. O resultado guardado no registo W.

( W ) .XOR. k W 0 k 255
Z 1 1 XORLW 0xAF Antes da instruo: W= 0xB5 ; ; 1010 1111 1011 0101 (0xAF) (0xB5)

Nmero de palavras: Nmero de ciclos: Exemplo 1:

http://www.i-magazine.com.br

12/8/2003

Apndice A - Conjunto de Instrues

Pgina 7 de 14

Depois da instruo: Exemplo 2: XORLW REG Antes da instruo: Depois da instruo: Z=0

W= 0x1A; W = 0xAF REG = 0x37 W = 0x98 ; ; ;

0001 1010 1010 1111 0011 0111 1001 1000

(0x1A) (0xAF) (0x37) (0x98)

A.16 XORWF
Sintaxe: Descrio:

OU-EXCLUSIVO de W com f
[rtulo] XORWF f, d Faz o OU-EXCLUSIVO dos contedos dos registos W e f Se d=0, o resultado guardado no registo W Se d=1, o resultado guardado no registo f

Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos: Exemplo 1:

(W) .XOR. ( f ) d 0 f 127, d [0, 1]


Z 1 1 XORWF REG, 1 Antes da instruo: Depois da instruo: REG= 0xAF, W= 0xB5 ; ; REG= 0x1A, W= 0xB5 REG= 0xAF, W= 0xB5; ; Depois da instruo: REG= 0xAF, W= 0x1A ; 1010 1111 1011 0101 001 1010 1010 1111 1011 0101 0001 1010 (0xAF) (0xB5) (0x1A) (0xAF) (0xB5) (0x1A)

Exemplo 2:

XORWF REG, 0 Antes da instruo:

A.17 INCF
Sintaxe: Descrio:

Incrementar f
[rtulo] INCF f, d Incrementar de uma unidade, o contedo do registo f. Se d=0, o resultado guardado no registo W Se d=1, o resultado guardado no registo f

Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos: Exemplo 1:

(f)+1 d 0 f 127, d [0, 1]


Z 1 1 INCF REG, 1 Antes da instruo: Z=0 Depois da instruo: Z=1 REG = 0x00 REG = 0xFF

Exemplo 2:

INCF REG, 0 Antes da instruo: W=x Z=0 Depois da instruo: W = 0x11 Z=0 REG = 0x10 REG = 0x10

http://www.i-magazine.com.br

12/8/2003

Apndice A - Conjunto de Instrues

Pgina 8 de 14

A.18 DECF
Sintaxe: Descrio:

Decrementar f
[rtulo] DECF f, d Decrementar de uma unidade, o contedo do registo f. Se d=0, o resultado guardado no registo W Se d=1, o resultado guardado no registo f

Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos: Exemplo 1:

(f)-1 d 0 f 127, d [0, 1]


Z 1 1 DECF REG, 1 Antes da instruo: Z=0 Depois da instruo: Z=1 REG = 0x00 REG = 0x01

Exemplo 2:

DECF REG, 0 Antes da instruo: W=x Z=0 Depois da instruo: W = 0x12 Z=0 REG = 0x13 REG = 0x13

A.19 RLF
Sintaxe: Descrio:

Rodar f para a esquerda atravs do Carry


[rtulo] RLF f, d O contedo do registo f rodado um espao para a esquerda, atravs de C (flag do Carry). Se d=0, o resultado guardado no registo W Se d=1, o resultado guardado no registo f

Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos: Exemplo 1:

( f <n>) d<n+1>, f<7> C, C d<0>; 0 f 127, d [0, 1]


C 1 1 RLF REG, 0 Antes da instruo: C=0 Depois da instruo: W = 1100 1100 C=1 REG = 1110 0110 REG = 1110 0110

Exemplo 2:

RLF REG, 1 Antes da instruo: C=0 Depois da instruo: C=1 REG = 1100 1100 REG = 1110 0110

A.20 RRF
Sintaxe: Descrio:

Rodar f para a direita atravs do Carry


[rtulo] RRF f, d O contedo do registo f rodado um espao para a direita, atravs de C (flag do Carry).

http://www.i-magazine.com.br

12/8/2003

Apndice A - Conjunto de Instrues

Pgina 9 de 14

Se d=0, o resultado guardado no registo W Se d=1, o resultado guardado no registo f Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos: Exemplo 1:

( f <n>) d<n-1>, f<0> C, C d<7>; 0 f 127, d [0, 1]


C 1 1 RRF REG, 0 Antes da instruo: W=x C=0 Depois da instruo: W = 0111 0011 C=0 REG = 1110 0110 REG = 1110 0110

Exemplo 2:

RRF REG, 1 Antes da instruo: C=0 Depois da instruo: C=0 REG = 0111 0011 REG = 1110 0110

A.21 COMF
Sintaxe: Descrio:

Complementar f
[rtulo] COMF f, d O contedo do registo f complementado. Se d=0, o resultado guardado no registo W Se d=1, o resultado guardado no registo f

Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos: Exemplo 1:

() d 0 f 127, d [0, 1]
Z 1 1 COMF REG, 0 Antes da instruo: Depois da instruo: W = 0xEC REG= 0x13 REG= 0x13 ; 0001 0011 ; 1110 1100 FSR= 0xC2 FSR= 0xC2 (0x13) (0xEC) ; complementar

Exemplo 2:

COMF INDF, 1 Antes da instruo: Depois da instruo: contedo de FSR = (FSR) = 0xAA contedo de FSR = (FSR) = 0x55

A.22 BCF
Sintaxe: Descrio: Operao: Operando: Flag:

Pr a 0 o bit b de f
[rtulo] BCF f, b Limpar (pr a 0), o bit b do registo f

0 f<b> 0 f 127, 0 b 7
1 1 BCF REG, 7 Antes da instruo: Depois da instruo: REG = 0xC7 REG = 0x47 ; 1100 0111 ; 0100 0111 (0xC7) (0x47)

Nmero de palavras: Nmero de ciclos: Exemplo 1:

http://www.i-magazine.com.br

12/8/2003

Apndice A - Conjunto de Instrues

Pgina 10 de 14

Exemplo 2:

BCF INDF, 3 Antes da instruo: FSR = 0xC2 contedo do endereo em FSR (FSR) = 0x2F Depois da instruo: W = 0x17 W = 0x17

FSR = 0xC2 contedo do endereo em FSR (FSR) = 0x27

A.23 BSF
Sintaxe: Descrio: Operao: Operando: Flag:

Pr a 1 o bit b de f
[rtulo] BSF f, b Pr a 1, o bit b do registo f

1 f<b> 0 f 127, 0 b 7
1 1 BSF REG, 7 Antes da instruo: Depois da instruo: REG = 0x07 REG = 0x17 W = 0x17 ; 0000 0111 ; 1000 0111 (0x07) (0x87)

Nmero de palavras: Nmero de ciclos: Exemplo 1:

Exemplo 2:

BSF INDF, 3 Antes da instruo: FSR = 0xC2 contedo do endereo em FSR (FSR) = 0x2F Depois da instruo: FSR = 0xC2 contedo do endereo em FSR (FSR) = 0x28 W = 0x17

A.24 BTFSC
Sintaxe: Descrio:

Testar o bit b de f, saltar por cima se for = 0


[rtulo] BTFSC f, b Se o bit b do registo f for igual a zero, ignorar instruo seguinte. Se este bit b for zero, ento, durante a execuo da instruo actual, a execuo da instruo seguinte no se concretiza e executada, em vez desta, uma instruo NOP, fazendo com que a instruo actual, demore dois ciclos de instruo a ser executada. Ignorar a instruo seguinte se (f<b>) = 0

Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos: Exemplo:

0 f 127, 0 b 7
1 1 ou 2 dependendo do valor lgico do bit b LAB_01 LAB_02 LAB_03 BTFSC REG, 1; Testar o bit 1 do registo REG ........... ........... ; Ignorar esta linha se for 0 ; Executar esta linha depois da anterior, se for 1

Antes da instruo, o contador de programa contm o endereo LAB_01. Depois desta instruo, se o bit 1 do registo REG for zero, o contador de programa contm o endereo LAB_03. Se o bit 1 do registo REG for um, o contador de programa contm o endereo LAB_02.

A.25 BTFSS
Sintaxe:

Testar o bit b de f, saltar por cima se for = 1


[rtulo] BTFSS f, b

http://www.i-magazine.com.br

12/8/2003

Apndice A - Conjunto de Instrues

Pgina 11 de 14

Descrio:

Se o bit b do registo f for igual a um, ignorar instruo seguinte. Se durante a execuo desta instruo este bit b for um, ento, a execuo da instruo seguinte no se concretiza e executada, em vez desta, uma instruo NOP, assim, a instruo actual demora dois ciclos de instruo a ser executada. Ignorar a instruo seguinte se (f<b>) = 1

Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos: Exemplo:

0 f 127, 0 b 7
1 1 ou 2 dependendo do valor lgico do bit b LAB_01 LAB_02 LAB_03 BTFSS REG, 1; Testar o bit 1 do registo REG ........... ........... ; Ignorar esta linha se for 1 ; Executar esta linha depois da anterior, se for 0

Antes da instruo, o contador de programa contm o endereo LAB_01. Depois desta instruo, se o bit 1 do registo REG for um, o contador de programa contm o endereo LAB_03. Se o bit 1 do registo REG for zero, o contador de programa contm o endereo LAB_02.

A.26 INCFSZ
Sintaxe: Descrio:

Incrementar f, saltar por cima se der = 0


[rtulo] INCFSZ f, d Descrio: O contedo do registo f incrementado de uma unidade. Se d = 0, o resultado guardado no registo W. Se d = 1, o resultado guardado no registo f. Se o resultado do incremento for = 0, a instruo seguinte substituda por uma instruo NOP, fazendo com que a instruo actual, demore dois ciclos de instruo a ser executada.

Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos: Exemplo:

(f) + 1 d 0 f 127, d [0, 1]


1 1 ou 2 dependendo do resultado LAB_01 LAB_02 LAB_03 0 INCFSZ REG, 1; Incrementar o contedo de REG de uma unidade ........... ........... ; Ignorar esta linha se resultado = 0 ; Executar esta linha depois da anterior, se der

Contedo do contador de programa antes da instruo, PC = endereo LAB_01. Se o contedo do registo REG depois de a operao REG = REG + 1 ter sido executada, for REG = 0, o contador de programa aponta para o rtulo de endereo LAB_03. Caso contrrio, o contador de programa contm o endereo da instruo seguinte, ou seja, LAB_02.

A.27 DECFSZ
Sintaxe: Descrio:

Decrementar f, saltar por cima se der = 0


[rtulo] DECFSZ f, d O contedo do registo f decrementado uma unidade. Se d = 0, o resultado guardado no registo W. Se d = 1, o resultado guardado no registo f. Se o resultado do decremento for = 0, a instruo seguinte substituda por uma instruo NOP, fazendo assim com que a instruo actual, demore dois ciclos de instruo a ser executada.

Operao: Operando: Flag: Nmero de palavras:

(f) - 1 d 0 f 127, d [0, 1]


1

http://www.i-magazine.com.br

12/8/2003

Apndice A - Conjunto de Instrues

Pgina 12 de 14

Nmero de ciclos: Exemplo:

1 ou 2 dependendo do resultado LAB_01 LAB_02 LAB_03 0 DECFSZ REG, 1; Decrementar o contedo de REG de uma unidade ........... ........... ; Ignorar esta linha se resultado = 0 ; Executar esta linha depois da anterior, se der

Contedo do contador de programa antes da instruo, PC = endereo LAB_01. Se o contedo do registo REG depois de a operao REG = REG 1 ter sido executada, for REG = 0, o contador de programa aponta para o rtulo de endereo LAB_03. Caso contrrio, o contador de programa contm o endereo da instruo seguinte, ou seja, LAB_02.

A.28 GOTO
Sintaxe: Descrio: Operao: Operando: Flag:

Saltar para o endereo


[rtulo] GOTO k Salto incondicional para o endereo k.

k PC<10:0>, (PCLATH<4:3>) PC<12:11> 0 k 2048


1 2 LAB_00 LAB_01 GOTO LAB_01; Saltar para LAB_01 : ............ PC = endereo LAB_00 PC = endereo LAB_01 Antes da instruo: Depois da instruo:

Nmero de palavras: Nmero de ciclos: Exemplo:

A.29 CALL
Sintaxe: Descrio: Operao: Operando: Flag:

Chamar um programa
[rtulo] CALL k Esta instruo, chama um subprograma. Primeiro, o endereo de retorno (PC+1) guardado na pilha, a seguir, o operando k de 11 bits, correspondente ao endereo de incio do subprograma, vai para o contador de programa (PC).

PC+1 Topo da pilha (TOS Top Of Stack) 0 k 2048


1 CALL LAB_02 ; Chamar a subrotina LAB_02 : : LAB_02 ............ Antes da instruo: PC = endereo LAB_00 TOS = x Depois da instruo: PC = endereo LAB_02 TOS = LAB_01 2 LAB_00 LAB_01

Nmero de palavras: Nmero de ciclos: Exemplo:

A.30 RETURN
Sintaxe: Descrio: Operao:

Retorno de um subprograma
[rtulo] RETURN O contedo do topo da pilha guardado no contador de programa. TOS

Contador de programa PC

http://www.i-magazine.com.br

12/8/2003

Apndice A - Conjunto de Instrues

Pgina 13 de 14

Operando: Flag: Nmero de palavras: Nmero de ciclos: Exemplo:

1 2 RETURN Antes da instruo: TOS = x Depois da instruo: TOS = TOS - 1 PC = TOS PC = x

A.31 RETLW
Sintaxe: Descrio: Operao: Operando: Flag:

Retorno de um subprograma com uma constante em W


[rtulo] RETLW k A constante k de 8 bits, guardada no registo W.

(k) W; TOS PC 0 k 255


1 2 RETLW 0x43 Antes da instruo: PC = x TOS = x Depois da instruo: PC = TOS TOS = TOS 1 W = 0x43 W=x

Nmero de palavras: Nmero de ciclos: Exemplo:

A.32 RETFIE
Sintaxe: Descrio:

Retorno de uma rotina de interrupo


[rtulo] RETLW k Retorno de uma subrotina de atendimento de interrupo. O contedo do topo de pilha (TOS), transferido para o contador de programa (PC). Ao mesmo tempo, as interrupes so habilitadas, pois o bit GIE de habilitao global das interrupes, posto a 1.

Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos: Exemplo:

TOS PC ; 1 GIE
1 2 RETFIE Antes da instruo: GIE = 0 Depois da instruo: GIE = 1 PC = TOS PC = x

A.33 NOP
Sintaxe:

Nenhuma operao
[rtulo] NOP Nenhuma operao executada, nem qualquer flag afectada. -

Descrio: Operao: Operando: Flag:

http://www.i-magazine.com.br

12/8/2003

Apndice A - Conjunto de Instrues

Pgina 14 de 14

Nmero de palavras: Nmero de ciclos: Exemplo:

1 1 NOP

A.34 CLRWDT
Sintaxe: Descrio:

Iniciar o temporizador do watchdog


[rtulo] CLRWDT O temporizador do watchdog reposto a zero. O prescaler do temporizador de Watchdog tambm reposto a 0 e, tambm, os bits do registo de estado e so postos a um.

Operao:

0 WDT 0 prescaler de WDT 1 1


1 1 CLRWDT Antes da instruo: Depois da instruo: Prescale do WDT = 0 Contador de WDT = x Contador do WDT = 0x00 Prescaler de WDT = 1:128

Operando: Flag: Nmero de palavras: Nmero de ciclos: Exemplo:

A.35 SLEEP
Sintaxe: Descrio:

Modo de repouso
[rtulo] SLEEP O processador entra no modo de baixo consumo. O oscilador pra. O bit (Power Down) do registo Status reposto a 0. O bit (Timer Out) posto a 1. O temporizador de WDT (Watchdog) e o respectivo prescaler so repostos a 0.

Operao:

0 WDT 0 prescaler do WDT 1 0 PD


1 1 SLEEP Antes da instruo: Prescaler do WDT = x Depois da instruo: Prescaler do WDT = 0 Contador do WDT = 0x00 Contador do WDT = x

Operando: Flag: Nmero de palavras: Nmero de ciclos: Exemplo 1:

Copyright 2003. i-magazine e mikroElektronika. All Rights Reserved.

http://www.i-magazine.com.br

12/8/2003

Você também pode gostar