English
Language : 

PIC16F526 Datasheet, PDF (22/122 Pages) Microchip Technology – 14-Pin, 8-Bit Flash Microcontroller
PIC16F526
4.8 Indirect Data 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.
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).
The FSR is an 8-bit wide register. It is used in
conjunction with the INDF Register to indirectly
address the data memory area.
The FSR<4:0> bits are used to select data memory
addresses 00h to 1Fh.
FSR<6:5> are the bank select bits and are used to
select the bank to be addressed (00 = Bank 0,
01 = Bank 1, 10 = Bank 2, 11 = Bank 3).
FSR<7> is unimplemented and read as ‘1’.
A simple program to clear RAM locations 10h-1Fh
using indirect addressing is shown in Example 4-1.
EXAMPLE 4-1:
HOW TO CLEAR RAM
USING INDIRECT
ADDRESSING
NEXT
MOVLW
MOVWF
CLRF
INCF
BTFSC
GOTO
CONTINUE
:
:
0x10
FSR
INDF
FSR,F
FSR,4
NEXT
;initialize pointer
;to RAM
;clear INDF
;register
;inc pointer
;all done?
;NO, clear next
;YES, continue
FIGURE 4-4:
DIRECT/INDIRECT ADDRESSING
Direct Addressing
(FSR)
(opcode)
65
43 2 10
Indirect Addressing
(FSR)
6 543 2 1 0
bank select location select
00
01
10
11
00h
bank
select
location select
Data
0Ch
Memory(1) 0Dh
0Fh
10h
Addresses map back to
addresses in Bank 0.
2Fh
4Fh
6Fh
1Fh
3Fh
5Fh
7Fh
Bank 0 Bank 1 Bank 2 Bank 3
Note 1: For register map detail see Figure 4-1.
DS41326D-page 22
 2010 Microchip Technology Inc.