Datasheet

Table Of Contents
PIC18FXX8
DS41159E-page 320 © 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 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.)
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.
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
TBLWT Table Write (Continued)
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)
Exa
mple 1: TBLWT *+;
Before Instruction
TABLAT = 0x55
TBLPTR = 0x00A356
HOLDING REGISTER
(0x00A356) = 0xFF
After Instructions (table write completion)
TABLAT = 0x55
TBLPTR = 0x00A357
HOLDING REGISTER
(0x00A356) = 0x55
Examp
le 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