See comments where added:
> call ResetLCD
To be safe, you can send a cursor position command here.
i.e.,
movlw 0x80 ; position line 1 column 0
call SendLCDINST
{Quote hidden}> movlw "H"
> call SendLCDChar
> movlw "i"
> call SendLCDChar
> movlw " "
> call SendLCDChar
> movlw "t"
> call SendLCDChar
> movlw "h"
> call SendLCDChar
> movlw "e"
> call SendLCDChar
> movlw "r"
> call SendLCDChar
> movlw "e"
> call SendLCDChar
These literals should all be 'X', not "X". This is likely your biggest
problem.
> bcf STATUS,C ;clear the carry flag (//WHY?)
> movlw 0x03 ;reset command (//Is this right?
>Should be 0x30?)
You clear the carry flag because it's an instruction, not data. 0x03 is
correct, not 0x30.
<SNIP>
>NybbleOut
> movwf NOTemp ;save the nybble to shift out
> swapf NOTemp,F
You can ensure that the shift register is REALLY cleared by making sure the
data bit is clear before sending all 6 bits to the shift register.
i.e.,
bcf LCDData
> movlw 6 ;clear the shift register
> movwf Dlay
>NOLoop1
> ClockStrobe
> decfsz Dlay,F
> goto NOLoop1
>
<SNIP>
Try these changes. They should help.
--Andrew
_________________________________________________________________
Get your FREE download of MSN Explorer at http://explorer.msn.com
--
http://www.piclist.com hint: The list server can filter out subtopics
(like ads or off topics) for you. See http://www.piclist.com/#topics