Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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
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
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
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
25
Operaes Lgicas
RRF f,d
26
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
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)
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
Operaes de Desvio
DECFSZ f,d(2)
Considere que o contedo do registrador FSR seja 10h
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
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
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)