PIC16CE62X
ds40182a-页 20
初步的
1998 微芯 技术 公司
4.3 pcl 和 pclath
这 程序 计数器 (pc) 是 13-位 宽. 这 低 字节
comes 从 这 pcl 寄存器, 这个 是 一个 readable 和
writable 寄存器. 这 高 字节 (pc<12:8>) 是 不 直接地
readable 或者 writable 和 comes 从 pclath. 在 任何
重置, 这 pc 是 cleared. 图示 4-12 显示 这 二
situations 为 这 加载 的 这 pc. 这 upper 例子 在
这 figure 显示 如何 这 pc 是 承载 在 一个 写 至 pcl
(pclath<4:0>
→
pch). 这 更小的 例子 在 这 figure
shows 如何 这 pc 是 承载 在 一个
CALL
或者
GOTO
instruction (pclath<4:3>
→
pch).
图示 4-12: 加载 的 pc 在
不同的 situations
4.3.1 计算 goto
一个 计算 goto 是 accomplished 用 adding 一个
补偿 至 这 程序 计数器 (
addwf pcl
).当 做
一个 表格 读 使用 一个 计算 goto 方法, 小心
应当 是 exercised 如果 这 表格 location crosses 一个 pcl
memory boundary (各自 256 字节 块). 谈及 至 这
应用 便条
“implementing 一个 表格 读"
(an556).
PC
12 8 7 0
5
pclath<4:0>
PCLATH
Instr
uction 和
alu 结果
goto, call
opcode <10:0>
8
PC
12 11 10 0
11
pclath<4:3>
PCH PCL
8 7
2
PCLATH
PCH PCL
pcl 作
Destination
4.3.2 堆栈
这PIC16CE62Xfamily 有 一个 8 水平的 深的 x 13-位
宽 硬件 堆栈 (图示 4-2 和 图示 4-3). 这
stack 空间 是 不 部分 的 也 程序 或者 数据 空间
和 这 堆栈 pointer 是 不 readable 或者 writable. 这
pc 是 pushed 面向 这 堆栈 当 一个
CALL
操作指南
是 executed 或者 一个 中断 导致 一个 branch. 这 堆栈
是 poped 在 这 事件 的 一个
返回, retlw
或者 一个
RETFIE
instruction 执行. pclath 是 不 影响 用 一个
推 或者 流行音乐 运作.
这 堆栈 运作 作 一个 圆形的 缓存区. 这个 意思 那
之后 这 堆栈 有 被 pushed 第八 时间, 这 ninth
推 overwrites 这 值 那 是 贮存 从 这 first
推. the tenth 推 overwrites 这 第二 推 (和
所以 在).
便条 1:
那里 是 非 状态 位 至 表明
stack overflow 或者 堆栈 underflow
情况.
便条 2:
那里 是 非 操作指南 mnemonics
called 推 或者 流行音乐. 这些 是 actions
那出现 从 这 执行 的 这
CALL, 返回, retlw
和
RETFIE
说明, 或者 这 vectoring 至 一个
interrupt 地址.
62x.bk 页 20 tuesday, march 10, 1998 3:40 pm