Hello Jason,

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.

Keep in touch

JP

Le Monday 07 November 2011, Jason White a écrit :
> Hello, I am writing a program (using SDCC) for the pic16f887, it is driving
> a Hitachi HD44780 character LCD. In the code I am trying to write
> characters to the LCD. First: directly 1 character at a time and then
> Second: using what is essentially the puts function (void puts_lcd(char
> *s)). The puts function fails to send anything more than the first
> character. What am I doing wrong ? or is it a compiler error ? relevant
> files are attached. Thanks ...
> 
> >void puts_lcd (char *s)
> >{
> >
> >    REG_SEL=1;
> >    
> >    while (*s)
> >    {
> >    
> >        lcd_command(*s++);
> >    
> >    }
> >    
> >    REG_SEL=0;
> >
> >}


-- 
Never jump into a loop!

------------------------------------------------------------------------------
RSA(R) Conference 2012
Save $700 by Nov 18
Register now
http://p.sf.net/sfu/rsa-sfdev2dev1
_______________________________________________
Sdcc-user mailing list
Sdcc-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sdcc-user

Reply via email to