40
Sistemas Embarcados Microcontroladores PIC Prof. Wanderley

Sistemas Embarcados Microcontroladores PIC Prof. Wanderley

Embed Size (px)

Citation preview

Page 1: Sistemas Embarcados Microcontroladores PIC Prof. Wanderley

Sistemas Embarcados Microcontroladores PIC

Prof. Wanderley

Page 2: Sistemas Embarcados Microcontroladores PIC Prof. Wanderley

Instruções

FORMAS DE CONSTRUÇÃO DAS INSTRUÇÕES

1. Instrução do tipo MNEMÔNICO K

Possui um operando K, o qual está armazenado ou no registrador W, ou como parte do endereço de destino em instruções de desvio.

2. Instrução do tipo MNEMÔNICO REG

Possui um operando REG que representa um dos registradores disponíveis (SFR ou GPR).

Page 3: Sistemas Embarcados Microcontroladores PIC Prof. Wanderley

Instruções

3. Instrução do tipo MNEMÔNICO REG, DES

O operando REG representa um dos registradores disponíveis (SFR ou GPR), enquanto que DES consiste em um bit indicador de destino da instrução, de modo que: Se DES for igual a w ou 0, o destino da instrução é o registrador w; Se DES for igual a f ou 1, o destino da instrução é o próprio registrador REG.

Page 4: Sistemas Embarcados Microcontroladores PIC Prof. Wanderley

Instruções

4. Instrução do tipo MNEMÔNICO REG, BITO operando REG representa um dos registradores disponíveis (SFR ou GPR), enquanto que BIT indica qual dos oito bits do registrador REG é o alvo da instrução.

EXEMPLO: Numa instrução “MNEMÔNICO PORTB, 1”, temos que o bit 1 de PORTB será o alvo da instrução.

Page 5: Sistemas Embarcados Microcontroladores PIC Prof. Wanderley

InstruçõesASPECTOS E CONVENÇÕES IMPORTANTES

1. Existem instruções que alteram indiretamente os flags no registrador STATUS;

2. f é uma abreviação de file register e é utilizado para especificar um dos registradores internos do PIC (SFR ou GPR), exceto o W;

3. d é utilizado para especificar o destino da instrução, se w ou f;

4. b é utilizado para especificar um dos 8 bits (0 a 7) do registrador especificado pelo primeiro operando;

5. Cada exemplo de instrução traz consigo uma tabela contendo o estado dos flags C, DC e Z antes e depois da execução da instrução, sendo destacados quando alterados;

Page 6: Sistemas Embarcados Microcontroladores PIC Prof. Wanderley

InstruçõesASPECTOS E CONVENÇÕES IMPORTANTES

6. O tempo de execução de cada instrução é exibido em termos de ciclo de máquina (1 ciclo de máquina equivale a 4 ciclos de clock0;

7. A base numérica utilizada nos exemplos é a hexadecimal, sendo que o valor XX em hexadecimal é representado como 0xXX.

Page 7: Sistemas Embarcados Microcontroladores PIC Prof. Wanderley

InstruçõesMANIPULAÇÃO DE REGISTRADORES

Instruções de manipulação de registradores são utilizadas para:

Armazenar dados; Movimentar dados; ou Modificar dados.

MOVLW k Flags afetados: nenhum Tempo exec.: 1 ciclo

Copia o valor da constante k para o registrador w.

0≤k≤255

Os flags C, DC e Z não são afetados

Page 8: Sistemas Embarcados Microcontroladores PIC Prof. Wanderley

InstruçõesMANIPULAÇÃO DE REGISTRADORES

MOVWF f Flags afetados: nenhum Tempo exec.: 1 ciclo

Copia o conteúdo de w para o registrador f.

O conteúdo de w não será afetado.

Os flags C, DC e Z não são afetados

Page 9: Sistemas Embarcados Microcontroladores PIC Prof. Wanderley

InstruçõesMANIPULAÇÃO DE REGISTRADORES

MOVF f,d Flags afetados: z Tempo exec.: 1 ciclo

Copia o conteúdo do registrador especificado pelo operando f para o destino especificado pelo operando d.

d=W ou d=0 faz com que o conteúdo de f seja armazenado em w.

d=F ou d=1 faz com que o conteúdo de f seja armazenado em f.

Se o valor armazenado for nulo, então Z=1, senão Z=0.

Page 10: Sistemas Embarcados Microcontroladores PIC Prof. Wanderley

InstruçõesMANIPULAÇÃO DE REGISTRADORES

CLRF f Flags afetados: z Tempo exec.: 1 ciclo

Apaga o conteúdo do registrador indicado pelo operando f (armazena 0 em f).

Esta instrução faz com que o flag Z=1.

CLRW Flags afetados: z Tempo exec.: 1 ciclo

Apaga o conteúdo do registrador w (armazena 0 em w).

Esta instrução faz com que o flag Z=1.

Page 11: Sistemas Embarcados Microcontroladores PIC Prof. Wanderley

InstruçõesMANIPULAÇÃO DE REGISTRADORES

INCF f,d Flags afetados: z Tempo exec.: 1 ciclo

Incrementa de 1 o conteúdo do registrador indicado pelo operando f, armazenando o resultado no destino indicado pelo operando d.

Esta instrução faz com que o flag Z=1.

d=W ou d=0 faz com que o destino seja o registrador w.

d=F ou d=1 faz com que o destino seja o próprio registrador especificado pelo operando f.

Esta instrução afeta o flag z.

Page 12: Sistemas Embarcados Microcontroladores PIC Prof. Wanderley

InstruçõesMANIPULAÇÃO DE REGISTRADORES

DECF f,d Flags afetados: z Tempo exec.: 1 ciclo

Decrementa de 1 o conteúdo do registrador indicado pelo operando f, armazenando o resultado no destino indicado pelo operando d.

Esta instrução faz com que o flag Z=1.

d=W ou d=0 faz com que o destino seja o registrador w.

d=F ou d=1 faz com que o destino seja o próprio registrador especificado pelo operando f.

Page 13: Sistemas Embarcados Microcontroladores PIC Prof. Wanderley

InstruçõesMANIPULAÇÃO DE REGISTRADORES

BCF f,b Flags afetados: nenhum Tempo exec.: 1 ciclo

Apaga (coloca em nível lógico 0) o bit representado pelo operando b do registrador representado pelo operando f.

BSF f,b Flags afetados: nenhum Tempo exec.: 1 ciclo

Seta (coloca em nível lógico 1) o bit representado pelo operando b do registrador representado pelo operando f.

Page 14: Sistemas Embarcados Microcontroladores PIC Prof. Wanderley

InstruçõesMANIPULAÇÃO DE REGISTRADORES

SWAPF f,d Flags afetados: nenhum Tempo exec.: 1 ciclo

Troca os nibbles do registrador representado pelo operando f (0xXY=>0xYX), armazenando o resultado no destino indicado pelo operando d.

d=W ou d=0 faz com que o destino seja o registrador w.d=F ou d=1 faz com que o destino seja o próprio registrador especificado pelo operando f.

Page 15: Sistemas Embarcados Microcontroladores PIC Prof. Wanderley

InstruçõesOPERAÇÕES ARITMÉTICAS

ADDLW k Flags afetados: Z, DC e C Tempo exec.: 1 ciclo

Adição aritmética do valor representado pela constante k ao conteúdo armazenado no registrador w, sendo o resultado armazenado no próprio registrador w.

C=1 se o resultado ultrapassar 255 e c=0 caso contrário;

DC=1 se houver transbordo do terceiro para o quarto bit do registrador e DC=0 caso contrário;

Z=1 se o valor armazenado em w for nulo e Z=0 caso contrário;

Page 16: Sistemas Embarcados Microcontroladores PIC Prof. Wanderley

InstruçõesOPERAÇÕES ARITMÉTICAS

ADDWF f,d Flags afetados: Z, DC e C Tempo exec.: 1 ciclo

Adição aritmética do conteúdo armazenado no registrador w ao conteúdo armazenado no registrador especificado pelo operando f, sendo o resultado armazenado no destino indicado por d.d=W ou d=0 faz com que o destino seja o registrador w.d=F ou d=1 faz com que o destino seja o próprio registrador especificado pelo operando f.

C=1 se o resultado ultrapassar 255 e c=0 caso contrário;

DC=1 se houver transbordo do terceiro para o quarto bit do registrador e DC=0 caso contrário;

Z=1 se o valor armazenado em w for nulo e Z=0 caso contrário;

Page 17: Sistemas Embarcados Microcontroladores PIC Prof. Wanderley

InstruçõesOPERAÇÕES ARITMÉTICAS

SUBLW k Flags afetados: Z, DC e C Tempo exec.: 1 ciclo

Subtração aritmética do conteúdo armazenado no registrador w do valor representado pela constante k, sendo o resultado armazenado no próprio registrador w (w=k-w).

C=1 se o resultado ultrapassar 255 e c=0 caso contrário;

DC=1 se houver transbordo do terceiro para o quarto bit do registrador e DC=0 caso contrário;

Z=1 se o valor armazenado em w for nulo e Z=0 caso contrário;

Page 18: Sistemas Embarcados Microcontroladores PIC Prof. Wanderley

InstruçõesOPERAÇÕES ARITMÉTICAS

SUBWF f,d Flags afetados: Z, DC e C Tempo exec.: 1 ciclo

Subtração aritmética do conteúdo armazenado no registrador w do conteúdo armazenado no registrador especificado pelo operando f, sendo o resultado armazenado no destino indicado por d.d=W ou d=0 faz com que o destino seja o registrador w (w=f-w).d=F ou d=1 faz com que o destino seja o próprio registrador especificado pelo operando f (f=f-w).

C=1 se o resultado ultrapassar 255 e c=0 caso contrário;

DC=1 se houver transbordo do terceiro para o quarto bit do registrador e DC=0 caso contrário;

Z=1 se o valor armazenado em w for nulo e Z=0 caso contrário;

Page 19: Sistemas Embarcados Microcontroladores PIC Prof. Wanderley

InstruçõesOPERAÇÕES LÓGICAS

ANDLW k Flags afetados: Z Tempo exec.: 1 ciclo

AND lógico bit a bit do conteúdo da constante representada pelo operando k com o conteúdo do registrador w, sendo o resultado armazenado no registrador w (w = w AND k).

Z=1 se o valor armazenado em w for nulo e Z=0 caso contrário;

Page 20: Sistemas Embarcados Microcontroladores PIC Prof. Wanderley

InstruçõesOPERAÇÕES LÓGICAS

ANDWF f,d Flags afetados: Z Tempo exec.: 1 ciclo

AND lógico do conteúdo armazenado no registrador w com o conteúdo armazenado no registrador especificado pelo operando f, sendo o resultado armazenado no destino indicado por d.d=W ou d=0 faz com que o destino seja o registrador w (w = f AND w).d=F ou d=1 faz com que o destino seja o próprio registrador especificado pelo operando f (f = f AND w).

Z=1 se o valor armazenado em w for nulo e Z=0 caso contrário.

Page 21: Sistemas Embarcados Microcontroladores PIC Prof. Wanderley

InstruçõesOPERAÇÕES LÓGICAS

IORLW k Flags afetados: Z Tempo exec.: 1 ciclo

OR lógico bit a bit do conteúdo da constante representada pelo operando k com o conteúdo do registrador w, sendo o resultado armazenado no registrador w (w = w OR k).

Z=1 se o valor armazenado em w for nulo e Z=0 caso contrário;

Page 22: Sistemas Embarcados Microcontroladores PIC Prof. Wanderley

InstruçõesOPERAÇÕES LÓGICAS

IORWF f,d Flags afetados: Z Tempo exec.: 1 ciclo

OR lógico do conteúdo armazenado no registrador w com o conteúdo armazenado no registrador especificado pelo operando f, sendo o resultado armazenado no destino indicado por d.d=W ou d=0 faz com que o destino seja o registrador w (w = f OR w).d=F ou d=1 faz com que o destino seja o próprio registrador especificado pelo operando f (f = f OR w).

Z=1 se o valor armazenado em w for nulo e Z=0 caso contrário.

Page 23: Sistemas Embarcados Microcontroladores PIC Prof. Wanderley

InstruçõesOPERAÇÕES LÓGICAS

XORLW k Flags afetados: Z Tempo exec.: 1 ciclo

XOR lógico bit a bit do conteúdo da constante representada pelo operando k com o conteúdo do registrador w, sendo o resultado armazenado no registrador w (w = w XOR k).

Z=1 se o valor armazenado em w for nulo e Z=0 caso contrário;

Page 24: Sistemas Embarcados Microcontroladores PIC Prof. Wanderley

InstruçõesOPERAÇÕES LÓGICAS

XORWF f,d Flags afetados: Z Tempo exec.: 1 ciclo

OR lógico do conteúdo armazenado no registrador w com o conteúdo armazenado no registrador especificado pelo operando f, sendo o resultado armazenado no destino indicado por d.d=W ou d=0 faz com que o destino seja o registrador w (w = f XOR w).d=F ou d=1 faz com que o destino seja o próprio registrador especificado pelo operando f (f = f XOR w).

Z=1 se o valor armazenado em w for nulo e Z=0 caso contrário.

Page 25: Sistemas Embarcados Microcontroladores PIC Prof. Wanderley

InstruçõesOPERAÇÕES LÓGICAS

COMF f,d Flags afetados: Z Tempo exec.: 1 ciclo

Complementa (inverte) o nível lógico dos bits do registrador especificado pelo operando f, sendo o resultado armazenado no destino indicado por d.d=W ou d=0 faz com que o destino seja o registrador w (w = f’).d=F ou d=1 faz com que o destino seja o próprio registrador especificado pelo operando f (f = f’).

Z=1 se o valor armazenado em w for nulo e Z=0 caso contrário.

Page 26: Sistemas Embarcados Microcontroladores PIC Prof. Wanderley

InstruçõesOPERAÇÕES LÓGICAS

RLF f,d Flags afetados: C Tempo exec.: 1 ciclo

O conteúdo do registrador especificado pelo operando f é deslocado 1 bit à esquerda;

O valor do flag C é armazenado no bit 0 do registrador f;

O bit excedente do registrador f é armazenado no flag C;

O resultado é armazenado no destino indicado pelo operando d.

C Registrador f

Page 27: Sistemas Embarcados Microcontroladores PIC Prof. Wanderley

InstruçõesOPERAÇÕES LÓGICAS

RRF f,d Flags afetados: C Tempo exec.: 1 ciclo

O conteúdo do registrador especificado pelo operando f é deslocado 1 bit à direita;

O valor do flag C é armazenado no bit 7 do registrador f;

O bit excedente do registrador f é armazenado no flag C;

O resultado é armazenado no destino indicado pelo operando d.

C Registrador f

Page 28: Sistemas Embarcados Microcontroladores PIC Prof. Wanderley

InstruçõesOPERAÇÕES DE DESVIO

O objetivo é desviar o fluxo do programa para outro local.

Podem ser classificados como:

desvios com retorno;

desvios sem retorno.

Desvios com retorno são também conhecidos como chamada de sub-rotina.

O fluxo do programa é desviado, retornando ao ponto de desvio.

As chamadas de sub-rotina fazem uso da pilha.

Page 29: Sistemas Embarcados Microcontroladores PIC Prof. Wanderley

InstruçõesOPERAÇÕES DE DESVIO

Nos desvios sem retorno o fluxo do programa é desviado para outro ponto, seguindo então a partir de lá.

Os desvios em retornos podem ser classificados ainda como:

condicionais;

incondicionais.

Os desvios condicionais ocorrem se uma determinada condição for verdadeira.

Os desvios incondicionais ocorrem independente de qualquer condição.

Page 30: Sistemas Embarcados Microcontroladores PIC Prof. Wanderley

InstruçõesOPERAÇÕES DE DESVIO

GOTO k Flags afetados: nenhum Tempo exec.: 2 ciclos

Desvia o programa para o ponto especificado por k.

Trata-se de um desvio incondicional (sem retorno).

É importante lembrar que nos dispositivos com mais de 2k de memória se faz necessário modificar o conteúdo de PCLATH de acordo com o endereço especificado por k, de modo a acessar a página de memória adequada.

Page 31: Sistemas Embarcados Microcontroladores PIC Prof. Wanderley

InstruçõesOPERAÇÕES DE DESVIO

CALL k Flags afetados: nenhum Tempo exec.: 2 ciclos

Chamada de sub-rotina especificada por k.

A CPU se encarrega de guarda o valor atual de PC adicionado de 1 na pilha, desviando a seguir para a sub-rotina.

É importante lembrar que nos dispositivos com mais de 2k de memória se faz necessário modificar o conteúdo de PCLATH de acordo com o endereço especificado por k, de modo a acessar a página de memória adequada.

Page 32: Sistemas Embarcados Microcontroladores PIC Prof. Wanderley

InstruçõesOPERAÇÕES DE DESVIO

RETURN Flags afetados: nenhum Tempo exec.: 2 ciclos

Ao término da sub-rotina, faz-se necessário uma instrução RETURN, responsável por restaurar o valor de PC armazenado na pilha.

RETLW k Flags afetados: nenhum Tempo exec.: 2 ciclos

Ao término da sub-rotina, a instrução RETLW restaurará o valor de PC armazenado na pilha e, além disso, copiará o valor do operando k para o registrador w.

Page 33: Sistemas Embarcados Microcontroladores PIC Prof. Wanderley

InstruçõesOPERAÇÕES DE DESVIO

RETFIE Flags afetados: nenhum Tempo exec.: 2 ciclos

Retorna de uma interrupção.

Liga o bit GIE (GIE=1) do registrador INTCON.

Page 34: Sistemas Embarcados Microcontroladores PIC Prof. Wanderley

InstruçõesOPERAÇÕES DE DESVIO

BTFSC f,b Flags afetados: nenhum Tempo exec.: 1 ou 2 ciclos

Instrução de desvio condicional.

Testa o bit especificado pelo operando b do registrador especificado pelo operando f, saltando a próxima instrução caso tal bit tenha nível lógico 0.

A instrução levará 1 ciclo de máquina caso não ocorra desvio (o bit testado tem nível lógico 1) e 2 ciclos de máquina caso contrário.

Page 35: Sistemas Embarcados Microcontroladores PIC Prof. Wanderley

InstruçõesOPERAÇÕES DE DESVIO

BTFSS f,b Flags afetados: nenhum Tempo exec.: 1 ou 2 ciclos

Instrução de desvio condicional.

Testa o bit especificado pelo operando b do registrador especificado pelo operando f, saltando a próxima instrução caso tal bit tenha nível lógico 1.

A instrução levará 1 ciclo de máquina caso não ocorra desvio (o bit testado tem nível lógico 0) e 2 ciclos de máquina caso contrário.

Page 36: Sistemas Embarcados Microcontroladores PIC Prof. Wanderley

InstruçõesOPERAÇÕES DE DESVIO

DECFSZ f,d Flags afetados: nenhum Tempo exec.: 1 ou 2 ciclos

Instrução de desvio condicional.

Decrementa o conteúdo do registrador especificado pelo operando f (subtrai de 1), saltando a próxima instrução caso o resultado após o decremento seja nulo.

O resultado é armazenado no destino indicado pelo operando d.

A instrução levará 1 ciclo de máquina caso não ocorra desvio (o resultado do decremento é não nulo) e 2 ciclos de máquina caso contrário.

Page 37: Sistemas Embarcados Microcontroladores PIC Prof. Wanderley

InstruçõesOPERAÇÕES DE DESVIO

INCFSZ f,d Flags afetados: nenhum Tempo exec.: 1 ou 2 ciclos

Instrução de desvio condicional.

Incrementa o conteúdo do registrador especificado pelo operando f (adiciona 1), saltando a próxima instrução caso o resultado após o decremento seja nulo.

O resultado é armazenado no destino indicado pelo operando d.

A instrução levará 1 ciclo de máquina caso não ocorra desvio (o resultado do incremento é não nulo) e 2 ciclos de máquina caso contrário.

Page 38: Sistemas Embarcados Microcontroladores PIC Prof. Wanderley

InstruçõesOPERAÇÕES DE CONTROLE

NOP

Não executa nenhuma operação.

Para funções internas e controle de CPU.

Flags afetados: nenhum Tempo exec.: 1 ciclo

Page 39: Sistemas Embarcados Microcontroladores PIC Prof. Wanderley

InstruçõesOPERAÇÕES DE CONTROLE

CLRWDT

Limpa o contador do watchdog.

A instrução é utilizada periodicamente para impedir que a CPU venha a resetar.

Os flags são setados (colocados em nível lógico 1).

Flags afetados: Tempo exec.: 1 cicloPDTO e

PDTO e

Page 40: Sistemas Embarcados Microcontroladores PIC Prof. Wanderley

InstruçõesOPERAÇÕES DE CONTROLE

SLEEP

Aciona o modo de baixa potência (power-down mode) da CPU.

O processamento é parado.

O conteúdo da memória é preservado.

O flag é setado (colocado em nível lógico 1).

O flag é zerado (colocado em nível lógico 0).

Flags afetados: Tempo exec.: 1 cicloPDTO e

TO

PD