Diseño De Productos Electrónicos Con Microcontroladores ACT CENTRAL 4
Enviado por hg748 • 29 de Septiembre de 2013 • 2.642 Palabras (11 Páginas) • 1.691 Visitas
ACTIVIDAD CENTRAL UNIDAD 4
Diseño de productos electrónicos con microcontroladores
Nombre de la actividad: Manejo de salidas en un microcontrolador: Display de Cristal Líquido (LCD).
Objetivo
Identificar las instrucciones en un código ASM para el manejo de salidas a una LCD.
Situación
Para diferenciar el tipo de producto que llega a la empresa (distribución y venta), se requiere que la llegada de camiones sea anunciada con una señal luminosa que parpadee y en una LCD aparezca el tipo de producto que acaba de llegar, según se haya activado el sensor de presencia instalado. Las posibilidades de productos son NATURAL, LIMÓN y BAR BQ. Se ha adquirido un sistema automatizado con microcontroladores y usted debe revisar si el código cumple con las características solicitadas.
Procedimiento:
1. Revise los contenidos del curso asociados al Manejo de salidas a una LCD.
2. Consulte información para profundizar sobre el funcionamiento y programación de las LCD.
Temas asociados
• Configuración de un Display de Cristal Líquido (LCD)
• Lenguaje ASM
Entregas
Para este análisis, puede utilizar la guía que aparece a continuación para desarrollar los siguientes productos:
1. Comentarios de las líneas de programación del código suministrado por el proveedor de servicios.
2. Descripción de los pines de entrada y salida utilizados para el sistema automatizado
3. Diagrama de flujo del programa de automatización.
Una vez finalizada, comprima el archivo en formato .zip o .rar, dando clic derecho al archivo, Enviar a, Carpeta comprimida. Luego envíela a su facilitador a través del medio utilizado para tal fin en el curso.
DOCUMENTO GUÍA
Diseño de productos electrónicos con microcontroladores
1. Comentarios de líneas de código. Escriba los comentarios relacionados con cada bloque de código.
INCLUDE <P16F628A.INC>
CBLOCK 0X20
R0C,R0D,R0E,R13,loops,loops2,REG_RX,CONTE,MEMORIA,RX_COMP,RX_ID1,RX_ID2,RX_PRO1,MENS_CONT,CON_USER,DATA_IN,CONT_USER,
CONT_INTS,MEM_STATUS,DATA_RUP,DATA_COMP,ID1_SAVE,ID2_SAVE,ID3_SAVE
ENDC
;definición de constantes
E EQU 2H ; dirección de E=B’10’
RS EQU 1H ; dirección de RS= B‘01’
ORG 0X00 ;vector reset
GOTO INICIO; Saltar a INICIO
;Bloque de configuración de inicio del microcontrolador
RETARDO
CLRWDT ; Limpia el watch dog timer (WDT)
MOVLW D'15' ; hace w=15 (decimal) =
MOVWF loops ; hace ‘loops’=w=15 (decimal) ó 00001111 (binario)
top2_1 ; define la etiqueta top2_1
MOVLW D'25';hace w=25 (dec) ó 00011001 (bin)
MOVWF loops2 ;hace ‘loops2’=25(dec)=00011001 (bin)
top_1 ;define la etiqueta ‘top_1’
CLRWDT ;limpia el WDT
NOP ; no se realiza instrucción (Nop usados como pequeños retardos)
NOP ; no se realiza instrucción
NOP ; no se realiza instrucción
NOP ; no se realiza instrucción
NOP ; no se realiza instrucción
NOP ; no se realiza instrucción
DECFSZ loops2,1 ;disminuye loops2 en 1, salta la siguiente instrucción si da 0
GOTO top_1 ;salta a top_1
DECFSZ loops,1 ; disminuye loops2, el resultado va al bit 1, salta la siguiente instrucción si da 0
GOTO top2_1 ;salta a top2_1
RETLW 0 ;retorna de la subrutina con w=0
;Bloque de espera de configuración del LCD
RETARDO_1
CLRWDT ;limpia el WDT
MOVLW D'100' ;hace w=100 (dec) ó 01100100 (bin)
MOVWF loops ;hace loops=w=100 (dec)
top2_2 ;define la etiqueta top2_2
MOVLW D'200' ;hace w=200(dec) ó 11001000 (bin)
MOVWF loops2 ;hace loops2=w
top_2 ;define la etiqueta top_2
CLRWDT ;limpia WDT
NOP ; no se realiza instrucción (Nop usados como pequeños retardos)
NOP ; no se realiza instrucción
NOP ; no se realiza instrucción
NOP ; no se realiza instrucción
NOP ; no se realiza instrucción
NOP ; no se realiza instrucción
DECFSZ loops2,1 ;disminuye loops2 en 1, salta la siguiente instrucción si da 0
GOTO top_2 ;salta a top2
DECFSZ loops,1 ; disminuye loops en 1, salta la siguiente instrucción si da 0
GOTO top2_2 ;salta a top2_2
RETLW 0 ;retorna de la subrutina con w=0
;Bloque de espera para escritura del LCD
CONTROL ;define la etiqueta CONTROL
CLRWDT ;limpia WDT
BCF PORTB,RS ; pone en cero RS
GOTO DATOS ; salta a DATOS (AQUI HAY UN ERROR, NO EXISTE LA ETIQUETA ‘DATOS’ debe ser DATO)
DATO ;define la etiqueta DATO
CLRWDT ;limpia el WDT
BSF PORTB,RS ;pone en 1 a RS
DATO2 ;define la etiqueta DATO2
BSF PORTB,E ;pone en 1 a E
MOVWF R0E ;copia w en R0E
MOVLW 0FH ;hace w=0Fhex =1111bin=15dec
ANDWF PORTB,1 ; aplica el AND lógico entre w y PORTB, lo guarda en PORTB
MOVF R0E,W ; copia el contenido a w
ANDLW 0F0H ; aplica el AND lógico entre w y 0F0H (wx0F0H), lo guarda en 0F0H
IORWF PORTB,1 ; aplica el OR lógico entre w y PORTB (w+PORTB), lo guarda en PORTB
CALL RETARDO ; llama a RETARDO
BCF PORTB,E ; pone en 0 el bit ‘E’ (bit 2) de PORTB
CALL RETARDO ;llama a RETARDO
BSF PORTB,E ; pone en 1
...