program ADC_LCD
symbol RW = PORTB.B1
symbol RW_Direction = DDRB.B1
dim LCD_RS as sbit at PORTB2_bit
dim LCD_EN as sbit at PORTB3_bit
dim LCD_D4 as sbit at PORTB4_bit
dim LCD_D5 as sbit at PORTB5_bit
dim LCD_D6 as sbit at PORTB6_bit
dim LCD_D7 as sbit at PORTB7_bit
dim LCD_RS_Direction as sbit at DDB2_bit
dim LCD_EN_Direction as sbit at DDB3_bit
dim LCD_D4_Direction as sbit at DDB4_bit
dim LCD_D5_Direction as sbit at DDB5_bit
dim LCD_D6_Direction as sbit at DDB6_bit
dim LCD_D7_Direction as sbit at DDB7_bit
dim Value as longword
dim Disp as word[3]
dim sValue as string[5]
dim sDisp as string[5]
main:
RW_Direction = 1
RW = 0
LCD_Init()
LCD_Cmd(_LCD_CLEAR)
LCD_Cmd(_LCD_CURSOR_OFF)
LCD_Out(1, 1, "Reading:")
LCD_Out(2, 1, "Voltage:")
sDisp = "4.99V"
while true
Value = ADC_Read(0)
WordToStr(Value, sValue)
LCD_Out(1, 10, sValue)
Value = (Value * 500) >> 10
Disp[0] = (Value div 100) + 48
Disp[1] = ((Value div 10) mod 10) + 48
Disp[2] = (Value mod 10) + 48
sDisp[0] = Disp[0]
sDisp[2] = Disp[1]
sDisp[3] = Disp[2]
LCD_Out(2, 10, sDisp)
wend
end.