hi ive got a real simple lcd program, just trying to see what it does over long periods of time. however it works for a while, but everynow and then only half the word appears on an update and then after 5 minutes it just gets stuck with the same output. it works at first real smooth just as i want it to. watchdog timer doesnt reset it either...
im using an 18f2431 and this is my simple code:
Code:
define OSC 20 'define oscillator at 20mhz
Define LCD_DREG PORTC 'defining portC for the databits
define LCD_DBIT 4 'defining bits 4-7 as the 4 data bits for lcd
define LCD_RSREG PORTC 'defining the RS register to be on PORTC
define LCD_RSBIT 0 'defining bit0 of portC as the RSbit for LCD
Define LCD_EREG PORTC 'defining the LCD enable bit to be on portC
define LCD_EBIT 3 'defining the lcd enable bit on portc to be bit0
define LCD_BITS 4 'set number of lcd data bits, 4 is standard
define LCD_LINES 2 'define the number of lines on LCD, 2 lines is standard
define LCD_COMMANDUS 3000 'set command delay time in microseconds
define LCD_DATAUS 150 'set data delay time in microseconds
pause 1000 'pause for initialization of lcd
main: 'start of program, where the program loops back to
lcdout $FE,1,"hello" 'clears display and shows "hello" on first line
'$FE,1 clears display
'"hello" shows hello on lcd
lcdout $FE,$C0,"world" 'goes to second line of lcd and displays "world"
'$FE,$C0 = move cursor to beginning of second line
'"world" displays world
pause 1000 'pause so not to update lcd too quickly
lcdout $FE,1,"EVANCE" 'clears display and shows "hello" on first line
'$FE,1 clears display
'"hello" shows hello on lcd
lcdout $FE,$C0,"ISKRA" 'goes to second line of lcd and displays "world"
'$FE,$C0 = move cursor to beginning of second line
'"world" displays world
pause 1000
goto main 'end of program and looping back to start of program
end
thanks
Bookmarks