English
Language : 

PIC16F716-I Datasheet, PDF (20/136 Pages) Microchip Technology – 8-bit Flash-based Microcontroller with A/D Converter and Enhanced Capture/Compare/PWM
PIC16F716
2.5 Indirect Addressing, INDF and
FSR Registers
The INDF register is not a physical register. Addressing
INDF actually addresses the register whose address is
contained in the FSR register (FSR is a pointer). This is
indirect addressing.
EXAMPLE 2-1: INDIRECT ADDRESSING
• Register file 05 contains the value 10h
• Register file 06 contains the value 0Ah
• Load the value 05 into the FSR register
• A read of the INDF register will return the value of
10h
• Increment the value of the FSR register by one
(FSR = 06)
• A read of the INDR register now will return the
value of 0Ah.
Reading INDF itself indirectly (FSR = 0) will produce
00h. Writing to the INDF register indirectly results in a
no-operation (although Status bits may be affected).
A simple program to clear RAM locations 20h-2Fh
using indirect addressing is shown in Example 2-2.
EXAMPLE 2-2:
HOW TO CLEAR RAM
USING INDIRECT
ADDRESSING
NEXT
CONTINUE
MOVLW
MOVWF
CLRF
INCF
BTFSS
GOTO
:
0x20
FSR
INDF
FSR
FSR,4
NEXT
;initialize pointer
;to RAM
;clear RAM & FSR
;inc pointer
;all done?
;no, clear next
;yes, continue
An effective 9-bit address is obtained by concatenating
the 8-bit FSR register and the IRP bit of the STATUS
register, as shown in Figure 2-4. However, IRP is not
used in the PIC16F716.
FIGURE 2-4:
DIRECT/INDIRECT ADDRESSING
Direct Addressing
RP1:RP0 6
from opcode
0
(2)
Indirect Addressing
IRP
7
(2)
FSR register
0
bank select location select
00
00h
01
80h
10
100h
11
180h
bank select
location select
Data
Memory(1)
(3)
(3)
7Fh
FFh
17Fh
1FFh
Bank 0 Bank 1 Bank 2 Bank 3
Note 1:
2:
3:
For register file map detail see Figure 2-2.
Maintain clear for upward compatibility with future products.
Not implemented.
DS41206B-page 18
© 2007 Microchip Technology Inc.