51单片机堆栈指针指向0xff是不是爆栈了?

用定时器T0扫描8个数码管动态显示,每中断1次,标志位加1,到07H归0,然后判断标志位是几,就扫描第几位数码管。(STC8C52单片机)用CJNE指令连续判断,下载到板... 用定时器T0扫描8个数码管动态显示,每中断1次,标志位加1,到07H归0,然后判断标志位是几,就扫描第几位数码管。(STC8C52单片机)
用CJNE指令连续判断,下载到板子上,运行不正常,只能扫描到第五位数码管,中断就停止了,我在keil里单步看了一下,每到中断扫描到第5位数码管然后执行中断子程序返回reti时,堆栈指针sp就突然指向了0xff,然后程序就不动了,我在堆栈初始化时设置的是30H。
补充一下,keil报错时显示
*** error 65: access violation at C:0x0004 : no 'execute/read' permission
展开
 我来答
zhxiufan
2017-06-11 · 知道合伙人软件行家
zhxiufan
知道合伙人软件行家
采纳数:14923 获赞数:38384
国家科技进步奖

向TA提问 私信TA
展开全部
你的中断服务程序可能有问题,压栈和出栈没有配对,这样多次中断后就造成堆栈溢出了。
追问
压栈和出栈是配对的,我细看了一下,感觉可能是keil软件默认的堆栈深度有问题,我用的是汇编语言,(不懂c),在程序开头初始化SP为60H,可是没有成功,仿真时,看到在执行中断服务程序时,SP指针从0x07总是不断减少,减少到0x01,就变成0xff,程序就执行不下去了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式