;****************************************** http://www.x-robotics.com ******* ; PROGRAMA : hola.asm ; Funcion : Programa de ejemplo de utilizacion de rutinas para control de ; LCD Hitachi 44780 o compatible. ; Revision : 1.0 Programa para : PIC16F84 ; CPU Clock : 4 MHz Reloj instruccion : 1 us ; WDT : Deshabilitado Tipo de reloj : XT ; Code Prot : OFF ;****************************************** http://www.x-robotics.com ******* ; ; ;****************************** Igualdades ********************************** ; list p=16c84 ;Procesador PIC16c84 list c=132 ;Listado a 132 caracteres TIMER0 equ 01 ;Registro del TIMER0 OPCION equ 0x1 ;Registro de opciones,p gina 1 PCL equ 0x2 ;Registro PC PCLATH equ 0xa ;Registro alto del PC STATUS equ 03 ;Registro de estado RA equ 05 ;Puerta A RB equ 06 ;Puerta B PORTA equ 05 ;Puerta A PORTB equ 06 ;Puerta B TRISA equ 0x5 ;Reg. de programaci¢n de la puerta A, p gina 1 TRISB equ 0x6 ;Reg. de programaci¢n de la puerta B, p gina 1 INTCON equ 0xb ;Registro de control de interrupciones DATO_A equ 0xc ;Registro del dato A DATO_B equ 0xd ;Registro del dato B RESUL equ 0xe ;Registro de resultados TEMPO1 equ 0xf ;Registro temporal 1 TEMPO2 equ 0x10 ;Registro temporal 2 OFFSET equ 0x11 ;Variable de desplazamientos de mensajes RP0 EQU 05h ;Bit 5 registro STATUS Digito EQU 1Fh ;Cursor para leer la tabla de datos. ;<<<<<<---------------------- VECTOR DE RESET ------------------------>>>>>>> ORG 00h ;Direccion del Vector de RESET GOTO INICIO ;Comienza el programa ORG 05h ;detras del Vector Interrupcion Include "LCD.LIB" ;<<<<<<----------------- INICIO PROGRAMA PRINCIPAL ------------------->>>>>>> INICIO CLRF Digito ;Pone a 0 la variable digito CALL LCD_PORT ;Puertos en modo LCD BCF RA,0 ;Desactiva RS del modulo LCD BCF RA,2 ;Desactiva E del modulo LCD START CALL LCD_INI ;Inicia LCD (CFG puertos...) START_1 MOVLW b'00000001' ;Borrar LCD y Home CALL LCD_REG MOVLW b'00000110' ; CALL LCD_REG MOVLW b'00001100' ;LCD On, cursor Off,Parpadeo Off CALL LCD_REG MOVLW 0x80 ;Direccion caracter CALL LCD_REG REPETIR MOVF Digito,w ;W=Digito CALL DATO_1 ;Coge el caracter IORLW 0 ;Compara BTFSC STATUS,2 ;Es el ultimo? GOTO acabar ;Si CALL LCD_DATOS ;Visualiza caracter INCF Digito,f ;Incrementa numero de Digito GOTO REPETIR ;Vuelve a escribir acabar nop goto acabar ;Buclee infinito ;<<<<<<---------------------- TABLA DE DATOS ------------------------->>>>>>> DATO_1 ADDWF PCL,1 RETLW 'H' RETLW 'O' RETLW 'L' RETLW 'A' RETLW ' ' RETLW 'M' RETLW 'U' RETLW 'N' RETLW 'D' RETLW 'O' RETLW 0x00 ;<<<<<<\\\\\\\\\\\THE\\\\\\\\\\\\\\\\////////////////END//////////////>>>>>>> END