Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Procedimiento:
1. Revise los contenidos del curso asociados al Manejo de salidas a una LCD.
Temas asociados
Entregas
Para este anlisis, puede utilizar la gua que aparece a continuacin para desarrollar
los siguientes productos:
1. Comentarios de las lneas de programacin del cdigo suministrado por el
proveedor de servicios.
2. Descripcin de los pines de entrada y salida utilizados para el sistema
automatizado
3. Diagrama de flujo del programa de automatizacin.
1
Una vez finalizada, comprima el archivo en formato .zip o .rar, dando clic derecho al
archivo, Enviar a, Carpeta comprimida. Luego envela a su facilitador a travs del
medio utilizado para tal fin en el curso.
2
DOCUMENTO GUA
Diseo de productos electrnicos con microcontroladores
1. Comentarios de lneas de cdigo. Escriba los comentarios relacionados con cada
bloque de cdigo.
INCLUDE <P16F628A.INC> ; Definicion del microprocesador a utilizar
CBLOCK0X20
R0C,R0D,R0E,R13,loops,loops2,REG_RX,CONTE,MEMORIA,RX_COMP,RX_ID1,RX_ID2,RX_PRO1,ME
NS_CONT,CON_USER,DATA_IN,CONT_USER,
CONT_INTS,MEM_STATUS,DATA_RUP,DATA_COMP,ID1_SAVE,ID2_SAVE,ID3_SAVE
ENDC
3
MOVLW D'200' ; Tiempo de permanencia de encendido 200 ms
MOVWF loops2
top_2
CLRWDT
NOP ; Ciclo de maquina de un microsegundo
NOP ; Ciclo de maquina de un microsegundo
NOP ; Ciclo de maquina de un microsegundo
NOP ; Ciclo de maquina de un microsegundo
NOP ; Ciclo de maquina de un microsegundo
NOP ; Ciclo de maquina de un microsegundo
DECFSZ loops2,1 ; Pregunta si termino ya un milisegundo
GOTO top_2 ; Llamamos a la subrutina
DECFSZ ; Decrementa en 1 si esta en loops,1
GOTO top2_2 ; Salta a la subrutina top2 si esta en dos
RETLW 0 ; Pone el registro w en 0
CONTROL
CLRWDT ; Pone en cero el registro watchdog
BCF PORTB,RS ; Pone el LCD en modo escritura
GOTO DATO2 ; Salta al dato 2
DATO
CLRWDT ; Pone en cero el watchdog
BSF PORTB,RS ; Pone el Lcd en modo escritura
DATO2
BSF PORTB,E ; Pone en 2h el puerto B del pic
MOVWF R0E ; Rutina para configurar un dato en el lcd
MOVLW 0FH ; Carga w con el dato of
ANDWFPORTB,1 ; Suma el contenido de w con el registro f
MOVF R0E,W
ANDLW 0F0H ; Se carga el registro w con Oh
IORWF PORTB,1 ; Operacion logica or entre el acumulador w y el registro f del puerto B.
CALL RETARDO ; Llama retardo
BCF PORTB,E
CALL RETARDO
BSF PORTB,E ; Pone en cero el bit E del puerto B
MOVLW 0FH ; Mueve el dato 0f al acumulador
ANDWFPORTB,1 ; Operacion logica and entre el acumulador y el registro f y pone el
puerto B en 1
SWAPF R0E,W ; Intercambio de niveles mas significativo y menos significativo.
ANDLW 0F0H ; Operacion
IORWF PORTB,1 ; Operacion logica or entre el acumulador w y el registro f del puerto B.
CALL RETARDO ; Llama a retardo
BCF PORTB,E ; Pone en cero el bit E del B
4
CALL RETARDO ; Llama a retardo
RETLW 0 ; Regresa de una subrutina con el numero 0 cumulador
INICIO
BSF STATUS,5 ; Pone en 1 el bit 5 del registro status
CLRF TRISB ; Blanquea el puerto B
MOVLW .255 ; Mueve el valor .255 al acumulador
MOVWF TRISA ; Mueve el registro f al acumulador
BCF STATUS,5 ; Pone en 0 el bit 5 de status
CONFI_LCD
ENTRADAS
BTFSC PORTA,0 ; Prueba el bit 0 del puerto A, si es cero salta a mensaje 1
GOTO MENSAJE_1 ; Salta al mensaje 1
BTFSC PORTA,1 ; Prueba el bit 1 del puerto A si es uno salta al mensaje 2
GOTO MENSAJE_2 ; Salta al mensaje 2
BTFSC PORTA,2 ; Prueba el bit 2 del Puerto A si es dos salta al mensaje 3
GOTO MENSAJE_3 ; Salta al mensaje 3
GOTO BORRA_LCD ; Salta y borra La LCD
MENSAJE_1
MOVLW 01H ; Carga el valor 01h en el acumulador
CALL CONTROL ; Llama a control
CALL RETARDO ; Llama a retardo
MOVLW " " ; Carga el valor 01h en el acumulador
CALL DATO ; Llama a retardo
MOVLW " " ; Carga el valor 01h en el acumulador
CALL DATO ; Llama a dato
MOVLW " " ; Carga el valor 01h en el acumulador
CALL DATO ; Salta a la subrutina dato
MOVLW " " ; Carga el valor 01h en el acumulador
CALL DATO ; Salta a la subrutina dato
MOVLW " " ; Carga el valor 01h en el acumulador
CALL DATO ; Salta a la subrutina dato
MOVLW " " ; Carga el valor 01h en el acumulador
5
CALL DATO ; Salta a la subrutina dato
MOVLW "N" ; Carga el acumulador con la letra N
CALL DATO; Salta a la subrutina dato
MOVLW "A" ; Carga el acumulador con la letra A
CALL DATO ; Salta a la subrutina dato
MOVLW "T" ; Carga el acumulador con la letra T
CALL DATO ; Salta a la subrutina dato
MOVLW "U" ; Carga el acumulador con la letra U
CALL DATO ; Salta a la subrutina dato
MOVLW "R" ; Carga el acumulador con la letra R
CALL DATO ; Salta a la subrutina dato
MOVLW "A" ; Carga el acumulador con la letra A
CALL DATO ; Salta a la subrutina dato
MOVLW "L" ; Carga el acumulador con la letra L
CALL DATO ; Salta a la subrutina dato
MOVLW ""
CALL DATO ; Salta a la subrutina dato
MOVLW ""
CALL DATO ; Salta a la subrutina dato
MOVLW ""
CALL DATO
MOVLW ""
CALL DATO
MOVLW ""
CALL DATO
MOVLW ""
CALL DATO
MOVLW ""
CALL DATO
;LED INTERMITENTE
BSF PORTB,0 ; Pone en cero el puerto B
CALL RETARDO_1 ; Salta a retardo y pone 0
BCF PORTB,0
CALL RETARDO_1 ; Salta a la subrutina 1 del retardo
GOTO ENTRADAS ; Salta a las entradas
MENSAJE_2
MOVLW 01H ; Carga el acumulador con el dato 01h
CALL CONTROL ; Salta a la subrutina control
CALL RETARDO ; Salta alretardo
MOVLW " " ; Carga el dato en el acumulador
CALL DATO ; Salta a la subrutina dato
MOVLW " " ; Carga el dato en el acumulador
CALL DATO ; Salta a la subrutina dato
6
MOVLW " " ; Carga el acumulador con el dato
CALL DATO ; Salta a la subrutina dato
MOVLW " " ; Carga el acumulador con el dato
CALL DATO ; Salta a la subrutina dato
MOVLW " " ; Carga el acumulador con el dato
CALL DATO ; Salta a la subrutina dato
MOVLW " " ; Carga el acumulador con el dato
CALL DATO ; Salta a la subrutina dato
MOVLW " " ; Carga el acumulador con el dato
CALL DATO ; Salta a la subrutina dato
MOVLW "L" ; Carga el acumulador con la letra L
CALL DATO ; Salta a la subrutina dato
MOVLW "I" ; Carga el acumulador con la letra I
CALL DATO ; Salta a la subrutina dato
MOVLW "M" ; Carga el acumulador con la letra M
CALL DATO ; Salta a la subrutina dato
MOVLW "O" ; Carga el acumulador con la letra O
CALL DATO ; Salta a la subrutina dato
MOVLW "N" ; Carga el acumulador con la letra N
CALL DATO ; Salta a la subrutina dato
MOVLW " " ; Carga el acumulador con el dato
CALL DATO ; Salta a la subrutina dato
MOVLW " " ; Carga el acumulador con el dato
CALL DATO ; Salta a la subrutina dato
MOVLW " " ; Carga el acumulador con el dato
CALL DATO ; Salta a la subrutina dato
MOVLW " " ; Carga el acumulador con el dato
CALL DATO ; Salta a la subrutina dato
MOVLW " " ; Carga el acumulador con el dato
CALL DATO ; Salta a la subrutina dato
MOVLW " " ; Carga el acumulador con el dato
CALL DATO ; Salta a la subrutina dato
MOVLW " " ; Carga el acumulador con el dato
CALL DATO ; Salta a la subrutina dato
MOVLW " " ; Carga el acumulador con el dato
CALL DATO ; Salta a la subrutina dato
;LED INTERMITENTE
BSF PORTB,0 ; Pone en el PUERTOB
CALL RETARDO_1 ; Genera un retardo de 1 ms
BCF PORTB,0
CALL RETARDO_1
GOTO ENTRADAS ; Salta a las entradas
MENSAJE_3
7
MOVLW 01H ; Carga el acumulador con la cifra 01H
CALL CONTROL ; Salta a la subrutina control
CALL RETARDO
MOVLW ""
CALL DATO
MOVLW ""
CALL DATO
MOVLW ""
CALL DATO
MOVLW ""
CALL DATO
MOVLW ""
CALL DATO
MOVLW ""
CALL DATO
MOVLW ""
CALL DATO
MOVLW ""
CALL DATO
MOVLW "B"
CALL DATO
MOVLW "B"
CALL DATO
MOVLW "Q"
CALL DATO
MOVLW ""
CALL DATO
MOVLW ""
CALL DATO
MOVLW ""
CALL DATO
MOVLW ""
CALL DATO
MOVLW ""
CALL DATO
MOVLW ""
CALL DATO
MOVLW ""
CALL DATO
MOVLW ""
CALL DATO
MOVLW ""
CALL DATO
8
;LED INTERMITENTE
BSF PORTB,0
CALL RETARDO_1
BCF PORTB,0
CALL RETARDO_1
GOTO ENTRADAS
BORRA_LCD ; Bloque que limpia, es decir borra la lcd
MOVLW 01H
CALL CONTROL
CALL RETARDO
GOTO ENTRADAS
END
9
Inicio
Configurar lcd
Configuraci inicial ONTROL
Escrbir DATO
no Bit 0 DE
PORTA =
0? retardos
si
Salto a Mensaje 1
return
Bit 1 DE
PORTA = 0?
Salto a Mensaje 2
no Bit 2 DE
PORTA =
0 ? si
Salto a Mensaje 3
fin
10
11