DATAUS is a byte value. Go to 500, and you may as well go to 244 (figured this out the hard way awhile back, not mentioned in the book, but good to know).
Try the pause value up to a couple of seconds...some really are that slow...
Also, double, nay, triple check your wiring...Make sure you've got the connector on the 'right way'.
And put a 'heartbeat LED' in there...
Code:CLEAR ;Define LCD registers and control bits DEFINE OSC 4 ;System speed DEFINE LCD_DREG PORTD ;data register DEFINE LCD_BITS 4 ;width of data path DEFINE LCD_DBIT 0 ;data starts on bit 0 DEFINE LCD_RSREG PORTE ;select register DEFINE LCD_RSBIT 0 ;select bit DEFINE LCD_EREG PORTE ;enable register DEFINE LCD_EBIT 1 ;enable bit DEFINE LCD_RWREG PORTE ;read/write register DEFINE LCD_RWBIT 2 ;read/write bit LOW PORTE.2 ;LCD R/W low (write) We will do no reading DEFINE LCD_LINES 2 ;lines in display DEFINE LCD_COMMANDUS 4000 ;delay in micro seconds DEFINE LCD_DATAUS 200 ;delay in micro seconds ; ;Set the port directions. We are setting (must set) all of PORTD and all of PORTE as outputs ;even though PORTE has only 3 lines. The other 5 lines will be ignored by the system. ; TRISD = %00000000 ; set all PORTD lines to output LED VAR PORTD.7 OUTPUT LED TEMP VAR BYTE TRISE = %00000000 ; set all PORTE lines to output ; Set the Analog to Digital control register ADCON1=%00000111 ; needed for the 16F877A see note above and below ; PAUSE 2000 LOOP: ; The main loop of the program TEMP = TEMP + 1 LED = TEMP.0 LCDOUT $FE, 1 ; clear screen PAUSE 500 ; pause 0.25 seconds LCDOUT "HELLO" ; print LCDOUT $FE, $C0 ; goto second line, first position LCDOUT "WORLD" ; print PAUSE 250 ; pause 0.25 seconds GOTO LOOP ; repeat END ; always end all programs with an END statement
EDIT: Oh yeah, that schematic is jacked up...
Example schematic and/or program is in the PBP manual...





Bookmarks