Above is the HEX keypad (4X4) table. I've been read the explanation, but I'm not really understand. How can form the HEX table? How we know the address "0X30, 0X41, 0X44, 0X39....)?
Above is the HEX keypad (4X4) table. I've been read the explanation, but I'm not really understand. How can form the HEX table? How we know the address "0X30, 0X41, 0X44, 0X39....)?
Those aren't addresses, they are values to be returned in W by the action of RETLW - the table is a jump table, and adds the value in W (0 to 15) to the PCL (program counter)
To add to Nigel's explanation, 0X43, 0X42, 0X30, 0X41, etc reside at the address pointed to by Key_Table+1, Key_Table+2, Key_Table+3, Key_Table+4, etc and are embedded in the RETLW instruction. PCL is equal to the address of Key_Table at the start of the routine posted above. So you don't really need to know where they are, just where they are relative to Key_Table. If you really want to know where they are in memory, choose VIEW/DISASSEMBLY LISTING in Mplab after compiling your code.
I'll save page boundary issues for another day.