Hi to all that offerred help. Much appreciated. I picked up some tips from the code examples and was able to simplify my own code as a result. In my routine that sends the initialization instructions, I send these values... _lcd addwf PCL retlw 30h ; (128) display initialisation retlw 30h ; initialize page 45 of the data sheet retlw 30h ; initialize retlw 20h ; 4 bit initialise retlw 28h ; 4 bit display two line font 0 retlw 08h retlw 01h ; clear display retlw 06h ; increment display retlw 0ch ; display = on, cursor = off These are as per the data sheet. Each value is tested and when it gets to 28h, a flag is set and the routine sends the data in 4 bit mode from now on. I used "xorlw 28h" to test for the value, but I forgot to restore it back to it's original state before passing it to the LCDins code. Thus I was sending garbage to the init code. One thing I never realised before was that I can set the RW pin permanent low and save a PIC pin because I am not interested in reading from the device. Now on to the fun stuff... Thanks again :-) -- Best regards Tony ICmicro's http://www.picnpoke.com mailto:sales@picnpoke.com -- http://www.piclist.com#nomail Going offline? Don't AutoReply us! use mailto:listserv@mitvma.mit.edu?body=SET%20PICList%20DIGEST