1、(8) 理解MCS-51单片机在复位期间及复位后有关引脚的状态、特殊功能寄存器的初值。二、实验内容及原理:Mde单片机仿真系统的安装、设置、主要功能操作练习。三、实验器材:Mde单片机仿真系统一套、PC机一台。四、实验步骤及实验结果分析p :一、程序输入练习 :首先在Med下新建一项目,并新建一后缀名为asm的文件(汇编文件),并添加入项目中。按规定的格式输入以上程序(只输程序部分)。二、程序运行和控制: 1.程序的编译、产生代码并装入: 输入程序完毕后,可在“项目管理”窗口中点击“编译/汇编”选项,如程序无输入错误、语法错误等,编译完成。在消息窗口中,产生编译成功信息。如有错误,则消息窗口中
2、指出错误所在行及错误类型,请重新修改程序。编译成功后,在“项目管理”窗口中点击“产生代码并装入”选项,对编译无误后产生的OBJ文件进行连接,并把代码装入仿真器。代码装入仿真器后,即可实行仿真。可在反汇编窗口中查看编译产生的机器码,并与上述程序中对照。记录你认为能说明问题的检查结果。2.程序的全速、断点、单步等执行方式: 为提高调试程序的运行速度,程序采用全速断点运行方式。练习设置及取消设置程序断点。比较单步及跟踪两种程序运行方式的不同。3.查看单片机各种资状态及内容:在“察看”窗口中可以查看单片机内部及程序变量等各种资,在单步或程序断点运行中可以实时观察单片机SFR、内外RAM、程序变量等内容
3、,可以很方便的观测程序的运行状况。将观测的结果记录下来以便和程序分析p 结果相比较。三.程序输入补充练习 1.汇编语言程序编辑、运行及调试,输入、编辑、汇编、运行(连续、单步执行)如下程序段:; 变量定义区_VAR DATA30H定义变量 _,Y地址YVAR DATA38HP10 BITP1.0位定义P1.0定义为P10ORG0000H伪指令 定义PC开始位置LJMPMAIN长跳转到主程序位置0100H伪指令 主程序开始位置 MAIN: MOV SP, #9FH设置堆栈地址 MOV A, #55HA=55HMOV _VAR, A_VAR(30H)=55HMOV R0, #_VARR0=30HM
4、OV R0, #01H(30H)=01HINC R0R0=31HMOV R0, #02H(31H)=02HMOV R1, #YVARR1=38HMOV A, R0A=02HMOV R1, A(38H)=02HPUSH Acc压栈操作A0,A1存储acc和pswPUSH PSWMOV A, #0AAHA=AAHSETB RS001 选用第一区寄存器CLR RS1MOV R0, #5AHR0=5AHMOV R1, #0A5HR1=A5HPOP PSW出栈操作释放acc和pswPOP ACCINC R1R1=39HDEC R0A=01H(39H)=01HCLR P1.0SETB P1.0置位P1.0
5、MOV 90H, #00H(90H)=00HMOV 90H, #55H(90H)=55HMOV 90H, #0FFH(90H)=FFHMOV P1, #00HP1=00HMOV P1, #55HP1=55H MOV P1, #0FFHP1=FFHSJMP $END (1) 找出每条指令的机器码,并与第3章指令码表对照,指出每一指令的功能、寻址方式、操作数书写形式。地址机器码指令目的操作数/ / 操作数MOV SP, #9FH目的操作数:直接寻址;操作数:立即寻址 MOV A, #55H寄存器寻址;立即寻址;寄存器间接寻址;寄存器寻址 MOV R0, #02HPUSH Acc ;将Acc中的内容
6、压入堆栈;直接寻址 PUSH PSW将PSW压入堆栈;直接寻址 MOV A, #0AAH位寻址 CLR RS1位寻址 MOV R0, #5AH按压栈顺序放入PSW;直接寻址 POP ACC按压栈顺序放入Acc;直接寻址 INC R1寄存器寻址 DEC R0寄存器寻址机器码:F7;R1=A;将p10口清零 SETB P1.0将P10口置一;位寻址 MOV 90H, #00H759000;(90H)=00H;(2) 在单步执行过程中,每执行一条命令后,观察并记录有关寄存器、内存单元的变化情况。设置断点后,再连续执行,记录30H、31H、38H单元内容,与复位后的内容进行比较,由此得出什么结论?全速
7、执行全速执行后复位执行至断点处全速执行到结束 由上图可见,全速执行后并不会输出结果,只有当程序复位之后才会将结果显示出来,但是设置断点后,运行至断点就会显示已运行的结果,由此我得出结论:当全速运行到最后时,系统处于原地跳转状态,只要系统不停下就不显示结果,而设置断点后,到达断点就会停止运行,从而显示运算结果。而单步执行在每一步执行之后,对应地址的数值就会立刻改改变。(3) 修改ORG 100H指令后的地址,重新汇编,观察程序代码在程序存储器中存放位置的变化情况。ORG 300H ORG 1000H 五、在实验过程中遇到的问题及解决方法 (1)软件安装出错解决:删除注册表,在注册表的删除过程中,
8、必须要删干净,然后换安装包重装。(2)出栈时,寄存器的数值改编 解决:psw 出栈时,改变了 rs0,rs1 的值,也就是换回了 0 区寄存器。因此个寄存器的数值均为压栈前的数值。六、实验结论本次实验,较为简单,基本上是验证性实验,在学习了理论知识后,通过实践,简单明了的看到了各个地址的数值,并了解到程序的运行过程,单步运行更容易让我们了解到每一步指令的操作效果。另外,在实验过程中,调用各个查看窗口进行实验过程跟踪,能更加直观的认识到指令的作用 文章长而不拖沓。实验一:开发环境的搭建一、(1)、keil的安装与破解点击Keil安装包,一键傻瓜式操作,安装完成后以管理员身份打开Keil,在Fil
9、e里选择license management 把CID复制到注册机里的CID栏,注册机里的Target选择C51,然后点击Generate,将生成的激活码复制到license management里的LIC栏,并点击Add LIC,即完成破解。(2)、CH340驱动安装1 (3)、普中烧录软件的使用波特率选择9600,速度选择低速,文件路径选择HE_文件的路径(4)、keil的使用2新建工程并保存,在里面选择STC90C52RC,再新建C文件,注意保存时手动加上.c后缀,再在Source Group 1 右击选择 Add Files to GroupSource Group 1找到刚才新建的C
10、文件,然后找到图标并点击,再Target里将晶振频率改为12MHz,将Output里生成HE_文件的勾打上即可生成HE_文件。3 (5)、protues的安装与破解双击安装包开始安装,等进入到Labcenter Licence Manager1.6,也就是许可证管理页面,点击Browse For Key File,找到下载解压软件包中的LICENCE.l_k文件,并打开,再点击install,再点击 “是” ,继续傻瓜式操作。破解时以管理员身份运行破解软件,目标文件里找到安装的路径,再点击升级,即可完成破解。4 (6)、protues的使用双击蓝色ISIS图标即可打开Proteus,File里
11、新建并保存,然后点击“P”即可选择自己所需元器件,输入AT89C52单片机,确定后在图纸中点击即可,双击单片机将对话框中的Program File 选择Keil生成的HE_文件,电路及程序都完成后,点击左下角即可开始仿真,点击停止仿真。5 二、实验结论在实验一里学会了开发环境的搭建,学会并熟练了Keil uVision4 和Proteus 7.8以及普中烧录软件的使用,基本实现了用Keil编写程序并且生成HE_文件,能够用Proteus 画基本仿真图并且成功实现仿真,在仿真过程中出现了10电脑不能正常实现仿真的问题,在经过XX等多方面查找之后找到了如下解决办法:1、路径上不能有中文2、仿真时出现 cannot openC:User?DataLocalTempLISA5476.SDF的错误时:右击我的电脑-属性-高级系统设置-环境变量,在“用户变量”栏里找到TEMP与TMP,分别双击,将变量值都改为 SystemRootTEMP如果还不行将下面的“系统变量”栏里的TEMP与TMP同样修改方法,如果没有新建就行。(部分电脑还不行需要重启)6实验二:如何点亮一个发光二极管一、实验原理发光二极管采用的是
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1