Académique Documents
Professionnel Documents
Culture Documents
Tpicos
n
O PIC16F628A
Sintaxe
Assembly do PIC16F628A
Diretivas
Instrues
Sintaxe do Assembly
PIC16F628A
Diretivas
Diretivas
Diretivas so comandos que aparecem no cdigo-fonte, mas no fazem
parte do conjunto de instrues do PIC. Esses comandos so
reconhecidos pelo MONTADOR, no sendo, portanto, convertidos em
cdigo objeto.
No PIC as diretivas so divididas em grupos (ou tipos), dependendo da
sua aplicao:
* Diretivas de 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. Sero discutidas apenas as mais utilizadas.
Diretivas
Diretivas
Exemplo
ORG
ORG
0x0000
GOTO
INICIO
0x0004
... (rotinas de tratamento das interrupes)
INICIO:
...
Diretivas
Diretivas
Instrues
Instrues
Instrues
Instrues
Instrues
Instrues
10
Instrues
Instrues
16
11
Instrues
Instrues
13
12
Exemplos da Sintaxe
ADDWF
Descrio: Soma o contedo 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]
Operao: (W) + (f) ==> (dest)
Flags afetadas: C, DC, Z
Exemplo:
ADDWF REG,0
; Antes: W = 0x17, REG = 0xC2
; Depois: W = 0xD9, REG = 0xC2
DECFSZ
Descrio: Decrementa o contedo do registrador f. Se d 0, o resultado
armazenado em W. Se d 1 armazenado em f. Se o resultado 0 salta
uma instruo e a instruo executada em 2 ciclos de mquina.
Sintaxe:
DECFSZ f,d
Operandos: d - [0,1], f [0, 127]
Operao: (f) - 1 ==> d; Salta uma instruo Se Resultado = 0
Flags afetadas: nenhum
Exemplo:
DECFSZ REG,0
GOTO NO_ES_0
SI_ES_0
; Instruo
NO_ES_0
; Salta instruo anterior
13
CLRF
Descrio: O registrador f carregado com 0x00. A flag Z ativada.
Sintaxe:
CLRF f
Operandos: f [0, 127]
Operao: 0x00 ==> (f), 1 ==> Z
Flags afetadas: Z
Exemplo:
CLRF REG
; Antes: REG = 0x5A
; Depois: REG = 0x00, Z = 1
MOVWF
Descrio: O contedo do registrador W passa para o registrador f.
Sintaxe:
MOVWF f
Operandos: f [0, 127]
Operao: W ==> (f)
Flags afetadas: nenhum
Exemplo:
MOVWF REG
; Antes: REG = 0xFF, W = 0x4F
; Depois: REG = 0x4F, W = 0x4F
RRF
Descrio: O contedo 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]
Operao: Rotao direita
Flags afetadas: C
Exemplo:
RRF REG,0
; Antes: REG = 1110 0110,
; Depois: REG = 1110 0110,
C = 1
W = 1111 0011, C = 0
ADDLW
Descrio: Soma o contedo do registrador W e do literal k, guardando o
resultado em W.
Sintaxe:
ADDLW k
Operandos: k [0, 255]
Operao: (W) + (k)==> (W)
Flags afetadas: C, DC, Z
Exemplo:
ADDLW 0xC2
; Antes: W = 0x17
; Depois: W = 0xD9
14
BCF
Descrio: Apaga o bit b do registrador f
Sintaxe:
BCF f,b
Operandos: f [0, 127], b [0, 7]
Operao:
0 ==> (f<b>)
Flags afetadas: nenhum
Exemplo:
BCF REG,7
; Antes: REG = 0xC7
; Depois: REG = 0x47
BTFSS
Descrio: Se o bit b do registrador f 1, salta uma instruo e continua
com a execuo.
Sintaxe:
BTFSS f,b
Operandos: f [0, 127], b [0, 7]
Operao: Salto Se (f<b>) = 1
Flags afetadas: nenhum
Exemplo:
BTFSS REG,6
GOTO NO_ES_0
SI_ES_0
NO_ES_0
; instruo
; instruo
GOTO
Descrio: Trata-se de um salto incondicional. A parte baixa de
carregada em PCL, e a alta em PCLATCH. Ocupa 2 ciclos de mquina.
Sintaxe:
GOTO k
Operandos: k [0, 2047]
Operao:
k ==> PC <8:0>
Flags afetadas: nenhum
Exemplo:
RETFIE
Descrio: o PC carregado com o contedo de cima da pilha (TOS): endereo
de regresso. Consome 2 ciclos. As interrupes voltam a ser habilitadas.
Sintaxe:
RETFIE
Operandos: nenhum
Operao: 1 ==> GIE; TOS==>PC
Flags afetadas:
nenhum
Exemplo:
RETFIE
; Depois: PC = direco de regresso, GIE = 1
A sintaxe de
todas as
instrues
est
disponvel
no SIGAA
15
Bibliografia Bsica
n
Datasheet do PIC16F628A/648A
Material da Disciplina
Plataforma SIGAA/UFC
16