English
Language : 

PIC18F2331_07 Datasheet, PDF (330/400 Pages) Microchip Technology – 28/40/44-Pin Enhanced Flash Microcontrollers with nanoWatt Technology, High Performance PWM and A/D
PIC18F2331/2431/4331/4431
TBLWT
Table Write
Syntax:
Operands:
Operation:
Status Affected:
Encoding:
Description:
[ label ] TBLWT ( *; *+; *-; +*)
None
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
None
0000
0000
0000
11nn
nn = 0 *
=1 *+
=2 *-
=3 +*
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 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
=
TBLPTR
=
HOLDING REGISTER
(0x00A356)
=
0x55
0x00A356
0xFF
After Instructions (table write completion)
TABLAT
= 0x55
TBLPTR
= 0x00A357
HOLDING REGISTER
(0x00A356)
= 0x55
Example 2:
TBLWT +*;
Before Instruction
TABLAT
=
TBLPTR
=
HOLDING REGISTER
(0x01389A)
=
HOLDING REGISTER
(0x01389B)
=
0x34
0x01389A
0xFF
0xFF
After Instruction (table write completion)
TABLAT
= 0x34
TBLPTR
= 0x01389B
HOLDING REGISTER
(0x01389A)
= 0xFF
HOLDING REGISTER
(0x01389B)
= 0x34
DS39616C-page 328
Preliminary
© 2007 Microchip Technology Inc.