View
272
Download
1
Category
Preview:
DESCRIPTION
asa
Citation preview
Microcontroladores PICConjunto de Instruções de 14 bits
André Luís Marques Marcato
andre.marcato@ufjf.edu.br
Leandro Mattos Braga
cebolinhajf@globo.com
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:
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:
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
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
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
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
10
Manipulação de RegistradoresINCF f,d(2)
Exemplos W = 05h; FSR = 09h
W = 05h; TMR0 = 06h
W = 05; INDF = FFh
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:
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
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
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
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
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
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
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
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
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
22
Operações LógicasOutras Instruções
IORLW kIORWF f,dXORLW k
XORWF f,d
Flags Afetados: Nenhum
Tempo de execução: 1 ciclo
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
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
25
Operações LógicasRLF f,d(2)
Exemplos TRISB=42h, Flag C = 1, W = 22h
TRISB=8Fh, Flag C = 0, W = 22h
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
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:
...
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
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
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
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
33
Operações de DesvioBTFSC f,b(2)
Exemplosa) Considere: STATUS=18h
BTFSC STATUS,2CLRWADDLW 0x02
b) Considere: INTCON=01hBTFSC INTCON, 0CLRWADDLW 0x02
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
35
Operações de DesvioBTFSS f,b(2)
Exemplosa) Considere: STATUS=18h
BTFSC STATUS,2CLRWADDLW 0x02
b) Considere: PORTA=05hBTFSC PORTA, 7GOTO PONTOAADDLW 0x10
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
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
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
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
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
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
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
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
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
Recommended