Você está na página 1de 4

Eletrônica Digital/Microcontroladores

7. SET DE INSTRUÇÕES DO PIC 16F628A


7.1. Formato das Instruções
As instruções são formadas por um conjunto de bits que são decodificados pelo microcontrolador,
fazendo com que ele execute uma operação bem definida. A quantidade de bits pode variar de uma
instrução para outra, dependendo do microcontrolador. No caso do PIC 16F628A, todas as
instruções possuem o mesmo tamanho: 14 bits.

As instruções são compostas de dois campos: código de operação (OP. CODE) e operando. Os
primeiros bits de uma instrução representam o “OP. CODE” e os demais formam o operando, podendo
conter dados, endereço ou o “nome” de um registrador.

• Código de operação (OP. CODE)


É o campo da instrução que especifica qual tarefa deve ser realizada pelo MCU quando a instrução é
processada. O OP. CODE é um conjunto de bits (representado em binário ou em hexadecimal). Para
facilitar o desenvolvimento dos programas, é dado um nome a cada instrução (que é associada a um
determinado OP. CODE). Este nome é o MNEMÔNICO da instrução, que é uma forma abreviada da
descrição da instrução (em inglês). Exs: MOV (mover), ADD (somar), CLR (limpar), NOP (não fazer
nada).

• Operando
Representa quais elementos serão “envolvidos” na instrução definida. Por exemplo, numa operação
de armazenamento de dados na memória, o operando é composto pelo dado que será armazenado e o
endereço da localidade de memória onde ele deve ser armazenado. No caso do PIC 16F628A, os
operandos de uma instrução podem ser do tipo REGISTRADOR, BIT DE UM REGISTRADOR ou DADO.
Existem algumas instruções que não possuem operandos, como veremos adiante.

1
Eletrônica Digital/Microcontroladores

7.1. Nomenclatura das Instruções


A sintaxe utilizada na construção dos mnemônicos das instruções segue uma lógica. Conhecer a nomenclatura
adotada pelo fabricante facilita o entendimento do significado de cada instrução.
W : Representa o registrador WORK (em alguns MCUs este registrador é conhecido como acumulador). É um
registrador que não é mapeado na memória de dados (ao contrário dos outros SFR), mas é muito
utilizado, pois não é possível escrever um dado em um outro registrador sem que antes a informação
passe pelo registrador W.
F : (File) Representa uma posição de memória ou um registrador.
L : (Literal) A instrução opera um valor numérico (constante), que pode ser representado em decimal, binário,
octal, hexadecimal ou ASCII.
B : (Bit) Representa um bit dentro de um byte.
T : (Teste) Indica que a instrução fará um teste em um determinado bit, dentro de um byte, para verificar se
ele é “0” ou “1”.
S : (Skip) Indica que a próxima linha do programa será “pulada” se uma certa condição for satisfeita.

S : Aparecendo como última letra do mnemônico, S significa que um determinado bit, dentro de um byte,
será “SETADO”, ou seja, levado a nível lógico “1”.
C : (Clear) Indica que um determinado bit, dentro de um byte, será “LIMPO”, ou seja, levado a nível lógico “0”.
Nas instruções de desvio, o “S” e “C” também são usados para indicar se um bit está em “1” ou “0”, respectivamente.

Z : (Zero) Indica que o resultado da última operação matemática foi zero.

q Termos utilizados para indicar a tarefa que será realizada por uma instrução:
ADD (soma de 2 números); AND (operação lógica “E” entre 2 números); IOR (operação lógica “OU” entre 2
números); CLR (limpar); COM (complemento – “inversão bit a bit”); DEC (decremento de um número);
INC (incremento de um número); MOV (mover uma informação para algum lugar); RL (rotacionar um bit para
a esquerda); RR (rotacionar um bit para a direita); SUB (subtração entre 2 números); SWAP (inverte os
nibbles alto e baixo de um byte à 1 nibble = 4 bits); XOR (operação lógica “OU EXCLUSIVO” entre 2 números).
2
Eletrônica Digital/Microcontroladores

Legenda
7.2. Instruções do PIC 16F628A f : registrador b: bit
d : destino k: constante
(“0”ðW; “1” ð registrador f)

OP. CODE Status


Instrução Descrição Exemplo
(14 bits) afetado
Operações com registradores
ADDWF f,d Soma W e f: d ß (W+f) 00 0111 dfff ffff C, CD, Z ADDWF REG1,0
ANDWF f,d AND entre W e f: d ß (W AND f) 00 0101 dfff ffff Z ANDWF REG1,1
CLRF f Limpa f 00 0001 1fff ffff Z CRLF REG1
CLRW Limpa W 00 0001 0000 0011 Z CLRW
COMF f,d Complemento de f: d ß NOT(f) 00 1001 dfff ffff Z COMF REG1,0
DECF f,d d ß (f-1) 00 0011 dfff ffff Z DECF CONT,1
DECFSZ f,d d ß (f-1) e salta próxima linha se o resultado for zero 00 1011 dfff ffff DECFSZ REG,1
INCF f,d d ß (f+1) 00 1010 dfff ffff Z INCF CONT,1
INCFSZ f,d d ß (f+1) e salta próxima linha se o resultado for zero 00 1111 dfff ffff INCFSZ REG1,1
IORWF f,d OR entre W e f: d ß (W OR f) 00 0100 dfff ffff Z IORWF REG1,0
MOVF f,d d ß cópia de f 00 1000 dfff ffff Z MOVF REG1,0
MOVWF f f ß cópia de W 00 0000 1fff ffff MOVWF REG1
RLF f,d rotaciona f um bit para a esquerda e copia em d 00 1101 dfff ffff C RLF REG1,0
RRF f,d rotaciona f um bit para a direita e copia em d 00 1100 dfff ffff C RRF REG1,0
SUBWF f,d Subtrai W de f: d ß (f-W) 00 0010 dfff ffff C, CD, Z SUBWF REG1,1
SWAPF f,d inverte nibble alto com nibble baixo (de f) e guarda resultado em d 00 1110 dfff ffff SWAPF REG1,1
XORWF f,d OU EXCLUSIVO entre W e f: d ß (W XOR f) 00 0110 dfff ffff Z XORWF 3
REG1,0
Eletrônica Digital/Microcontroladores

Instruções (continuação)
OP. CODE Status
Instrução Descrição Exemplo
(14 bits) afetado
Operações com bits
BCF f,b Reseta (clear) o bit b do registrador f 01 00bb bfff ffff BCF REG1,7
BSF f,b Seta o bit b do registrador f 01 01bb bfff ffff BSF REG1,5
BTFSC f,b Testa o bit b do registrador f e salta a próxima linha se ele for "0" 01 10bb bfff ffff BTFSC REG1,4
BTFSS f,b Testa o bit b do registrador f e salta a próxima linha se ele for "1" 01 11bb bfff ffff BTFSS REG1,3
Operações com literais (valores numéricos)
ADDLW k W ß (W+k) 11 111x kkkk kkkk C, CD, Z ADDLW 0x15
ANDLW k W ß (W AND k) 11 1001 kkkk kkkk Z ANDLW 0x5F
IORLW k W ß (W OR k) 11 1000 kkkk kkkk Z IORLW 0X3D
MOVLW k Wßk 11 00xx kkkk kkkk MOVLW 0X5A
SUBLW k W ß (k-W) 11 110x kkkk kkkk C, CD, Z SUBLW 0X02
XORLW k W ß (W XOR k) 11 1010 kkkk kkkk Z XORLW 0XAF
Operações de Controle
NOP "No operation" (não faz nada) 00 0000 0xx0 0000 NOP
CALL k Chamada à sub-rotina 10 0kkk kkkk kkkk CALL ROTINA1
CLRWDT Limpa WDT (watch-dog) 00 0000 0110 0100 TO, PD CLRWDT
GOTO k Desvio para endereço 10 1kkk kkkk kkkk GOTO INICIO
RETFIE Retorno de interrupção 00 0000 0000 1001 RETFIE
RETLW k Retorno de sub-rotina com k armazenado em W 11 01kk kkkk kkkk RETLW 0X25
RETURN Retorno de sub-rotina 00 0000 0000 1000 RETURN
SLEEP Coloca o PIC em modo de economia de energia (sleep) 00 0000 0110 0011 TO, PD SLEEP 4

Você também pode gostar