DESCRIPCIÓN:
Lo
que se hace en esta práctica es un sumador. El programa se hizo en
ensamblador con ayuda del software MPLABX para obtener el *.hex. Éste
le va a sumar 15 al dato que se encuentre en el PORTA y se mostrara
en el PORTB.
CIRCUITO:
Este
es el circuito básico que se usó. En lugar de una barra de LEDs, se
usaron LEDs individuales. El RESET o MCLR va conectado a voltaje. Los
pines 15 y 16 van conectados al cristal de cuarzo de 4 MHz, junto con
los capacitores 22 pF. Los pines de RA van conectados a un dipswitch,
al cual se conectan resistencias de 10 Kohms. Los pines RB se
conectaron a resistencias de 330 Ohms y de ahí a los LEDs
MATERIAL:
-Microcontrolador
PIC16F84A
-8
LEDs
-8
resistores de 330 ohms
-1
dipswitch de 8
-5
resistores de 10 Kohms
-Cristal
de cuarzo de 4 MHz
-2
capacitores de 22 pF
-Alambres
-Protoboard
-Fuente
y sus cables
CODIGO
DEL PROGRAMA:
;---------------------------------------------------------------------------
;Descripcion:
Lea un dato por el puerto A PORTA, sumele una constante igual 15.
;
Guardelo en una variable, muestrelo en el puerto B
PORTB.
;
;Funciona:
version 1.0 no
;---------------------------------------------------------------------------
;Configuracion
MPLABX
__CONFIG
_CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
LIST
P=16F84A
INCLUDE
<P16F84A.INC>
K_Const
EQU 0x0F ;definiendo una constante
V_Dato
EQU 0x0C ;definiendo una variable
;---------------------------------------------------------------------------
;Zona
de configuracion del PIC
ORG
0x00
Inicio
bsf STATUS,RP0 ;Accesando al banco 1
clrf
TRISB ;PORTB como salida
movlw
0xFF ;cargando la cte
movwf
TRISA ;puerto A como salida
bcf
STATUS,RP0 ;acceso al banco 0
;---------------------------------------------------------------------------
Main
movf PORTA,W ;leer el dato
addlw
K_Const ;suma el dato mas 15
movwf
V_Dato ;guarda el resultado
movwf
PORTB ;muestra el resultado
goto
Main ;fin del programa y $=salta a el mismo
END
;------------------------------------------------------------------------------------------
TEORÍA
SOBRE INSTRUCCIONES DE CARGA:
Las
instrucciones de transferencias de datos son típicas de todos los
procesadores su misión es transferir el contenido de un registro
fuente (f) a un registro destino (d) o bien cargar el destino con una
constante. En los microcontroladores PIC todos los datos residen en
posiciones de la memoria de datos en el registro de trabajo W.
En
la explicación de estas instrucciones se emplea muchas veces una
nomenclatura especial muy simple basada en paréntesis y flechas. Con
los paréntesis se destaca que se trata del “contenido” de las
posiciones de memoria y la flecha de dirección de la transferencia
de los datos.
Hay
5 instrucciones de carga propiamente dichas:
clrw:
(clear
W) El contenido del registro W se borra, es decir, se carga con
b’00000000’ y el flag z se activa a “1”. Esta instrucción
también se podría considerar como aritmética.
clrf
f: (clear
f) El contenido del registro ‘f’ se borra, se carga con
b’00000000’ y el flag z se activa con ‘1’. Esta accion
tambien se podria considerar como aritmetica.
movlw
k: (Move
Literal to W) El registro W se carga con el valor de los 8 bits de la
constante ‘k’. Ningun flag del estado del registro de estado es
afectado.
movf
f,d: (move
f) El contenido del registro ’f’ se carga en el registro destino
dependiendo del valor de ‘d’. Si ‘d’ = 0 el destino es el
registro W, si ‘d’ = 1 el destino es el propio registro ‘f’.
El flag z del registro STATUS queda afectado: z se activa a ‘1’
si el resultado de la operación es cero.
movwf
f: (Move
W to f) Carga el contenido del registro W al registro ‘f’. Ningun
flag del registro de estado es afectado.