程序为什么总跑飞?

wuchunling 2003-06-05 11:33:43
KEYUP1: LCALL DEL20ms
JB 02H,KEYOUT
LJMP INCSTEP
比如上面这段程序
每次执行到LCALL DEL20ms 时 ,程序就跑飞了,而有时就没问题,可正常执行,为什么?
还有,在子程序中要用到别的子程序,是不是不可用 LJMP 指令跳转,而应该用LCALL 指令调用?
请各位指教!!
...全文
373 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
是不是你的 DEL20ms

根本就没有
pchia 2003-06-08
  • 打赏
  • 举报
回复
你的仿真器可以看到堆栈么??无论有没有,,在DEL20ms前后将堆栈读入一个区块RAM,用来作为调试用
pchia 2003-06-08
  • 打赏
  • 举报
回复
在DEL20ms程序里的RET前面加三个NOP,在中间哪个NOP设置中断,看看到底什么原因
wawa14 2003-06-06
  • 打赏
  • 举报
回复
堆栈出错了,我碰到过类似情况,一般来说,程序的第一句话就应该设置好堆栈的起点,调用子程序当然用lcall了!
abei11 2003-06-06
  • 打赏
  • 举报
回复
没见过,可能硬件和软件都可能有问题,一个一个排除!
jack2004 2003-06-06
  • 打赏
  • 举报
回复
看看你的仿真机与板的联接线吧,最大可能是联接线的总是了。
zys0001 2003-06-05
  • 打赏
  • 举报
回复
按我的猜测,可能是使用LJMP造成的,可试一将LJMP改成LCALL。原因是在调用子程序时有压栈,退出子程序时有退栈,而你在调用子程序时用LJMP,跳转指令不压栈。当你调用的字里行间程序退出时,就退掉了不该退的栈数据,从而引起程序的跳飞。程序跳飞一般的原因都是由于堆栈产生的,比如是压栈指针没设合理,也会出现同样的问题。
syl79 2003-06-05
  • 打赏
  • 举报
回复
可能是硬件问题。如果要调用子程序,则应该用acall或lcall指令。
CrazyGentleman 2003-06-05
  • 打赏
  • 举报
回复
不是程序问题
调试工具的问题,注意相关设置选项
pdy11 2003-06-05
  • 打赏
  • 举报
回复
我感觉也应该是仿真器的事 就是你的程序没有设置好
aww111 2003-06-05
  • 打赏
  • 举报
回复
我和zys0001想法一样。


























27,382

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧