English
Language : 

RFPIC12C509AG Datasheet, PDF (24/104 Pages) Microchip Technology – 18/20-Pin 8-Bit CMOS Microcontroller with UHF ASK/FSK Transmitter
rfPIC12C509AG/509AF
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.
EXAMPLE 4-1: INDIRECT ADDRESSING
• Register file 07 contains the value 10h
• Register file 08 contains the value 0Ah
• Load the value 07 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 = 08)
• 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 10h-1Fh
using indirect addressing is shown in Example 4-2.
EXAMPLE 4-2: HOW TO CLEAR RAM
USING INDIRECT
ADDRESSING
NEXT
CONTINUE
movlw
movwf
clrf
incf
btfsc
goto
0x10
FSR
INDF
FSR,F
FSR,4
NEXT
;initialize pointer
; to RAM
;clear INDF register
;inc pointer
;all done?
;NO, clear next
:
;YES, continue
The FSR is a 5-bit wide register. It is used in conjunc-
tion 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.
rfPIC12C509AG/509AF: Uses FSR<5>. Selects
between bank 0 and bank 1. FSR<7:6> is unimple-
mented, read as '1’.
FIGURE 4-7:
DIRECT/INDIRECT ADDRESSING
Direct Addressing
(FSR)
65
4 (opcode) 0
Indirect Addressing
6 5 4 (FSR) 0
bank select location select
00
00h
Data
0Fh
Memory(1) 10h
01
Addresses
map back to
addresses
in Bank 0.
bank location select
1Fh
3Fh
Bank 0 Bank 1
Note 1: For register map detail see Section 4.2.
DS70031A-page 22
Preliminary
© 2001 Microchip Technology Inc.