
PIC18F1230/1330
2009 Microchip Technology Inc.
DS39758D-page 253
TBLRD
Table Read
Syntax:
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 contents
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 (Continued)
Example 1:
TBLRD
*+ ;
Before Instruction
TABLAT
=
55h
TBLPTR
=
00A356h
MEMORY (00A356h)
=
34h
After Instruction
TABLAT
=
34h
TBLPTR
=
00A357h
Example 2:
TBLRD
+* ;
Before Instruction
TABLAT
=
AAh
TBLPTR
=
01A357h
MEMORY (01A357h)
=
12h
MEMORY (01A358h)
=
34h
After Instruction
TABLAT
=
34h
TBLPTR
=
01A358h