Está en la página 1de 9

list p=16f877A

#include<p16f877A.inc>

REG1 equ 0x20

REG2 equ 0x21

REG3 equ 0x22

REG4 EQU 0X23

TEMP9 EQU 0X24

TEMP8 EQU 0X25

TEMP3 EQU 0X26

#define banco1 bsf STATUS,5

#define banco0 bcf STATUS,5

org 0x00 ;vector de reset

goto start

org 0x04 ;vector de interrupcion

btfsc intcon,1

call Emergencia

retfie

start
banco1

movlw 0x00

movwf TRISD ;configuracion de puerto D como salida para control de los drivers

movlw 0x01

movwf TRISB ;configuracion de puerto B con RB0 como entrada

movlw 0x40

movwf OPTION_REG ;configuracion de interrupcion

banco0

;lcd_setup

call delay1

CALL DELAY2

CALL DELAY3

;LCD (INICIALIZACIÓN)

CLRF PORTB

movlw 0x01 ; esta aqui este comando para cuando se resetea el pic

call sendcom

movlw 0x02 ;estas lineas se usan para enviar la primera palabra, se supone

call sendcom

movlw 0x02 ;estas lineas se usan para enviar la primera palabra, se supone

call sendcom
movlw 0x2f ;lcd set mode: 4 bits, 2 lineas, tipo de letra (size)

call sendcom ;rutina de enviar comandos

movlw 0x0c ;blind off , display on, cursor off

call sendcom ;rutina de enviar comandos

movlw 0x03 ;cursor at home

call sendcom ;rutina de enviar comandos

;LCD_DATA

movlw "H"

call senddat

movlw "0"

call senddat

movlw "R"

call senddat

movlw "A"

call senddat

movlw ":"

call senddat

MOVLW 0XC0 ;posicion de segundo reglon

CALL SENDCOM

movlw "P"

call senddat
movlw "U"

call senddat

movlw "E"

call senddat

movlw "R"

call senddat

movlw "T"

call senddat

movlw "A"

call senddat

movlw ":"

call senddat

call delay3

MOVLW 0X2F

MOVWF REG4

dengo

MOVLW 0X88

CALL SENDCOM

INCF REG4,1

MOVLW 0X3A

XORWF REG4,0
BTFSC STATUS,Z

CALL RELOAD

call delay3

MOVF REG4,0

CALL SENDDAT

call delay3

goto dengo

sendcom

MOVWF REG1

ANDLW 0XF0

MOVWF PORTB

BCF PORTB,1 ;linea RS

BCF PORTB,2 ;linea RW

BSF PORTB,3 ;linea Enable

CALL DELAY1

BCF PORTB,3 ;linea Enable

SWAPF REG1,W

ANDLW 0XF0

MOVWF PORTB

BCF PORTB,1 ;linea RS

BCF PORTB,2 ;linea RW

BSF PORTB,3 ;linea Enable


CALL DELAY1

BCF PORTB,3 ;linea Enable

CLRF PORTB

return

senddat

MOVWF REG1

ANDLW 0XF0

MOVWF PORTB

BSF PORTB,1

BCF PORTB,2

BSF PORTB,3

CALL DELAY1

BCF PORTB,3

BCF PORTB,1

MOVF REG1,0

ANDLW 0X0F

SWAPF REG1,W

MOVWF PORTB

BSF PORTB,1

BCF PORTB,2

BSF PORTB,3

CALL DELAY1

BCF PORTB,3
BCF PORTB,1

CLRF PORTB

return

delay1

movlw 0x0b

movwf temp9

higc

movlw 0xff

movwf temp8

lowd

decfsz temp8,1

goto lowd

decfsz temp9,1

goto higc

return

delay2

movlw .255

movwf temp3

decfsz temp3,1

goto $-1
return

delay3

movlw 0xff

movwf temp9

higc2

movlw 0xff

movwf temp8

lowd2

decfsz temp8,1

goto lowd

decfsz temp9,1

goto higc

return

RELOAD

MOVLW 0X30

MOVWF REG4

RETURN

Emergencia

; movwf

end