Well, I am not normally into one up mans ship, but I think people may want to know that I have got an LCD working in 4 bit / write only mode with three pins on the PIC. Now, I am using compiled basic, so it will be slower than the guys using asm, who will have to pay more attention to timing. I am using a standard PIC F84 with an 8 bit serial to parallel shift register. The pic is connected to shift_data, shift_clock, and LCD_enable. Data is sent to the writeLCD routine via an 11 bit variable in the form (8bit/4bit),RS,RW,D7-D0 The 8bit/4bit is required by my routine because the LCD would not initialise properly if I did not send the initial set up chars in 8bit (as mentioned somewhere in the dox) Anyway my routine just shifts 4 bits of data, RS, RW then an enable pulse to the LCD (twice). The other great thing is that I was all about to read bit7 to test the busy status of the LCD, but it worked fine without it, so I didn't bother !! ;-) This meant that I didn't really need to connect the RW wire, (RW is required to read busy status) but by that stage it was there and working..... (if it don't broke don't fix it) ;-) Another titbit is that if you don't want to change the character position of the display (ie move to second row, that sort of thing) and you aren't using the extended character set, then there is no need to use DB7 I still want to get I2C working with my LCD....... ;-) At 02:15 PM 11/8/97 -0800, you wrote: >Hi Dave, ( And everyone else who replied to my cry for help. ) > >Looks good. I'll have to try the file out. Also, if the I/O is write only, >that means a shift register could be put in to shift out 4-bit data using >only 2 I/O lines. Add 2 data lines to the E line and the C/D line, and you >have 4 I/O pins for the LCD. Not bad. >