Datasheet

PIC18F6525/6621/8525/8621
DS39612C-page 314 2003-2013 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 5.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-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 )
Example 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
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