用SST89E516RD自制51单片机仿真器

2023-05-16

原文网址:http://www1.eccn.com/tech06/te074653.asp

用SST89E516RD自制51单片机仿真器
文/吴汉清


单片机实验和开发中最重要的一个环节就是程序的调试,在业余条件下大部分人都采用烧写芯片直接到目标板上试验的方法,但是这样做在程序出现问题时比较麻烦,有时候也很难找到程序的问题出在那里。另外也可以采用软件仿真的方式调试程序,但是这种方式也有局限性,软件仿真有时候并不能完全代替实际使用环境。因此单片机仿真器成了程序调试中一个重要的设备。但是在业余条件下很少有人使用价格比较高的仿真器。为解决这一问题,本文介绍一种用SST公司的单片机SST89E516RD做的基于MCS-51架构的简易51单片机仿真器,它支持与MCS-51架构兼容的芯片,成本只有20多元,很适合业余爱好者制作和使用。

一、单片机SST89E516RD简介

SST89E516RD是8位集成存储器的51系列兼容单片机,和51系列单片机软件兼容、开发工具兼容、管脚也兼容。

SST89E516RD片内有两块SuperFlash EEPROM,分为64K主块(Block0)和8K次块(Block1)。Block0的地址范围是0000h~ffffh;Block1的地址范围是10000h~11fffh。做仿真器时Block1存储区烧写SoftICE仿真监控程序。

SST89E516RD具有在应用可编程(IAP)和在系统可编程(ISP)的功能,其中IAP是通过串口实现的。

仿真器就是利用了SST89E516RD的IAP功能。由于SST89E516RD具有两块独立的SuperFlash程序存储区,当监控程序在Block1存储区中运行时可以改写Block0程序存储区中的程序,这就是仿真器的基本特性。

SST89E516RD的引脚图见图1。更详细的资料见本期配刊光盘。

 

二、仿真器电路和工作原理

仿真器的电路见图2。仿真器通过计算机的一个串口与KeilμVision2集成开发环境进行通信。VTl、VT2、VD1、VD2、R1~R5等组成电平转换电路,其中发光二极管VD2作串口通信信号指示。

 

单片机SST89E516RD和晶振电路、复位电路一起组成单片机最小系统。SST89E516RD的引脚分别接在40脚的插针上,应用时40脚的插针插在目标板的单片机插座上。仿真器可能通过跳线的方式选择仿真器上的晶振或目标板上的晶振。仿真器使用目标板上的电源。 仿真器的工作过程就是在调试过程中随时对程序进行修改,来达到单步运行、跨步运行、断点运行和全速运行的目的。在通过KeilμVision2集成开发环境进行仿真时,需要调试的单片机程序目标代码通过串口被传送给监控芯片,并由监控程序烧写到监控芯片的Block0程序存储器中。在仿真调试过程中,监控程序可以随时改写被调试的程序来设置单步运行、跨步运行、断点运行。程序暂停执行后,在集成开发环境中可以观察单片机RAM、寄存器和单片机内部的各种状态。 

三、仿真器的制作

为了避免制作双面印制电路板的麻烦,仿真器可用万能电路板安装。单片机使用IC插座安装。

仿真器的监控芯片SST89E516RD中要预先烧写监控程序,SST、公司为部分SST89类单片机提供了仿真监控程序,但其中不包括SST89E516RD的监控程序,由于SST89E516RD和SST89E564RD兼容,因此可以用SST89E564RD的监控程序代替,SST89E564RD监控程序的下载地址为:www.sst.com/prod-ucts/software.utiIs/softice/index.xhtml,下载网页软件列表中的SoftICE_564.zip文件,解压缩后即可得到Softlce564.hex目标文件。用能够烧写SST89E516RD芯片的编程器将SoftIce564.hex目标文件烧入Block1程序存储区。烧写时注意两点1.加载目标文件时缓冲区开始地址要改为10000;2.加密位SB1、SB2、SB3和配置位SC0等都不要勾选。只有这样才能正常使用IAP功能。如果自己没有可用的编程器,可在购买单片机芯片时请商家代写,现在网上也有已烧写好监控程序的SST89E516RD芯片出售。

制作中40脚插针和IC插座焊接是一个难点,先焊接好40脚插针,然后在其对面即铜箔面焊接IC插座,IC插座除18、19脚要接跳线外,其余各引脚焊接在插针的对应焊点上。仿真器到串口插头的连线可使用双芯屏蔽线,其中屏蔽层作接地线。如果没有屏蔽线也可以用三根导线作连线。 制作好的仿真器照片实物见图3。

 

四、使用Keil μVision2进行仿真调试

仿真器做好以后就可以配合Keil μVision2进行仿真调试,笔者为仿真调试建了一个项目test.Uv2,在本期配刊光盘中,这是一个流水灯的程序,对应的单片机目标板电路见图4。项目中有关仿真器的选项都已设置好。如果自己建项目进行设置,则相关设置过程如下: 

 

在菜单Project中选择Optionsfor Target'Targetl',在"Optionsfor Trarget 'Targetl'"对话框的Debug 页面里,选择"Use:KeilMonitor-51 Driver"。相关设置见图5。

 

然后单击"Settings"选择要使用的计算机串行端口。Keil μ Vision2默认设置为COM1/9600。仿真器在一定范围内对串行通信波特率是自适应的,晶振频率为11.0592MHz时波特率可在4800~38400 之间选择。一般取最大值,以提高串口通信速度。相关设置见图6。最后单击"确定"按钮保存设定。仿真器或目标板也可以选择其他频率的晶振,比如晶振频率为6MHz时波特率可在2400~19200之间选择。如果使用目标板上的晶振,波特率要根据目标板上的晶振频率确定。

 

打开项目test.Uv2,完成上述设置后就可以进行仿真调试了。先单击工具栏上的Build target按钮 编译项目,编译成功后将生成目标代码。将仿真器按正确的方向插在目标板上,串口和计算机连接好后接通目标板的电源,按一下仿真器的复位键SB,再单击Start/Stop Debug session按钮 ,启动仿真调试环境,这时目标代码将被自动下载到仿真器的Block0用户程序空间。连接成功会后出现如图7所示的画面,连接过程中我们会发现发光二极管VD2在闪烁。连接不成功时请检查软件设置和硬件电路。

仿真时使用的主要调试按钮的功能如下:


上述各按钮的使用方法和软件仿真时相同。

进入仿真调试环境后,按一下全速运行按钮 ,目标板上的8个发光二极管就会轮流点亮,表示运行成功。如果我们在delay(100)前插入一个断点,按一下全速运行按钮 你会发现程序运行到断点后停止向下执行,只有第一个发光二极管点亮;再按一下全速运行按钮 ,刚轮流到第二个发光二极管点亮,以此类推。退出仿真时,请先按仿真器的复位键,然后再点一下按钮 ,就回到编辑模式,修改程序后重新编译,可以再次进入仿真调试环境。注意每次进入仿真调试环境前都要先按一下仿真器的复位按钮SB。

使用仿真器时请注意下面两点:

1.仿真器占用了仿真单片机的串行通信接口和用作波特率发生器的定时器2的资源,只有在全速运行时才释放这些资源,因此当目标板使用这些资源时就不能进行单步、跨步、断点等运行。这也是这个仿真器的一个不足之处。 2.仿真器监控芯片的SuperFlashEEPROM擦写寿命一般为每个存储单元1万次,而每一个单步执行都将擦写一次存储单元,因此应尽量少使用单步执行,多使用断点、跨步、断点和执行到光标行等节省擦写次数的功能,以延长仿真器的使用寿命。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用SST89E516RD自制51单片机仿真器 的相关文章

  • 身于“乱世”,我们程序员应该如何打算?

    不仅要低头拉车 xff0c 还要抬头看路 在周末夜深人静的时候就要思考一下人生 此 乱世 虽非战火纷飞 民不聊生的彼乱世 xff0c 但是整个社会的观感确实让人不得不焦虑 xff1a 不断飞涨的物价 xff0c 让买猪肉鸡蛋都觉得有压力 x
  • 开发人员流失之痛和团队重建之困

    最近笔者正在经历人员流失和团队重建的难题 xff0c 趁周末整理一下思路 xff0c 准备重整旗鼓 今年也算是多事之秋 xff0c 作为公司一员 xff0c 于公于私都有些坐不住了 面对开发人员 xff08 当然其他部门也有辞职 一个一个的
  • 从电影《三傻大闹宝莱坞》看IT新手应如何学习?

    三傻大闹宝莱坞 电视上又在放 xff0c 又看了一遍 xff0c 觉得很赞 很喜剧 很有意义 很励志 追求卓越 xff0c 成功将不穿裤子追着你跑 代替富翁主人儿子去读大学的兰乔在学校干了很多离经叛道的事情 xff0c 由此也产生了许多爆笑
  • 程序员,2012,不再生活在别处

    2011走到了尽头 xff0c 这一年有太多事情值得去书写和记忆 xff1a 浪漫的自行车户外婚礼 xff0c 历尽艰辛迎来了小宝宝 xff0c 整个部门业绩比去年增长了几倍 阳春三月 xff0c 黄道吉日 xff0c 在一群年轻朝气的自行
  • RTX, uCOS-II, FreeRTOS embOS, uCOS-III的综合性能PK

    这5款OS的PK主要分为以下四个方面 1 FLASH和RAM的需求对比 2 功能对比 3 实时性对比 4 安全性对比 1 FLASH和RAM的需求对比 RTX uCOS II FreeRTOS embOS uCOS III FLASH lt
  • 当段子手已经hi起来的时候,产品经理也来瞎逼逼一下faceid

    苹果发布会后 xff0c 各种段子满天飞 xff0c 着实热闹了一把 比较经典的包袱是 xff1a 老婆被老公刷脸 xff1b 被打成熊猫后没法报警 xff1b 韩国人没法用 xff1b 比较正式的疑问是 xff1a 双胞胎怎么办 xff1
  • SQL 2005安装时报已经安装了同名实例的问题解决。(无法正确卸载干净时最管用)

    最近重装SQL2005 xff0c 卸载后报 SQL 2005此计算机上已经安装了同名实例 说明原来的安装没有卸载干净 需要按照如下办法 1 停止服务 停止所有与SQL Server相关的服务 2 清楚残留的安装 使用windows ins
  • .NET Reflector 7.6.1.824安装及破解(刚试了,绝对能用)

    首先下载在这里http download csdn net detail gattaca2011 4578752 xff0c 不要到官网去了 xff0c 因为官网已经是8 0了 然后就是安装 xff0c 运行注册机 xff08 注意断网 x
  • 稍微冷门一点的经验,phpnow不能打开默认页的问题处理

    因为本地调试项目需要 xff0c 需要使用 phpnow 下载安装都很简单 xff0c 可是安装后127 0 0 1显示不出默认页 xff0c 而且一直处于加载状态 尝试 开始以后是一个网卡绑定了多个IP的问题 xff0c 于是移除多个IP
  • 每周五条-001

    2019 第2周 忙碌而焦虑 1 微信 微信支付服务商帐号是不能收款的 xff0c 如果同一个公司已经是服务商 xff0c 也不能在该服务商下创建本身的普通商户号 解决办法直接申请普通商户号 2 微信 听了两天的公开课 xff0c 最大的感
  • OpenWrt 学习笔记【1】LEDE17 安装huawei E8372

    写在前面的话 xff1a 路由器本身刷了LEDE后只是作为千兆交换机和手机wifi共享器 家中光线猫位置尴尬 xff0c 被关在入户的接线盒里 xff0c 信号差的一塌糊涂 xff0c 本来只是在luci界面直接尝试路由器自身2 4Gwif
  • Python3.6.2 pip install 报 【Fatal error in launcher: Unable to create process using ' " ' 】

    win10pro 原来的同事装了3 6 x xff0c 但是啥库都没安 xff0c 另一台自己的电脑原先安过需要的库 xff08 如h5py xff0c tf xff0c mkl等等 xff09 直接一波操作打压缩包拷过去解压覆盖 xff0
  • Keras2.2.2离线安装依赖包依赖Keras2.1.6解决方法。

    离线使用pip install 本地的whl包 xff0c 结果发现keras2 2 2安装失败 xff0c 照着提示依赖找到了Keras Applications 1 0 4与Keras Preprocessing 1 0 2 xff0c
  • 系统时间【linux基础】

    基础tip 备忘 who命令 1 xff09 who b 查看最后一次系统启动的时间 xxxxx 64 XXXXX who b system boot 2019 02 10 20 15 2 xff09 who r 查看当前系统运行时间 xx
  • TF踩坑笔记

    遇到领导要求出demo xff0c 尬 xff0c 好久没撸ML了 xff0c 工作两年信息流打杂 xff0c 以前也就叶公好龙毕业前VS编译了一波caffe跑了几个demo xff0c 尬出天际 xff0c 这两天踩坑不少 xff0c 留
  • MDK Trace功能

    RealView MDK可以轻松实现TRACE功能 针对ARM Cortex M3内核的芯片 xff0c 只需要要RealView MDK软件和ULINK2仿真器就可以直接实现TRACE功能 xff0c 不需要额外的TRACE硬件仿真器支持
  • 史上最快速的安装Tensorflow方法

    pip install i https pypi tuna tsinghua edu cn simple tensorflow 这里修改成自己需要安装的框架
  • 软件工程师面试经典问题

    大部分内容来自 高质量C 43 43 C 编程指南 和 嵌入式程序员应知道的0x10个问题 的补充整理 1 如何避免重复包含头文件 xff1f 答 xff1a 使用 ifndef define endif 2 include lt file
  • ubuntu18.04安装Realsense D435i 摄像头的SDK和ROS Wrapper

    1 安装参考链接 2 报错链接 3 没有找到rgbd launch 无法定位软件包
  • 写论文感悟

    无论最终结果怎么样 xff0c 这段过程值得纪念 xff0c 经常上的学术论坛是小木虫 xff0c 主要关注的版面是 xff1a 学术交流区 文献求助区 硕博家园 1 文献阅读和管理经验 xff0c 见 xff1a http muchong

随机推荐

  • ubuntu下python版本如何切换

    添加版本python版本管理 shell里执行 xff1a sudo update alternatives install usr bin python python usr bin python2 100 sudo update alt
  • Python函数的参数传递以及是否会改变外部变量的值

    这个问题是由听课时的例子引出的 xff1a 二分查找的递归实现 xff0c 以下是烂代码 xff1a 除去递归实现 xff0c 代码中参数传递的错误一言难尽 Python参数传递 1 如果没有将外部变量传递到函数中 xff0c 函数内部可以
  • OpenLTE开源代码结构解析(一)

    跟踪了一个在将开源组织 OpenLTE xff08 将4G通信网络LTE开源 xff09 xff0c 现将自己梳理整理的一些文档Post出来 xff0c 请有相同兴趣的朋友指点 xff1a 一 xff0c 系统介绍 OpenLTE是一位Mo
  • OpenLTE开源代码结构解析(二)

    对eNodeB的一些配置以及代码结构进行说明 xff0c 如下 xff1a 一 xff0c eNodeB配置结构 控制进程 xff08 传递eNB配置命令 xff09 eNB按照配置进程的配置命令工作 1 xff0c 在一个Tab窗口运行L
  • java.sql.SQLException: ORA-28000: the account is locked

    java sql SQLException ORA 28000 the account is locked 原创 2017年04月25日 17 25 10 标签 xff1a oracle 密码 958 1 现象 xff1a 项目启动时报了
  • 程序猿就是用来改变世界的

    先来一个自我介绍 xff0c 我是一个大三的老学姐 xff0c 专业是软件工程 说真的 xff0c 高考完当我知道我的录取专业是软件工程 xff0c 我一脸懵 xff0c 我什么时候填了这个专业 但是我现在想告诉你 xff0c 这是一个很神
  • DMA周期挪用(cycle-steal)

    周期挪用是指利用CPU不访问 存储器的那些周期来实现DMA操作 xff0c 此时DMA可以使用总线而不用通知CPU也不会妨碍CPU的工作 周期挪用并不减慢CPU的操作 xff0c 但可能需要复杂的时序电路 xff0c 而且 数据传送过程是不
  • 【软件笔记------Orcad Capture CIS 17.2/pads vx2.7】------ orcad&pads PCB设计简要教程

    目录 一 Orcad原理图库1 库添加1 1 新建库1 2 添加库 2 库编辑2 1 元件添加2 2 多PART元件添加2 3属性编辑 3 注意事项 二 原理图1 快捷键2 快捷图标3 选择过滤器4 插入图片5 栅格6 自动编号7 封装分配
  • 《飞控介绍》

    飞控 xff1a 即为导航飞控系统 xff0c 也叫自驾仪 物体运动的三个轴 xff08 多旋翼 xff09 俯视多旋翼时 xff1a 与中心纵向的轴叫做纵轴 xff08 x轴 xff09 与中心横向的轴叫做横轴 xff08 y轴 xff0
  • docker镜像仓库

    前言 镜像 xff0c 可以理解为将应用程序和运行环境打包成 应用模板 xff0c 是容器的上层抽象 容器是镜像的运行实例 xff0c 启动时传入相应的参数 xff0c 即可运行应用程序 二者的关系类似于代码中的 类和对象 要以容器的方式运
  • 杂谈我的IT梦

    误打误撞进入IT 我个人认为我还有是属于能说会道的 xff0c 比较善于与人沟通 xff0c 表达能力也可以 xff0c 所以当初我准备选的专业是医药营销 xff0c 因为那个时候根据我的分析 xff0c 医药是个很可观的赚钱领域 xff0
  • Ubuntu更新sudo apt update库报错

    sudo apt update报错 evyn 64 ubuntu sudo apt update E 文件 list 第 1 行的记录格式有误 etc apt sources list d ros latest list Suite E 无
  • 孤立森林(Isolation Forest)从原理到实践

    异常检测 离群点是在给定数据集中 xff0c 与其他数据点显著不同的数据点 异常检测是找出数据中离群点 和大多数数据点显著不同的数据点 的过程 离群点 真实世界中的大型数据集的模式可能非常复杂 xff0c 很难通过查看数据就发现其模式 这就
  • 一个C++程序员的学习经历

    正在上网的时候有这个念头的 xff0c 所以急急忙忙找了一些学习编程的高人的感想 xff1a 我开始学VC时就是自己一个人在啃 xff0c 也没什么人指导 xff0c 当时没有条件上网 xff0c 资料特别少 xff0c 在书店里随便买本书
  • Mac mini 2018 win10 外接显卡终极教程

    Mac mini 2018 win10 外接N卡应该算是最简单了 但是有些小问题 xff0c 比如说总是需要插拔雷电3的线材 xff0c 对于强迫症或者偏执来说总是感觉不爽 一种解决方案是用refind 启动方法 xff0c 将refind
  • Layui上传系列之二(多文件分块上传优化实现)

    接下来 xff0c 就要实现layui的uploader分块上传了 xff0c 在官网上没有提到分块上传 xff0c 倒是有一个多文件选择后 xff0c 显示文件列表的例子 目录 现状分析 我的做法 功能优化 上代码了 现状分析 对于我们能
  • tigervnc+noVNC远程使用RViz

    写在前面 遇到了远程桌面访问ubuntu系统并使用RViz的需要 xff0c 试了常用的vnc4server xff0c 在没有外接显示器的情况下 xff0c vnc4server需要虚拟一个显示器出来 xff0c 虚拟显示器可以使用Xvf
  • VINS-Mono融合轮式编码器和GPS(三):后端优化

    VINS Mono融合轮式编码器和GPS xff08 三 xff09 xff1a 后端优化 开篇介绍理论目标函数IMU约束1 残差2 优化变量3 Jacobian4 协方差 实践配合代码查看 开篇 项目地址VINS GPS Wheel xf
  • ROS-Gazebo (一):关于Gazebo无法加载模型,长时间卡在开始界面的问题解决方法

    在使用ROS Gazebo的过程中首先遇到的问题就是长时间加载不出模型 来 通常的解决方法是 从官方模型库下载号所有的基本模型 然后解压到 gazebo models文件夹里面就可以了 具体的下载地址和详细的操作方式可以 百度或者谷歌 34
  • 用SST89E516RD自制51单片机仿真器

    原文网址 xff1a http www1 eccn com tech06 te074653 asp 用SST89E516RD自制51单片机仿真器 文 xff0f 吴汉清 单片机实验和开发中最重要的一个环节就是程序的调试 xff0c 在业余条