;////////////////////////////////////////////////
;            ====== lcd1.asm ======
; Data da Criação: 11.03.03
; Data da Última Atualização: 14.05.03
; Autor:  Marcos Bomfim marcos_bomfim@hotmail.com
; Descrição: Arquivo para interface do pic16f84
; com o LCD. // LCD.bmp
;
;////////////////////////////////////////////////

	PROCESSOR       16F84A
        RADIX           DEC
        INCLUDE         "P16F84.INC"
        ERRORLEVEL      -302
	__CONFIG _CP_OFF & _XT_OSC & _PWRTE_ON  & _WDT_OFF

;=============  Definições, Macros  =============
	CBLOCK 	0x00C
	Dlay
	ENDC

Habilita MACRO
	movwf	PORTB
	bsf	PORTA,2
	bcf	PORTA,2
	ENDM

;=============  Início do Programa ==============
	ORG	00H

	bsf	STATUS,RP0
	clrf	TRISA
	clrf	TRISB
	bcf	STATUS,RP0

	clrf	PORTA
	clrf	PORTB

;=============  Inicialização do LCD  ===========
	
	call   Dlay5	              
	call   Dlay5
	call   Dlay5
	call   Dlay5

	movlw	0x030
	Habilita

	call	Dlay5

	movlw	0x030
	Habilita

	call	Dlay160

	movlw	0x030
	Habilita

	call	Dlay160

	movlw	0x038		;Configura No de linhas e	
	Habilita			;tipo de envio de dados (8bits)

	movlw	0x08		;Desliga o LCD
	Habilita

	movlw	0x01		;Apaga o LCD
	Habilita
	
	movlw 	00000110B	;Configura Direção do Cursor
	Habilita
	
	movlw	0x0C		;Liga o LCD
	Habilita

;=============  Envia Mensagem  =================

	clrf	FSR			
OutLoop
	movf	FSR, w		
	incf	FSR
	call	Message
	iorlw	0			
	btfsc	STATUS, Z
	goto	Loop	
	bsf	PORTA,0		
	Habilita
       	goto	OutLoop

Loop				
	goto   Loop


;=============  Subrotinas  =====================
Message				
	addwf	 PCL		
	dt	 "Ampere", 0

Dlay5
	movlw  4                     
	movwf  Dlay
	movlw  256 - 0x0E8
	addlw  1
	btfsc  STATUS, Z
	decfsz Dlay
	goto $-3

	return

Dlay160                         

	movlw  256 - ( 160 / 4 )      
	addlw  1
	btfss  STATUS, C
	goto  $-2

	return

	
	END
