5. Conjunto de Instruções do MCU PIC -...
Transcript of 5. Conjunto de Instruções do MCU PIC -...
5. Conjunto de Instruções do
MCU PIC
Conjunto de Instruções
MCU PIC
Professor: Vlademir de Oliveira
Disciplina: Microcontroladores e DSP
5.1 Arquitetura interna
Ciclo de Busca e Execução da Instrução
Conjunto de Instruções
O clock externo é internamente dividido por 4, gerando Q1, Q2, Q3 e Q4, cada instrução é
dividida nesses 4 ciclos. A busca e execução são feitas em linha, de tal forma que a busca leva 1
ciclo de máquina e a execução outro ciclo. Usando o pipeline, cada instrução é realizada em
um ciclo, pois na série 16 do PIC, cada instrução seria realizada em 2 ciclos sem o pipeline.
Existem MCUs PIC de 32-bits com clock de até 80MHz e pipeline de 5 estágios.
5.1 Arquitetura interna
�Registradores internosRegistrador W / ou registrador principal (Work): É utilizado na troca de dados entre registradores f. Também é usado como destino nas operações realizadas pela ULA.
É importante destacar que não é
Conjunto de Instruções
É importante destacar que não é possível trocar informações entre os registradores f.
Pilha (Stack): A pilha é um local onde são armazenados os endereços de retorno nas instruções de salto ou desvio. A pilha dos PICs está localizada em uma memória separada da RAM e sua estrutura só permite acesso tipo LIFO.
PIC16F87XA
5.1 Arquitetura interna
�Registradores internosPC (Program Counter): É o responsável pela sequência da execução do programa. O registrador PC aponta para a próxima instrução a ser executada. Nas instruções de salto, por exemplo, o PC é alterado.
Conjunto de Instruções
por exemplo, o PC é alterado.
Os 13 bits do PC são divididos em:
PCL → 8 bits menos significativos
PCH → 5 bits mais significativos
Somente o PCL é diretamente acessível , o PCH não pode ser alterado através do PCLATH.
PIC16F87XA
5.2 Conjunto de Instruções do MCU PIC Mid-range (14-bits)
� Formato das instruções
Essa categoria possui 35 instruções com um formato em 14-bits. As
instruções podem ser encontradas na tabela do datasheet. Será mostrado
como utilizar a tabela para utilizar as instruções do microcontrolador.
Conjunto de Instruções
5.2 Conjunto de Instruções do MCU PIC Mid-range (14-bits)
�Formato das instruçõesOs itens mais importantes são mneumônico e parâmetros, mais a tabela também fornece outras informações:
Mneumônico: É a representação textual (opcode)
Parâmetro: São as informações manipuladas
f → são os registradores SFR ou GPR; f significa
Conjunto de Instruções
f → são os registradores SFR ou GPR; f significa
nome com registro.
d → identifica o destino, entre W e f. Se d=0 → W
e se d=1 → f, o padrão é d=1.
b → expressa um bit de 0 a 7.
k → indica um parâmetro constante na manipulação.
Ciclos: O número de ciclos gastos na instrução; Importante para a temporização do programa.
Flags: Indica as flags aritméticas do registrador STATUS (C,DZ,Z).
5.2 Conjunto de Instruções do MCU PIC Mid-range (14-bits)
� Algumas definições
0xNN: Representação de um número em hexadecimal; Padrão da
Microchip.
Nibbles : Metade de um byte (4 bits).
Z (Bit zero) : Resultado da última operação da ULA.
Conjunto de Instruções
Z (Bit zero) : Resultado da última operação da ULA.
1 → se o resultado foi 0
0 → se o resultado foi diferente de 0
DC (Digit carry/borrow) : Resultado da operação ADD provocou um
estouro dos 4 bits menos significativos.
1 → houve estouro
0 → não houve estouro
5.2 Conjunto de Instruções do MCU PIC Mid-range (14-bits)
� Algumas definições
C (Carry/borrow) : A última operação ADD provocou um estouro na
palavra de 8 bits.
1 → houve estouro
0 → não houve estouro
Conjunto de Instruções
0 → não houve estouro
5.2 Conjunto de Instruções do MCU PIC Mid-range (14-bits)
� Exemplo de Instruções
ADDWF f, d Flags: C, DZ, Z 1 ciclo
Operandos: 0 ≤ f ≤ 127 d = 0 ou 1
→ Adição do conteúdo do registrador W ao
Conjunto de Instruções
→ Adição do conteúdo do registrador W ao conteúdo do registrador especificado por f.
Operação: (W) + (f) → (d)
Ex.: ADDWF INTCON, F
Antes → W = 0x20, INTCON = 0x07, C = x DC = x Z = x
Depois → W = 0x20, INTCON = 0x27, C = 0 DC = 0 Z = 0
5.2 Conjunto de Instruções do MCU PIC Mid-range (14-bits)
� Exemplo de Instruções
ANDLW k Flags: Z 1 ciclo
Operandos: 0 ≤ k ≤ 255
→ Realiza o AND bit a bit entre o conteúdo de W e
Conjunto de Instruções
→ Realiza o AND bit a bit entre o conteúdo de W e uma constante.
Operação: (W) AND (k) → (W)
Ex.: ANDLW 0x0F
Antes → W = 0x95, k = B’00001111’ Z = x
Depois → W = 0x05, k = B’00001111’ Z = 0
5.2 Conjunto de Instruções do MCU PIC Mid-range (14-bits)
� Exemplo de Instruções
MOVLW k Flags: Nenhuma 1 ciclo
Operandos: 0 ≤ k ≤ 255
→ Copia o valor da constante no registrador W.
Conjunto de Instruções
→ Copia o valor da constante no registrador W.
Operação: (k) → (W)
Ex.: MOVLW 0x10
Antes → W = 0xNN, k = B’00010000’ Z = x
Depois → W = 0x10, k = B’00010000’ Z = x
5.2 Conjunto de Instruções do MCU PIC Mid-range (14-bits)
� Exemplo de Instruções
MOVWF f Flags: Nenhuma 1 ciclo
Operandos: 0 ≤ f ≤ 127
→ Copia o conteúdo de W no registrador f.
Conjunto de Instruções
→ Copia o conteúdo de W no registrador f.
Operação: (W) → (f)
Ex.: MOVWF PORTA
Antes → W = 0x50, PORTA = 0xNN Z = x
Depois → W = 0x50, PORTA = 0x50 Z = x
5.2 Conjunto de Instruções do MCU PIC Mid-range (14-bits)
� Exemplo de Instruções
MOVF f, d Flags: Z 1 ciclo
Operandos: 0 ≤ f ≤ 127 d = 0 ou 1
→ Copia o conteúdo do registrador f no destino
Conjunto de Instruções
→ Copia o conteúdo do registrador f no destino especificado.
Operação: (f) → (d)
Ex1.: MOVF TRISA, W
Antes → W = 0xNN, TRISA = 0x20 Z = x
Depois → W = 0x20, TRISA = 0x20 Z = 0
5.2 Conjunto de Instruções do MCU PIC Mid-range (14-bits)
� Exemplo de Instruções
Ex2.: MOVF VAR1, d = 1 (default)
Antes → W = 0x31, VAR1 = 0x00 Z = x
Depois → W = 0x31, VAR1 = 0x00 Z = 1
Conjunto de Instruções
Obs.: Foi possível verificar se o conteúdo de VAR1 era zero.
Depois → W = 0x31, VAR1 = 0x00 Z = 1
5.2 Conjunto de Instruções do MCU PIC Mid-range (14-bits)
� Exemplo de Instruções
CLRF f Flags: Z 1 ciclo
Operandos: 0 ≤ f ≤ 127
→ Apaga o conteúdo de f.
Conjunto de Instruções
→ Apaga o conteúdo de f.
Operação: 00h → (f) Z = 1
Ex1.: CLRF INTCON
Antes → W = 0xNN, INTCON = 0x11 Z = x
Depois → W = 0xNN, INTCON = 0x00 Z = 1
5.2 Conjunto de Instruções do MCU PIC Mid-range (14-bits)
� Exemplo de Instruções
Ex2.: CLRF STATUS
Registrador STATUS
7 – R/W 6 – R/W 5 – R/W 4 – R 3 – R 2 – R/W 1 – R/W 0 – R/W
Conjunto de Instruções
7 – R/W 6 – R/W 5 – R/W 4 – R 3 – R 2 – R/W 1 – R/W 0 – R/W
IRP RP1 RP0 TO PD Z DC C
Antes → 0 1 0 1 1 0 1 0
Depois → 0 0 0 1 1 1 1 0
5.2 Conjunto de Instruções do MCU PIC Mid-range (14-bits)
� Exemplo de Instruções
CLRW Flags: Z 1 ciclo
Operandos:
→ Apaga o conteúdo de W
Conjunto de Instruções
→ Apaga o conteúdo de W
Operação: 00h → (W) Z = 1
Ex.: CLRW
Antes → W = 0xNN, Z = x
Depois → W = 0x00, Z = 1
5.2 Conjunto de Instruções do MCU PIC Mid-range (14-bits)
� Exemplo de Instruções
BCF f, b Flags: Nenhuma 1 ciclo
Operandos: 0 ≤ f ≤ 127 0 ≤ b ≤ 7
→ Apaga o bit indicado por b do registrador f.
Conjunto de Instruções
→ Apaga o bit indicado por b do registrador f.
Operação: 0 → (f <b>)
Ex.: BCF TRISB, 1
Antes → TRISB = B’11111111’
Depois → TRISB = B’11111101’
5.2 Conjunto de Instruções do MCU PIC Mid-range (14-bits)
� Exemplo de Instruções
BSF f, b Flags: Nenhuma 1 ciclo
Operandos: 0 ≤ f ≤ 127 0 ≤ b ≤ 7
→ Seta o bit indicado por b do registrador f.
Conjunto de Instruções
→ Seta o bit indicado por b do registrador f.
Operação: 1 → (f <b>)
Ex.: BSF STATUS, 6
Antes → STATUS = B’00111000’
Depois → STATUS = B’01111000’
5.2 Conjunto de Instruções do MCU PIC Mid-range (14-bits)
� Exemplo de Instruções
GOTO k Flags: Nenhuma 2 ciclo
Operandos: 0 ≤ k ≤ 2047
→ Desvia o programa para um ponto especificado
Conjunto de Instruções
→ Desvia o programa para um ponto especificado por k (endereço).
Operação: k → PC <10:0>
PCLATCH <4:3> → PC <12:11>
5.2 Conjunto de Instruções do MCU PIC Mid-range (14-bits)
� Exemplo de Instruções
CALL k Flags: Nenhuma 2 ciclo
Operandos: 0 ≤ k ≤ 2047
→ Chama uma subrotina no endereço especificado
Conjunto de Instruções
→ Chama uma subrotina no endereço especificado por k.
Operação: (PC) +1 → TOS
k → PC <10:0>
PCLATCH <4:3> → PC <12:11>
5.2 Conjunto de Instruções do MCU PIC Mid-range (14-bits)
� Exemplo de Instruções
RETURN Flags: Nenhuma 2 ciclo
Operandos:
→ Retorna para o próximo endereço.
Conjunto de Instruções
→ Retorna para o próximo endereço.
Operação: TOS→ PC
5.2 Conjunto de Instruções do MCU PIC Mid-range (14-bits)
� Exemplo de Instruções
RETLW k Flags: Nenhuma 2 ciclo
Operandos: 0 ≤ k ≤ 255
→ Retorna de uma subrotina e move uma constante
Conjunto de Instruções
→ Retorna de uma subrotina e move uma constante para W.
Operação: k → (W)
TOS→ PC
5.3 Tabela do Datasheet
Conjunto de Instruções