老古开发网首页
导航:老古开发网首页文章索引文章分类单片机→[学习AVR(八)堆栈指针]
| -文章搜索 - 最新文章 - |

学习AVR(八)堆栈指针

发布时间:2006年7月13日 点击次数:1017
来源:   作者:
 

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

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

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



欢迎进入老古论坛进行讨论
[单片机] 相关文章:
学习AVR(十) 复位和中断处理
简介:
AVR提供了几种不同的中断源。这些中断和复位向量在程序存储器空间内都有自己单独的程序向量。所有中断都被分配一个私有的使能位,要想使能某一中断,就要向其使能位写入逻辑1,而且要把状态寄存器中的全局中断使能位置1。 程序存储器空间最低的一些地址,被默认定义为复位和中断向量。完整的向量列表见“中断”部分。该列表也决定了不同中断的优先级。地址越小,优先级越高。RESET具有最高的优先级,其次是INT0——外部中断请求0。详细讨论见“中断”部分。 当某个中断产生时,全局中断使能位I被清零,所有中断都被禁止。用户程序可以向I......

PC与单片机USB(D12)数据通讯过程描述 (转)
[转载]单片机硬件系统设计原则
(转)XD5101实验三----按键计数(lcd显示)
RTX51的单片机软件设计
A51 2.2 CPU寄存器
A51 2.2.1 8051版的CPU寄存器
24C512程序
A51 2.2.2 英特尔/爱特梅尔WM251的CPU寄存器
(转)XD5101实验二----按键计数(led显示)
 
下一个:[单片机]学习AVR(九) 指令执行的时序
简介:
(罗亩按:这也许是AVR最精彩的地方,采用Harvard架构大大提升了程序执行的速度。) 该部分对指令执行的一般访问时序作了讲解。AVR CPU由CPU时钟clkCPU驱动,clkCPU直接由为芯片所选的时钟源产生。片内没有使用时钟分频电路。 图6所示为并行的指令读取和指令执行,源于Harvard架构和快速访问寄存器堆的概念。这是基本的流水操作的概念,最高可以获得1MIPS/MHz (每兆Hz每秒百万条指令)的执行速度,相应的可以实现单位成本、单位时钟和单位功率功能的最优化。 图6. 并行的指令读取和指令执行 图7所示为寄存器堆的中断时序概念。在一个单时......
 

上一个:[单片机]A51 3.3 符号

老古开发网版权所有 2006年9月 asp.Net V2.0 设计:老古
页面缓存:10分钟 执行时间:31毫秒