Sei sulla pagina 1di 46

Microcontroladores PIC

Conjunto de Instrues de 14 bits


Andr Lus Marques Marcato
andre.marcato@ufjf.edu.br
Leandro Mattos Braga
cebolinhajf@globo.com

Instrues
Manipulao de Registradores
Aritmtica
Operaes Lgicas
Desvio
Controle

Manipulao de Registradores
MOVLW k
Copia o valor da constante especificada pelo
operando k para o registrador W
Flags afetados: nenhum
Tempo de execuo: 1 ciclo
Exemplo:

Manipulao de Registradores
MOVWF k
Copia o contedo do registrador W para o registrador f (f
= W)
O contedo do registrador W no ser alterado; somente
o registrador f
Flags afetados: Nenhum
Tempo de execuo 1 ciclo
Exemplos:

Manipulao de Registradores
MOVF f, d(1)
Copia o contedo do registrador especificado
pelo operando f para o destino especificado pelo
operando d.
Se d = 0, o destino ser W. Se d = 1, o destino
ser o operando f
Flags afetados: Z
Tempo de execuo: 1 ciclo

Manipulao de Registradores
MOVF f, d(2)
Exemplos

TRISA = 20h

TRISA = 20h

TRISB = 00h

Manipulao de Registradores
CLRF f
Apaga o contedo do registrador indicado pelo operando
f. ( f = 0 )
Flags Afetados: Z. ( Z = 1)
Tempo de Execuo: 1 ciclo
Exemplos

Manipulao de Registradores
CLRW
Apaga o contedo do registrador W (armazena 0
no mesmo). (W = 0)
Flags afetados: Z
Tempo de execuo: 1 ciclo

Manipulao de Registradores
INCF f,d(1)
Incrementa o contedo do registrador f em 1. O
resultado (f+1) armazenado no destino indicado
pelo operando d
d = W (se d = 0); d = f (se d = 1)
Flags Afetados: Z
Tempo de Execuo: 1 ciclo

Manipulao de Registradores
INCF f,d(2)
Exemplos

W = 05h; FSR = 09h

W = 05h; TMR0 = 06h

W = 05; INDF = FFh

10

Manipulao de Registradores
DECF f,d
Decrementa o contedo do registrador f em 1. O
resultado (f-1) armazenado no destino indicado
pelo operando d
d = W (se d = 0); d = f (se d = 1)
Flags Afetados: Z
Tempo de Execuo: 1 ciclo
Exemplo:

11

Manipulao de Registradores
BCF f,b
Apaga (coloca em nvel lgico 0) o bit representado
pelo operando b do registrador representado pelo
operando f
Flags Afetados: Nenhum
Tempo de Execuo: 1 ciclo
Exemplos: a) STATUS=19h
b) TRISB=FFh

12

Manipulao de Registradores
BSF f,b
Seta (coloca em nvel lgico 1) o bit
representado pelo operando b do registrador
representado pelo operando f
Flags Afetados: Nenhum
Tempo de execuo: 1 ciclo

13

Manipulao de Registradores
SWAPF f,d
Troca os nibbles do registrador representado pelo
operando f, o resultado armazenado no destino
indicado pelo operando d
D = W (d=0); d = F (d=1)
Flags afetados: nenhum
Tempo de Execuo: 1 ciclo
Exemplos: a) TRISB=FFh
b) PORTA=78h

14

Instrues Aritmticas
ADDLW k(1)
Adio aritmtica do valor apresentado pela
constante k ao contedo do registrador W.
O resultado (W+k) armazenado no registrador
W
Flags Afetados: Z, D e C
Tempo de execuo: 1 ciclo

15

Instrues Aritmticas
ADDLW k(2)
Exemplos:

W = 20h

W = F1h

W = FFh

16

Instrues Aritmticas
ADDWF f,d

17

Adio aritmtica do contedo do registrador W ao


contedo do registrador especificado por f
O resultado (W+f) armazenado no destino indicado por
d. (d=W) se (d=0), ou (d=F) se (d=1)
Flags afetados: Z, DC e C
Tempo de execuo: 1 ciclo
Exemplo, W = 20h e INTCON = 07h

Instrues Aritmticas
SUBLW k
Subtrai o contedo do registrador W do valor do
operando k. O resultado (k-W) armazenado
armazenado no registrador W.
Flags Afetados: C, DC, Z
Tempo de Execuo: 1 ciclo
Exemplo: a) W=01h
b) W = 02h

18

Instrues Aritmticas
SUBWF f,d
Subtrai o contedo do registrador W do contedo do registrador
especificado pelo operando f. O resultado (f-W) armazenado no
destino especificado por d
Flags Afetados: Z, DC, C
Tempo de execuo: 1 ciclo
Exemplo: a) W=20h e INTCON=07h b) W=09h e PORTA = 10h

19

Operaes Lgicas
ANDLW k
AND lgico bit a bit do contedo da constante
representada pelo operando k com o contedo do
registrado W.
O resultado W AND k armazenado no registrador W
Afeta o flag Z. Z = 1, se o valor armazenado no
registrador.
Exemplo: W=95h

20

Operaes Lgicas
ANDWF f, d
AND lgico do contedo do registrador W com o
contedo do registrador especificado por f.
O resultado (W and f) armazenado no destino indicado
por d
d = W (ou d = 0) ; d = F ( ou d = 1)
Esta instruo afeta o flag Z (Z=1, se o armazenamento
no destino for zero)
Exemplo: W = 77h; PORTA = FFh

21

Operaes Lgicas
Outras Instrues

IORLW k
IORWF f,d
XORLW k
XORWF f,d

Flags Afetados: Nenhum


Tempo de execuo: 1 ciclo

22

Operaes Lgicas
COMF f,d
Complementa (inverte) o nvel lgico dos bits do
registrador especificado por f. O resultado armazenado
no destino d
d=W se d=0, ou d=f se d=1
Flags afetados: Z
Tempo de execuo: 1 ciclo
Exemplo: W=1h, PORTA=82h

23

Operaes Lgicas
RLF f,d(1)
O contedo do registrado especificado por f deslocado
um bit esquerda, o valor do flag C armazenado no bit
zero do registrador e o bit excedente dele armazenado
no flag C. O resultado final armazenado no registrador
de destino indicado por d.
(d = W) se (d = 0); (d = F) se (d = 1)
Flags afetados: C
Tempo de Execuo: 1 ciclo

24

Operaes Lgicas
RLF f,d(2)
Exemplos

TRISB=42h, Flag C = 1, W = 22h

TRISB=8Fh, Flag C = 0, W = 22h

25

Operaes Lgicas
RRF f,d

26

O contedo do registrador especificado por f deslocado


um bit direita, o valor da flag C armazenado no bit 7
do registrador e o bit excedente dele armazenado no
flag C. O resultado final armazenado no registrador
destino indicado por d.
(d = W) se (d = 0); (d = F) se (d = 1)
Flags afetados: C
Tempo de Execuo: 1 ciclo

Operaes de Desvio
GOTO k
Desvia o programa para o ponto especificado por k.
Desvio incondicional sem retorno
Flags afetados: Nenhum
Tempo de Execuo: 2 ciclos
Exemplo: Considere:
...
GOTO PONTO2
...
...
PONTO2:
...

27

Operaes de Desvio
CALL k(1)

28

Chamada de sub-rotina especificada por k.


A CPU ir guardar o contedo atual do PC (contador de
programa)+1 na pilha e em seguida desviar para a
prpria sub-rotina
Ao trmino da sub-rotina uma instruo RETURN (ou
similar) ir retirar o (PC+1) da pilha e retornar ao ponto
seguinte do qual foi chamada sub-rotina
Nenhum flag afetado
Tempo de execuo: 2 ciclos

Operaes de Desvio
CALL k(2)
Exemplo:
Considere:
...
CALL PONTO2
...
...
PONTO2:
...
...
RETURN

29

Operaes de Desvio
RETURN e RETLW
Retorno de sub-rotina
Aps a execuo da sub-rotina, estas instrues fazem o
programa voltar para o ponto de onde a mesma foi
chamada
No caso da instruo RETLW, adicionalmente, o valor
de k ser copiado para o registrador W (W=k).
Flags afetados: nenhum
Tempo de execuo: 2 ciclos

30

Operaes de Desvio
RETFIE
Retorno de interrupo. Esta instruo retorna ao ponto
seguinte do qual ocorreu uma interrupo
Esta instruo liga o bit GIE do INTCON
Flags afetados: Nenhum
Tempo de execuo: 2 ciclos

31

Operaes de Desvio
BTFSC f,b(1)
Instruo de desvio condicional
Testa o bit especificado por b do registrador
especificado por f e pula (no executa) a prxima
instruo se o bit estiver em nvel 0.
Tempo de execuo: 1 ou 2 ciclos
1 ciclo se no pular (condio no verdadeira)
2 ciclos se pular (condio verdadeira)

Flags afetados: nenhum

32

Operaes de Desvio
BTFSC f,b(2)
Exemplos
a)

Considere: STATUS=18h
BTFSC STATUS,2
CLRW
ADDLW 0x02

b)

Considere: INTCON=01h
BTFSC INTCON, 0
CLRW
ADDLW 0x02

33

Operaes de Desvio
BTFSS f,b(1)
Instruo de desvio condicional
Testa o bit especificado pelo operando b do
registrador especificado por f e pula (no
executa) a prxima instruo se o bit estiver em
nvel 1.
Tempo de execuo: 1 ou 2 ciclos de mquina
No afeta nenhuma flag

34

Operaes de Desvio
BTFSS f,b(2)
Exemplos
a)

Considere: STATUS=18h
BTFSC STATUS,2
CLRW
ADDLW 0x02

b)

Considere: PORTA=05h
BTFSC PORTA, 7
GOTO PONTOA
ADDLW 0x10

35

Operaes de Desvio
DECFSZ f,d(1)

36

Instruo de desvio condicional, decrementa o contedo


do registrador especificado por f (subtrai 1). Pula a
prxima instruo se o resultado (aps o decremento) for
igual a zero. O resultado (f-1) armazenado no destino
indicado por d.
d=W se (d=0) ou d=f se (d=1)
Flags afetados nenhum
Tempo de execuo: 1 ou 2 ciclos

Operaes de Desvio
DECFSZ f,d(2)
Considere que o contedo do registrador FSR seja 10h
DECFSZ FSR,F
MOVLW 0x05
ADDLW 0x01

Considere que o contedo do registrado FSR seja 01h


DECFSZ FSR,F
MOVLW 0x05
ADDLW 0x01

37

Operaes de Desvio
INCFSZ f,d(1)
Instruo de desvio condicional, incrementa o contedo
do registrador especificado por f (adiciona 1 ao valor
dele). Pula a prxima instruo se o resultado (aps o
incremento) for igual a zero. O resultado (f+1)
armazenado em d.
d=W se (d=0) ou d=f se (d=1)
Flags afetados nenhum
Tempo de execuo: 1 ou 2 ciclos

38

Operaes de Desvio
INCFSZ f,d(2)
Considere que o contedo do registrador FSR seja 00h
INCFSZ FSR,W
MOVLW 0x05
ADDLW 0x01

Considere que o contedo do registrado FSR seja FFh


INCFSZ FSR,W
MOVLW 0x05
ADDLW 0x01

39

Instrues de Controle
NOP
Sem operao
Esta instruo no executa nenhuma operao. No
altera nenhum flag. O processador gasta um ciclo de
mquina sem executar nenhuma operao
Flags afetados: nenhum
Tempo de execuo: 1 ciclo

40

Instrues de Controle
CLRWDT
Limpa (zera) o contador do watchdog. A instruo
utilizada periodicamente, dentro do programa, para
resetar o watchdog, impedindo que o mesmo venha a
ressetar a CPU
Flags afetados: TO e PD
Tempo de execuo: 1 ciclo

41

Instrues de Controle
SLEEP

42

Aciona o modo de baixa potncia da CPU. O


processamento parado e o contedo da memria
preservado.
Flags afetados: TO=1 e PD=0

43

Programa em Basic
TRISB.0 = 0
TRISB.1 = 0
led1 VAR PORTB.0
led2 VAR PORTB.1
loop:
Low led2
High led1
Low led1
High led2
GoTo loop

44

Programa em Assembler
GOTO Label_0001
Label_0001 BSF STATUS
BCF TRISB
BCF TRISB
BCF STATUS
Label_0002 BCF PORTB
BSF STATUS
BCF TRISB
BCF STATUS
BSF PORTB
BSF STATUS

, RP0
, 00
, 01
, RP0
, 01
, RP0
, 01
, RP0
, 00
, RP0

BCF TRISB , 00
BCF STATUS , RP0
BCF PORTB , 00
BSF STATUS , RP0
BCF TRISB , 00
BCF STATUS , RP0
BSF PORTB , 01
BSF STATUS , RP0
BCF TRISB , 01
BCF STATUS , RP0
GOTO Label_0002

45

Conjunto de Instrues(1)

46

Conjunto de Instrues(2)

Potrebbero piacerti anche