Sunteți pe pagina 1din 4

Laboratorio 2

Transferencia de datos de las entradas a las salidas con PIC


I. OBJEETIVOS
Programar en lenguaje asembler para un circuito que tenga el puerto B como
salida conectando 8 leds y el puerto A como entradas. Realizar un programa
que transfiera todas las entradas en el puerto A hacia el puerto B.

II. OPERACIÓN
1. Proponer un circuito que tenga el puerto B como salida conectando 8 leds y
el puerto A como entradas, realizar un programa que transfiera todas las
entradas en el puerto A hacia el puerto B.

III. CODIGO
Las líneas que empiezan con un punto y coma como ya se ha comentado son
comentarios y no los usa el ensamblador, así que la primera línea donde
realmente comienza el listado, empieza en nemónicos con una etiqueta
(principio). La instrucción ORG 0X00 indica al micro en el ensamblador donde
colocar el programa al principio de la memoria del programa (flash). Es un área
de datos en el propio micro en la que se memorizan diversos datos durante la
ejecución del programa esta área es la RAM del pic.

Con la instrucción MOVLW 1Fh (MOVE literal to W register) ponemos el literal


1F en el registro de trabajo W

En el registro STATUS encontramos los parámetros RP0 que corresponden al


valor 0X05 o lo que es lo mismo el bit 5 del registro. Se pone a 1 este bit para
cambiar el banco de trabajo y manejar los registros TRISA y TRISB como se verá
más adelante.

La siguiente instrucción BCF STATUS, RP0 (BIT clear file register) cierra esta
página 1 (banco 1) y devuelve el control a las instrucciones del programa de la
página 0 (banco 0). Observar el símil (bit set banco 1) y BCF (bit clear banco 0)
como el pic 16f84A solo tiene dos bancos (0 y 1) usa el de estado de un solo bit
para cambiar de banco, otros PIC con más memoria requieren más bits de
control el mismo registro STATUS.

Programa:
*****Encabezado
LIST P=16F84A ; comando que indica el Pic usado.
RADIX HEX ; los valores en hexadecimal.

*****Definición de etiquetas
STATUS EQU 0X03 ; direcciona al registro de STATUS.
PTOA EQU 0X05 ; direcciona al puerto A.
PTOB EQU 0X06 ; direcciona al puerto B.
; condiciones iniciales del programa.
ORG 0X00
BSF STATUS, 5 ; selecciona el banco 1.
MOVLW 0X1F ; carga W con el valor 1Fh para habilitar.
MOVWF PTOA ; el puerto A como entrada
MOVLW 0X00 ; carga W con el valor 00h para habilitar.
MOVWF PTOB ; el puerto B como salida
BCF STATUS, 5 ; selecciona el banco 0
CLRF PTOA ; limpia el puerto A
CLRF PTOB ; limpia el puerto B

*****Programa principal
CICLO MOVFW PTOA ; cargamos W con el valor del puerto A.
MOVWF PTOB ; cargamos el registro W al puerto B
GOTO CICLO ; ir a la subrutina CICLO
END ; finaliza el programa

IV. PROCEDIMIENTO
1. Prepare su entrenador con el PIC 16F84A
2. El circuito propuesto se sacara del libro del pic.
3. Cargue el programa en el pic si se desea ver el código del programa puede
usar el MPLAB.
4. Energice y pruebe el circuito.
5. Si tiene el programa en asembler puede modificarlo para cambiar algunos
parámetros.
6. Anote sus observaciones.

V. CUESTIONARIO
a. ¿Cuántas posiciones ocupa el programa en la memoria?
El programa ocupa 10 posiciones.

b. ¿En qué tipo de memoria se guarda el programa del usuario, es RAM ROM
FLASH?
Algunas de las etiquetas como ORG se guardan en la memoria flash del pic,
los procesos que debe realizar están en la memoria RAM del pic y el
programa se guarda en la memoria ROM.

c. Si quiero configurar el puerto B como entrada y el puerto A como salida, ¿Qué


modificaciones debo hacer en el programa?
Se debe hacer el siguiente cambio:

MOVLW 0X1F ; carga W con el valor 1Fh para habilitar.


MOVWF PTOB ; el puerto B como entrada
MOVLW 0X00 ; carga W con el valor 00h para habilitar.
MOVWF PTOA ; el puerto A como salida

Se debe modificar el circuito para poder probar estos nuevos cambios.


VI. ANEXOS.

S-ar putea să vă placă și