PIC18F2331/2431/4331/4431
TBLWT
Table Write
TBLWT Table Write (Continued)
Syntax:
[ label ] TBLWT ( *; *+; *-; +*)
Words:
Cycles:
1
2
Operands:
Operation:
None
if TBLWT*,
Q Cycle Activity:
Q1
(TABLAT) Holding Register,
TBLPTR – No Change;
if TBLWT*+,
Q2
Q3
Q4
Decode
No
No
No
operation
operation
operation
(TABLAT) Holding Register,
(TBLPTR) + 1 TBLPTR;
if TBLWT*-,
(TABLAT) Holding Register,
(TBLPTR) – 1 TBLPTR;
if TBLWT+*,
No
operation
No
operation
(Read
No
operation
No
operation
(Write to
Holding
Register )
TABLAT)
(TBLPTR) + 1 TBLPTR,
(TABLAT) Holding Register
Example 1:
TBLWT *+;
Status Affected: None
Before Instruction
TABLAT
=
0x55
Encoding:
0000
0000
0000
11nn
nn = 0 *
=1 *+
TBLPTR
HOLDING REGISTER
(0x00A356)
=
0x00A356
=
0xFF
=2 *-
=3 +*
After Instructions (table write completion)
TABLAT
TBLPTR
HOLDING REGISTER
(0x00A356)
=
=
0x55
0x00A357
Description:
This instruction uses the 3 LSBs of
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 8.0 “Flash Pro-
gram 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-Mbyte address range.
The LSb of the TBLPTR selects which
byte of the program memory location to
access.
=
0x55
Example 2:
Before Instruction
TBLWT +*;
TABLAT
TBLPTR
HOLDING REGISTER
(0x01389A)
HOLDING REGISTER
(0x01389B)
=
=
0x34
0x01389A
=
=
0xFF
0xFF
After Instruction (table write completion)
TABLAT
TBLPTR
HOLDING REGISTER
(0x01389A)
HOLDING REGISTER
(0x01389B)
=
=
0x34
0x01389B
TBLPTR[0] = 0: Least Significant Byte
of Program Memory
Word
=
=
0xFF
0x34
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
DS39616D-page 322
2010 Microchip Technology Inc.