搜索
bottom↓
回复: 10

单片机指令虚拟程序终于完成了

[复制链接]

出0入0汤圆

发表于 2013-8-29 23:54:35 | 显示全部楼层 |阅读模式
本帖最后由 wgui 于 2013-8-30 00:24 编辑

之前写了两次都到一半时因为不太了解51结构而结束,这是第三次定,终于写完成了,本人是业余上来的,看了代码不要喷。
我使用的是:STC12C5A60S2:24M晶体。串口调试使用的是BRT计数器.4800波特率。其它芯片没有BRT的就要改了T1。
因为刚完成,并没有增加什么方便测试的功能,下面录制了一个简单的下载过程视频。因没摄像头,只能录制屏幕了,有兴趣的话,可以试试。
因为指令是从STC的文档上看的。发现了文档有不少错误,之前也发过帖子,就是因为在做这个程序。只是个虚拟运行51指令的程序而已,由于算术运算指令介绍的不是很详细,所以内部状态不一定正确,计算指令不知能否正确计算。所以有空的话可以帮测试一下。其它指令应该没有什么错误,文档都比介绍较详细了。我虚拟了一下程序,没有什么问题。
现在只能是完成指令运行,并没有实际动作完成。IO只能控制输出[P0~P4],没有IO输入检测,因为还没想到用什么方式更新虚拟寄存器与实际寄存器同步。不建议改P3输出,因为P3口有下载程序控制,使用的是中断方式,如果改为输出低电平会拼命自动重启下载。现在没有虚拟中断控制系统,目前只能运行512Byte大小的ROM程序因为目前使用内部扩展的RAM作为虚拟ROM.也可以烧定到内部EEPROM第一扇区就可以默认运行了,断电都还在,其它芯片EEPROM不同的地方就要改一下了。
附件中的主程序是虚拟机程序,测试程序是用于运行虚拟机上的,因为我想通过指令形式将程序运行到STM32上。通过命令接口方式控制设备,不要更改太多程序。下面附件的虚拟测试程序是通过定义一个SFR寄存器作为命令之间的接口工作,功能是通过串口发送数据并回应发送的数据,使用主程序默认的4800波特率。不过这样好像没有什么运行效率。现在代码是求成功,暂不为效率想。
所有代码不使用位定义,为以后放到STM32上,位操作都使用移位操作了。
附件中的虚拟测试程序中只有串口测试和LED测试。用while测试LED的输出电平翻转有1.7KHZ,裸机有2M左右,效率哈哈。。。以后有空再完善其它功能。
虚拟51指令下载方式有两种:
用kei编译51测试程序,生成hex,因为hex还有其它东西,所以自己要想方法转成bin。我用isp最新版打开EEPROM方式复制机码到串口窗口通过串口热下载到RAM运行。
第一种是ISP下载时同时将虚拟程序写到内部EEPROM第一扇区,上电就由虚拟机运行了。
第二种是启动虚拟机后,看电路图上的按键,按虚拟程序下载按键[LED亮]就可以下载指令到当前RAM中,再按一次就可以运行了,断电后就没有了。
讲得不是很细,可能不明怎么用。。。其实我也不知道自己在说什么,嘿嘿。。。。。

本帖子中包含更多资源

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

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入93汤圆

发表于 2013-8-29 23:57:12 | 显示全部楼层
不明觉厉,在51上虚拟51吗?

出0入0汤圆

发表于 2013-8-29 23:59:00 | 显示全部楼层
我觉得有点厉害

出0入0汤圆

 楼主| 发表于 2013-8-30 00:17:41 | 显示全部楼层
tim 发表于 2013-8-29 23:57
不明觉厉,在51上虚拟51吗?

是的,目前是在51上调试的程序。

出10入23汤圆

发表于 2013-8-30 00:20:21 | 显示全部楼层
厉害!!!!

出0入0汤圆

发表于 2013-8-30 00:28:09 | 显示全部楼层
哦,可以开发编译器了,那可赚大了。
正版KEIL一W多装一台电脑。

出0入0汤圆

发表于 2013-8-30 09:57:47 | 显示全部楼层
楼主附件下载不了

出0入25汤圆

发表于 2013-8-30 10:12:29 来自手机 | 显示全部楼层
wangqing_gxu 发表于 2013-8-30 00:28:09
哦,可以开发编译器了,那可赚大了。
正版KEIL一W多装一台电脑。

你计算机怎么学的?这和编译器有毛关系?

出0入25汤圆

发表于 2013-8-30 10:19:49 来自手机 | 显示全部楼层
wangqing_gxu 发表于 2013-8-30 00:28:09
哦,可以开发编译器了,那可赚大了。
正版KEIL一W多装一台电脑。

没仔细看楼主写的内容,要是纯粹为了调试,不一定非要搞虚拟机,利用指令异常搞个调试庄子插入被调试代码就行了。

出0入0汤圆

发表于 2013-8-30 20:54:23 | 显示全部楼层
我理想的模拟应该是这样的:
1.先画一个51的应用电路图
2.编写51代码
3.打开51模拟器
4.调入上面说的电路图
5.调入写好的51代码
6.点击模拟器运行调试
7.自动纠正代码的错误、自动跟踪调试51代码
..................

出0入0汤圆

 楼主| 发表于 2013-8-30 22:06:51 | 显示全部楼层
lswood 发表于 2013-8-30 10:19
没仔细看楼主写的内容,要是纯粹为了调试,不一定非要搞虚拟机,利用指令异常搞个调试庄子插入被调试代码 ...

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

本版积分规则

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

GMT+8, 2024-6-2 12:26

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

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