访问手机版页面
你的位置:老古开发网 > 其他 > 正文  
学习AVR(八)堆栈指针
内容导读:

堆栈主要用于储存临时数据、本地变量和中断、子程序调用产生后的返回地址。堆栈指针寄存器通常指向堆栈的顶部。注意堆栈的执行是从较高的存储器地址到较低的存储器地址。也就是说,一条堆栈PUSH命令会使堆栈指针减小。

堆栈指针指向数据SRAM堆栈区域中子程序和中断堆栈被定位的位置。在任何子程序被调用或中断被使能之前,位于数据SRAM中的这一堆栈空间必须由程序定义好。堆栈指针必须被设在0x60之上。当使用PUSH指令向堆栈中压入一个数据时,堆栈指针自动减1;而当返回地址被子程序调用或中断压入堆栈时,堆栈指针自动减2。当使用POP指令把一个数据从堆栈中弹出时,堆栈指针自动加1;而由子程序的RET或中断程序的RETI弹出数据时,堆栈指针自动加2。

AVR堆栈指针是位于I/O空间的两个8位寄存器。确切使用的位数取决于实际情况。注意,在一些AVR架构的实现中数据空间非常小,所以只需要使用SPL。这种情况下,SPH寄存器将不存在。


标签:
来源: 作者: 时间:2006/9/25 16:50:53
相关阅读
推荐阅读
阅读排行
最近更新
商品推荐