English
Language : 

PIC18F6520-I Datasheet, PDF (300/380 Pages) Micrel Semiconductor – 64/80-Pin High-Performance, 256 Kbit to 1 Mbit Enhanced Flash Microcontrollers with A/D
PIC18F6520/8520/6620/8620/6720/8720
TBLWT
Table Write
Syntax:
Operands:
[ label ] TBLWT ( *; *+; *-; +*)
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
Decode
No
operation
No
operation
No
operation
(Read
TABLAT)
No
operation
No
operation
Q4
No
operation
No
operation
(Write to
Holding
Register )
Example 1:
TBLWT *+;
Before Instruction
TABLAT
=
TBLPTR
=
HOLDING REGISTER
(0x00A356)
=
0x55
0x00A356
0xFF
After Instructions (table write completion)
TABLAT
=
TBLPTR
=
HOLDING REGISTER
(0x00A356)
=
0x55
0x00A357
0x55
Example 2:
TBLWT +*;
Before Instruction
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
0xFF
0x34
DS39609B-page 298
 2004 Microchip Technology Inc.