打印
[STC单片机]

宏晶STC单片机片上仿真法(转自:杜洋)-STC单片机如何仿真/教程

[复制链接]
24006|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 autopccopy 于 2013-9-6 13:45 编辑

STC单片机片上仿真法
文/杜洋
(该文同时刊登在《无线电》杂志2013年07期)


有单片机初学者问了我这样一个问题:单片机真是个好东西,可以实现我的很多想法,就是在编程开发的时候太麻烦,每次改动都要重新编译、下载,再等待着问题的出现。仅调试一个参数就要花上几个小时的时间。对于我们这些没什么经验的编程菜鸟来说太麻烦了。我想单片机技术发展至今,应该有更便捷的开发工具吧。杜老师你平时是怎么开发单片机软件的?有什么秘诀传授一下呗!
我的回答是:当然有秘诀,那就是使用“仿真功能”。什么是仿真?它如何实现更快捷的开发呢?详见下文。

【什么是仿真】
什么是仿真?我们举一个汽车设计的例子来说明一下吧。大家一定在影视剧或电视广告中看过这样的镜头:在一个大大的厂房里,一辆崭新的小汽车正在以很高的速度撞向一面厚厚的水泥墙。坐在车上的两个人面不改色心不跳,一动不动地等待着死亡。他们为何如此冷静,因为“他们”是实验用的假人。说时迟那时快,汽车已经撞到了墙上,巨大的声响夹杂着飞溅的碎片充满了空间,汽车在撞击中破了相。旁边的几台高速摄像机记录下了这一切。这是一次真实的撞击实验,目的是为了得出这款车型在出现意外时,是否能保住人的小命。安装在假人身上的传感器所得出的数据,能帮助工程师们发现安全隐患,改进汽车的设计。可以说以上就是一次仿真,一辆真车和两个假人有计划地撞墙,模拟了真实车祸情况。仿真让实验变得可能,因为没有一个真人愿意坐在车里参与这场实验。当真实情况很难在开发时再现时,仿真就可以帮助开发者完成必要的实验。这就如同单片机开发中,我们在自己的实验板上去开发一款产品一样。当我们设计好了一个产品的功能,我们要在实验板上模拟用户的操作,看看操作是否正常,产品的反应速度和稳定性如何。这些都是在仿真——模仿用户使用的真实情况。
有朋友会问了:如果这就是仿真,那还有什么好讲的呢?嗯,如上所说的仿真只是广义上的仿真,凡是在实验室里用实验板或工程样机模拟用户使用的过程,都可以算是仿真。而还有一种狭义的仿真,就是下面要重点介绍的内容。再说回到汽车撞击的实验吧。后来呀,汽车公司的老板在办公室里坐不住了。因为每当从外面传来一声巨响,他就知道又有一辆新车被撞得稀巴烂,一阵痛苦涌上心头。虽然理性上明白,这是为了开发出更安全的汽车,可是感性上还是不喜欢这种烧钱的行为。人们常说利益推动科技进步,当老板的利益受损,自然就会有高科技问世。不久,工程师们用上了一种电脑仿真软件,它采用了虚拟现实的技术,只要在电脑上按几个钮,输入一些汽车的参数,一台虚拟的汽车就出现在屏幕上。这辆虚拟车能和真车一样撞击、飞溅,然后得出一大堆接近真实的数据。不仅能模拟真实的撞,还能歪着撞,倒着撞,飞起来撞,飞起来转体360度地撞。还能暂停时间,一步一步撞,或者只看撞击中某一秒的数据。这一技术完全超越了真实实验,撞击再也不用耗人耗时了,新车的开发速度也快了很多,大大降低了成本。

汽车公司的遭遇在单片机公司也同样发生着,各种仿真软件如雨后的水泡子般越来越多。有的直接在电脑上虚拟仿真,还有的用一种叫仿真器的东西,让实验板与电脑连接,给实验板或工程样机增加了单片机实物所不能达到的仿真功能。其中最重要的一个功能就是“单步运行”了。在仿真软件里,把单片机从上电开始以正常的速度一直运行下去的过程叫“全速运行”。相对的,如果单片机只运行程序中的某一条或几条程序就是单步运行了。在非仿真的情况下,单片机是不能单步运行的。那单步运行有什么用呢?呵呵,单步运行非常有用呀,甚至可以说是一项单片机开发的重大进步,就如同录音带和MP3的区别一样。录音带在听歌的时候必须从头听到尾,如果想换歌就得花时间倒带,而且你也不能精准地倒到下一首歌的开始处。而MP3不是连续的线性存储,你可以随意换歌,还能把任意的一段反复听。在单片机的开发中,我们为了测试某个部分的功能,必然要从头运行,再跳过不必要部分才能达到。大把的时间浪漫在多余的劳动上面了,现在有了单步运行,你想到哪就到哪,你想反复运行某段程序也没问题。期间你还能修改大部分参数,不仅能模拟真实的运行,还能歪着运行,倒着运行,飞起来运行,飞起来转体360度地运行。好玩吧!?
而本文要介绍的是仅使用单片机的“片上传真”。片上仿真是基于单片机本身的仿真,也就是说只要一片单片机,不需要额外购买别的东西,就可以实现仿真。对于单片机爱好者来说,片上仿真是最高性价比的选择,你甚至不需要修改电路,用给单片机下载HEX文件的电路就能实现仿真。各大单片机公司都已开发出不同性能的支持片上仿真的单片机。其中STC公司有一款性能很不错的片上仿真单片机——IAP15F2K61S2。下面我就给大家介绍一下片上仿真环境的建立,还有进入仿真界面的操作流程,最后以一个实例告诉大家如何进行仿真调试。这是一些非常简单的操作,只要按照本文的步骤操作,就一定能顺利学会。





























全文在:http://www.doyoung.net/articles/STC15IAP/index.html

全文汇总在附件PDF:《宏晶STC单片机片上仿真法_杜洋STC15IAP.pdf》


(摘者注:STC单片机如何仿真、STC单片机仿真操作指南)

宏晶STC单片机片上仿真法_杜洋STC15IAP.pdf

1.91 MB

相关帖子

沙发
autopccopy|  楼主 | 2013-8-30 21:39 | 只看该作者
本帖最后由 autopccopy 于 2013-8-30 22:09 编辑

希望对初用STC单片机仿真的同学、小伙伴有帮助。感谢杜洋兄! :)
--------------------------------------------------------------------------------------
其中第5页提到的STC-ISP 软件已更新,目前为STC-ISP V6.58B(留意官网更新或软件自动更新提醒), 界面如下:


另一处转载地址可参看:http://www.stcisp.com/dy_stc_iap_ice.html :)

使用特权

评论回复
板凳
crazy2012| | 2013-8-30 22:02 | 只看该作者
我刚开使学习单片机的时候根本不知道有仿真器这东西,后来学习stm时候才知道仿真器,再后来上班了在公司见了另一种样式的仿真器才知道仿真器还有很多种。

使用特权

评论回复
地板
dirtwillfly| | 2013-8-30 22:35 | 只看该作者
昨天刚看了这个**,主要介绍的仿真芯片的使用

使用特权

评论回复
5
sunhq02| | 2013-8-31 08:51 | 只看该作者
这个实际上在stc的isp软件中就有相关介绍
stc官网上也有相关文档

使用特权

评论回复
6
草民| | 2013-8-31 09:51 | 只看该作者
看看,了解了解

使用特权

评论回复
7
opal11| | 2013-9-2 23:05 | 只看该作者
支持

使用特权

评论回复
8
autopccopy|  楼主 | 2013-9-9 12:11 | 只看该作者
仿真有风险,大家需谨慎!
(245)

gun_ice.jpg (141.53 KB )

gun_ice.jpg

使用特权

评论回复
9
kingxw| | 2013-9-17 13:01 | 只看该作者
还资料啊

使用特权

评论回复
10
逍遥派掌门| | 2013-9-17 15:16 | 只看该作者
本帖最后由 逍遥派掌门 于 2013-9-17 15:19 编辑

    STC的ISP软件,提供功能还是不错的。

    唯一令人诟病的地方是该软件对USB转串口不怎么支持,官方号称使用CH34x的芯片才行,

可是世界上那么多软件使用别的USB转串口芯片(如PL2303 ,CP2102等等),照样玩得贼顺当,

为何STC的ISP软件非要CH34x的片子呢?如果排除掉利益的关联,只剩下ISP软件有缺陷这种解释了。

以前一直使用计算机的硬串口,没有考究这个问题,最近自己做了PL2303的USB转成TTL,然后直接

连到STC单片机的串口,然后用自己编写的通讯软件测试,来回通讯几百K的数据照样刚刚的;而使用

STC的ISP软件,则看到该软件一直在发 0x7F,发个不停。。。 最新的6.58B版本软件还好点,点关闭,

程序也就正常结束了;4.88版本的软件,则停留在计算机内存里,直接死了,只能重新启动计算机。

    就这么一个简单的问题,希望STC能尽快解决它。 STC总在强调什么硬件兼容性等等的所谓原因,

其实是没有找到根本解决问题的方法。

    STC一路走好,希望越来越好。

使用特权

评论回复
11
autopccopy|  楼主 | 2013-9-25 20:40 | 只看该作者
仿真时要注意不能占用仿真器的保留资源,否则会仿真失败的。例如这个帖子:https://bbs.21ic.com/forum.php?mod=viewthread&tid=607577

单CPU方案仿真器使用方法:
1、首先必须安装仿真驱动,可通过点击此页面中的"添加MCU型号到Keil中"按钮进行安装
2、准备1片IAP15F2K61S2或者IAP15L2K61S2的芯片
3、将其设置为仿真目标芯片
4、按照上图将芯片与电脑进行连接
5、打开目标CPU的电源
6、在Keil软件中打开项目,并进行相关设置(参考STC Monitor51仿真器使用指南)
7、设置完成即可开始调试

监控程序使用资源:
Flash : 6K Bytes (0DC00H - 0F3FFH)
DATA  : 0 Byte
IDATA : 0 Byte
XDATA : 768 Bytes (0400H - 06FFH)
Port  : P3.0 and P3.1

单CPU方案仿真器使用注意事项:
1、用户不可访问仿真系统区的0DC00-0F3FFH区域的6K代码空间
2、用户不能修改0400H-06FFH区的768字节的XDATA
3、用户不能向P3.0口和P3.1口写数据
4、用户不能使用与P3.0和P3.1相关的中断和功能(包括INT4中断、定时器2的时钟输出、定时器2的外部计数)
5、串口1可以切换到P3.6/P3.7或者P1.6/P1.7进行使用




[STC单片机] 在UV4,硬件仿真显示支持新增的SFR,软件仿真支持仿真指令时间:


另一个网友写的《[STC单片机] 终于调通了IAP15F2K61S2作仿真器了,分享下经验》: https://bbs.21ic.com/icview-598750-1-1.html

图文版:(转载)的:http://www.stcisp.com/stc-ice-ver2-chinese_a1_stcfzsyzn.html

(454)

使用特权

评论回复
12
片羽之神| | 2013-9-26 09:54 | 只看该作者
我得好好学习学习了!

使用特权

评论回复
13
在路上的旁观者| | 2013-10-8 10:51 | 只看该作者
学习了,谢谢

使用特权

评论回复
14
限量_个性。| | 2013-10-8 12:06 | 只看该作者
lz是杜洋?

使用特权

评论回复
15
自由天使水中月| | 2013-10-18 16:56 | 只看该作者
新手飘过。。。

使用特权

评论回复
16
cjseng| | 2013-10-21 12:01 | 只看该作者
我要砸砖!我发现杜洋总是喜欢把限流电阻省掉,理由是“电流不大”,那个郭天祥的开发板也是这样。这样做电流是不算大,但是基本上都达到了芯片的极限,都是不留余量的设计。
另外,由于不加限流电阻,直接导致量的LED数量不一样时,亮度存在差异,如果是数码管,显示不同内容时,亮度差异就很明显了,比如显示“1”的亮度比显示“8”的亮度要亮得多。
我认为做设计就要严谨,如果是开发板、教学板就更要严谨,以免误人子弟!
就说这个仿真,run to cursor line这个按钮的作用是运行到光标所在行,在杜洋的**中,居然变成了直接跳到此处,中间的代码不执行,说是飞过去了,这不是误人子弟么?还有,仿真最方便的是设置断点,而不是就靠按那几个按钮来执行程序的。

使用特权

评论回复
17
autopccopy|  楼主 | 2013-10-28 19:29 | 只看该作者
限量_个性。 发表于 2013-10-8 12:06
lz是杜洋?

不是。;P
转载的。:lol

(821)

使用特权

评论回复
18
a20084666| | 2013-10-29 07:53 | 只看该作者
哈哈  不错

使用特权

评论回复
19
ywb888| | 2014-1-28 13:50 | 只看该作者
拜读了,没有解决自己的问题https://bbs.21ic.com/forum.php?mo ... p;page=1#pid3886112

使用特权

评论回复
20
x13686626760| | 2014-4-16 16:52 | 只看该作者
飘过,看看

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:---人活着就是要改变世界! ----51单片机,单片机中的拖拉机!

153

主题

2861

帖子

15

粉丝