Datasheet
PIC18FXX2
DS39564C-page 250 © 2006 Microchip Technology Inc.
TBLWT Table Write
Syntax: [
label
] TBLWT ( *; *+; *-; +*)
Operands: None
Operation: 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;
Status Affected: None
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 data is
written to. The 8 holding registers are
used to program the contents of Pro-
gram Memory (P.M.). See Section 5.0
for information on writing to 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
Words: 1
Cycles: 2
Q Cycle Activity:
Q1 Q2 Q3 Q4
Decode No
operation
No
operation
No
operation
No
operation
No
operation
(Read
TABLAT)
No
operation
No
operation
(Write to Holding
Register or Memory)
TBLWT Table Write (Continued)
Example1
:
TBLWT *+;
Before Instruction
TABLAT = 0x55
TBLPTR = 0x00A356
HOLDING REGISTER
(0x00A356) = 0xFF
After Instructions (table write completion)
TABLAT = 0x55
TBLPTR = 0x00A357
HOLDING REGISTER
(0x00A356) = 0x55
Example 2:
TBLWT +*;
Before Instruction
TABLAT = 0x34
TBLPTR = 0x01389A
HOLDING REGISTER
(0x01389A) = 0xFF
HOLDING REGISTER
(0x01389B) = 0xFF
After Instruction (table write completion)
TABLAT = 0x34
TBLPTR = 0x01389B
HOLDING REGISTER
(0x01389A) = 0xFF
HOLDING REGISTER
(0x01389B) = 0x34