Top Banner
Microcontroladores PIC Conjunto de Instruções de 14 bits André Luís Marques Marcato andre . marcato @ufjf. edu . br Leandro Mattos Braga cebolinhajf @globo.com
46

PIC - AULA2

Dec 04, 2015

Download

Documents

fernandoabel01

asa
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: PIC - AULA2

Microcontroladores PICConjunto de Instruções de 14 bits

André Luís Marques Marcato

[email protected]

Leandro Mattos Braga

[email protected]

Page 2: PIC - AULA2

2

Instruções

Manipulação de Registradores

Aritmética

Operações Lógicas

Desvio

Controle

Page 3: PIC - AULA2

3

Manipulação de RegistradoresMOVLW k

Copia o valor da constante especificada pelo operando “k” para o registrador W

Flags afetados: nenhum

Tempo de execução: 1 ciclo

Exemplo:

Page 4: PIC - AULA2

4

Manipulação de RegistradoresMOVWF k

Copia o conteúdo do registrador W para o registrador f (f = W)

O conteúdo do registrador W não será alterado; somente o registrador f

Flags afetados: Nenhum

Tempo de execução 1 ciclo

Exemplos:

Page 5: PIC - AULA2

5

Manipulação de RegistradoresMOVF f, d(1)

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

Se d = 0, o destino será W. Se d = 1, o destino será o operando f

Flags afetados: Z

Tempo de execução: 1 ciclo

Page 6: PIC - AULA2

6

Manipulação de RegistradoresMOVF f, d(2)

Exemplos TRISA = 20h

TRISA = 20h

TRISB = 00h

Page 7: PIC - AULA2

7

Manipulação de RegistradoresCLRF f

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

Flags Afetados: Z. ( Z = 1)

Tempo de Execução: 1 ciclo

Exemplos

Page 8: PIC - AULA2

8

Manipulação de RegistradoresCLRW

Apaga o conteúdo do registrador W (armazena 0 no mesmo). (W = 0)

Flags afetados: Z

Tempo de execução: 1 ciclo

Page 9: PIC - AULA2

9

Manipulação de RegistradoresINCF f,d(1)

Incrementa o conteúdo do registrador f em 1. O resultado (f+1) é armazenado no destino indicado pelo operando d

d = W (se d = 0); d = f (se d = 1)

Flags Afetados: Z

Tempo de Execução: 1 ciclo

Page 10: PIC - AULA2

10

Manipulação de RegistradoresINCF f,d(2)

Exemplos W = 05h; FSR = 09h

W = 05h; TMR0 = 06h

W = 05; INDF = FFh

Page 11: PIC - AULA2

11

Manipulação de RegistradoresDECF f,d

Decrementa o conteúdo do registrador f em 1. O resultado (f-1) é armazenado no destino indicado pelo operando d

d = W (se d = 0); d = f (se d = 1)

Flags Afetados: Z

Tempo de Execução: 1 ciclo

Exemplo:

Page 12: PIC - AULA2

12

Manipulação de RegistradoresBCF f,b

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

Flags Afetados: Nenhum

Tempo de Execução: 1 ciclo

Exemplos: a) STATUS=19h b) TRISB=FFh

Page 13: PIC - AULA2

13

Manipulação de RegistradoresBSF f,b

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

Flags Afetados: Nenhum

Tempo de execução: 1 ciclo

Page 14: PIC - AULA2

14

Manipulação de RegistradoresSWAPF f,d

Troca os nibbles do registrador representado pelo operando f, o resultado é armazenado no destino indicado pelo operando d

D = W (d=0); d = F (d=1)

Flags afetados: nenhum

Tempo de Execução: 1 ciclo

Exemplos: a) TRISB=FFh b) PORTA=78h

Page 15: PIC - AULA2

15

Instruções AritméticasADDLW k(1)

Adição aritmética do valor apresentado pela constante “k” ao conteúdo do registrador W.

O resultado (W+k) é armazenado no registrador W

Flags Afetados: Z, D e C

Tempo de execução: 1 ciclo

Page 16: PIC - AULA2

16

Instruções AritméticasADDLW k(2)

Exemplos: W = 20h

W = F1h

W = FFh

Page 17: PIC - AULA2

17

Instruções AritméticasADDWF f,d

Adição aritmética do conteúdo do registrador W ao conteúdo do registrador especificado por f

O resultado (W+f) é armazenado no destino indicado por d. (d=W) se (d=0), ou (d=F) se (d=1)

Flags afetados: Z, DC e C

Tempo de execução: 1 ciclo

Exemplo, W = 20h e INTCON = 07h

Page 18: PIC - AULA2

18

Instruções AritméticasSUBLW k

Subtrai o conteúdo do registrador W do valor do operando ‘k’. O resultado (k-W) é armazenado é armazenado no registrador W.

Flags Afetados: C, DC, Z

Tempo de Execução: 1 ciclo

Exemplo: a) W=01h b) W = 02h

Page 19: PIC - AULA2

19

Instruções AritméticasSUBWF f,d

Subtrai o conteúdo do registrador W do conteúdo do registrador especificado pelo operando f. O resultado (f-W) é armazenado no destino especificado por d

Flags Afetados: Z, DC, C

Tempo de execução: 1 ciclo

Exemplo: a) W=20h e INTCON=07h b) W=09h e PORTA = 10h

Page 20: PIC - AULA2

20

Operações LógicasANDLW k

AND lógico bit a bit do conteúdo da constante representada pelo operando ‘k’ com o conteúdo do registrado W.

O resultado W AND k é armazenado no registrador W

Afeta o flag Z. Z = 1, se o valor armazenado no registrador.

Exemplo: W=95h

Page 21: PIC - AULA2

21

Operações LógicasANDWF f, d

AND lógico do conteúdo do registrador W com o conteúdo do registrador especificado por f.

O resultado (W and f) é armazenado no destino indicado por d

d = W (ou d = ‘0’) ; d = F ( ou d = ‘1’)

Esta instrução afeta o flag Z (Z=1, se o armazenamento no destino for zero)

Exemplo: W = 77h; PORTA = FFh

Page 22: PIC - AULA2

22

Operações LógicasOutras Instruções

IORLW kIORWF f,dXORLW k

XORWF f,d

Flags Afetados: Nenhum

Tempo de execução: 1 ciclo

Page 23: PIC - AULA2

23

Operações LógicasCOMF f,d

Complementa (inverte) o nível lógico dos bits do registrador especificado por f. O resultado é armazenado no destino d

d=W se d=0, ou d=f se d=1

Flags afetados: Z

Tempo de execução: 1 ciclo

Exemplo: W=1h, PORTA=82h

Page 24: PIC - AULA2

24

Operações LógicasRLF f,d(1)

O conteúdo do registrado especificado por f é deslocado um bit à esquerda, o valor do flag C é armazenado no bit zero do registrador e o bit excedente dele é armazenado no flag C. O resultado final é armazenado no registrador de destino indicado por d.

(d = W) se (d = 0); (d = F) se (d = 1)

Flags afetados: C

Tempo de Execução: 1 ciclo

Page 25: PIC - AULA2

25

Operações LógicasRLF f,d(2)

Exemplos TRISB=42h, Flag C = 1, W = 22h

TRISB=8Fh, Flag C = 0, W = 22h

Page 26: PIC - AULA2

26

Operações LógicasRRF f,d

O conteúdo do registrador especificado por f é deslocado um bit à direita, o valor da flag C é armazenado no bit 7 do registrador e o bit excedente dele é armazenado no flag C. O resultado final é armazenado no registrador destino indicado por d.

(d = W) se (d = 0); (d = F) se (d = 1)

Flags afetados: C

Tempo de Execução: 1 ciclo

Page 27: PIC - AULA2

27

Operações de DesvioGOTO k

Desvia o programa para o ponto especificado por k.

Desvio incondicional sem retorno

Flags afetados: Nenhum

Tempo de Execução: 2 ciclos

Exemplo: Considere:

...

GOTO PONTO2

...

...

PONTO2:

...

Page 28: PIC - AULA2

28

Operações de DesvioCALL k(1)

Chamada de sub-rotina especificada por k.A CPU irá guardar o conteúdo atual do PC (contador de programa)+1 na pilha e em seguida desviará para a própria sub-rotinaAo término da sub-rotina uma instrução RETURN (ou similar) irá retirar o (PC+1) da pilha e retornará ao ponto seguinte do qual foi chamada sub-rotinaNenhum flag é afetadoTempo de execução: 2 ciclos

Page 29: PIC - AULA2

29

Operações de DesvioCALL k(2)

Exemplo:

Considere:

...

CALL PONTO2

...

...

PONTO2:

...

...

RETURN

Page 30: PIC - AULA2

30

Operações de DesvioRETURN e RETLW

Retorno de sub-rotina

Após a execução da sub-rotina, estas instruções fazem o programa voltar para o ponto de onde a mesma foi chamada

No caso da instrução RETLW, adicionalmente, o valor de k será copiado para o registrador W (W=k).

Flags afetados: nenhum

Tempo de execução: 2 ciclos

Page 31: PIC - AULA2

31

Operações de DesvioRETFIE

Retorno de interrupção. Esta instrução retorna ao ponto seguinte do qual ocorreu uma interrupção

Esta instrução liga o bit GIE do INTCON

Flags afetados: Nenhum

Tempo de execução: 2 ciclos

Page 32: PIC - AULA2

32

Operações de DesvioBTFSC f,b(1)

Instrução de desvio condicionalTesta o bit especificado por b do registrador especificado por f e pula (não executa) a próxima instrução se o bit estiver em nível ‘0’.Tempo de execução: 1 ou 2 ciclos 1 ciclo se não pular (condição não é verdadeira) 2 ciclos se pular (condição verdadeira)

Flags afetados: nenhum

Page 33: PIC - AULA2

33

Operações de DesvioBTFSC f,b(2)

Exemplosa) Considere: STATUS=18h

BTFSC STATUS,2CLRWADDLW 0x02

b) Considere: INTCON=01hBTFSC INTCON, 0CLRWADDLW 0x02

Page 34: PIC - AULA2

34

Operações de DesvioBTFSS f,b(1)

Instrução de desvio condicional

Testa o bit especificado pelo operando b do registrador especificado por f e pula (não executa) a próxima instrução se o bit estiver em nível ‘1’.

Tempo de execução: 1 ou 2 ciclos de máquina

Não afeta nenhuma flag

Page 35: PIC - AULA2

35

Operações de DesvioBTFSS f,b(2)

Exemplosa) Considere: STATUS=18h

BTFSC STATUS,2CLRWADDLW 0x02

b) Considere: PORTA=05hBTFSC PORTA, 7GOTO PONTOAADDLW 0x10

Page 36: PIC - AULA2

36

Operações de DesvioDECFSZ f,d(1)

Instrução de desvio condicional, decrementa o conteúdo do registrador especificado por f (subtrai 1). Pula a próxima instrução se o resultado (após o decremento) for igual a zero. O resultado (f-1) é armazenado no destino indicado por d.

d=W se (d=0) ou d=f se (d=1)

Flags afetados nenhum

Tempo de execução: 1 ou 2 ciclos

Page 37: PIC - AULA2

37

Operações de DesvioDECFSZ f,d(2)

Considere que o conteúdo do registrador FSR seja 10hDECFSZ FSR,F

MOVLW 0x05

ADDLW 0x01

Considere que o conteúdo do registrado FSR seja 01hDECFSZ FSR,F

MOVLW 0x05

ADDLW 0x01

Page 38: PIC - AULA2

38

Operações de DesvioINCFSZ f,d(1)

Instrução de desvio condicional, incrementa o conteúdo do registrador especificado por f (adiciona 1 ao valor dele). Pula a próxima instrução se o resultado (após o incremento) for igual a zero. O resultado (f+1) é armazenado em d.

d=W se (d=0) ou d=f se (d=1)

Flags afetados nenhum

Tempo de execução: 1 ou 2 ciclos

Page 39: PIC - AULA2

39

Operações de DesvioINCFSZ f,d(2)

Considere que o conteúdo do registrador FSR seja 00hINCFSZ FSR,W

MOVLW 0x05

ADDLW 0x01

Considere que o conteúdo do registrado FSR seja FFhINCFSZ FSR,W

MOVLW 0x05

ADDLW 0x01

Page 40: PIC - AULA2

40

Instruções de ControleNOP

Sem operação

Esta instrução não executa nenhuma operação. Não altera nenhum flag. O processador gasta um ciclo de máquina sem executar nenhuma operação

Flags afetados: nenhum

Tempo de execução: 1 ciclo

Page 41: PIC - AULA2

41

Instruções de ControleCLRWDT

Limpa (zera) o contador do watchdog. A instrução é utilizada periodicamente, dentro do programa, para resetar o watchdog, impedindo que o mesmo venha a ressetar a CPU

Flags afetados: TO e PD

Tempo de execução: 1 ciclo

Page 42: PIC - AULA2

42

Instruções de ControleSLEEP

Aciona o modo de baixa potência da CPU. O processamento é parado e o conteúdo da memória é preservado.

Flags afetados: TO=1 e PD=0

Page 43: PIC - AULA2

43

Programa em Basic

TRISB.0 = 0TRISB.0 = 0TRISB.1 = 0TRISB.1 = 0

led1 VAR PORTB.0led1 VAR PORTB.0led2 VAR PORTB.1led2 VAR PORTB.1

loop:loop:Low led2Low led2High led1High led1Low led1Low led1High led2High led2

GoTo loopGoTo loop

Page 44: PIC - AULA2

44

Programa em Assembler

GOTO Label_0001GOTO Label_0001

Label_0001 BSF STATUS , RP0Label_0001 BSF STATUS , RP0

BCF TRISB , 00BCF TRISB , 00

BCF TRISB , 01BCF TRISB , 01

BCF STATUS , RP0BCF STATUS , RP0

Label_0002 BCF PORTB , 01Label_0002 BCF PORTB , 01

BSF STATUS , RP0BSF STATUS , RP0

BCF TRISB , 01BCF TRISB , 01

BCF STATUS , RP0BCF STATUS , RP0

BSF PORTB , 00BSF PORTB , 00

BSF STATUS , RP0BSF STATUS , RP0

BCF TRISB , 00BCF TRISB , 00

BCF STATUS , RP0BCF STATUS , RP0

BCF PORTB , 00BCF PORTB , 00

BSF STATUS , RP0BSF STATUS , RP0

BCF TRISB , 00BCF TRISB , 00

BCF STATUS , RP0BCF STATUS , RP0

BSF PORTB , 01BSF PORTB , 01

BSF STATUS , RP0BSF STATUS , RP0

BCF TRISB , 01BCF TRISB , 01

BCF STATUS , RP0BCF STATUS , RP0

GOTO Label_0002GOTO Label_0002

Page 45: PIC - AULA2

45

Conjunto de Instruções(1)

Page 46: PIC - AULA2

46

Conjunto de Instruções(2)