PIC10F200/202/204/206
4.9
Indirect Data Addressing: INDF
and FSR Registers
EXAMPLE 4-1:
HOW TO CLEAR RAM
USING INDIRECT
ADDRESSING
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 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.
NEXT
MOVLW
MOVWF
CLRF
4.10
•
•
•
•
Indirect Addressing
Register file 09 contains the value 10h
Register file 0A contains the value 0Ah
Load the value 09 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 = 0A)
• 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-1.
INCF
BTFSC
GOTO
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.
Note:
PIC10F200/202/204/206 – Do not use
banking. FSR <7:5> are unimplemented
and read as ‘1’s.
FIGURE 4-6:
DIRECT/INDIRECT ADDRESSING (PIC10F200/202/204/206)
Direct Addressing
4
(opcode)
0
Indirect Addressing
4
(FSR)
0
Location Select
00h
Location Select
Data
Memory
(1)
0Fh
10h
1Fh
Bank 0
Note 1:
For register map detail, see
©
2007 Microchip Technology Inc.
DS41239D-page 23