newlined
发表于 2024-4-9 11:45:00
8051启蒙者 发表于 2024-4-8 17:24
STC32G12K128系列芯片制作成串口和USB仿真芯片后, 必须使用USB下载才能恢复正常下载
否则会出现"硬件选项 ...
谢谢你您的回复,按照这个办法,现在可以了
newlined
发表于 2024-4-9 11:50:06
国学芯用 发表于 2024-4-7 17:05
你的表述不够详细,可以打包传上来,大家一起帮你分析
试验箱重新设置成硬件仿真后,我把一些不必要的程序删除后,硬件仿真可以对P2口操作了,因为这是程序的开始,前边只是执行了定时器的初始化,我怀疑是定时器的运行影响了P2口的操作,我回头再试下,谢谢。
newlined
发表于 2024-4-9 14:36:56
国学芯用 发表于 2024-4-7 17:05
你的表述不够详细,可以打包传上来,大家一起帮你分析
版主您好:程序我只取了重点部分,现在又出现新的问题,程序乱跑,也请大家一起看看,谢谢。
$include (STC32G.INC)
ORG 0000H
LJMP INIT
ORG 0100H
INIT:
MOV 20H,#0
MOV 21H,#0
MOV 22H,#0
MOV 23H,#0
MOV 24H,#0
MOV 25H,#0
MOV 26H,#0
MOV 27H,#0
MOV 28H,#0
MOV P0,#10100110B
MOV P1,#00000011B
MOV P2,#11100001B
MOV P3,#00111100B
MOV P4,#00000000B
MOV P5,#00001111B
MAIN: INC A
LJMP MAIN
END
设置实验板为硬件模式后,在Keil C中进入硬件仿真模式,这是刚进入仿真模式的图片,可以看到指示要执行的语句箭头在第3行,这时对的
newlined
发表于 2024-4-9 14:39:12
本帖最后由 newlined 于 2024-4-9 14:51 编辑
点击单步执行一次后,我以为指示运行语句的箭头应该在第6行,却跑到了第14行,如下图
newlined
发表于 2024-4-9 14:40:31
再按一次单步执行,到第15行,这应该是对的
newlined
发表于 2024-4-9 14:44:30
再按一次单步执行,箭头就停在15行不动了,大约过了1分钟,箭头跑到了第19行
newlined
发表于 2024-4-9 14:50:33
再按单步执行,好像跑到了第10行,左边的一些寄存器的值也变了,再按单步执行,程序好像就乱跑了。
newlined
发表于 2024-4-9 14:54:59
硬件仿真以前没有认真用过,请大家看看问题出在哪里?谢谢。
AI芯
发表于 2024-4-9 15:38:13
【仿真】仿真注意事项总结 | 大家帮继续总结
鉴于部分坛友在仿真过程中会遇到仿真失败的问题,总结可能导致的原因如下:
1.制作完仿真芯片后没有重新给 MCU 进行上电复位,就开始仿真。
制作完仿真芯片后必须停电再上电,新的设置项[仿真芯片]才会生效
2.如果使用 U8W/U8W -Mini 进行仿真的话,需要先设置“直通模式” ,
具体方法参考官网https://www.stcai.com/gjrj 工具使用说明5.9 章节介绍。
3.仿真程序不能使用 P3.0/P3.1 口。仿真监控程序占用 P3.0/P3.1 口,但不占用串口 1,用户可以将串口 1 切换到其它通道再使用。
4.仿真监控程序占用内部扩展 RAM(XDATA)的最后 768 字节,如果程序使用 XDATA+768 字节大于芯片 XDATA 的上限,也会出错。
5.不能仿真时钟/复位相关的功能。例如程序里面不能修改系统时钟频率,不能开启看门狗,不能进入休眠/空闲模式。
6.P3.0/P3.1 口数据受到干扰。 仿真通过 P3.0/P3.1 口与 KEIL 驱动进行通信, 如果数据受到干扰会导致仿真出错。故障排查参考:
1)使用优质的 USB 线、串口工具与目标板连接线;
2)P3.0/P3.1 口外围电路上不要接影响通信的元器件;
3)如果使用台式机的话,连接机箱背后的 USB 接口,尽量不要使用延长线;
4)板子上如果有电机等干扰比较大的器件,仿真之前先断开。
7. 如果不是用STC-USB Link1D进行SWD仿真 ,那么不能进行 单步仿真 DPTR。
8. 使用串口或USB仿真时,当停止运行用户代码时,定时器0~4会全部停止。此时和定时器相关的硬件都会停止,
包括串口时钟、定时器中断、定时器时钟输出等。
9.芯片的时钟不能在仿真的时候(Keil中)修改,如果需要设置时钟的话,可以在烧录时通过硬件选项进行设置。
newlined
发表于 2024-4-9 16:13:10
我用试验箱的例程10,仿真,看起来程序不乱跑,难道那个小程序有问题吗?