Hello All, I know that this is a simple question which has no doubt been asked many times before, but I cannot understand or make any sense of the PCLATH in relation to look-up tables. When I first started to write PIC assembly code (about a month back) I never really understood the operation of the PCLATH in particular the importance of writing a value to the register prior to calling a look-up table with many entries, each of which being returned by modification of the program counter value using ADDWF PCL,F as a computed goto. I have studied AN556 which supposedly clarifies the problem, but what numerical values are represented by HIGH Table and LOW Table ?, and how do you determine where in program memory a look-up table should be placed in order to prevent such problems occurring ? - (does this depend upon the length of the table, i.e. the number of RETLW instructions). I can see that since only the low byte of the program counter (bits 0 through to 7 of the PCL) are manipulated by any instruction with the PCL as the destination, then only 256 bytes of program space can be addressed (i.e from PCL = 00000000 to PCL = 11111111), but how do I determine what value to load in to PCLATH in order to prevent the PCL rolling over from 11111111 to 00000000 ?. Am I correct in assuming that upon power up the PIC 16C65 for example, will commence program execution at the reset vector (PCL = 00000000) but what value is in PCLATH, 00000 ?; as the program continues execution does the PCL continue to increment after every instruction unless a goto or call is encountered, and if so does this mean that I have to count each instruction in my program in order to determine where in program memory a look-up table should be placed ?. If I consider the PIC16C84 with 1k of program memory, then right at the top of the memory (03FFh) will the program counter be set at PCLATH = 00011 and the PCL = 11111111 (i.e. 03FFh) ? - Am I correct here ?. Similarly if I now consider the PIC16C65 with 4k of program memory (1FFFh), will the program counter be set at PCLATH = 1F and the PCL = 11111111 (i.e. 1FFF) ?. From all this then how do I configure the PCLATH for maximum addressing range - is this the objective or am I totally confused somewhere ?. - i.e. In the case of the PIC16C84, should I set the PCLATH to 0x03 for maximum addressing range, and likewise in the case of the PIC16C65 should I configure the PCLATH to 0x1F ?, and where in the program do I do this ? at the start of the listing or in the actual look-up table before the ANDLW PCL,F instruction ?. Please help me with this simple but crucial fundamental problem, since I have managed to write some quite complex code without understanding the basic operation of the program counter. - I ran into difficulties whilst attempting to implement very long, variable length text strings for display on an LCD module. Many thanks and best wishes to all: Lee Hewitt (Manchester ENGLAND)