lscaa 发表于 3 天前

AI8051U 使用USB-Link1D, SWD, 600KHz进行仿真, 问题求解决

我使用的是 USB-Link1D, SWD, 600KHz进行仿真,
在仿真界面点击运行之后,再点击停止,会发现仿真界面执行到一个奇怪的地址处
如果一直运行,不点击停止,程序就能正常运行,如果这样的话那我还怎么检查程序问题?
该如何解决?

有KEIL仿真界面出错的截图

王昱顺 发表于 前天 18:28

这种通常是程序跑飞,一般是因为程序中存在了数组越界或者除0等错误,此时运行指针就会乱跑然后复位,因为内部的仿真功能其实也是程序的一部分,所以单片机的运行指针乱掉了就会出现这种通信错误。
亦或者使用了C251的情况下,也有可能是由这种情况引起的复位:https://www.stcaimcu.com/thread-15631-1-1.html

lscaa 发表于 昨天 09:03

王昱顺 发表于 2025-6-15 18:28
这种通常是程序跑飞,一般是因为程序中存在了数组越界或者除0等错误,此时运行指针就会乱跑然后复位,因为 ...

但是我有一个程序没有访问任何扩展寄存器,仿真的时候随便你怎么运行和停止,都不会出问题,我这个程序与之前程序的唯一区别就是使用了扩展寄存器,仿真有问题,不仿真能正常运行

王昱顺 发表于 昨天 10:07

lscaa 发表于 2025-6-16 09:03
但是我有一个程序没有访问任何扩展寄存器,仿真的时候随便你怎么运行和停止,都不会出问题,我这个程序与 ...

那么很有可能是出现了打开了中断但是没有编写对应的中断函数,这样也会导致运行的指针跑飞
你可以着重检查一下这个部分

lscaa 发表于 昨天 15:16

王昱顺 发表于 2025-6-16 10:07
那么很有可能是出现了打开了中断但是没有编写对应的中断函数,这样也会导致运行的指针跑飞
你可以着重检 ...

检查了,没开启中断,只是一个很简易的PWM程序,控制核心板的P2.0和P2.1上的LED

王昱顺 发表于 昨天 16:26

lscaa 发表于 2025-6-16 15:16
检查了,没开启中断,只是一个很简易的PWM程序,控制核心板的P2.0和P2.1上的LED ...

可以将程序发出来我测试一下吗?
还有,可以更新到最新的STC-ISP后,使用这个按钮更新一下仿真器的驱动,可能会存在老版本有BUG的情况的



页: [1]
查看完整版本: AI8051U 使用USB-Link1D, SWD, 600KHz进行仿真, 问题求解决