搜索
bottom↓
回复: 59

51 单片机无疑是划时代的产品,把MON51仿真机的一些资料贴出

  [复制链接]

出0入20汤圆

发表于 2017-7-15 10:10:43 | 显示全部楼层 |阅读模式
早期的说明:完全是自行开发。非转载!
MON51仿真机,从第一代开始至今,已经推出了3个不同的版本。性能上有了质的飞跃!原来开发它,也是一个偶然的机会,就是配合实物上课用。当时采用最早的MON51仿真机,用户地址在0X8000,我自己用起来都嫌麻烦,还经常出错,更何况初学者。后来便分析、追踪Keil的输出命令,再配合原来具有的仿真机开发知识(本人原来从事过专业仿真机的开发)。开发出了第1代MON51仿真机,全部是用汇编编制,但当时对Keil的一些特定的命令,没有掌握,自然存在许多BUG。后来通过用户的反馈,都逐一解决,而问题最多的是单片机的FLASHROM损坏,再深入研究,做破坏性的实验后发现,号称10万次的写入,有的只有几千次的寿命。尤其是单步运行区和保存用户程序数据区,损坏的居多。所以决定不再用FLASHROM保存数据,而改成XDATA  RAM保存数据。这样便推出了第2代MON51仿真机,后来发现由于改用RAM保存数据,减少了耗时的FLASHROM操作,无论是跨步,还是单步执行的速度奇快,性能也大大提高,但单步执行区还是存在频繁写入的问题,经过反复推敲,决定采用循环写入法,用多个FLASHROM来做单步执行区,减少对某一个固定字节的写入,从而将寿命问题解决。当时采用一个扇区128个字节,寿命提高14倍。但无论如何也解决不了占用UART口、T2定时器的问题。有些简单用户(初学者),不用开发串口,使用MON51第二代仿真机,还是绝对超值!
       去年至今,有许多学生、工程师、单片机爱好者都希望我能设计出采用USB口通讯、零资源占用的仿真机。我开始并不想再设计,因为网上卖的人太多。但后来觉得技术上实现并不困难,让更多的人掌握单片机技术,使用方便才是关键。所以用C51重新编写了MON51仿真机的源代码,采用C语言编制,主要是为了便于维护和移植。这样就推出了第3代MON51仿真机。用空间换取了FLASHROM的寿命,采用了512个字节来做单步执行区,还做了坏字节标记处理,可以自动跳过坏的字节区。这样FLASHROM的寿命提高了56倍!并且优化了下载程序和断点处理程序,这样一来下载、单步执行等操作速度如飞!释放了UART口、T2定时器是最大的改进!采用USB口通讯,非常适合现在电脑!
现在用SST公司的公版HEX做的仿真机到处都有。为了推广自己的产品,把Keil的许多功能加进来,说成是自己仿真机所具有的。例如:
可单步、断点、全速,可参考变量、RAM变量
支持汇编,C语言,混合调试。
这些难道不是Keil仿真机软件的功能吗?
有的人甚至把仿真空间大小,硬件锁定功能,加以评论。这些对专业人士来说,很可笑!无论如何,没有掌握技术,当出现问题,就说是用户使用不当而蹚塞。。。。。。
 
现在就对一些有针对性的问题,加以回答!如有不对,请指正!
问题:
   1:如何区分是否为SST公司的公版程序?
要区分是否为SST公司的公版程序,只要看它具不具有脱机功能就行。因为SST公司的公版程序是不具有脱机功能的。要加入这个功能,就必须改程序代码。
   2:MON51仿真机的工作原理是什么?
这个问题很专业,也是问的最多。一句话是无法回答的。只能简单说明:就是通过Keil开发平台,将用户的程序下载到MON51仿真机中,根据Keil开发平台的命令,不断地执行用户程序,再将临时数据传回Keil开发平台的过程。MON51仿真机的软件,基本上由:通讯模块、Keil命令解析模块、51系列单片机的指令分析模块、断点处理模块、运行模块、单步执行模块等组成。
3:MON51仿真机的“运行到断点处(光标处)”和“单步运行” 、“跨步”、“全速运行”有什么区别?
这些功能是每一个仿真机所具有的。但它们实现的方法是不同的。MON51仿真机是借用单片机的IAP功能,来实现仿真的。所以上述几种运行模式(除开单步运行),全部改写了用户下载到FLASGROM中的程序代码。在断点表中保存了断点的地址,和用户代码。MON51监控程序,会在用户要设立断点的地址处写入一条指令: LCALL  STOP 。STOP是停止用户程序,保存用户数据,并恢复MON51监控程序的数据后,再进入MON51监控程序的一段处理程序。实际上就是任务切换。当用户执行到断点处时,会通过LCALL  STOP,自动进入MON51监控程序。再把用户的数据发送到Keil平台。
“跨步”运行实际上也是一种变相的断点运行模式。只不过断点,不是用户定义的,而是Keil开发平台计算的。是隐含处理的。
这里很明显,如果改用FLASHROM保存中间数据,则要频繁地删除、写入数据,STOP的执行速度就会明显下降。而用RAM保存,是最快的。而且没有寿命问题。
“全速运行” 有2中方式:
一种是不带中断响应运行。它完全不再受Keil平台的控制,一旦开始运行,用户只有通过手动复位,停止用户程序。
另一种是带中断运行。既勾选Serial Interrupt 选项。这样便会在用户程序的串口中断向量处,写入一条指令LJMP   BREAK ,这样发生中断后,就跳转到MON51监控程序的中断处理程序。BREAK程序判别Keil平台是否发来停机命令。如果是停机命令(0x1B),便会进入STOP程序,保存用户程序数据,并进入MON51监控程序。如果不是,则退出中断程序,继续运行应户程序!这也是所谓的“夭折功能”。它也不是什么新技术,任何仿真机都有。而且实现也很简单!
现在C51-III仿真机由于释放了UART口,所以将中断向量转移到0x3b。
“单步运行”是比较繁杂的一种运行模式。仔细分析51系列单片机的指令,可以知道,虽然有100多条指令,但把转移指令、判位指令、数据转移指令、运算指令等归类后,实际只有10种类型的指令。首先MON51监控程序分析是哪一种指令,如果是转移类指令(LJMP、AJMP 、SJMP、 LCALL、 ACAL、RET、 RETI),MON51监控程直接计算PC指针的地址,并不执行。而其它类的指令则,全部复制到单步执行区(最大9个字节)。再在后面添加2条转移指令 LCALL  STOP 、LCALL  STOP。为什么要2个LCALL  STOP 。主要是用来判别:判位指令是否发生了跳转而设的。进入“单步运行”后,MON51监控程跳转到单步执行区,就可以执行用户的一条指令。然后进入STOP程序。完成一次单步!如果大量采用单步执行的话,单步执行区会被频繁修改,严重影响寿命!这是现在所有采用IAP技术仿真的弊病!如果有个单片机内部有9个字节的RAM执行区就好了,专业仿真机就要下岗了。
实际上MON51监控程在读取、写入特殊功能寄存器时,也要用“单步运行”方法来实现!例如:“mov a,direct ; mov direct,R0”这俩条指令必须要用“单步运行”来实现。如果用户程序有大量的此类指令,寿命问题就会暴露出来。我们做破坏性实验,就是循环执行它。
现在市面上所有的仿真机,都不会去说明FLASHROM是在什么地方被写入?寿命是如何受影响的?也许是扬长避短吧,或许是根本就不知道。
通过上面的分析就知道,FLASHROM中到底是哪里被频繁写入了。有些网站要求,尽量少用“单步”,也就是回避这个问题!
第3代MON51仿真机。采用了512个字节来做单步执行区,还做了坏字节标记处理,可以自动跳过坏的字节区。寿命问题基本解决了!如果需要,还可以扩展到1024个字节。但这样减少了仿真空间。
4:SP堆栈占用了2个字节,是什么意思?
这个问题,我被无数次问起,但我首先问一下:你做的软件预留了多少个字节做堆栈?一般的回答是:把剩余的字节全部做堆栈!试想一下,谁做软件只预留几个字节做堆栈。更何况是2个字节!
MON51监控程占用用户堆栈,是在STOP程序运行时占用的,进入STOP程序时,单片机的硬件已经将PC指针自动压入用户堆栈。此时占用2个字节。随后因为要保护用户的临时数据,必须要用到ACC、DPTR。所以必须先保存好这3个寄存器的值才行。直接压入用户堆栈,最简单!但占用了3个字节!(实际上用户的堆栈,绝对不应该是5个字节的余量)。所以许多网站上,都说采用了新技术,占用2个字节的堆栈。实际上不压入堆栈,用单片机内部不用的寄存器就可以保存就可以了!例如:看门狗寄存器WDTD或IAP操作的寄存器组:SFAL、SFAH、SFDT(但不能用SFCM寄存器)所以SP堆栈占用了2个字节的技术并不神秘!
C51-II仿真机、C51-III仿真机全部是占用2个字节!
5:MON51监控程可以移植到其他公司的芯片上吗?
现在许多专业生产仿真机的公司,他们都可以与Keil开发平台联机。就是用的MON51驱动程序。原理上一样的,只是实现的方法不用而已。所以MON51监控程可以任意移植。但做为简易仿真机,它对单片机有一定的要求:1、必须具有IAP功能。2、启动向量可以控制。现在的华邦、PHILIPS公司的LPC9XX系列等都可以做。但前提是必须要掌握技术和拥有源程序。
6:C51-II仿真机采用XDATA保存数据,哪我要使用它们,怎么办?
       首先我要说明:简单的东西,肯定是有弊端的。现在C51-II仿真机、C51-III仿真机都是采用XDATA保存数据。如果要用它们,就只有自己扩展RAM了。当用户使用自己扩展的外部RAM时(必须定义AUXR寄存器的EXTRAM位!),地址可以从00H开始,连续存放。C51-III仿真机会自动将数据保存到内部XDATA 中,但是当用户使用内部的XDATA时,必须注意要跳开0x180—0x2FF的地址空间。方法可以看C51-III说明书!
这些都是SST芯片的硬件特性感兴趣的用户可以到

出0入4汤圆

发表于 2017-7-15 10:12:56 | 显示全部楼层
不知道大学是不是还在教 51单片机

出0入20汤圆

 楼主| 发表于 2017-7-15 10:13:28 | 显示全部楼层
现在如果把源程序全部贴出来,就对不起当年购买的许多客户。毕竟网上现在还是有许多商家在卖这类仿真机,虽然有些商家违反协议,也在卖我的源代码。同时也对不起一些研究生,他们的毕业论文也是这个。。。。

出0入20汤圆

 楼主| 发表于 2017-7-15 10:14:43 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入20汤圆

 楼主| 发表于 2017-7-15 10:15:00 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入20汤圆

 楼主| 发表于 2017-7-15 10:18:29 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入20汤圆

 楼主| 发表于 2017-7-15 10:19:16 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2017-7-15 10:19:28 | 显示全部楼层
没有用过51仿真机,帮顶。另外keil的命令在哪里可以找到?

出0入20汤圆

 楼主| 发表于 2017-7-15 10:20:07 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入20汤圆

 楼主| 发表于 2017-7-15 10:22:02 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入20汤圆

 楼主| 发表于 2017-7-15 10:24:08 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入20汤圆

 楼主| 发表于 2017-7-15 10:43:35 | 显示全部楼层
再来点图片:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入20汤圆

 楼主| 发表于 2017-7-15 10:51:58 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2017-7-15 11:02:42 | 显示全部楼层
看得出楼主对51钻研的很透,佩服。。。。

出0入0汤圆

发表于 2017-7-15 11:17:50 来自手机 | 显示全部楼层
大牛,继续,我来学习的。

出0入0汤圆

发表于 2017-7-15 11:24:07 | 显示全部楼层
钻研51的牛人,:-),mark一把。

出0入0汤圆

发表于 2017-7-15 11:32:41 | 显示全部楼层
时间真是把杀猪刀,貌似我学习51已经是近10年前的事了。虽然后面也工作用了一两年,后来就转stm32
,当年要是看到这个,绝对是五体投地,不过现在好像对我没什么用处
帮顶。

出0入0汤圆

发表于 2017-7-15 11:39:42 | 显示全部楼层
从51起步的,现虽现在不用51,感谢楼主的分享。

出0入0汤圆

发表于 2017-7-15 11:40:00 来自手机 | 显示全部楼层
没用过仿真机,楼主不如开发成品出售吧,我想买一个

出0入0汤圆

发表于 2017-7-15 12:08:39 | 显示全部楼层
本帖最后由 hbzxx 于 2017-7-15 12:11 编辑

这货十年前用过,不稳定啊,有时跑着跑着就跑飞了。
最重要的是要占用串口。
记得用的是SST的89C58.
后来买了一个纬福仿真器,那才是真正的仿真器。

出0入0汤圆

发表于 2017-7-15 12:37:01 | 显示全部楼层
楼主高手的样子    现在已经不玩C51了   除了没有USB    还是 STM8 比较爽

出0入20汤圆

 楼主| 发表于 2017-7-15 13:08:31 | 显示全部楼层
Ilove51andAVR 发表于 2017-7-15 11:40
没用过仿真机,楼主不如开发成品出售吧,我想买一个

10年前就不做了。现在网上大把的,都是这个HEX。USB接口的很稳定。

出0入20汤圆

 楼主| 发表于 2017-7-15 13:11:50 | 显示全部楼层
hbzxx 发表于 2017-7-15 12:08
这货十年前用过,不稳定啊,有时跑着跑着就跑飞了。
最重要的是要占用串口。
记得用的是SST的89C58.

占用串口的,就不是我设计的了。我的是USB接口。

出0入0汤圆

发表于 2017-7-15 13:42:27 | 显示全部楼层
真想搞个投票,工作以后还用51的人有多少

出0入0汤圆

发表于 2017-7-15 13:55:43 | 显示全部楼层
51大牛老司机 佩服 佩服

出25入12汤圆

发表于 2017-7-15 14:25:00 | 显示全部楼层
前几天翻出来放了好久的伟福 v8还是v6仿真器,买来就没用过, 心想这东西没人要了吧, 现在看得赶紧放咸鱼上, 看来还有市场

出0入0汤圆

发表于 2017-7-15 14:34:23 | 显示全部楼层
mon51 发表于 2017-7-15 10:13
现在如果把源程序全部贴出来,就对不起当年购买的许多客户。毕竟网上现在还是有许多商家在卖这类仿真机,虽 ...

这个。。。应该只有研究价值了吧,公开坛里也没人会去做实物了。

出5入85汤圆

发表于 2017-7-15 15:26:44 | 显示全部楼层
mon51 发表于 2017-7-15 10:13
现在如果把源程序全部贴出来,就对不起当年购买的许多客户。毕竟网上现在还是有许多商家在卖这类仿真机,虽 ...

楼主好纠结,不过也不错,难得有共享成果的想法就值得表扬。

出0入34汤圆

发表于 2017-7-15 16:04:41 | 显示全部楼层
mon51 兄的作品我一直都收着好好的,另一个我的长官也带回去收藏了,不得不佩服 mon51 兄在这方面的努力与付出。

出145入215汤圆

发表于 2017-7-15 16:21:16 来自手机 | 显示全部楼层
这个伴随了很多人51学习,现在还有几个sst了

出0入0汤圆

发表于 2017-7-15 16:41:41 | 显示全部楼层
这个要顶一下,都是干货

出0入0汤圆

发表于 2017-7-15 17:26:18 来自手机 | 显示全部楼层
mon51 发表于 2017-7-15 13:08
10年前就不做了。现在网上大把的,都是这个HEX。USB接口的很稳定。

楼主不做了好可惜。能不能推荐一下淘宝哪个店铺是采用你的作品的,如果不方便说明,给几个关键字搜索也行,还有怎么分辨哪个产品采用你的第三版的程序?

出0入0汤圆

发表于 2017-7-15 17:48:56 | 显示全部楼层
貌似是 启东那一带的吧……

出0入8汤圆

发表于 2017-7-15 17:58:08 | 显示全部楼层
chenerbox2 发表于 2017-7-15 14:25
前几天翻出来放了好久的伟福 v8还是v6仿真器,买来就没用过, 心想这东西没人要了吧, 现在看得赶紧放咸鱼 ...

最近 还在用伟副的V8/L   不过不是仿真51  是仿真196

出0入20汤圆

 楼主| 发表于 2017-7-15 19:28:52 来自手机 | 显示全部楼层
Ilove51andAVR 发表于 2017-7-15 17:26
楼主不做了好可惜。能不能推荐一下淘宝哪个店铺是采用你的作品的,如果不方便说明,给几个关键字搜索也行 ...

搜51仿真器或C51仿真器或mon51仿真器。就可以了。外型有类似,也有大变化的,只要看看介绍就知道了。

出0入0汤圆

发表于 2017-7-15 19:47:01 来自手机 | 显示全部楼层
mon51 发表于 2017-7-15 10:13
现在如果把源程序全部贴出来,就对不起当年购买的许多客户。毕竟网上现在还是有许多商家在卖这类仿真机,虽 ...

这个东西,Keil的帮助文件中有详细介绍,安装目录下有源程序,有很多年没玩51了,可能记错

出0入20汤圆

 楼主| 发表于 2017-7-15 20:38:05 | 显示全部楼层
tangnyzl 发表于 2017-7-15 19:47
这个东西,Keil的帮助文件中有详细介绍,安装目录下有源程序,有很多年没玩51了,可能记错 ...

请你将源代码贴出来看看。

出0入0汤圆

发表于 2017-7-16 08:36:07 | 显示全部楼层
手里有一板TX-1C,不管怎样是它带领我认识了51,然后才能看到很多精彩的帖子,现在没从事这方面工作,但一点也不可惜。

出0入0汤圆

发表于 2017-7-16 10:11:43 | 显示全部楼层
本帖最后由 tangnyzl 于 2017-7-16 10:17 编辑



安装了一下, C:\Keil\C51\MON51 有一个库,反汇编,就可搞到 汇编的源代码,基本不搞51了,这个库,对普通的应用基本够了,当年曾经把51程序干到了 400多KB,8个bank,怀恋那些充满激情的日子

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出90入0汤圆

发表于 2017-7-16 10:41:44 | 显示全部楼层
在用韩国的51内核的单片机,
自带仿真器接口,

出0入0汤圆

发表于 2017-7-16 11:33:30 来自手机 | 显示全部楼层
mon51 发表于 2017-7-15 19:28
搜51仿真器或C51仿真器或mon51仿真器。就可以了。外型有类似,也有大变化的,只要看看介绍就知道了。 ...

搜到的都是ssf单片机仿真器,但mon51的是卖源代码的,售价1000+元,真够贵的了。真找不到出售mon51仿真器的成品,好可惜。

出0入0汤圆

发表于 2017-7-16 11:35:49 | 显示全部楼层
我也在做8051调试器,是跟MCU厂家做配套,主要是jtag的也有2线的,目前已实现的IP有R8051系列、DCD8051系列
上位机一个Keil的DLL插件,下位机用STM32来做

这个东西,技术投入大,汇报不高,不过至少比做ARM调试器回报要高一点,呵呵

出0入0汤圆

发表于 2017-7-16 11:57:23 | 显示全部楼层
    手头有周力功(致远电子)的编程器和仿真器,从来没有用过。现在用stc的U7/U8编程器。
51用c编程简单又方便,大多数应用前后台+状态机即可。注意临界区的变量处理,通过逻辑分析仪和示波器修改时序。也就罢了。

出0入0汤圆

发表于 2017-7-16 14:18:14 | 显示全部楼层
能不能做个51的虚拟机软件,跑在stm32里面,再附带加密等功能,应该有市场

出0入20汤圆

 楼主| 发表于 2017-7-16 16:01:00 | 显示全部楼层
gongxd 发表于 2017-7-16 14:18
能不能做个51的虚拟机软件,跑在stm32里面,再附带加密等功能,应该有市场

2014年已经做了,在STM32F205里跑,但速度不行,全是软件解释执行。对方付了1000元。无下文了。

出0入0汤圆

发表于 2017-7-16 16:54:12 | 显示全部楼层
  mon51方正,十五年前还有点意思,,可惜当年的红极一时sst都被并购消失了

出0入0汤圆

发表于 2017-7-16 17:38:26 | 显示全部楼层
十多年前买个万利51的仿真器要2000元,不知道为什么要这么贵。

出0入0汤圆

发表于 2017-7-16 21:31:44 | 显示全部楼层
现在我51刚起步,楼主已经这么牛了

出0入50汤圆

发表于 2017-7-16 22:00:16 来自手机 | 显示全部楼层
虽然从未用过仿真器调试,从来都是ISP,没ISP的年代用仿真器当ISP用(◔◡◔),佩服楼主这样的牛人,顶一个╰(*´︶`*)╯

出0入0汤圆

发表于 2017-7-17 09:42:42 | 显示全部楼层
mon51 发表于 2017-7-16 16:01
2014年已经做了,在STM32F205里跑,但速度不行,全是软件解释执行。对方付了1000元。无下文了。 ...

  现在F7都有了 F7模拟速度能凑合么

出0入0汤圆

发表于 2017-10-25 14:11:39 | 显示全部楼层
这个必须支持

出0入0汤圆

发表于 2017-12-11 21:37:50 | 显示全部楼层
这mon51文章如果出现在2005年之前,还有点用处

出0入0汤圆

发表于 2017-12-11 22:06:26 来自手机 | 显示全部楼层
现在应该没有人会买这个了吧!

出0入0汤圆

发表于 2017-12-12 10:15:15 | 显示全部楼层
用过楼主的产品,确实很不错

出0入0汤圆

发表于 2017-12-12 11:09:23 | 显示全部楼层
国内最早搞出来的是ETOOL,然后丁丁,老古。 03年通过老古的MON51专栏和丁丁的一个IAP源码摸索了半年时间,搞出来蛮有成就感的。但因为51的RAM太小,后来用了M64,M128,对51彻底放弃了。   

出0入0汤圆

发表于 2017-12-12 11:28:29 来自手机 | 显示全部楼层
比较好奇的是不占用串口和t2是怎么实现的

出0入0汤圆

发表于 2021-5-17 21:20:09 | 显示全部楼层
楼主 功夫蛮神的啊

出0入0汤圆

发表于 2021-11-1 21:07:09 | 显示全部楼层
今天积分不够了,明天再来下载!

出0入0汤圆

发表于 2021-11-2 10:08:33 | 显示全部楼层

大神,求命令表的来源!!!

出0入0汤圆

发表于 2022-8-21 10:36:26 | 显示全部楼层
学习中,感谢楼主分享
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-19 12:48

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表