pic12f508/509/16f505
ds41236a-页 26
初步的
2004 微芯 技术 公司
4.9 间接的 数据 寻址: indf
和 fsr 寄存器
这 indf 寄存器 是 不 一个 物理的 寄存器.
寻址 indf 的确 地址 这 寄存器
谁的 地址 是 包含 在 这 fsr 寄存器 (fsr
是 一个
pointer
). 这个 是 间接的 寻址.
4.9.1 间接的 寻址
• 寄存器 文件 07 包含 这 值 10h
• 寄存器 文件 08 包含 这 值 0ah
• 加载 这 值 07 在 这 fsr 寄存器
• 一个 读 的 这 indf 寄存器 将 返回 这 值
的 10h
• increment 这 值 的 这 fsr 寄存器 用 一个
(fsr = 08)
• 一个 读 的 这 indr 寄存器 now 将 返回 这
值 的 0ah.
读 indf 它自己 indirectly (fsr =
0
) 将 生产
00h. writing 至 这 indf 寄存器 indirectly 结果 在 一个
非 运作 (虽然 状态 位 将 是 影响).
一个 简单的 程序 至 clear 内存 locations 10h-1fh
使用 间接的 寻址 是 显示 在 例子 4-1.
例子 4-1: 如何 至 clear 内存
使用 间接的
寻址
这 fsr 是 一个 5-位 宽 寄存器. 它 是 使用 在 conjunction
和 这 indf 寄存器 至 indirectly 地址 这 数据
记忆 范围.
这 fsr<4:0> 位 是 使用 至 选择 数据 记忆
地址 00h 至 1fh.
图示 4-7: 直接/间接的寻址 (pic12f508/509)
PIC12F508
– 做 不 使用 banking. fsr <7:5> 是
unimplemented 和 读 作 ‘
1
’s.
PIC12F509
– 使用 fsr<5>. 选择 在 bank 0
和 bank 1. fsr<7:6> 是 unimplemented, 读 作 ‘
1
’.
PIC16F505
– 使用 fsr<6:5>. 选择 从 bank 0 至
bank 3. fsr<7> 是 unimplemented, 读 作 ‘
1
’.
MOVLW 0x10 ;initialize pointer
MOVWF FSR ;至 内存
NEXT CLRF INDF ;clear indf
;寄存器
INCF fsr,f ;inc pointer
BTFSC fsr,4 ;所有 完毕?
GOTO NEXT ;非, clear next
CONTINUE
: ;yes, continue
:
便条 1:
为 寄存器 编排 detail, 看
部分 4.3 “data 记忆 organization”
.
2:
pic12f509.
Bank
location 选择
location 选择
bank 选择
间接的 寻址
直接 寻址
数据
记忆
(1)
0Fh
10h
bank 0 bank 1
(2)
0
4
5
6
(fsr)
00 01
00h
1Fh 3Fh
(opcode) 04
5
6
(fsr)
地址
编排 后面的 至
地址
在 bank 0.