On 11/7/2011 3:11 PM, Jean-Paul wrote:
> The 44780 driver has a RS (register select) line that tells whether the byte
> (or nibble) is a command or a data (0 = commands, 1 = data). Commands control
> the internal working of the chip, data are to be written in (or read from)
> data memory and displayed as characters.
> Your "lcd_command" looks like writing into internal registers
> ("PORTB=cmd;//j;") and sending an E (enable) pulse. (By the way, 0.1s is a
> very very looong duration for such a pulse.)
> You should find somewhere a "lcd_data()" function to write data (something
> like "PORTB=data;...), as I suppose that your PORTB drives the RS, R/W and E
> lines of the display.
> Now the "lcd_command()" function will be used to set up the display (cursor,
> blinking, character definition etc. (which seems to have been done in your
> programme)), then "lcd_data()" will actually write on the screen.
I think you are completely missing the point. None of the above is
an issue. Jason knows what he's doing, and it's not a 0.1s delay.
IIRC, Jason got single char calls working, but the loop output
does not work. I can't see anything wrong with the rest of the
code. Might need to check the assembly version of puts_lcd().
Kein-Hong Man (esq.)
Kuala Lumpur, Malaysia