Just curious - why are you using switches instead of a micro ? Is it a 60s revival thing ? > Another Q... I guess CG stands for character generator, but > why is there an operation to write to CG RAM? What's the > purpose of that? Can I create my own fonts or something? Yes, there are normally 8 characters (ASCII 00 to 07) that can be drawn with your own data. For example I use this set of data to define 00 as a +/- sign movlw 0x40 ;set LCD address to CG 00 call write_c ;write command clrf temp ;byte address and counter getbyte movlw 0x04 ;get data movwf pclath movf temp,w call pmsign call write_d ;write it to LCD incf temp,f movlw 0x08 ;count 8 xorwf temp,w btfss status,z goto getbyte ;loop ========================= org 0x400 pmsign addwf pcl,f ;redefine char 00 as +/- retlw 0x04 retlw 0x04 retlw 0x1f retlw 0x04 retlw 0x04 retlw 0x00 retlw 0x1f retlw 0x00 The CG RAM can also be used as general purpose storage RAM for the micro btw -- http://www.piclist.com hint: The PICList is archived three different ways. See http://www.piclist.com/#archives for details.