Vous êtes sur la page 1sur 4

;Programa para mostrar un mensaje en un ;display LCD ;************************************** LIST PCL ESTADO PUERTOB PUERTOD PCLATH RDELAY CONTA0

CONTA1 CONTA2 Letra Flinea EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU P=16F874 0x02 0x03 0x06 0X08 0X0A 0x21 0x22 0x23 0x24 0x25 0x26

;Constantes para el programa ;*************************** Linea1LCD Linea2LCD ClrLCD CasaLCD IncLCD DecLCD OnLCD OfLCD OnCursor OffCursor BlinkCursor IzqLCD DerLCD IzqCursor DerCursor FuncionLCD RS RW E W F EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU ORG goto ORG 0x80 0xC0 0x01 0x02 0x07 0x05 0x0C 0x08 0x0E 0x0C 0x0F 0x18 0x1C 0x10 0x14 0x38 5 6 7 0 1 0 INICIO 5

;* IZQUIERDA ;* DERECHA

;Comandos o Caracteres 0 ;Escritura al LCD 1 ;Habilitacion para el LCD 2 ;Registro W ;Registro de trabajo

;PROGRAMA PRINCIPAL ;******************

INICIO r1 x80

call call movlw

Port_LCD Ini_LCD Linea1LCD

;Configura los puertos ;Inicializa el LCD ;Ponar seal para empezar a mandar datos 0

call movlw movwf clrf a r2 movf call call call incf decfsz goto movlw call

Comando_LCD 0x0f Flinea Letra Letra,W Mensaje Caracter_LCD delay Letra,F Flinea,F r2 Linea2LCD Comando_LCD ;w=15 para 15 datos ;registro Flinea=15 ;registro que va a moverse sobre la tabl ;Muestra el mensaje ;Manda el caracter al LCD ;Lo muestra por un tiempo de ---; F=1 en el registro si F= 0 en W ;este es para la linea dos ;otros 15 datos ;registro de 15 datos ;Muestra el mensaje ;Manda el caracter al LCD ;Lo muestra por un tiempo de ----

movlw 0x0f movwf Flinea clrf Letra r3 movf Letra,W call Mensaje1 call Caracter_LCD call delay incf Letra,F decfsz Flinea,F goto r3 ;instruccion alternativa ;r4 goto r4 movlw ClrLCD call Comando_LCD movlw CasaLCD del primer caracter call Comando_LCD goto r1

;para borrar el LCD ;para mandar al inicio de la linea uno y

; Inician las subrutinas ;*********************** Mensaje addwf retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw PCL,1 0x20 0x50 0x72 0x61 0x43 0x74 0x69 0x43 0x61 0x20 0x44 0x6F 0x73 0x20 0x20 ;Mensaje a dsesplejar en el LCD ; ;P ;r ;a ;c ;t ;i ;c ;a ; ;D ;o ;s ; ;

Mensaje1

addwf retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw

PCL,1 0x20 0x53 0x69 0x73 0x74 0x65 0x6D 0x61 0x73 0x20 0x44 0x69 0x67 0x2E 0x20 0x20

;Mensaje a dsesplejar en el LCD ; ;S ;i ;s ;t ;e ;m ;a ;s ; ;D ;i ;g ;. ; ;

Port_LCD

bsf clrf clrf bcf bcf bcf return call bsf movlw call call movlw call call movlw call call movlw call movlw call movlw call movlw call movlw call return bcf bcf bcf movwf call return

ESTADO,5 PUERTOD PUERTOB ESTADO,5 PUERTOD,E PUERTOD,RW retardo PUERTOD,RW FuncionLCD Comando_LCD retardo FuncionLCD Comando_LCD retardo FuncionLCD Comando_LCD retardo FuncionLCD Comando_LCD OnLCD Comando_LCD ClrLCD Comando_LCD DecLCD Comando_LCD CasaLCD Comando_LCD PUERTOD,RS PUERTOD,RW PUERTOD,E PUERTOB Habilita_LCD

;Configura los Puertos del PIC ;configura al puerdo D como salidas ;;configura al puerdo B como salidas ;E equ 2 enable del LCD ;RW equ 1 Bit de lectura escritura ;Inicializa el LCD ;poner a 1 el bit 1 del puerto D ;w<-0X38 ;0X38 ;0X38 ;0X38 ;0x0c ;0x01 ;0x05 ;0x02

Ini_LCD

Comando_LCD

;Manda un comando al LCD RS equ 0 ;RW equ 1 ;

Caracter_LCD

bsf bcf bcf movwf call return

PUERTOD,RS PUERTOD,RW PUERTOD,E PUERTOB Habilita_LCD

;Manda un caracter o dato al LCD

;RETARDO DE 255 MICRO SEG Habilita_LCD bsf PUERTOD,E movlw 0xFF movwf RDELAY t1 decfsz RDELAY,F goto t1 bcf PUERTOD,E return retardo ret2 ret1 ret0 movlw movwf movlw movwf movlw movwf decfsz goto decfsz goto decfsz goto return movlw movwf movlw movwf movlw movwf decfsz goto decfsz goto decfsz goto return END 0x01 CONTA0 0x64 CONTA1 0x64 CONTA2 CONTA2,F ret0 CONTA1,F ret1 CONTA0,F ret2 0xff CONTA0 0x0f CONTA1 0x0f CONTA2 CONTA2,F re0 CONTA1,F re1 CONTA0,F re2

;Habilita el LCD

;Retardo

delay re2 re1 re0

;Retardo ;0x0f ;0x0f