5. Conjunto de Instruções do MCU PIC -...

24
5. Conjunto de Instruções do MCU PIC Conjunto de Instruções Professor: Vlademir de Oliveira Disciplina: Microcontroladores e DSP

Transcript of 5. Conjunto de Instruções do MCU PIC -...

Page 1: 5. Conjunto de Instruções do MCU PIC - sinop.unemat.brsinop.unemat.br/site_antigo/prof/foto_p_downloads/fot_90421... · Conjunto de Instruções ... (opcode) Parâmetro : ... →Retorna

5. Conjunto de Instruções do

MCU PIC

Conjunto de Instruções

MCU PIC

Professor: Vlademir de Oliveira

Disciplina: Microcontroladores e DSP

Page 2: 5. Conjunto de Instruções do MCU PIC - sinop.unemat.brsinop.unemat.br/site_antigo/prof/foto_p_downloads/fot_90421... · Conjunto de Instruções ... (opcode) Parâmetro : ... →Retorna

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.

Page 3: 5. Conjunto de Instruções do MCU PIC - sinop.unemat.brsinop.unemat.br/site_antigo/prof/foto_p_downloads/fot_90421... · Conjunto de Instruções ... (opcode) Parâmetro : ... →Retorna

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

Page 4: 5. Conjunto de Instruções do MCU PIC - sinop.unemat.brsinop.unemat.br/site_antigo/prof/foto_p_downloads/fot_90421... · Conjunto de Instruções ... (opcode) Parâmetro : ... →Retorna

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

Page 5: 5. Conjunto de Instruções do MCU PIC - sinop.unemat.brsinop.unemat.br/site_antigo/prof/foto_p_downloads/fot_90421... · Conjunto de Instruções ... (opcode) Parâmetro : ... →Retorna

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

Page 6: 5. Conjunto de Instruções do MCU PIC - sinop.unemat.brsinop.unemat.br/site_antigo/prof/foto_p_downloads/fot_90421... · Conjunto de Instruções ... (opcode) Parâmetro : ... →Retorna

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).

Page 7: 5. Conjunto de Instruções do MCU PIC - sinop.unemat.brsinop.unemat.br/site_antigo/prof/foto_p_downloads/fot_90421... · Conjunto de Instruções ... (opcode) Parâmetro : ... →Retorna

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

Page 8: 5. Conjunto de Instruções do MCU PIC - sinop.unemat.brsinop.unemat.br/site_antigo/prof/foto_p_downloads/fot_90421... · Conjunto de Instruções ... (opcode) Parâmetro : ... →Retorna

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

Page 9: 5. Conjunto de Instruções do MCU PIC - sinop.unemat.brsinop.unemat.br/site_antigo/prof/foto_p_downloads/fot_90421... · Conjunto de Instruções ... (opcode) Parâmetro : ... →Retorna

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

Page 10: 5. Conjunto de Instruções do MCU PIC - sinop.unemat.brsinop.unemat.br/site_antigo/prof/foto_p_downloads/fot_90421... · Conjunto de Instruções ... (opcode) Parâmetro : ... →Retorna

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

Page 11: 5. Conjunto de Instruções do MCU PIC - sinop.unemat.brsinop.unemat.br/site_antigo/prof/foto_p_downloads/fot_90421... · Conjunto de Instruções ... (opcode) Parâmetro : ... →Retorna

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

Page 12: 5. Conjunto de Instruções do MCU PIC - sinop.unemat.brsinop.unemat.br/site_antigo/prof/foto_p_downloads/fot_90421... · Conjunto de Instruções ... (opcode) Parâmetro : ... →Retorna

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

Page 13: 5. Conjunto de Instruções do MCU PIC - sinop.unemat.brsinop.unemat.br/site_antigo/prof/foto_p_downloads/fot_90421... · Conjunto de Instruções ... (opcode) Parâmetro : ... →Retorna

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

Page 14: 5. Conjunto de Instruções do MCU PIC - sinop.unemat.brsinop.unemat.br/site_antigo/prof/foto_p_downloads/fot_90421... · Conjunto de Instruções ... (opcode) Parâmetro : ... →Retorna

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

Page 15: 5. Conjunto de Instruções do MCU PIC - sinop.unemat.brsinop.unemat.br/site_antigo/prof/foto_p_downloads/fot_90421... · Conjunto de Instruções ... (opcode) Parâmetro : ... →Retorna

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

Page 16: 5. Conjunto de Instruções do MCU PIC - sinop.unemat.brsinop.unemat.br/site_antigo/prof/foto_p_downloads/fot_90421... · Conjunto de Instruções ... (opcode) Parâmetro : ... →Retorna

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

Page 17: 5. Conjunto de Instruções do MCU PIC - sinop.unemat.brsinop.unemat.br/site_antigo/prof/foto_p_downloads/fot_90421... · Conjunto de Instruções ... (opcode) Parâmetro : ... →Retorna

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

Page 18: 5. Conjunto de Instruções do MCU PIC - sinop.unemat.brsinop.unemat.br/site_antigo/prof/foto_p_downloads/fot_90421... · Conjunto de Instruções ... (opcode) Parâmetro : ... →Retorna

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’

Page 19: 5. Conjunto de Instruções do MCU PIC - sinop.unemat.brsinop.unemat.br/site_antigo/prof/foto_p_downloads/fot_90421... · Conjunto de Instruções ... (opcode) Parâmetro : ... →Retorna

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’

Page 20: 5. Conjunto de Instruções do MCU PIC - sinop.unemat.brsinop.unemat.br/site_antigo/prof/foto_p_downloads/fot_90421... · Conjunto de Instruções ... (opcode) Parâmetro : ... →Retorna

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>

Page 21: 5. Conjunto de Instruções do MCU PIC - sinop.unemat.brsinop.unemat.br/site_antigo/prof/foto_p_downloads/fot_90421... · Conjunto de Instruções ... (opcode) Parâmetro : ... →Retorna

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>

Page 22: 5. Conjunto de Instruções do MCU PIC - sinop.unemat.brsinop.unemat.br/site_antigo/prof/foto_p_downloads/fot_90421... · Conjunto de Instruções ... (opcode) Parâmetro : ... →Retorna

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

Page 23: 5. Conjunto de Instruções do MCU PIC - sinop.unemat.brsinop.unemat.br/site_antigo/prof/foto_p_downloads/fot_90421... · Conjunto de Instruções ... (opcode) Parâmetro : ... →Retorna

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

Page 24: 5. Conjunto de Instruções do MCU PIC - sinop.unemat.brsinop.unemat.br/site_antigo/prof/foto_p_downloads/fot_90421... · Conjunto de Instruções ... (opcode) Parâmetro : ... →Retorna

5.3 Tabela do Datasheet

Conjunto de Instruções