; Program STRING_1.ASM
;
; Illustrates how to write strings to a the PIC-n-LCD.
;
; Program clears the display and writes "Hello World" to the first line.
;
; It then writes "T_C = 23 Degrees C", where 23 is assumed to be the 
; result of a measurment.
;
; Note that this uses program LCD_CTRL.ASM which is inlcuded at the bottom
; of this program.
;
; PORTA, Bit 0 (terminal 17) ------ TX ----------> to RX on Serial LCD
;
; copyright, Peter H. Anderson, Morgan State University, July 5, '97

	LIST p=16f84	
#include <c:\mplab\p16f84.inc>	
	__CONFIG 11h

	CONSTANT VARS=0CH

T_C		EQU VARS+0	; used for illustration	
STR_INDEX	EQU VARS+1


	ORG 000H

	BSF STATUS, RP0		; RP1 = 0, RP0 = 1, BANK1
	BCF TRISA, 0		; make RA.0 an output		
	BCF STATUS, RP0		; bank 0
	BCF PORTA, 0		; serial lead at 0

MAIN:
	; perform a temperature measurement	
	MOVLW .23		; but i will dummy the vaue of T_C = 23
	MOVWF T_C

	MOVLW 0CH		; special code to clear LCD
	CALL LCD_CHAR		; send it as a character

	MOVLW "H"		; display "Hello World"
	CALL LCD_CHAR
	MOVLW "e"
	CALL LCD_CHAR
	MOVLW "l"
	CALL LCD_CHAR
	MOVLW "l"
	CALL LCD_CHAR
	MOVLW "o"
	CALL LCD_CHAR
	MOVLW " "
	CALL LCD_CHAR

	MOVLW "W"
	CALL LCD_CHAR
	MOVLW "o"
	CALL LCD_CHAR
	MOVLW "r"
	CALL LCD_CHAR
	MOVLW "l"
	CALL LCD_CHAR
	MOVLW "d"
	CALL LCD_CHAR

	MOVLW 0AH
	CALL LCD_CHAR		; Line Feed - special code 
	
	MOVLW 0AH
	CALL LCD_CHAR

	MOVLW 0DH		; CR - special code
	CALL LCD_CHAR


	MOVLW 09H		; Tab
	CALL LCD_CHAR

	MOVLW "T"
	CALL LCD_CHAR
	MOVLW "="
	CALL LCD_CHAR

	MOVF T_C, W		; prints value in Hex format
	CALL LCD_VAL

DONE:	GOTO DONE

#include <a:\lcd_ctrl.asm>	

	END