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

上一篇:ATmega48 指令执行时序
下一篇:ATmega48 通用寄存器
史海拾趣
|
目前,安全和保密在多个市场领域中都成为差异化应用解决方案的重要部分。汽车行业也不例外。消费者的快速接受进一步促进了汽车行业中许多新兴热点应用的发展。安全和保密解决方案在消费市场和汽车市场之间提供了一个协作的桥梁。许多分析师都预测到 ...… 查看全部问答> |
|
在s3c2410板上学着移植2.6内核, 首先设置nand flash支持, 修改devs.c: 1: 建立flash 分区: static struct mtd_partiton partition_info={....}; 分为4个区: bootloader, kernel, root, user 2: 加入分区信息: struct s3c2410_nan ...… 查看全部问答> |
|
我现在的单片机需要连接到主机上,和主机之间进行通信,但没有串口,所以想通过usb转串口来实现,我需要写一个上位机程序,来完成主机和单片机之间的通信功能,首先我不确定上位机应该用usb通信协议吧?那usb通信协议和串口是不同的,usb当usb设备 ...… 查看全部问答> |
|
用VC编译驱动程序提示 "fatal error LNK1146: 没有用选项“/SECTION:”指定参数"该怎么解决? 用VC编译驱动程序提示 \"fatal error LNK1146: 没有用选项“/SECTION:”指定参数\"该怎么解决?我是新手,谁能帮帮我,急啊… 查看全部问答> |
|
(灯)LED 与PA相连 按钮(SW,一共四个按钮)与PB 相连 #define LED_MASK (LED1|LED2|LED3|LED4) #define SW_MASK (SW1_MASK|SW2_MASK|SW ...… 查看全部问答> |
|
关于现代nand flash的cache read操作的问题 请教大家一个关于现代nand flash的cache read操作的问题:资料中介绍说,采用cache read操作时可一次完成flash多块数据读取,而我在操作过程中(USB的DMA方式),出现了漏页数据现象,这是怎么回事?现代nand flash的cache read操作究竟是怎么一回 ...… 查看全部问答> |




