历史上的今天
今天是:2024年11月26日(星期二)
2021年11月26日 | ATmega32 堆栈指针
2021-11-26 来源:eefocus
堆栈指针主要用来保存临时数据、局部变量和中断/ 子程序的返回地址。堆栈指针总是指向堆栈的顶部。要注意AVR 的堆栈是向下生长的,即新数据推入堆栈时,堆栈指针的数值将减小。
堆栈指针指向数据SRAM 堆栈区。在此聚集了子程序堆栈和中断堆栈。调用子程序和使能中断之前必须定义堆栈空间,且堆栈指针必须指向高于0x60 的地址空间。使用PUSH指令将数据推入堆栈时指针减一;而子程序或中断返回地址推入堆栈时指针将减二。使用POP 指令将数据弹出堆栈时,堆栈指针加一;而用RET 或RETI 指令从子程序或中断返回时堆栈指针加二。
AVR的堆栈指针由I/O空间中的两个8位寄存器实现。实际使用的位数与具体器件有关。请注意某些AVR 器件的数据区太小,用SPL 就足够了。此时将不给出SPH 寄存器。

上一篇:ATmega32 指令执行时序
下一篇:ATmega32 通用寄存器
史海拾趣
|
x-ctu的资料详细的谁有 我手上有个XBEE模块,DIGI的 然后如何配置成网络 是否只能1主多从 就是1COORDINATOR和多个ROUTER 有没有多个ROUTER不用COORDINATOR的 这样任意加入一个ROUTER就可以使用 任意一个ROUTER发的包其他的ROUTER都可以接收 ...… 查看全部问答> |
|
在一个文档里看见,LSB,MSB,和 lower significance bit. 这个lower significance bit不太明白,有清楚的大虾吗?在线等。… 查看全部问答> |
|
一个关于avrstudio和GCCAVR的奇怪问题,请大家帮帮我! 大家好: 我现在用的Atmel16单片机,开发软件是基于avrstudio和GCCAVR,我在调试以下程序时,提示:“Conflicting the type of wr(void)”的错误! void mian(void) { unsi ...… 查看全部问答> |
|
STM32F103VBT6PB15,PB14,PB13,PB12不输出 请朋友们给指点一下,我的设置如下: /* RCC system reset(for debug purpose) */ RCC_DeInit(); //RCC_LSICmd(ENABLE); //内部时钟开启 /* Enable HSE */ RCC_HSEConfig(RCC_HSE_ON); ...… 查看全部问答> |
|
SW-LM3S-8264软件包已支持中文显示,在DK-LM3S9B96上实验例程,StellarisWare\\third_party\\fonts\\lang_demo The lang_demo example application has been updated to include support for accented characters in German and Spanish strings ...… 查看全部问答> |




