历史上的今天
返回首页

历史上的今天

今天是:2024年11月19日(星期二)

正在发生

2018年11月19日 | 51单片机stack堆栈

2018-11-19 来源:eefocus

 一般编译器的堆栈用于保存局部变量、函数的参数、函数的返回值、中断上下文信息等。但Keil对局部变量、函数参数预先分配空间(放在静态全局变量区),Keil的堆栈只是用于保存函数嵌套调用的PC、中断上下文信息。


从主程序进入中断需要入栈字节数:13+PC=15 Byte(ACC,PSW,B,DPH,DPL,R0~R7)


Keil支持2级中断15×2=30 Byte。


主程序中每级调用需要消耗2字节保存PC,如调用深度6级,需要6×2=12字节堆栈空间。


Keil51 编译后会生成M51文件,查找?Stack地址,为堆栈起始地址,向上增长到0xff,溢出则导致单片机复位。


推荐阅读

史海拾趣

E-Z-HOOK公司的发展小趣事

在电子产品日益复杂化的背景下,E-Z-HOOK公司不断追求技术创新。他们投入大量资源研发新型测试工具,以提高测试效率和准确性。其中一项重要的创新是开发出了可重复使用的测试钩。这种测试钩具有极高的耐用性和可靠性,可以大大降低测试成本。此外,公司还推出了一系列智能化测试解决方案,通过集成先进的传感器和软件技术,实现了对测试过程的实时监控和数据分析。

艾迈斯(AMASS)公司的发展小趣事

在产品研发和技术创新的同时,艾迈斯(AMASS)公司也注重品牌建设和市场推广。公司积极参加各种行业展会和交流活动,与业界同行建立了广泛的合作关系。同时,艾迈斯还通过广告宣传、媒体报道等多种方式提升品牌知名度和影响力。这些努力使得艾迈斯在电子行业中的地位逐渐提升,成为了业内颇具影响力的品牌之一。

ARCOLECTRICSWITCHES公司的发展小趣事

在电子行业的初期,ARCOLECTRIC SWITCHES公司以其卓越的技术研发能力崭露头角。公司研发团队成功开发出一种新型开关技术,具有更高的稳定性和耐用性,迅速在市场上获得了广泛认可。这一技术突破不仅为公司带来了丰厚的利润,还奠定了其在电子行业的重要地位。随着技术的不断升级和完善,ARCOLECTRIC SWITCHES公司逐渐发展成为一家技术领先、市场影响力强大的企业。

方舟(ARKLED)公司的发展小趣事

方舟公司高度重视产品品质管理,从原材料采购到生产加工,再到成品检验,每一个环节都严格把关。公司引进了先进的生产设备和检测仪器,建立了完善的质量管理体系。通过ISO9001质量管理体系认证,方舟公司的产品质量得到了有效保障,赢得了客户的信赖和支持。

AnDAPT__Inc.公司的发展小趣事

方舟公司不仅关注经济效益,还积极履行社会责任。公司积极参与环保事业,推动绿色生产,减少能源消耗和废弃物排放。同时,方舟公司还关注社会公益事业,捐资助学、扶贫济困,为社会和谐发展贡献了一份力量。

Analog Modules Inc公司的发展小趣事

方舟公司不仅关注经济效益,还积极履行社会责任。公司积极参与环保事业,推动绿色生产,减少能源消耗和废弃物排放。同时,方舟公司还关注社会公益事业,捐资助学、扶贫济困,为社会和谐发展贡献了一份力量。

问答坊 | AI 解惑

混音器电路

这是网上找的一个二输入混音器电路,但是我在用MULTISIM模拟时发现,他好像不是把两个信号简单的叠加,似乎把其中一个信号反相后再叠加? 是这样么?原理是什么?…

查看全部问答>

交叉编译apache遇到的问题

网上流传的大都是关于apache1.3.39的交叉编译步骤,我下载的http-2.2.9,找到一个此版本的交叉编译方法:http://203.208.37.104/search?q=cache:hrIbS-XEbrYJ:blog.xuite.net/bunny/blog/19764280+srclib/apr+arm&cd=2&hl=zh-CN&ct=clnk&gl=cn&st_u ...…

查看全部问答>

DM9000用于嵌入式工控产品的问题

我的嵌入式产品用的DM9000a, 用一台电脑能ping 通(偶尔丢包),不断电情况下,切换成另一台电脑,有时能ping通,有时ping 不通,并且10M/100M以及LINK灯灭,怎么回事啊?谢谢 …

查看全部问答>

S3C2410触摸屏驱动移植遇到问题

在将CE6.0的触摸屏驱动移植到FS2410时,编译通过了,但却得不到有效的触摸信息。得到的部分调试信息如下:   11941 PID:400002 TID:b1000a RELFSD: Opening file FS2410Touch.dll from desktop PB Debugger Loaded symbols for \'C:\\W ...…

查看全部问答>

WinCE下如何判断一个程序是否已经运行?

参考了一些桌面上的方案,发现在CE4.2下面都用不了,要么是mutex函数不支持多个参数,要么就是用不了Process类,大家能不能帮忙想想办法啊,看怎么实现判断程序是否运行的效果,如果已经运行了就不要再运行。…

查看全部问答>

求教关于TIMERA的捕获问题

使用的芯片是413 采用TA1的捕获模式从P1.2口测量频率周期,在测试板上使用按键模拟待测脉冲信号,结果发现按一次键会发生很多次捕获中断,为查明中断源有查TAIV,结果令人差异。代码如下: #include "msp430x41x.h" unsigned int m=1,l=1,o=1 ...…

查看全部问答>

请问430的C语言指令,一条指令就是一个时钟周期吗?

请问MSP430F149的C语言指令,一条指令就是一个时钟周期吗? 如果用汇编语言来写,一条指令就是一个周期对吗? 如果采用8MHZ的主时钟,一条指令就是125ns对吗? 从MSP430F149输出的MCLK是TTL电平吗?如果驱动COMS的串行时钟输入端要加上拉电阻吗 ...…

查看全部问答>

关于ds18b20读写时序的控制

最近一直在做温度传感器ds18b20的读写控制,感觉读写时序已经没有问题了,但是读出的数据始终是0,希望好心哥哥指点一下啊,我用ise 平台,vhdl语言写的代码~~~~ 芯片手册看了几百次了~求助啊…

查看全部问答>

求lm3s811芯片ft2232烧录的驱动以及烧录软件

麻烦有的能给我发一份吗?谢谢了.愿长期想各位请教!704114178@qq.com…

查看全部问答>