51单片机SP怎么赋值,能用'='么?我的想法是先定义一段内存,然后将SP移到起始地址,以便中断后
答案:2 悬赏:20
解决时间 2021-11-16 01:19
- 提问者网友:江山如画
- 2021-11-15 06:04
51单片机SP怎么赋值,能用'='么?我的想法是先定义一段内存,然后将SP移到起始地址,以便中断后,程序状态要存到这段单元
最佳答案
- 二级知识专家网友:你好陌生人
- 2021-11-15 06:49
可以的 但是只能把SP往后移动 因为程序先定义全局变量 然后定义SP起始地址 如果往前移动就和全局变量冲突了 但要是只能往后移动感觉就没什么意义了 除非你有更精细的处理
全部回答
- 1楼网友:输掉的尊严
- 2021-11-15 07:42
以51结尾的51单片机只有128byte内存,以52或更高结尾的则有256byte内存
在只有128byte内存的单片机里面定义过多的全局变量并且其中有指针变量的话,非常容易出现干扰到堆栈指针sp,导致程序异常。io接口只能通过直接访问高128字节才能写入或读出数值,无法通过指针等其他途径访问。所以当前情况很有可能是内存溢出导致单片机不断在重启。
当内存超过128yte的情况下在编译的时候编译器会提示内存不足。在256byte的单片机中可以通过idata使用高128byte内存,通常一些不常用的变量。
尽量使用局部变量提高内存使用效率
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯