ATmega48 堆栈指针

最新更新时间:2021-10-14来源: eefocus关键字:ATmega48  堆栈  指针 手机看文章 扫描二维码
随时随地手机看文章

堆栈指针主要用来保存临时数据、局部变量和中断/ 子程序的返回地址。堆栈指针总是指向堆栈的顶部。要注意AVR 的堆栈是向下生长的,即新数据推入堆栈时,堆栈指针的数值将减小。

堆栈指针指向数据SRAM 堆栈区。在此聚集了子程序堆栈和中断堆栈。ATMEGA48 在调用子程序和使能中断之前必须定义堆栈空间,且堆栈指针必须指向高于0xFF 的地址空间。使用PUSH指令将数据推入堆栈时指针减一;而子程序或中断返回地址推入堆栈时指针将减二。使用POP 指令将数据弹出堆栈时,堆栈指针加一;而用RET 或RETI 指令从子程序或中断返回时堆栈指针加二。

AVR的堆栈指针由I/O空间中的两个8位寄存器实现。实际使用的位数与具体器件有关。请注意某些AVR 器件的数据区太小,用SPL 就足够了。此时将不给出SPH 寄存器。


关键字:ATmega48  堆栈  指针 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic550531.html

上一篇:ATmega48 指令执行时序
下一篇:最后一页

推荐阅读

ATmega48 指令执行时序
Figure 6 说明了由Harvard 结构决定的并行取指和指令执行,以及可以进行快速访问的寄存器文件的概念。这是一个基本的流水线概念,性能高达1 MIPS/MHz,具有优良的性价比、功能/ 时钟比、功能/ 功耗比。Figure 7 演示的是ATmega48寄存器文件内部访问时序。在一个时钟周期里,ALU 可以同时对两个寄存器操作数进行操作,同时将结果保存到目的寄存器中去。
发表于 2021-10-14
<font color='red'>ATmega48</font> 指令执行时序
ATmega48 复位与中断处理
Flash的起始处。编程熔丝位BOOTRST也可以将复位向量移至引导Flash的起始处。具体参见P240“支持引导装入程序 – 在写的同时可以读(RWW,Read-While-Write) 的自我编程能力, ATmega88 与 ATmega168”。特别说明ATmega48是没有Boot 代码区。任一中断发生时全局中断使能位I 被清零,从而禁止了所有其他的中断。用户软件可以在中断程序里置位I 来实现中断嵌套。此时所有的中断都可以中断当前的中断服务程序。执行RETI 指令后I 自动置位。从根本上说有两种类型的中断。第一种由事件触发并置位中断标志。对于这些中断,程序计数器跳转到实际的中断向量以执行中断处理程序,同时硬件将清除相应的中断标志
发表于 2021-10-14
ATmega48 Flash程序存储器
系统内可编程的Flash 程序存储器ATmega48/88/168具有 4/8/16K 字节的在线编程 Flash,用于存放程序指令代码。因为所有的AVR指令为16 位或32 位,故而 Flash 组织成 2/4/8K x 16。 对于 ATmega88与ATmega168,用户程序的安全性要根据Flash程序存储器的两个区:引导(Boot)程序区和应用程序区分开来考虑。 ATmega48中没有分为引导程序区和应用程序区,SPM 指令可在整个Flash中执行。详见P235“存贮程序存储器(SPM)控制和状态寄存器 – SPMCSR” 与 P243 中 SPMEN 部分的描述。。Flash存储器至少可以擦写10,000次
发表于 2021-10-14
<font color='red'>ATmega48</font> Flash程序存储器
ATmega48 SRAM数据存储器
SRAM数据存储器Figure 10 给出了ATmega48/88/168 SRAM 空间的组织结构。ATmega48/88/168 是一个复杂的微控制器,其支持的外设要比预留的 64 个 I/O( 通过IN OUT 指令访问 ) 所能支持的要多。对于扩展的 I/O 0x60 - 0xFF 只能使用ST/STS/STD 和 LD/LDS/LDD 指令。前 768/1280/1280 个数据存储器包括了寄存器文件,I/O 存储器,扩展的 I/O 存储器以及数据 SRAM。起始的 32 个地址为寄存器文件,然后是 64 个 I/O 存储器,接着是 160 个扩展 I/O 存储器。最后是 512/1024/1024字节的数据 SRAM
发表于 2021-10-14
<font color='red'>ATmega48</font> SRAM数据存储器
ATmega48 EEPROM数据存储器
ATmega48/88/168包含256/512/512字节的EEPROM数据存储器。它是作为一个独立的数据 EEPROM 的寿命至少为 100,000 次擦除周期。 EEPROM 的访问由地址寄存器,数据寄存器和控制寄存器决定。具体的 SPI 及并行下载 EEPROM 数据请参见 P254“存储器编程”。EEPROM 读/ 写访问EEPROM 读/ 写访问EEPROM 的访问寄存器位于I/O 空间。EEPROM的写访问时间由Table 3给出。自定时功能可以让用户软件监测何时可以开始写下一字节。用户操作EEPROM 需要注意如下问题:在电源滤波时间常数比较大的电路中,上电/ 下电时VCC 上升/ 下降速度会比较慢。此时CPU
发表于 2021-10-14
<font color='red'>ATmega48</font> EEPROM数据存储器
ATmega16 堆栈指针
堆栈指针指向数据SRAM 堆栈区。在此聚集了子程序堆栈和中断堆栈。调用子程序和使能中断之前必须定义堆栈空间,且堆栈指针必须指向高于0x60 的地址空间。使用PUSH指令将数据推入堆栈时指针减一;而子程序或中断返回地址推入堆栈时指针将减二。使用POP 指令将数据弹出堆栈时,堆栈指针加一;而用RET 或RETI 指令从子程序或中断返回时堆栈指针加二。AVR的堆栈指针由I/O空间中的两个8位寄存器实现。实际使用的位数与具体器件有关。请注意某些AVR 器件的数据区太小,用SPL 就足够了。此时将不给出SPH 寄存器。
发表于 2021-10-11
ATmega16 堆栈<font color='red'>指针</font>
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2021 EEWORLD.com.cn, Inc. All rights reserved