51单片机简易仿真器的制作
- 格式:pdf
- 大小:673.44 KB
- 文档页数:9
KEILMonitor-51仿真板的制作与使用MCS-51单片机在我国应用最为关广泛、经久不衰。
以往单片机应用程序主要用汇编语言编写。
由于汇编语言程序的可读性和可移植性都较差,采用汇编语言编写单片机应用程序不但周期长,而且调试和排错也比较困难。
为了提高编制单片机应用程序的效率,改善程序的可读性和可移植性,采用高级语言无疑是一种最好的选择。
C语言是一种通用的计算机程序设计语言,既具有一般高级语言的特点,又能直接对计算机的硬件进行操作,表达和运算能力也较强,许多以往只能采用汇编语言来解决的问题现在都可以改用C语言解决。
德国Keil公司多年来致力于单片机C语言编译器的研究。
该公司开发的Keil C51是一种专门为8051单片机设计的高效率C语言编译器,符合ANSI 标准,生成的程序代码运行速度极高,所需要的存储器空间极小,完全可以与汇编语言媲美。
近年来,Keil C51不断升级,目前最高版本为V7.0。
高版本的Keil C51编译器,尤其是Keil uVision2(基于Windows的C51集成编译环境)以其性能优越、使用方便,受到了众多单片机爱好者的欢迎。
Keil C51以软件包的形式向用户提供主要包括C51交叉编译器、A51宏汇编器、BL连接定位器等一系列工具和uVision2模拟仿真、调试器等。
C51具有丰富的函数库,包含100多种功能函数,为用户编程提供了极大的方便。
C51程序可以实现与汇编语言的接口,两者相互之间的调用十分方便。
笔者是Keil C51的用户,并成功自制了Monitor-51仿真板,有一些心得。
本文提供了Monitor-51仿真板的硬件电路,并对其进行了分析,详细说明了监控程序的生成方法,对使用中常出现的问题给出了解决方法。
1.硬件电路Monitor-51仿真板的硬件资源要求如下:*5K字节的程序存储空间,用于存放监控程序;*256字节的外部数据存储单元(系统需要)和可选的5K字节的跟踪缓冲区;*足够大的外部数据存储空间用于装载完整的用户应用程序;*串行口及一个用作波特率发生器的内部定时器;*6字节的队栈空间,用于用户程序的测试;*如果用户程序大于64K 字节,P1口的部分引脚要用于程序存储空间扩展;*其它资源均可为应用程序所用。
基于单片机的简易计算器设计与仿真设计题目:基于单片机的简易计算器设计与仿真一、设计实验条件:地点:自动化系实验室实验设备:PC 机(装有Keil ;Protues ;Word ;Visio )二、设计任务:本系统选用AT89C51 单片机为主控机。
通过扩展必要的外围接口电路,实现对计算器的设计,具体设计如下:(1)由于设计的计算器要进行四则运算,为了得到较好的显示效果,经综合分析后,最后采用LCD 显示数据和结果。
(2)采用键盘输入方式,键盘包括数字键(0〜9)、符号键(+、-、X、十)、清除键(on\c)和等号键(=),故只需要16个按键即可,设计中采用集成的计算键盘。
(3)在执行过程中,开机显示零,等待键入数值,当键入数字,通过LCD 显示出来,当键入+ 、-、*、/运算符,计算器在部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在LCD上输出运算结果。
(4)错误提示:当计算器执行过程中有错误时,会在LCD上显示相应的提示,如:当输入的数值或计算得到的结果大于计算器的表示围时,计算器会在LCD上提示overflow ;当除数为0时,计算器会在LCD上提示error。
设计要求:分别对键盘输入检测模块;LCD显示模块;算术运算模块;错误处理及提示模块进行设计,并用Visio画系统方框图,keil与protues仿真分析其设计结果。
三、设计时间与设计时间安排:1、 设计时间:6月27日〜7月8日2、 设计时间安排:1 、前言: (自己写, 组员之间不能相同,写完后将 红字删除,排版时注意对齐 )本设计是基于 51 系列单片机来进行的数字计算器系统设计,可以完成计算 器的键盘输入,进行加、减、乘、除基本四则运算,并在 LCD 上显示相应的结 果;设计电路采用 AT89C51 单片机为主要控制电路, 利用 MM74C922 作为计 算器4*4键盘的扫描IC 读取键盘上的输入;显示采用字符LCD 静态显示;软件 方面使用 C 语言编程,并用 PROTUES 仿真。
做⼀个计算器_⽤51单⽚机做⼀个简单的计算器⼩程序⼀:硬件仿真图分别为8位数码管和4位数码管注意:本仿真案例有偿提供,请点击⽂章最下⽅的阅读原⽂,查看仿真图和程序下载地址。
本仿真仅供参考,如有需要修改电路和程序,请联系管理员有偿修改。
当然,如果你动⼿能⼒强,完全可以按照本⽂提供的电路图和程序源码⾃⾏搭建。
硬件部分⽐较简单,当键盘按键按下时它的那⼀⾏、那⼀列的端⼝为低电平。
因此,只要扫描⾏、列端⼝是否都为低电平就可以确定是哪个键被按下。
本计算器是以80C51单⽚机为核⼼构成的简易计算器系统。
该系统通过单⽚机控制,实现对4*4键盘扫描进⾏实时的按键检测,并把检测数据和计算结果存储下来,显⽰在LED数码管上,并可实现清零。
整个系统主要可分为四个主要功能模块:功能模块⼀:实时键盘扫描;功能模块四:清零整个计算器系统的⼯作过程为:⾸先初始化参数,送LED低位显⽰“0”,功能键位不显⽰。
然后扫描键盘看是否有键输⼊,若有,读取键码。
判断键码是数字键、清零键还是“+” 、“—” 、“*” “/” ,是数值键则送LED显⽰并保存数值,是清零键则做清零处理,是功能键则⼜判断是“=”、清零、还是运算键,若是“=”则计算最后结果并送LED显⽰,若是运算键则保存相对运算程序的⾸地址,若是清零键则跳转回初始化阶段使所有值清零。
⼆、主程序流程图程序的主要思想是:将按键抽象为字符,然后就是对字符的处理。
将操作数分别转化为字符串存储,操作符存储为字符形式。
然后调⽤compute()函数进⾏计算并返回结果。
具体程序及看注释还有流程图。
三:键盘扫描程序流程图四:显⽰程序流程图五:程序源码#include#include /* isdigit()函数 */#include /* atoi()函数 */#define uchar unsigned char#define uint unsigned intuchar operand1[9], operand2[9]; /* 操作数 */uchar operator; /* 操作符 */void delay(uint);uchar keyscan();void disp(void);void buf(uint value);uint compute(uint va1,uint va2,uchar optor);uchar code table[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; /* 字符码表 */uchar dbuf[8] = {10,10,10,10,10,10,10,10}; /* 显⽰缓存 */ /* 延时函数 */void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}/*******************************************键盘扫描程序将按键转化为字符并作为输出'$','#'分别表⽰清零键和没有键按下*******************************************/uchar keyscan(){uchar skey; /* 按键值标记变量 *//***********************扫描键盘第1⾏while((P1 & 0xf0) != 0xf0) /* 有按键按下 */ {delay(3); /* 去抖动延时 */while((P1 & 0xf0) != 0xf0) /* 仍有键按下 */{switch(P1) /* 识别按键并赋值 */{case 0xee: skey = '7'; break;case 0xde: skey = '8'; break;case 0xbe: skey = '9'; break;case 0x7e: skey = '/'; break;default: skey = '#';}while((P1 & 0xf0) != 0xf0) /* 等待按键松开 */;}}/***********************扫描键盘第2⾏************************/P1 = 0xfd;while((P1 & 0xf0) != 0xf0){delay(3);while((P1 & 0xf0) != 0xf0){switch(P1){case 0xed: skey = '4'; break;case 0xdd: skey = '5'; break;case 0xbd: skey = '6'; break;case 0x7d: skey = '*'; break;while((P1 & 0xf0) != 0xf0) ;}}/***********************扫描键盘第3⾏************************/P1 = 0xfb;while((P1 & 0xf0) != 0xf0) {delay(3);while((P1 & 0xf0) != 0xf0) {switch(P1){case 0xeb: skey = '1'; break; case 0xdb: skey = '2'; break; case 0xbb: skey = '3'; break; case 0x7b: skey = '-'; break; default: skey = '#';}while((P1 & 0xf0) != 0xf0) ;}}/***********************扫描键盘第4⾏************************/P1 = 0xf7;while((P1 & 0xf0) != 0xf0) {delay(3);{case 0xe7: skey = '$'; break;case 0xd7: skey = '0'; break;case 0xb7: skey = '='; break;case 0x77: skey = '+'; break;default: skey = '#';}while((P1 & 0xf0) != 0xf0);}}return skey;}void main(){uint value1, value2, value; /* 数值1,数值2,结果 */uchar ckey, cut1 = 0, cut2 = 0; /* ckey键盘输⼊字符 */ uchar operator; /* 运算符 */uchar i, bool = 0;init: /* goto语句定位标签 */buf(0); /* 初始化 */disp();value = 0;cut1 = cut2 = 0;bool = 0;for(i = 0;i < 9;i++){operand1[i] = '\0';operand2[i] = '\0';} /* 初始化 */while(1){ /* isdigit函数,字符是阿拉伯数字返回⾮0值,否则返回0 */if(isdigit(ckey)){switch(bool){case 0:operand1[cut1] = ckey;operand1[cut1+1] = '\0';value1 = atoi(operand1); /* atoi函数,将字符串转化为,int整数 */ cut1++;buf(value1);disp();break;case 1:operand2[cut2] = ckey;operand2[cut2+1] = '\0';value2 = atoi(operand2);cut2++;buf(value2);disp();break;default: break;}}else if(ckey=='+'||ckey=='-'||ckey=='*'||ckey=='/'){bool = 1;operator = ckey;buf(0);dbuf[7] = 10;disp();{value = compute(value1,value2,operator);buf(value);disp();while(1) /* 计算结束等待清零键按下 */ {ckey = keyscan();if(ckey == '$') /* 如果有清零键按下跳转到开始 */ goto init;else{buf(value);disp();}}}else if(ckey == '$'){ goto init;}}disp();}}/******************************************运算函数输⼊:操作数和操作符输出:计算结果*******************************************/uint compute(uint va1,uint va2,uchar optor){uint value;switch(optor){case '*' : value = va1*va2; break; case '/' : value = va1/va2; break; default : break;}return value;}/******************************************* 更新显⽰缓存输⼊:⽆符号整数输出:将输⼊送⼊显⽰缓存*******************************************/ void buf(uint val){uchar i;if(val == 0){dbuf[7] = 0;i = 6;}elsefor(i = 7; val > 0; i--){dbuf[i] = val % 10;val /= 10;}for( ; i > 0; i--)dbuf[i] = 10;}/******************************************* 显⽰函数*******************************************/ void disp(void)bsel=0x01;for(n=0;n<8;n++) {P2=bsel;P0=table[dbuf[n]]; bsel=_crol_(bsel,1); delay(3);P0=0xff;}}。
自制51芯片仿真器完全手册初学51单片机或是业余玩玩单片机开发,每次总要不断的调试程序,如没有仿真器又不喜欢用软件仿真,那只有每次把编译好的程序烧录到芯片上,然后在应用电路或实验板上观察程序运行的结果,对于一些小程序这样的做好也可以很快找到程序上的错误,但是程序大了,变量也会变的很多,而直接烧片就很难看到这些变量的值了,在修改程序时还要不断的烧片实验,确实很麻烦,这时如果有一台仿真器就会变得很好方便了。
但一台好的仿真器对于业余爱好者来说确实有一些贵,在这里介绍这种易于自制的51芯片仿真器虽然有一些地方不够完善,但还是非常适于初学51单片机的朋友和经济能力不是很好的业余爱好者。
这个仿真器的仿真CPU是使用SST公司的SST89C58或SST89C54(其它相容的芯片也可,这里主要讲述SST89C58),对于没有可以烧写SST89C58芯片的朋友应该选用CA版本的SST89C58芯片,这个CA型号的芯片出厂时已内置了BSL1.1E的固件程序。
那什么是BSL呢?BSL就是英文BOOT-Strap Loader,意思就是可引导装载,形象来说就像电脑用DOS起动盘起动后可以装载应用程序并运行。
只不过SST89C58是用串口来输入程序资料的。
为了能把编译好的单片机程序HEX或BIN文件下载到SST89C58芯片上,SST 公司还提供了一种叫EasyIAP的软件,IAP为In-ApplicationProgramming,有了这个软件就可以把SST89C54变为在线下载的实验器。
在这里不详述EasyIAP的使用,只讲述如何利用它去把SST89C58升级为带SoftICE固件程序的51仿真器。
图1SST89C58一、制作带串口的的最小化应用板无论是EasyIAP还是仿真器,都需要用串行口使SST89C58芯片和PC上位机进行通讯传输数据,因此我们先要制作一个带RS232/TTL转换的应用板,如果你的51实验电路板或目标电路板已带有这样的电路那么你就可以跳过这一段了。
实验:KEIL51和proteus仿真软件的使用一、实验目的1、掌握KEIL51软件的使用方法2、掌握proteus仿真软件的使用方法二、实验设备及软件1、单片机实验板2、PC机3、KEIL514、proteus三、实验任务KEILC和proteus仿真软件的使用方法四、实验步骤1、Proteus ISIS 设计单片机电路的基本步骤:(1) 新建设计文件夹或打开一个现有的设计文件。
(2) 选择元器件(通过关键字或分类检索)。
(3) 将元器件放入设计窗口。
(4) 添加其他模型(电源、地线、信号源等)和相关的虚拟仪器。
(5) 编辑和连接电路。
(6) 编写单片机所需的源程序。
(7) 加入源程序,并通过构造,得到仿真程序或目标程序。
(8) 根据需要,设置对象的属性,如将单片机的”Program File”属性设置为上述仿真调试程序或目标程序。
(9) 启动仿真功能,对电路进行仿真操作,验证其功能。
2、Keil 51基本步骤(1)单击Project菜单项,选择New Project项。
此时弹出Create New Project对话框,选择合适的路径口,在文件名一栏中填入新工程的名字。
单击保存。
(2)根据所用的器件,选择CPU的型号,单击确定。
(3)Keil51询问是否生成默认的配置文件,这个可选可不选。
单击NO,观察项目文件管理窗口的变化。
(4)在File菜单下单击New选项,新建文件。
此时在代码窗口出现一“Text1”空白文档。
(5)在“Text1”中编辑完代码后,单击File菜单中的保存项,弹出保存对话框。
注意在对文件命名时必须加扩展名.asm。
(6) 在项目导航栏中Source Group 上单击右键,选Add File to Group ‘Source Group 1’。
弹出Add File 对话框。
选中刚才保存的xxxx.asm.文件,单击Add,然后关闭对话框。
此时在项目文件管理窗口中就会出现刚才所添加的文件xxxt.asm。
单片机简易计算器的设计与仿真设计与仿真一个单片机简易计算器可以分为以下几个步骤:构建电路、编写程序、进行仿真。
下面将详细进行说明。
一、构建电路1.硬件设计:- 使用单片机,可以选择常用的型号,例如ATmega16-连接20MHz的晶振到XTAL1引脚和XTAL2引脚,用于提供单片机的时钟信号。
-连接VCC引脚和GND引脚,为单片机提供电源。
-连接一个16x2的液晶显示屏,用于显示输入和计算结果。
-连接数个按键,例如数字键0-9和运算符键+、-、*、/等。
2.硬件连接:-连接液晶显示屏的VCC引脚和GND引脚到正负电源。
-连接液晶显示屏的RS引脚和RW引脚到单片机的IO口,用于控制液晶显示屏。
-连接液晶显示屏的数据线到单片机的IO口,用于发送显示的字符。
-连接按键到单片机的IO口,用于检测用户输入。
3.电路图:根据硬件设计的需求,绘制电路图并进行连接。
二、编写程序1.程序框架:-引入头文件,包括液晶显示屏操作函数的头文件。
-定义常量,包括液晶显示屏的引脚定义、按键的引脚定义等。
-定义全局变量,用于保存用户输入和计算结果等。
-编写主函数,程序的入口。
-编写显示函数,用于在液晶显示屏上显示字符。
-编写按键检测函数,用于检测用户按键输入。
-编写计算函数,根据用户的输入进行相应的计算运算。
2.程序实现:-在主函数中,初始化单片机的IO口,设置液晶显示屏的引脚,并调用液晶显示函数显示欢迎界面。
-在死循环中,不断检测按键的输入,并根据按键进行相应的操作,例如输入数字、输入运算符、清零、计算等。
-根据用户的输入,调用计算函数进行相应的计算,并将结果显示在液晶显示屏上。
三、进行仿真使用仿真软件(例如Proteus)进行仿真,可以验证电路和程序的可靠性和正确性。
根据实际情况,对电路进行布线和调整,测试程序逻辑是否正确,模拟按键的输入,查看液晶显示屏是否正确显示结果。
总结:设计与仿真一个单片机简易计算器,需要从构建电路、编写程序到进行仿真,每个步骤都需要细心和耐心。
用Proteus软件进行51系列单片机仿真的制作和演示过程教程一、ISIS界面简介假如读者的电脑上已成功安装了Proteus,则可以从电脑桌面的“开始”-“程序”-Proteus 6 Professional-ISIS 6 Professional,启动ISIS。
ISIS是仿真模拟设计SCH设计程序。
ISIS成功启动后的界面如图1所示,分为菜单栏、工具栏,工具箱、编辑窗口(显示正在编辑的电路原理图)、预览窗口(显示整个电路图的缩略图)、对象选择器,对象旋转工具和模拟调试时用的快捷调试按钮。
二、绘制仿真电路的原理图笔者以图2所示的电路为例,介绍电路原理图的绘制过程。
操作过程为,用鼠标左键点击工具箱的元器件“”按钮,使其选中,再选中ISIS对象选择器左边中间的“”按钮,出现“Pick Devices”对话框,如图3所示,在这个对话框里读者可以选择元器件和一些虚拟仪器。
在“Libraries”下面找到“MICRO”选项,找到单片机A T89C51,双击“A T89C51”,这样在左边的对象选择器就有了A T89C51这个元件了,点击一下这个元件,然后把鼠标指针移到右边的原理图编辑区的适当位置,点击鼠标的左键,就把A T89C51放到原理图区。
按照同样方法把所需的其它元器件都放到原理图编辑区。
元器件放置完后,若位置不合适,需要调整元器件的位置,可先通过鼠标右键选中对象,此时被选中的对象变成红色显示,再用鼠标左键点击被选中的对象不放并拖到合适的位置后再释放鼠标左键。
若要旋转对象,可在选中对象时按旋转按钮进行旋转。
若要编辑对象的属性,在对象被选中时,用鼠标左键点击对象,此时出现属性对话框,比如要改变电阻的属性,可右键选中电阻,再用左键点击被选中的电阻,出现如图4所示的对话框。
在这里我们可以改变电阻的标号,电阻值,PCB封装以及是否把这些东西隐藏等,修改后,点击“OK“按钮即可。
在Proteus,许多器件没有Vcc和GND引脚,其实它们被隐藏了,在使用时可以不加电源。
Multisim里仿真8051单片机Multisim 里仿真8051单片机实现的功能:本次实验要求实现基于单片机的LCD显示,LCD分两次显示,第一次显示“0123”第二次显示“456789A”。
LCD采用08x1的液晶显示器,单片机采用8051。
实验内容:1、建立工程存放文件夹:打开“我的文档”,在National Instruments文件夹中打开Circuit Design Suite 10.0,然后在MCU Workspaces文件夹中新建一个文件夹,文件名为project。
2、双击桌面上的Multisim10的图标,软件打开需要等待一定的时间。
3、设置:点击菜单栏中的“Options”,选择“sheet properties”,在Circuit中的“NET names”栏里选中“Hide All”,然后再点击Workspace,在“Sheet size”栏中选择“A4”,点击“OK”。
4、保存工程文件:点击File中的Save,在弹出的对话框中点击MCU Workspaces,然后点击自己新建的project文件夹,然后点击“保存”。
5、选择元器件:在空白纸上点击右键,然后选择“Place Component”,在弹出的对话框中的“Group”中选择“MCU Module”,然后在“family”中选择“805X”中的“8051”,点击“OK”,在图上适合的位置点击左键,在弹出的对话框中点击“Browse”,在“我的文档”中找到刚新建的project文件夹,点击该文件夹,然后点击确定。
在“Please enter the work space name”中输入文件名“project”,点击“Next”,在“Programming language”中选择“Assembly”,然后点击“Finish”。
接着在“Group”中选择“Basic”,在“Family”中选择“RESISTOR”,在Component中点击“10K”电阻,点击“OK”,在适合的位置点击左键即可。
从零到项目开发学51单片机与C语言技术基于HL-1\HJ-3G\HJ-C52开发板QQ:398115088第八讲单片机仿真--怎样才算学会了51单片机单片机仿真单片机仿真的概念和方法一、什么是单片机仿真,为什么要仿真?二、如何进行软件仿真?三、硬件仿真和软件仿真有什么区别,如何进行硬件仿真?如何才算学会了51单片机•只要八个步骤就可以入门单片机•学习使用单片机就是理解单片机硬件结构,在汇编或C语言中学会各种功能的初始化设置,以及实现各种功能的程序编制,我们还可以利用单片机仿真学习板在电脑上做实验,也可以用硬件电路的单片机学习板来做实验。
第一步:数字I/O的使用•使用按钮输入信号,发光二极管显示输出电平,就可以学习引脚的数字I/O功能,在按下某个按钮后,某发光二极管发亮,这就是数字电路中组合逻辑的功能,虽然很简单,但是可以学习一般的单片机编程思想,例如,必须设置很多寄存器对引脚进行初始化处理,才能使引脚具备有数字输入和输出输出功能。
每使用单片机的一个功能,就要对控制该功能的寄存器进行设置,这就是单片机编程的特点,千万不要怕麻烦,所有的单片机都是这样。
第二步:定时器的使用•学会定时器的使用,就可以用单片机实现时序电路,时序电路的功能是强大的,在工业、家用电气设备的控制中有很多应用,例如,可以用单片机实现一个具有一个按钮的楼道灯开关,该开关在按钮按下一次后,灯亮3分钟后自动灭,当按钮连续按下两次后,灯常亮不灭,当按钮按下时间超过2s,则灯灭。
数字集成电路可以实现时序电路,可编程逻辑器件(PLD)可以实现时序电路,可编程控制器(PLC)也可以实现时序电路,但是只有单片机实现起来最简单,成本最低。
定时器的使用是非常重要的,逻辑加时间控制是单片机使用的基础。
第三步:中断•单片机的特点是一段程序反复执行,程序中的每个指令的执行都需要一定的执行时间,如果程序没有执行到某指令,则该指令的动作就不会发生,这样就会耽误很多快速发生的事情,例如,按钮按下时的下降沿。
51单片机简易仿真器的制作
实验目的:
由于市场上现有的单片机仿真器非常昂贵,为了减少在开发单片机时的成本,故提出利用SST公司的SST89E564RD系列单片机制作简单的51单片机仿真器。
实验环境:
1.硬件环境:
计算机一台SST89E564RD单片机MAX232芯片串口线一根
2.软件环境:
Protel99SE软件和KeilC51软件。
其中Protel99SE可以完成硬件原理图的设计,以及PCB板的制作;KeilC51可以完成工程的建立,代码的编写,程序的编译以及最终的软硬件仿真。
实验内容:
1.实验原理:
只需将SST单片机的RXD P3.0和TXD P3.1管脚通过一个RS232的电平转换电路连接到PC的COM串口即可,可使用这个RS232的转换电路做一个通用的8051的下载线。
下载时只需将下载线连接到用户目标板上单片机的P3.0P3.1 VCC,GND4个管脚即可进行下载或仿真。
设计的原理图如图1所示,在实际的设计过程中,添加了一个发光二极管,其目的很简单,就是为了验证仿真器供电正常。
图1SST89E564单片机仿真器原理图
设计的SST89E564单片机仿真器的测试板如图2所示,在设计并印制PCB 板之后,硬件电路的设计就完成了。
图2仿真器测试板
2.实验步骤:
1)通过SST串口下载软件BootLoader下载SOFTICE监控代码
由于SST的MCU在出厂时已经将BOOT LOADER的下载监控程序写入到芯片中,因此无需编程器就可通过SST BOOT-STRAP LOADER软件工具将用户程
序下载到SST的MCU中,从而运行用户程序。
SST BOOT-STRAP LOADER软件工具还可将原来的MCU内部的下载监控程序转换为SoftICE的监控程序,从而实现SOFTICE的仿真功能。
执行SSTEasyIAP11F.exe软件运行SST Boot-Strap Loader,在内部模式下检测到对应器件的型号后,SoftICE固件通过按SoftICE菜单下“Download SoftICE”选项下载,便将SoftICE固件下载到MCU。
在BLOCK1的SST Boot-Strap Loader 会被SoftICE固件代替。
详细操作步骤如下
A选择连接的串口
B选择芯片型号和内部存储器模式(选择使用SST89E564RD,使用片内程序存储器)
C选择串口波特率MCU的晶振频率
D按确定后再重新复位MCU
E如果通讯成功在窗口的右上角可以显示出芯片的型号及BOOT LOADER的版本信息
F通讯成功,点击DOWNLOAD SOFTICE的按钮,即可将MCU内部的BOOT LOADER的监控程序更换为SOFTICE的监控程序
G点击确定按钮确认转换为SOFT ICE的监控程序
H这是转换后的提示信息说明转换SOFTICE监控程序成功
此时这片SST89E554芯片便具备了SOFTICE的在线仿真的功能
2)如何使用SoftICE
A设置KEIL C51的DEBUG调试参数环境
使用KEIL C51打开Project用户程序,更改调试仿真的选项,选择为MON-51的硬件仿真
B设置仿真的通讯参数点击SETTING按钮去掉CACHE选项
在完成了以上的设置之后,就可以象使用其他昂贵的仿真器一样对51系统进行调试了。
实验总结:
SST的仿真器功能可以代替大部分的专用仿真器的功能,使在开发单片机时省却了价格昂贵的仿真器和编程器使得51单片机的开发更加容易和普及,并且SST的单片机价格便宜出厂时就包含了在线下载和在线仿真的功能。
SoftICE下载网址:
/products/software_utils/softice/index.xhtm l
3SoftICE用到的MCU硬件资源
SST的SoftICE用到的MCU硬件资源如下
(1)一个UART串口RXD TXD用定时器2做为波特率发生器
(2)8个字节的堆栈空间
(3)SoftICE监控程序分别占用下面MCU的5Kbyte程序空间对SST89C58BLOCK1的1Kbyte从F000h到F3FFh
BLOCK0的4Kbyte从7000h到7FFFh
对SST89C54BLOCK1的1Kbyte从F000h到F3FFh
BLOCK0的4Kbyte从3000h到3FFFh
对SST89x554RC BLOCK1的4KByte从0000h到0FFFh BLOCK0的1Kbyte从7C00h到7FFFh
对SST89x564RD BLOCK1的4Kbyte从0000h到0FFFh BLOCK0的1Kbyte从FC00h到FFFFh
对SST89E/V54RDX BLOCK1的1Kbyte从E000h到E3FFh BLOCK0的4Kbyte从3C00h到3FFFh
对SST89E/V58RDX BLOCK1的1Kbyte从E000h到E3FFh BLOCK0的4Kbyte从7C00h到7FFFh
对SST89E/V516RDX BLOCK1的4Kbyte从0000h到0FFFh BLOCK0的1Kbyte从FC00h到FFFFh
其它部分的存储区域可以由用户的应用程序使用
4.一:仿真器主要性能参数(超大容量64K仿真空间):
1.可仿真89C51、89C52、89S51、89S52、89C58等等51内核的单片机,详见:仿真器支持器件列表。
2.直接支持KEIL C51的IDE开发仿真环境,64K用户可使用仿真程序空
间,0000~FFFF,采用顶级仿真芯片(见图),监控程序存储在特殊空间,不占用0000~FFFF的64K的仿真空间,有别于其他厂家的63K仿真器。
3.全保留单片机特性,避免仿真正常而实际烧录芯片却不正常的问题。
4.RS-232通讯接口,波特率4.8Kbps-57.6Kbps自适应。
5.仿真频率0-40MHz晶振可选,系统配置11.0592MHz。
6.程序代码可以重复装载,无需预先擦除用户程序空间。
7.监控程序占用用户的资源少,全速运行不占用资源。
8.片内64K程序空间可以随时进行在线程序更新,可以调试长达几千行的楼宇智能控制大型程序、键盘控制汉字液晶显示大型程序。
9.可单步、断点、全速、可参考变量、RAM变量。
10.支持汇编、C语言,混合调试。
11.板载仿真头接口可以和任何的试验板、目标板进行连接,从而达到硬件仿真的无限扩展。
12.取消外接P口接线槽,以防止仿真器内部监控程序被意外操作冲掉。
13.采用工业级64K超大容量仿真芯片作为核心部件,抗干扰能力级强,可仿真次数大于等于100万次。
14.内部存储器物理空间64K+4K,是伟福通用仿真器G6型的16倍(4K),是伟福51专用仿真器的8倍。
15.仿真频率最高33/40MHz。
16.支持同时最多10个断点。
支持以下51系列单片机芯片仿真,还有很多公司产品不能一一列出:
Atmel公
司AT89C51、AT89C52、AT89S51、AT89S52、AT89C1051、AT89C2051、AT89C4051、AT89LV52、AT89S53、AT89LS53、AT89C55、AT89LV55
Philips
公司
P80C54、P80C58、P87C54、P87C58、P87C524、P87C528 Winbond公
司
W78C54、W78C58、W78E54、W78E54
SST公司SST89C54、SST89C58
Inter公司i87C54、i87C58、i87L54、i87L58、i87C51FB、i87C51FC Temic公司80C51、80C52、83C154、83C154D、89C51、87C52 Siemens公
司
C501-1R、C501-1E、C513A-H、C503-1R、C504-2R ISSI公司IS80C52、IS89C51、IS89C52
Dallas公司DS83C520、DS87C520。