; ARCHIVO LCD2.ASM ; CODIGO FUENTE PARA EL MICROCONTROLADOR EDUPIC-16F84 ; ESCRIBE EN EL LCD EL MENSAJE "EDUPIC 16F84", "PUNTO FLOTANTE" ; VERSION PARA OSCILADOR CRISTAL 4 MHZ ; CPU configuration ; (It's a 16F84, XT OSCILADOR ; watchdog timer off, power-up timer on) ;PA1 se usa como señal de control RS comando=0, datos=1 ;PA2 se usa como señal de control EN pulso de 50 ms. ;PB0..PB7 se usan como señales de datos. processor 16f84 include __config _XT_OSC & _WDT_OFF & _PWRTE_ON eight equ H'38' ;comando interfaz 8 bits, dos renglones clear equ H'01' ;limpia display home equ H'03' ;posiciona el cursor en inicio cursor equ H'0F' ;parpadea cursor renglon1 equ H'80' ;elige primer rengón renglon2 equ H'C0' ;elige segundo renglón J equ H'1F' ;localidad para subrutina de retardo K equ H'1E' ;localidad para subrutina de retardo valor equ H'1D' ;localidad guardar valor offset en tabla org 0 lcd: movlw H'00' bsf STATUS,RP0 ;BANCO 1 movwf TRISB ;bits de puerto B, salidas movwf TRISA ;bits de puerto A, salidas bcf STATUS,RP0 ;BANCO 0 call comand ;incializa LCD. envía 4 comandos movlw D'15' ;16 caracteres movwf valor call primer ;escribe primer renglón movlw D'15' movwf valor call segund ;escribe segundo renglón loop: goto loop primer: movlw renglon1 call puco ;envía comando de renglón 1 malla1: movfw valor call tabla1 ;regresa con dato de tabla en W. call puda ;escribe caracter en LCD decfsz valor,f goto malla1 return segund: movlw renglon2 call puco ;envía comando de renglón 2 malla2: movfw valor call tabla2 ;regresa con dato de tabla en W. call puda ;escribe caracter en LCD decfsz valor,f goto malla2 return comand: movlw eight ;envía 4 comandos call puco movlw clear call puco movlw home call puco movlw cursor call puco return puco: movwf PORTB ;escribe comando en puertoB call delay ;50 milisegundos movlw H'04' ;RS=0, EN=1 movwf PORTA call delay movlw H'00' ;RS=0, EN=0 movwf PORTA call delay movlw H'04' movwf PORTA call delay return puda: movwf PORTB ;escribe dato en puertoB call delay ;50 milisegundos movlw H'06' ;RS=1, EN=1 movwf PORTA call delay movlw H'02' ;RS=1, EN=0 movwf PORTA call delay movlw H'06' movwf PORTA call delay return delay: movlw D'100' ;50 milisegundos movwf K mallaK: movwf J mallaJ: decfsz J,f goto mallaJ decfsz K,f goto mallaK return tabla1: addwf PCL,f retlw ' ' retlw ' ' retlw '4' retlw '8' retlw 'F' retlw '6' retlw '1' retlw ' ' retlw 'C' retlw 'I' retlw 'P' retlw 'U' retlw 'D' retlw 'E' retlw ' ' retlw ' ' tabla2: addwf PCL,f retlw ' ' retlw 'E' retlw 'T' retlw 'N' retlw 'A' retlw 'T' retlw 'O' retlw 'L' retlw 'F' retlw ' ' retlw 'O' retlw 'T' retlw 'N' retlw 'U' retlw 'P' retlw ' ' end