10
atmega16(l)
2466e–avr–10/02
堆栈 pointer
这 堆栈 是 mainly 使用 为 storing temporary 数据, 为 storing local 变量 和 为
storing 返回 地址 之后 中断 和 子例程 calls. 这 堆栈 pointer regis-
ter 总是 点 至 这 顶 的 这 堆栈. 便条 那 这 堆栈 是 执行 作 growing
从 高等级的 记忆 locations 至 更小的 记忆 locations. 这个 implies 那 一个 堆栈
推 command 减少 这 堆栈 pointer.
这 堆栈 pointer 点 至 这 数据 sram 堆栈 范围 在哪里 这 子例程 和 inter-
rupt stacks 是 located. 这个 堆栈 空间在 这 数据 sram 必须 是 定义 用 这
程序 在之前 任何 子例程 calls 是 executed 或者 中断 是 使能. 这 堆栈
pointer 必须 是 设置 至 要点 在之上 $60. 这 堆栈 pointer 是 decremented 用 一个 当
数据 是 pushed 面向 这 堆栈 和 这 推 操作指南, 和 它 是 decremented 用 二
当 这 返回 地址 是 pushed 面向 这 堆栈 和 子例程 call 或者 中断. 这
堆栈 pointer 是 incremented 用 一个 当 数据 是 popped 从 这 堆栈 和 这 流行音乐
操作指南, 和 它 是 incremented 用 二 当 数据 是 popped 从 这 堆栈 和 返回
从 子例程 ret 或者 返回 从 中断 reti.
这 avr 堆栈 pointer 是 执行 作 二 8-位 寄存器 在 这 i/o 空间. 这 num-
ber 的 位 的确 使用 是 implementation 依赖. 便条 那 这 数据 空间 在 一些
implementations 的 这 avr architecture 是 所以 小 那 仅有的 spl 是 需要. 在 这个
情况, 这 sph 寄存器 将 不 是 呈现.
位 151413121110 9 8
SP15 SP14 SP13 SP12 SP11 SP10 SP9 SP8 SPH
SP7 SP6 SP5 SP4 SP3 SP2 SP1 SP0 SPL
76543210
读/写 r/w r/w r/w r/w r/w r/w r/w r/w
r/w r/w r/w r/w r/w r/w r/w r/w
最初的 value00000000
00000000