共2条
1/1 1 跳转至页
问
用32K的单片机写比较大的程序时,大侠们一般把堆栈指针初始化为多少呢
我的程序在子程序调用前和子程序里面的数值不一样,会不会是堆栈的问题呢?
Display_Char(cYear_L,0);
Display_Char(cYear_H,0);
Display_Char(Date_BD.cYear,0);
Display_Char(Date_BD.cMonth,0);
Display_Char(Date_BD.cDay,1);
Update_System();
void Update_System(void)
{
Uart_Tran("BD:");
Display_Char(cYear_L,0);
Display_Char(cYear_H,0);
Display_Char(Date_BD.cYear,0);
Display_Char(Date_BD.cMonth,0);
Display_Char(Date_BD.cDay,1);
bFlag_UpdateToClock = 0;
} 答 1: 急难道大家没有碰到过这个问题吗 答 2: 32K的RAM还是ROMROM好像不能这样玩吧?
51的SP只是8位,不能跑出FF的。再说你不要这么多次的调用吧?如果是一些数据的话你自己重建个栈吧 答 3: 是ROM的51谢谢楼上
一般把SP都初始化为多少呢?
其实我的程序没有几层调用,我就是怕堆栈有问题,可是现在的现象似乎就是堆栈出错了,哈哈。
有那位好心人帮帮小弟了,谢谢
我的程序在子程序调用前和子程序里面的数值不一样,会不会是堆栈的问题呢?
Display_Char(cYear_L,0);
Display_Char(cYear_H,0);
Display_Char(Date_BD.cYear,0);
Display_Char(Date_BD.cMonth,0);
Display_Char(Date_BD.cDay,1);
Update_System();
void Update_System(void)
{
Uart_Tran("BD:");
Display_Char(cYear_L,0);
Display_Char(cYear_H,0);
Display_Char(Date_BD.cYear,0);
Display_Char(Date_BD.cMonth,0);
Display_Char(Date_BD.cDay,1);
bFlag_UpdateToClock = 0;
} 答 1: 急难道大家没有碰到过这个问题吗 答 2: 32K的RAM还是ROMROM好像不能这样玩吧?
51的SP只是8位,不能跑出FF的。再说你不要这么多次的调用吧?如果是一些数据的话你自己重建个栈吧 答 3: 是ROM的51谢谢楼上
一般把SP都初始化为多少呢?
其实我的程序没有几层调用,我就是怕堆栈有问题,可是现在的现象似乎就是堆栈出错了,哈哈。
有那位好心人帮帮小弟了,谢谢
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
vscode+cmake搭建雅特力AT32L021开发环境被打赏30分 | |
【换取逻辑分析仪】自制底板并驱动ArduinoNanoRP2040ConnectLCD扩展板被打赏47分 | |
【分享评测,赢取加热台】RISC-V GCC 内嵌汇编使用被打赏38分 | |
【换取逻辑分析仪】-基于ADI单片机MAX78000的简易MP3音乐播放器被打赏48分 | |
我想要一部加热台+树莓派PICO驱动AHT10被打赏38分 | |
【换取逻辑分析仪】-硬件SPI驱动OLED屏幕被打赏36分 | |
换逻辑分析仪+上下拉与多路选择器被打赏29分 | |
Let'sdo第3期任务合集被打赏50分 | |
换逻辑分析仪+Verilog三态门被打赏27分 | |
换逻辑分析仪+Verilog多输出门被打赏24分 |