
2002 Microchip Technology Inc.
Preliminary
DS30485A-page 249
PIC18FXX39
TBLRD
Table Read
Syntax:
[ label ]
TBLRD ( *; *+; *-; +*)
Operands:
None
Operation:
if TBLRD *,
(Prog Mem (TBLPTR))
→ TABLAT;
TBLPTR - No Change;
if TBLRD *+,
(Prog Mem (TBLPTR))
→ TABLAT;
(TBLPTR) +1
→ TBLPTR;
if TBLRD *-,
(Prog Mem (TBLPTR))
→ TABLAT;
(TBLPTR) -1
→ TBLPTR;
if TBLRD +*,
(TBLPTR) +1
→ TBLPTR;
(Prog Mem (TBLPTR))
→ TABLAT;
Status Affected:None
Encoding:
0000
10nn
nn=0 *
=1 *+
=2 *-
=3 +*
Description:
This instruction is used to read the con-
tents of Program Memory (P.M.). To
address the program memory, a pointer
called Table Pointer (TBLPTR) is used.
The TBLPTR (a 21-bit pointer) points
to each byte in the program memory.
TBLPTR has a 2 Mbyte address range.
TBLPTR[0] = 0: Least Significant
Byte of Program
Memory Word
TBLPTR[0] = 1: Most Significant
Byte of Program
Memory Word
The TBLRD instruction can modify the
value of TBLPTR as follows:
no change
post-increment
post-decrement
pre-increment
Words:
1
Cycles:
2
Q Cycle Activity:
Q1
Q2
Q3
Q4
Decode
No
operation
No
operation
No
operation
No
operation
No operation
(Read Program
Memory)
No
operation
No operation
(Write TABLAT)
TBLRD
Table Read (cont’d)
Example1:
TBLRD
*+ ;
Before Instruction
TABLAT
=
0x55
TBLPTR
=
0x00A356
MEMORY(0x00A356)
=
0x34
After Instruction
TABLAT
=
0x34
TBLPTR
=
0x00A357
Example2:
TBLRD
+* ;
Before Instruction
TABLAT
=
0xAA
TBLPTR
=
0x01A357
MEMORY(0x01A357)
=
0x12
MEMORY(0x01A358)
=
0x34
After Instruction
TABLAT
=
0x34
TBLPTR
=
0x01A358