I will admit the 4bit does make it look more difficult but I pulled the code from an Application Note from Microchip originally. I have since change the code to reflect the suggestions made by everyone. Ironically, everyone's suggestions have been very similar leading me to believe that I am on the correct path. However, I still have the problem where the LCD display will not print the letters unless I comment out the goto BUSY_FLAG? as shown below. It must be something simple, but I can't catch it. Thanks for everyone's input, I hopefully will lick this soon. ; Read busy flag, DDram address andlw 0xF0 movwf TEMP bsf PORTA, E movf PORTB, 0 movwf TEMP1 bcf PORTA, E swapf TEMP1,0 andlw 0x0F iorwf TEMP,0 andlw 0x80 btfss STATUS, Z ; goto BUSY_FLAG? nop bsf STATUS, RP0 movlw 0x00 movwf TRISB bcf STATUS, RP0 RETURN "Paul B. Webster VK2BZC" wrote: > John Considine wrote: > > > Thanks, that site is very helpful. > >> http://www.iaehv.nl/users/pouweha/lcd2.htm > > Indeed it is. Only complaint I have is that the "Misc. Examples" > example by Marc Simons is unnecessarily complex (has transistor > inverter/ time delay circuit that just isn't needed) and he doesn't seem > to understand why. Oh well! > > But not on topic - said example *definitely* doesn't use Busy flag. > > I'm sure there is a trap in reading the busy flag in 4-bit mode. You > must read the data twice every time (which means you must keep things in > synch). I'll bet you are missing out on this or looking at the wrong > nibble for the flag bit. Just a guess, haven't sat and analysed the > code. > -- > Cheers, > Paul B.