16.1 OPERANDOS:
Los operandos pueden asignarse con las letras F, W, B, K, D. Cada letra tiene el significado siguiente:
F: designa alguna localidad de memoria (file register), de alguno de los 4 bancos de los llamados "registros especiales", o bien,
alguna de las 368 localidades de memoria RAM.
W. designa el acumulador del 16F88.
B. designa alguno de los 8 bits del registro especial o localidad de memoria elegido.
K. designa una constante ó una dirección.
D. designa el destino de la operación. Si D=0, el destino es el registro W. Si D=1, entonces el destino es el registro ó localidad
de memoria F.
Directivas del programa ensamblador:
Dentro del archivo del programa fuente, es decir del programa escrito en lenguaje ensamblador, se puede, con ayuda de
la directiva EQU, definir previamente algunos valores para la facilidad de su identificación. Algunas de las definiciones más
utilizadas son las siguientes:
W
EQU
F
EQU
STATUS
EQU
RP1
EQU
RP0
EQU
Estas declaraciones, junto con las del resto de los registros, así como los bits individuales de cada registro, se
almacenan en un solo archivo que se denomina 16F88.inc y que es parte de las librerías ya incluídas en el programa MPLAB, del cual
se habla más adelante. Entonces, es suficiente escribir, dentro del programa fuente en lenguaje ensamblador, la directiva: include
<p16F88.inc>
Una vez establecidas estas equivalencias, podemos poner algunos ejemplos con instrucciones. Observe que, en todas
ellas es posible usar las equivalencias o bien escribir directamente el valor numérico. Por ejemplo:
Etiqueta
Instrucción
EJEMPLO1
BCF
Resultado: Bit Clear F. Pon en cero el bit RP0 del registro STATUS.
EJEMPLO2
BCF
Resultado: mismo que en el ejemplo anterior, pero usando ahora las constantes directamente al escribir la instrucción. Observe
como el hecho de escribir directamente palabras como "STATUS" en lugar del número 3, facilitan mucho la comprensión.
EJEMPLO3
BTFSS
Resultado: Bit Test F, Skip if Set. Si el bit RP1 del registro designado es cero, ejecuta la siguiente instrucción, si el bit es 1,
entonces no ejecuta la siguiente instrucción, pero sí la que sigue a ésta.
EJEMPLO4
ADDLW
Resultado: Add literal to W. Suma el registro W con la constante 3AH. El resultado lo pone en W.
EJEMPLO5
DECFSZ
Resultado: Decrement F, Skip if Zero. Decrementa el valor de la localidad 20H. El resultado lo almacena en el registro W. Si el
resultado es 0, no ejecuta la siguiente instrucción, sino la inmediata después de ésta. Si el resultado es diferente de 0, entonces ejecuta
la siguiente instrucción.
EJEMPLO6
DEC
Resultado: Decrementa la localidad 2AH, el resultado lo pone en el registro W.
EJEMPLO7
ANDWF
Resultado: hace la operación lógica AND entre la localidad 2B y el registro W. El resultado lo pone en la localidad 2B.
EJEMPLO8
BTFSC
H'0000'
H'0001'
H'0003'
H'0006'
H'0005'
Operando
STATUS,RP0
3,5
STATUS,RP1
3AH
20H,W
2AH,W
2B,F
35H,3
EVOLUPIC Bootloader 16F88 Punto Flotante, S.A. 2011
21
PORTA
EQU
PORTB
EQU
TRISA
EQU
TRISB
EQU
PCLATH
EQU
Forma general:
BCF
BTFSS
ADDLW
DECFSZ
DEC
ANDWF
BTFSC
H'0005'
H'0006'
H'0085'
H'0086'
H'000A'
F,D
F,B
K
F,D
F,D
F,D
F,B