Cursos / Eletrônica / Projeto de Sistemas Microcontrolados / Aula

arrow_back Aula 05 - Linguagem Assembly e ambientes de programação

Formato das instruções

Nem todas as instruções de um microcontrolador PIC apresentam um mesmo padrão de execução. Essa diversidade de padrões de execução é caracterizada pela codificação binária que é dada para cada uma delas. Essas codificações binárias são distribuídas em quatro formatos típicos, caracterizando os quatro grupos de instruções citadas no início desta seção.

Código de operação d f
13 12 11 10 9 8 7 6 5 4 3 2 1 0
Formato 1 – Instruções de operação com registros

Nesse formato, "f" representa uma nomeação de um registro, uma posição de memória ou uma variável, "d" representa uma nomeação de destino. Se "d" é 0, o resultado é colocado no registrador de trabalho W, e se "d" é 1, o resultado é armazenado no próprio registrador, na posição de memória ou na variável referenciada na instrução.

Exemplos de instruções que se utilizam desse formato:

  • ADDWF PORTA, F
; Adicione W com o valor presente em PORTA e
;armazene resultado em PORTA.
  • ADDWF PORTA, W
; Adicione W com valor em PORTA e armazene
;resultado em W.
Código de operação b f
13 12 11 10 9 8 7 6 5 4 3 2 1 0
Formato 2 – Instruções de operação com bits

Nesse formato, "b" representa a denominação do bit afetado pela operação, enquanto "f" representa um endereço de registro ou variável no qual o bit está localizado.

Exemplo de uma instrução que se utiliza desse formato:

  • BSF PORTA, RA1        ; Set bit 1 (RA1) do registrador PORTA
Código de operação k (literal)
13 12 11 10 9 8 7 6 5 4 3 2 1 0
Formato 3 – Instruções de operação com literais de 8 bits

Exemplo de instruções que se utilizam desse formato:

  • MOVLW .53        ; Armazene em W o literal 53 decimal.
  • ADDLW 0x49     ; Adicione valor em W com o literal 49 hexadecimal.
Código de operação k (literal)
13 12 11 10 9 8 7 6 5 4 3 2 1 0
Formato 4 – Instruções de operação com literais de 11 bits

Exemplo de uma instrução que se utiliza desse formato:

  • GOTO 0x320      ; Desvie programa para posição hexadecimal 320

Um quadro-resumo do conjunto de instruções dos microcontroladores PIC 16F, separadas por grupo de instruções aritméticas, lógicas, de movimentação, de desvio, de tratamento com bits e de controle é apresentado no Quadro 1 e uma análise completa do conjunto de instruções PIC 16, com exemplos, pode ser acessada em:

<http://www.cinelformacao.com/mpics/files/ud3/instr/index.htm>.

Instrução Descrição da operação No de ciclos Flags afetados
Aritméticas      
ADDLW k W = W + k 1 C, DC, Z
ADDWF f, d d = W + f 1 C, DC, Z
SUBLW k W = k - W 1 C, DC, Z
SUBWF f, d d = f – W 1 C, DC, Z
INCF f, d d = f + 1 1 Z
DECF f, d d = f – 1 1 Z
CLRF f f = 0 1 Z
CLRW W = 0 1 Z
Movimentação      
MOVLW k W = k 1 -
MOVWF f f = W 1 -
MOVF f,d d = f 1 Z
RLF f, d Rotaciona f à esquerda através do carry 1 C
RRF f, d Rotaciona f à direita através do carry 1 C
Lógicas      
ANDLW k W = W.and. k 1 Z
ANDWF f, d d = W.and.f 1 Z
IORLW k W = W.or.k 1 Z
IORWF f, d d = W.or. f 1 Z
XORLW k W = W.xor.k 1 Z
XORWF f, d d = W.xor.f 1 Z
COMF f,d d = .not.f 1 Z
SWAPF f, d d = f<3:0> f<7:4> 1 -
Operações com bit      
BCF f, b Clear bit b de f 1 -
BSF f, b Set bit b de f 1 -
BTFSS f,b salta próxima instrução se Bit b de f = 1 1 (2) -
BTFSC f, b salta próxima instrução se Bit b de f = 0 1 (2) -
INCFSZ f, d d = f+1 e salta próxima instrução se d=0 1 (2) -
DECFSZ f, d d = f-1 e salta próxima instrução se d=0 1 (2) -
Desvio      
GOTO k Desvia execução do programa para k 2 -
CALL k Chama sub-rotina no endereço k 2 -
RETURN Retorna de sub-rotina 2 -
RETLW k Retorna de sub-rotina fazendo W = k 2 -
RETFIE Retorna de interrupção 2 -
Controle      
NOP Não faça nada 1 -
CLRWDT WDT = 0 e WDTPrescaler = 0 1 /TO=1, /PD=0
SLEEP Clock OFF, WDT = 0 e WDTPrescaler = 0 1 /TO=1, /PD=1
Quadro 1 – Listagem com as instruções dos microcontroladores PIC 16

Versão 5.3 - Todos os Direitos reservados