标题: 调试单片机程序是用仿真好还是烧写好? [打印本页]

作者: mengsiu    时间: 2021-11-25 20:55
标题: 调试单片机程序是用仿真好还是烧写好?
我现在用的是STC的单片机,调试时是用芯片的仿真好还是直接烧写程序好?先分析一下两种方法的差异:
直接烧写程序:
STC直接可以用P3.0和P3.1连接串口就能烧写程序,不用单独的烧录器。官方宣称可以重复烧写十万次,也是挺多的。STC的软件会监控着文件变化,Keil中编译完生成Hex文件,软件会自动开始烧录。再加上STC自动下载器,烧录时自动冷启动。整个流程下来一气苛成。
但是十万次看起来很多,实际用起来,改一个参数就烧录一下,很快就消耗完了。况且,十万次也只是理论值,实际不一定有这么多次。
仿真运行:
我用的是STC8系列,单片机自带仿真,在STC软件中将单片机设定为仿真模式,以后就可以在Keil里运行仿真了。就可以不用每次都烧录芯片了。
但我觉得这个仿真并不太完美。仿真开始后对程序的修改不能实时生效,需要退出仿真,重新编译,再打开仿真,所做的修改才生效。

而实际使用中,打开仿真需要有一个传输程序的时间,直接烧录程序也有一个烧录的时间,两者的耗时都差不了多少,那么究竟是用仿真好还是烧写好?

作者: hylot    时间: 2021-11-25 21:26
调试先用仿真,调试成功再烧录
作者: wysh_2004    时间: 2021-11-25 21:42
直接烧,效果更好,十万次够用了,不行换一片嘛,反正又不贵。
作者: 188610329    时间: 2021-11-25 22:14
你需要单步,就仿真,你需要直接跑,就直接烧录。我通常都是直接跑了,发现问题,却找不出问题才会再线仿真跑单步看看是哪里问题。 你如果仅仅为了烧录次数来用仿真那是毫无必要的,你每5分钟烧录1次,24小时不停的烧录改程序烧录,一年也烧录不了10万次,自己去算吧……
作者: Hephaestus    时间: 2021-11-25 22:50
你这才哪到哪儿啊?我刚用8051的时候是8031+27C64,程序在27C64里面,擦除需要用紫外灯照半个小时,写入次数大约15次,多了就报废了。
作者: Y_G_G    时间: 2021-11-25 23:43
但凡是有实物电路的,就不需要仿真
仿真是复杂算法或者OTP单片机,要么是要查看单片机内部寄存器状态之类的
对于很多外设来说,仿真是没有意义的
"仿真可以,实物却不行",在这个论坛,你能演绎看到这样的话
仿真不真的时候,只会浪费时间,仿真要做的事情一定得是电路板做不了要,那才要仿真
但凡是烧录能做的,就不要仿真
作者: liht1634    时间: 2021-11-26 08:03
STC单片机内部没有仿真部件,要想仿真,采用监控程序的方案,基本照搬SST的Monitor-51。
我在实际硬仿真单步时比较容易出问题,咨询过STC的FAE,给出了他们官网上有的解释。

对一些必须要观察的变量也是有必要的,但可通过串口发送到电脑。
作者: wufa1986    时间: 2021-11-26 08:20
最好不要使用在线调试,这样会是你过于依赖,很多系统都是不能调试的,调试无法得到正确结果
作者: jizhongbiao    时间: 2021-11-26 08:45
仿真优势是可以查看程序的运行细节,下载的优势可以直接验证效果。
作者: 2627687547    时间: 2021-11-26 08:59
仿真可以监控过程,调试使用比较方便
作者: qiangtech    时间: 2021-11-26 09:16
仿真和烧录不需要对立起来啊,他们是相辅相成的关系。需要小改动,验证想法的时候用仿真。需要结合硬件测试的时候用烧录,灵活运用,怎么好用怎么来。
作者: iicee    时间: 2021-11-26 09:27
先仿真,再烧
作者: liuzx66    时间: 2021-11-26 10:28
简单的程序,逻辑分明,不需要仿真。复杂的程序或是需要查看内部运算的中间数据就需要仿真
作者: 啤酒瓶子老大    时间: 2021-11-26 17:05
还仿啥真啊。多浪费时间,仿真搞了半天通过了,到实物还是不行,又得找半天原因。直接烧啊,又烧不坏。
在程序里适当的位置加个点灯,灯亮了就是运行到这里了,把数据发送到电脑观察,用有多个串口的单片机。
简单不。
作者: mengsiu    时间: 2021-11-26 22:37
明白了。直接烧,更省事。
作者: mwk68688811    时间: 2021-11-26 23:12
还是应该先用仿真 能设置节点 便于查找问题
作者: hz_dyg    时间: 2021-11-29 13:32
你能保证程序一次就可以搞对?
作者: Luciferszc    时间: 2021-11-29 14:10
没条件先仿真,有条件的话直接调试好了
作者: liuzanshui    时间: 2021-11-30 12:04
当然是先仿真了,可以设置断点,或单步运行,方便查看
作者: ccs51hei    时间: 2021-11-30 12:15
根据熟练程度,灵活运用。不熟悉的话,尽量仿真。后期不仿真也能保证程序正常运行。
作者: cheney03    时间: 2021-11-30 13:10
有实物直接烧入,比较直观,一般我都先把串口调试好,任督二脉打通,也是不错的调试工具,或者点个灯用于设置断点,看程序运行情况。除非没有实物或者要查相关寄存器的值才有用到仿真,但是仿真在某些情况行不通,还得接外设。
作者: shumivan    时间: 2021-11-30 17:13
直接烧写,你哪能把芯片烧写到最终寿命呢,别想太多,直接少些,避免仿真造成的其他问题。
作者: mg64    时间: 2021-11-30 17:20
现在单片机都挺便宜的,若手头有实物建议直接烧写,仿真可能有别的因素干扰
作者: 圆就是圈圈    时间: 2021-11-30 17:41
建议直接烧,因为仿真可能会有一点问题
作者: szc135790    时间: 2021-11-30 17:48
建议直接烧写,我一般都是直接烧写的,10万次,放心,肯定烧写不完的啦
作者: 我读春秋的    时间: 2021-11-30 19:55
我一般都是直接烧的
作者: 13205495918    时间: 2021-11-30 20:25
直接烧写比较好
作者: 791310    时间: 2021-12-1 09:00
其实都差不多,我感觉如果能烧写,就用烧写,毕竟仿真和烧写还是有一定距离
作者: rayin    时间: 2021-12-2 08:05
直接用单片机最小板,或者买开发板烧写,软件调通了再来做PCB板。
作者: csmyldl    时间: 2021-12-2 09:38
这里所说的仿真应该理解为在线调试,在线调试能够快速找到程序的逻辑错误,不管是简单的算法或复录的算法都可以在线仿真运行,非常方便,但需要购买具有在线调试的单片机,如IAP15F2K60S2,在线调试时,单片机内EEPROM存储器不能作数据存储
作者: lixiangyu811    时间: 2021-12-3 10:37
还是先调试仿真。仿真通过再烧录
作者: 威22    时间: 2021-12-3 10:43
先仿真在下载到实物比较好




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1