>Problem is how do I know the difference between the long and short pause (so I can stop >counting flashes and move to the next digit) AND the big how... How do I turn "1" & "2" into 12 >(for use in the lookup table)? I think you should convert the 2 digits into one binary number. You said in another mail that there were about 90 fault codes, so you could then double the number so you can use it as a pointer into an address table that would point to string data giving the fault code text which would be in an external eprom. The eprom would be loaded with a pointer table at the beginning using code similar to this:- fault00: DW fmess00 fault01: DW fmess01 fault02: DW fmess02 .... fault90: DW fmess90 fmess00: "no fault" fmess01: "fault message for fault code 02" fmess03: "message for fault code 03" .... Your code would then get the fault code, multiply by 2, and use this value as an index into the table at the start of eprom. having this table means you can have variable length strings to make maximum use of the eprom. You will need to have either a null byte at the end of the message, or a length byte at the beginning of the message to determine how many characters to read out. If you change to a 16F87x family you may have enough program eprom to store your messages, depending on how long each one is, and this would require a modification of this technique. -- http://www.piclist.com hint: To leave the PICList mailto:piclist-unsubscribe-request@mitvma.mit.edu