
PIC18F2480/2580/4480/4580
DS39637A-page 400
Preliminary
2004 Microchip Technology Inc.
TBLWT
TBLWT
Table Write
Syntax:
Operands:
Operation:
TBLWT ( *; *+; *-; +*)
None
if TBLWT*,
(TABLAT)
→
Holding Register;
TBLPTR – No Change;
if TBLWT*+,
(TABLAT)
→
Holding Register;
(TBLPTR) + 1
→
TBLPTR;
if TBLWT*-,
(TABLAT)
→
Holding Register;
(TBLPTR) – 1
→
TBLPTR;
if TBLWT+*,
(TBLPTR) + 1
→
TBLPTR;
(TABLAT)
→
Holding Register;
None
Status Affected:
Encoding:
0000
0000
0000
11nn
nn=0 *
=1 *+
=2 *-
=3 +*
Description:
This instruction uses the 3 LSBs of the
TBLPTR to determine which of the
8 holding registers the TABLAT is written to.
The holding registers are used to program
the contents of Program Memory (P.M.).
(Refer to
Section 6.0 “Flash Program
Memory”
for additional details on
programming Flash memory.)
The TBLPTR (a 21-bit pointer) points to
each byte in the program memory. TBLPTR
has a 2-MBtye address range. The LSb of
the TBLPTR selects which byte of the
program memory location to access.
TBLPTR[0] =
0
: Least Significant Byte
of Program Memory
Word
TBLPTR[0] =
1
: Most Significant Byte of
Program Memory Word
The
TBLWT
instruction can modify the
value of TBLPTR as follows:
no change
post-increment
post-decrement
pre-increment
1
2
Words:
Cycles:
Q Cycle Activity:
Q1
Q2
No
Q3
No
Q4
No
Decode
operation
No
operation
(Read
TABLAT)
operation
No
operation
operation
No
operation
(Write to
Holding
Register )
No
operation
Table Write (Continued)
Example 1:
TBLWT *+;
Before Instruction
TABLAT
TBLPTR
HOLDING REGISTER
(00A356h)
After Instructions (table write completion)
TABLAT
TBLPTR
HOLDING REGISTER
(00A356h)
=
=
55h
00A356h
=
FFh
=
=
55h
00A357h
=
55h
Example 2:
TBLWT +*;
Before Instruction
TABLAT
TBLPTR
HOLDING REGISTER
(01389Ah)
HOLDING REGISTER
(01389Bh)
After Instruction (table write completion)
TABLAT
TBLPTR
HOLDING REGISTER
(01389Ah)
HOLDING REGISTER
(01389Bh)
=
=
34h
01389Ah
=
FFh
=
FFh
=
=
34h
01389Bh
=
FFh
=
34h