; ARCHIVO LCD 16 X 1V4F88 TINY.ASM ; CODIGO FUENTE PARA EL MICROCONTROLADOR EVOLUPIC-16F88 ; ESCRIBE EN EL LCD DE UN SOLO RENGLON UN MENSAJE CON SCROLLING ; EL LCD TIENE 1 SOLO RENGLON DE 16 CARACTERES DIVIDIDOS EN ; DOS SECCIONES QUE SE MANEJAN COMO SI FUESEN DOS RENGLONES ; LOS PRIMEROS 8 CARACTERES FORMAN EL PRIMER RENGLON Y LOS ; SIGUIENTES 8 FORMAN EL SEGUNDO RENGLON. ; REALIZA EL SCROLLING CIRCULAR DEL MENSAJE DE 256 CARACTERES. ; LA TABLA DE CARACTERES SE ENCUENTRA EN MEMORIA FLASH, DE LA ; DIRECCION 100H A LA 1FFH ; SE UTILIZAN 16 LOCALIDADES EN RAM ; DE LA DIRECCION 30H A LA 3FH COMO BUFFER DE ESCRITURA AL LCD. ; 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 16f88 include eight equ H'38' ;comando interfaz 8 bits, dos renglones clear equ H'01' ;comando limpia display home equ H'03' ;comando posiciona el cursor en inicio cursor equ H'0F' ;comando parpadea cursor renglon1 equ H'80' ;comnado elige primer rengón renglon2 equ H'C0' ;comando elige segundo renglón J equ H'21' ;localidad para subrutina de retardo K equ H'22' ;localidad para subrutina de retardo valor equ H'23' ;localidad guardar valor offset en tabla counter equ H'24' ;localidad para cuenta descendente de 16 localidades offset equ H'25' ;localidad para offset de tabla BANCO0 MACRO BCF STATUS,RP0 BCF STATUS,RP1 ENDM BANCO1 MACRO BSF STATUS,RP0 BCF STATUS,RP1 ENDM org 0 clrf PCLATH goto WEB org 3 WEB BANCO0 bcf RCSTA,SPEN ;DESHABILITA UART BANCO1 movlw 7 movwf CMCON clrf CVRCON clrf ANSEL clrf TRISA clrf TRISB BANCO0 clrf PORTA clrf PORTB movlw H'1' movwf PCLATH ;preparar PCH en página 1, para manejo de tabla movlw H'00' movwf offset ;inicializa offset de tabla bsf STATUS,RP0 ;BANCO 1 bcf STATUS,RP1 movwf TRISB ;bits de puerto B, salidas movwf TRISA ;bits de puerto A, salidas bcf STATUS,RP0 ;BANCO 0 bcf STATUS,RP1 call comand ;incializa LCD. envía 4 comandos loop call filbuf ;llena el buffer en memoria call primer ;escribe primer renglón call segund ;escribe segundo renglón call delay3 goto loop filbuf movlw H'30' ;inicializa W ,inicio de BUFFER movwf FSR ;prepara direccionamiento indirecto movlw D'16' ;prepara cuenta de contador movwf counter weer movfw counter addwf offset,w ;suma w + offset, resultado en w call tabla ;trae cada uno de los caracteres movwf INDF ;colócalo en buffer incf FSR decfsz counter goto weer incf offset return primer movlw renglon1 call puco ;envía comando de renglón 1 movlw D'8' movwf valor movlw H'3F' movwf FSR malla1 movfw INDF call puda ;escribe caracter en LCD decf FSR decfsz valor,f goto malla1 return segund movlw renglon2 call puco ;envía comando de renglón 2 movlw D'8' movwf valor movlw H'37' movwf FSR malla2 movfw INDF call puda ;escribe caracter en LCD decf FSR 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'10' ;50 milisegundos movwf K mallaK movwf J mallaJ decfsz J,f goto mallaJ decfsz K,f goto mallaK return delay2 movlw D'250' ;100 milisegundos movwf K mallaM movwf J mallaL decfsz J,f goto mallaL decfsz K,f goto mallaM return delay3 call delay2 call delay2 ; call delay2 return tabla movwf PCL ;PCH =01, PCL =w org H'100' retlw '.' retlw 'E' retlw 'V' retlw 'O' retlw 'L' retlw 'U' retlw 'P' retlw 'I' retlw 'C' retlw ' ' retlw 'B' retlw 'o' retlw 'o' retlw 't' retlw 'l' retlw 'o' retlw 'a' retlw 'd' retlw 'e' retlw 'r' retlw ' ' retlw '1' retlw '6' retlw 'F' retlw '8' retlw '8' retlw '.' retlw '.' retlw '4' retlw 'K' retlw ' ' retlw 'M' retlw 'E' retlw 'M' retlw 'O' retlw 'R' retlw 'I' retlw 'A' retlw ' ' retlw 'F' retlw 'L' retlw 'A' retlw 'S' retlw 'H' retlw '.' retlw '.' retlw '3' retlw '6' retlw '8' retlw ' ' retlw 'B' retlw 'Y' retlw 'T' retlw 'E' retlw 'S' retlw ' ' retlw 'R' retlw 'A' retlw 'M' retlw '.' retlw '.' retlw '2' retlw '5' retlw '6' retlw ' ' retlw 'D' retlw 'E' retlw ' ' retlw 'E' retlw 'E' retlw 'P' retlw 'R' retlw 'O' retlw 'M' retlw '.' retlw '.' retlw 'P' retlw 'U' retlw 'E' retlw 'R' retlw 'T' retlw 'O' retlw 'S' retlw ' ' retlw 'P' retlw 'A' retlw 'R' retlw 'A' retlw ' ' retlw 'L' retlw 'C' retlw 'D' retlw ' ' retlw 'Y' retlw ' ' retlw 'T' retlw 'E' retlw 'C' retlw 'L' retlw 'A' retlw 'D' retlw 'O' retlw '.' retlw '.' retlw 'R' retlw 'E' retlw 'L' retlw 'E' retlw 'V' retlw 'A' retlw 'D' retlw 'O' retlw 'R' retlw ' ' retlw 'D' retlw 'E' retlw ' ' retlw '1' retlw '2' retlw '7' retlw 'v' retlw '.' retlw ' ' retlw '1' retlw ' ' retlw 'a' retlw 'm' retlw 'p' retlw '.' retlw '.' retlw '8' retlw ' ' retlw 'L' retlw 'E' retlw 'D' retlw 'S' retlw '.' retlw '.' retlw '4' retlw ' ' retlw 'M' retlw 'I' retlw 'C' retlw 'R' retlw 'O' retlw 'S' retlw 'W' retlw 'I' retlw 'T' retlw 'C' retlw 'H' retlw 'E' retlw 'S' retlw '.' retlw '.' retlw 'P' retlw 'R' retlw 'O' retlw 'G' retlw 'R' retlw 'A' retlw 'M' retlw 'A' retlw 'D' retlw 'O' retlw 'R' retlw ' ' retlw 'D' retlw 'E' retlw 'L' retlw ' ' retlw '1' retlw '6' retlw 'F' retlw '8' retlw '8' retlw ' ' retlw 'I' retlw 'N' retlw 'T' retlw 'E' retlw 'G' retlw 'R' retlw 'A' retlw 'D' retlw 'O' retlw '.' retlw '.' retlw 'S' retlw 'E' retlw 'N' retlw 'S' retlw 'O' retlw 'R' retlw ' ' retlw 'D' retlw 'E' retlw ' ' retlw 'T' retlw 'E' retlw 'M' retlw 'P' retlw 'E' retlw 'R' retlw 'A' retlw 'T' retlw 'U' retlw 'R' retlw 'A' retlw '.' retlw '.' retlw 'P' retlw 'U' retlw 'E' retlw 'R' retlw 'T' retlw 'O' retlw ' ' retlw 'S' retlw 'E' retlw 'R' retlw 'I' retlw 'A' retlw 'L' retlw ' ' retlw 'R' retlw 'S' retlw '2' retlw '3' retlw '2' retlw '.' retlw '.' retlw 'F' retlw 'I' retlw 'R' retlw 'M retlw 'W' retlw 'A' retlw 'R' retlw 'E' retlw ' ' retlw 'B' retlw 'O' retlw 'O' retlw 'T' retlw 'L' retlw 'O' retlw 'A' retlw 'D' retlw 'E' retlw 'R' retlw '.' retlw '.' retlw '.' retlw '.' retlw '.' retlw '.' retlw '.' end