Upload
alexcya-lopes
View
214
Download
0
Embed Size (px)
Citation preview
8/19/2019 02 Microcontroladores Assembly
1/16
1
Microprocessadores
Prof. Arthur Braga
Tópicos
n O PIC16F628A
¨Sintaxe Assembly do PIC16F628A
n Diretivas
n Instruções
8/19/2019 02 Microcontroladores Assembly
2/16
8/19/2019 02 Microcontroladores Assembly
3/16
8/19/2019 02 Microcontroladores Assembly
4/16
8/19/2019 02 Microcontroladores Assembly
5/16
5
DiretivasDiretivas são comandos que aparecem no código-fonte, mas não fazem
parte do conjunto de instruções do PIC. Esses comandos são
reconhecidos pelo MONTADOR, não sendo, portanto, convertidos emcódigo objeto.
No PIC as diretivas são divididas em grupos (ou tipos), dependendo da
sua aplicação:
* Diretivasde Controle;
* Diretivas Condicionais;
* Diretivas de Dados;
* Diretivas de Listagem;
* Diretivas de Macro;
* Diretivas de Objetos de Arquivos
Foge ao escopo da disciplina o estudo de todas as diretivas do
PIC16F628A. Serão discutidas apenas as mais utilizadas.
Diretivas
8/19/2019 02 Microcontroladores Assembly
6/16
6
Diretivas
ORG 0x0000
GOTO INICIO
ORG 0x0004
... (rotinas de tratamento das interrupções)
INICIO:
...
Exemplo
Diretivas
8/19/2019 02 Microcontroladores Assembly
7/16
7
Diretivas
Instruções
8/19/2019 02 Microcontroladores Assembly
8/16
8
Instruções
Instruções
Formato das palavras de 14 bits que codificam estas instruções ?
8/19/2019 02 Microcontroladores Assembly
9/16
9
Instruções – Formato Geral
Instruções
8/19/2019 02 Microcontroladores Assembly
10/16
10
Instruções
Instruções
8/19/2019 02 Microcontroladores Assembly
11/16
8/19/2019 02 Microcontroladores Assembly
12/16
12
Instruções
6
Instruções
13
8/19/2019 02 Microcontroladores Assembly
13/16
13
Exemplos da Sintaxe
ADDWFDescrição: Soma o conteúdo do registo W com o registrador f. Se d é 0, o
resultado armazena-se em W, Se d é 1 armazena-se em f.
Sintaxe: ADDWF f,d
Operandos: d - [0,1], f – [0, 127]
Operação: (W) + (f) ==> (dest)
Flags afetadas: C, DC, Z
Exemplo: ADDWF REG,0
; Antes: W = 0x17, REG = 0xC2
; Depois: W = 0xD9, REG = 0xC2
DECFSZDescrição: Decrementa o conteúdo do registrador f. Se d é 0, o resultado é
armazenado em W. Se d é 1 é armazenado em f. Se o resultado é 0 saltauma instrução e a instrução é executada em 2 ciclos de máquina.
Sintaxe: DECFSZ f,d
Operandos: d - [0,1], f – [0, 127]
Operação: (f) - 1 ==> d; Salta uma instrução Se Resultado = 0
Flags afetadas: nenhum
Exemplo: DECFSZ REG,0
GOTO NO_ES_0
SI_ES_0 ; Instrução
NO_ES_0 ; Salta instrução anterior
8/19/2019 02 Microcontroladores Assembly
14/16
14
CLRFDescrição: O registrador f é carregado com 0x00. A flag Z é ativada.
Sintaxe: CLRF f
Operandos: f – [0, 127]
Operação: 0x00 ==> (f), 1 ==> Z
Flags afetadas: Z
Exemplo: CLRF REG
; Antes: REG = 0x5A
; Depois: REG = 0x00, Z = 1
MOVWFDescrição: O conteúdo do registrador W passa para o registrador f.
Sintaxe: MOVWF f
Operandos: f – [0, 127]
Operação: W ==> (f)
Flags afetadas: nenhum
Exemplo: MOVWF REG
; Antes: REG = 0xFF, W = 0x4F
; Depois: REG = 0x4F, W = 0x4F
RRFDescrição: O conteúdo de f é rotacionado à direita. O bit de menor peso de f
passa para o carry (C), e o carry é colocado no bit de maior peso de f.Se d é 0, o resultado é armazenado em W. Se d é 1 é armazenado em f.
Sintaxe: RRF f,d
Operandos: d - [0,1], f – [0, 127]
Operação: Rotação à direita
Flags afetadas: C
Exemplo: RRF REG,0
; Antes: REG = 1110 0110, C = 1
; Depois: REG = 1110 0110, W = 1111 0011, C = 0
ADDLWDescrição: Soma o conteúdo do registrador W e do literal k, guardando o
resultado em W.
Sintaxe: ADDLW k
Operandos: k – [0, 255]
Operação: (W) + (k)==> (W)
Flags afetadas: C, DC, Z
Exemplo: ADDLW 0xC2
; Antes: W = 0x17
; Depois: W = 0xD9
8/19/2019 02 Microcontroladores Assembly
15/16
15
BCFDescrição: Apaga o bit b do registrador f
Sintaxe: BCF f,b
Operandos: f – [0, 127], b – [0, 7]
Operação: 0 ==> (f)
Flags afetadas: nenhum
Exemplo: BCF REG,7
; Antes: REG = 0xC7
; Depois: REG = 0x47
BTFSSDescrição: Se o bit b do registrador f é 1, salta uma instrução e continua
com a execução.
Sintaxe: BTFSS f,b
Operandos: f – [0, 127], b – [0, 7]
Operação: Salto Se (f) = 1
Flags afetadas: nenhum
Exemplo: BTFSS REG,6
GOTO NO_ES_0
SI_ES_0 ; instrução
NO_ES_0 ; instrução
GOTODescrição: Trata-se de um salto incondicional. A parte baixa de k é
carregada em PCL, e a alta em PCLATCH. Ocupa 2 ciclos de máquina.
Sintaxe: GOTO k
Operandos: k – [0, 2047]
Operação: k ==> PC
Flags afetadas: nenhum
Exemplo: ORIGEM GOTO DESTINO
; Antes: PC = ORIGEM
; Depois: PC = DESTINO
RETFIEDescrição: o PC é carregado com o conteúdo de cima da pilha (TOS): endereço
de regresso. Consome 2 ciclos. As interrupções voltam a ser habilitadas.
Sintaxe: RETFIE
Operandos: nenhum
Operação: 1 ==> GIE; TOS==>PC
Flags afetadas: nenhum
Exemplo: RETFIE
; Depois: PC = direcção de regresso, GIE = 1
A sintaxe de
todas as
instruçõesestá
disponível
no SIGAA
8/19/2019 02 Microcontroladores Assembly
16/16
16
Bibliografia Básica
n Zanco, Wagner da Silva. Microcontroladores PIC16F628A/648A – uma abordagem prática e objetiva,Editora Érica, 2005.
n Datasheet do PIC16F628A/648A
Material da DisciplinaPlataforma SIGAA/UFC