51单片机实验一实验报告_第1页
51单片机实验一实验报告_第2页
51单片机实验一实验报告_第3页
51单片机实验一实验报告_第4页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、51单片机实验一实验报告 实验报告 班级: 姓名: 学号: 组别: 课程名称:单片机原理及应用 实验室: 实验时间: 实验项目名称: 实验一 mcs-51单片机及其开发系统(仿真器)的认识 一、 实验目的: 学习并掌握单片机仿真系统的操作方法,熟悉系统功能及用法。 (1) 了解mcs-51单片机开发常用工具。 (2) 了解仿真器构成、功能及连接。 (3) 掌握mcs-51开发软件(汇编器)安装、功能及基本操作。 (4) 掌握源程序的编辑、汇编、运行(包括连续执行、单步执行和跟踪执行)。 (5) 掌握汇编语言指令与机器语言指令之间的对应关系。 (6) 掌握org、data、bit等伪指令的作用。

2、 (7) 掌握在仿真开发系统下浏览、修改特殊功能寄存器、内部ram、外部ram单元的方法。 (8) 理解mcs-51单片机在复位期间及复位后有关引脚的状态、特殊功能寄存器的初值。 二、 实验内容及原理: mdewin单片机仿真系统的安装、设置、主要功能操作练习。 三、 实验器材: mdewin单片机仿真系统一套、pc机一台。 四、 实验步骤及实验结果分析: 一、程序输入练习 : 首先在medwin下新建一项目,并新建一后缀名为asm的文件(汇编源文件),并添加入项目中。 按规定的格式输入以上程序(只输源程序部分)。 二、程序运行和控制: 1.程序的编译、产生代码并装入: 输入源程序完毕后,可在

3、"项目管理'窗口中点击"编译/汇编'选项,如程序无输入错误、语法错误等,编译完成。在消息窗口中,产生编译成功信息。如有错误,则消息窗口中指出错误所在行及错误类型,请重新修改源程序。 编译成功后,在"项目管理'窗口中点击"产生代码并装入'选项,对编译无误后产生的obj文件进行连接,并把代码装入仿真器。代码装入仿真器后,即可实行仿真。 可在反汇编窗口中查看编译产生的机器码,并与上述程序中对照。 记录你认为能说明问题的检查结果。 2.程序的全速、断点、单步等执行方式: 为提高调试程序的运行速度,程序采用全速断点运行方式。 练习设

4、置及取消设置程序断点。 比较单步及跟踪两种程序运行方式的不同。 3.查看单片机各种资源状态及内容: 在"察看'窗口中可以查看单片机内部及程序变量等各种资源,在单步或程序断点运行中可以实时观察单片机sfr、内外ram、程序变量等内容,可以很方便的观测程序的运行状况。 将观测的结果记录下来以便和程序分析结果相比较。 三.程序输入补充练习 1.汇编语言源程序编辑、运行及调试,输入、编辑、汇编、运行(连续、单步执行)如下程序段: ; 变量定义区 xvar data 30h ;定义变量 x,y地址 yvar data 38h p10 bit p1.0 ;位定义p1.0定义为p10 or

5、g 0000h ;伪指令 定义pc开始位置 ljmp main ;长跳转到主程序位置 org 0100h ;伪指令 主程序开始位置 main: mov sp, #9fh ;设置堆栈地址 mov a, #55h ;a=55h mov xvar, a ;xvar(30h)=55h mov r0, #xvar ;r0=30h mov r0, #01h ;(30h)=01h inc r0 ;r0=31h mov r0, #02h ;(31h)=02h mov r1, #yvar ;r1=38h mov a, r0 ;a=02h mov r1, a ;(38h)=02h push acc ;压栈操作a0

6、,a1存储acc和psw push psw ; mov a, #0aah ;a=aah setb rs0 ;01 选用第一区寄存器 clr rs1 mov r0, #5ah ;r0=5ah mov r1, #0a5h ;r1=a5h pop psw ;出栈操作释放acc和psw pop acc inc r1 ;r1=39h dec r0 ;r0=30h mov a, r0 ;a=01h mov r1, a ;(39h)=01h clr p1.0 setb p1.0 ;置位p1.0 mov 90h, #00h ;(90h)=00h mov 90h, #55h ;(90h)=55h mov 90h

7、, #0ffh ;(90h)=ffh mov p1, #00h ;p1=00h mov p1, #55h ;p1=55h mov p1, #0ffh ;p1=ffh sjmp $ end (1) 找出每条指令的机器码,并与第3章指令码表对照,指出每一指令的功能、寻址方式、操作数书写形式。 地址 机器码 指令 目的操作数/ / 源操作数 mov sp, #9fh 目的操作数:直接寻址;源操作数:立即寻址 mov a, #55h 目的操作数:寄存器寻址;源操作数:立即寻址; mov xvar, a 目的操作数:直接寻址;源操作数:寄存器寻址; mov r0, #xvar 目的操作数:寄存器寻址;源

8、操作数:立即寻址; mov r0, #01h 目的操作数:寄存器间接寻址;源操作数:立即寻址; inc r0 寄存器寻址 mov r0, #02h 目的操作数:寄存器间接寻址;源操作数:立即寻址; mov r1, #yvar 目的操作数:寄存器寻址;源操作数:立即寻址; mov a, r0 目的操作数:寄存器寻址;源操作数:寄存器间接寻址; mov r1, a 目的操作数:寄存器间接寻址;源操作数:寄存器寻址; push acc ; 将acc中的内容压入堆栈;直接寻址 push psw 将psw压入堆栈;直接寻址 mov a, #0aah 目的操作数:寄存器寻址;源操作数:立即寻址; setb

9、 rs0 位寻址 clr rs1 位寻址 mov r0, #5ah 目的操作数:寄存器寻址;源操作数:立即寻址; mov r1, #0a5h 目的操作数:寄存器寻址;源操作数:立即寻址; pop psw 按压栈顺序放入psw; 直接寻址 pop acc 按压栈顺序放入acc;直接寻址 inc r1 寄存器寻址 dec r0 寄存器寻址 mov a, r0 目的操作数:寄存器寻址;源操作数:寄存器间接寻址; mov r1, a 机器码:f7;r1=a; 目的操作数:寄存器间接寻址;源操作数:立即寻址; clr p1.0 将p10口清零 setb p1.0 将p10口置一; 位寻址 mov 90h

10、, #00h 机器码:759000;(90h)=00h;目的操作数:直接寻址;源操作数:立即寻址; mov 90h, #55h 目的操作数:直接寻址;源操作数:立即寻址; mov 90h, #0ffh 目的操作数:直接寻址;源操作数:立即寻址; mov p1, #00h 目的操作数:直接寻址;源操作数:立即寻址; mov p1, #55h 目的操作数:直接寻址;源操作数:立即寻址; mov 90h, #0ffh 目的操作数:直接寻址;源操作数:立即寻址; sjmp $ (2) 在单步执行过程中,每执行一条命令后,观察并记录有关寄存器、内存单元的变化情况。设置断点后,再连续执行,记录30h、31

11、h、38h单元内容,与复位后的内容进行比较,由此得出什么结论? 全速执行 全速执行后复位 执行至断点处 全速执行到结束 由上图可见,全速执行后并不会输出结果,只有当程序复位之后才会将结果显示出来,但是设置断点后,运行至断点就会显示已运行的结果,由此我得出结论:当全速运行到最后时,系统处于原地跳转状态,只要系统不停下就不显示结果,而设置断点后,到达断点就会停止运行,从而显示运算结果。而单步执行在每一步执行之后,对应地址的数值就会立刻改改变。 (3) 修改org 100h指令后的地址,重新汇编,观察程序代码在程序存储器中存放位置的变化情况。记录你认为能说明问题的检查结果。 org 300h org 1000h 五、 在实验过程中遇到的问题及解决方法 (1) 软件安装出错 解决:删除注册表,在注册表的删除过程中,必须要删干净,然后换安装包重装。 (2) 出栈时,寄存器的数值改编 解决:psw 出栈时,改变了

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论