Thank you all very much for the comments you said, that really made me sure that this was the same problem I discovered today in deed.
I have used this way:
[Quote]
RECEIVE:
SERIN PORTA.2,N9600,RCVBYTE
LCDOUT RCVBYTE
GOTO RECEIVE
[/qoute]
And that worked perfectly after I discovered that I had to do two things:
1. Increase the DATAUS and COMMANDUS at the receiving PIC which drives the LCD.
2. Use the CHAR_PACING to 1700us for 9600 baud rate on the sending PIC part as darrel already told me.
I noticed that scott edwards used faster LCDs than I do, so the user did not have to use CHAR_PACING delay at all, while scott took care of that at the LCD PIC part to overcome any slowy in the LCDs he used. Also I noticed that baud rates of 2400 will not require any CHAR_PACING and less DATAUS and COMMANDUS delay than 9600 baud rates because slower clocks can be used, its only the 9600 baud rate that needed some CHAR_PACING delay as it was 8MHz resonator. Any way I succeeded to send data at 9600 baud rates by reducing the DATAUS and COMMANDUS to 275 and 1750 respectively, but that was too risky.
I was wondering how did scott edwards achieved baud rates of 9600 at 480KHz resonator clock !! I think he used pure assembly to immitate serin commands, and that was really kinda wise thing to do...
But now I know from melanie's reply that using UART module will heal all the problems and let me discard the DATAUS, COMMANDUS, and CHAR_PACING when used...I will try to do that that and post the final code so guys won't have to buy serial LCDs any more
Thanks all





Bookmarks