单片机存储器填充程序实验报告_第1页
单片机存储器填充程序实验报告_第2页
单片机存储器填充程序实验报告_第3页
单片机存储器填充程序实验报告_第4页
单片机存储器填充程序实验报告_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

实验一单片机存储器填充程序一、实验目的1、了解单片机汇编语言程序的基本结构2、了解单片机汇编语言程序的设计和调试方法3、掌握几个的基本的传送类、控制类指令的使用方法二、实验仪器单片机开发板、万利仿真机、稳压电源、计算机三、实验原理1、单片机存储器的结构51系列单片机数据存储器分为内部直接寻址存储器(工作寄存器区,位寻址区),内部间接寻址存储器,外部存储器。如图31所示。图31单片机存储器结构2、单片机内部存储器操作指令51单片机内部将数据存储器划分成多个区域,每个区域用的存储器访问指令也不相同(操作码或操作数不同)。A、内部直接寻址通用存储器访问指令MOVA,40H;将内部直接寻址存储器中的40H单元内容复制到累加器AMOVR2,30H;将内部直接寻址存储器中的40H单元内容复制到寄存器R2MOV30H,40H;将内部直接寻址存储器中的40H单元内容复制到30HMOVA,R0;将R0指向的内部直接寻址存储器的内容复制到累加器APUSHACC;将累加器A的内容复制到堆栈栈顶POPACC;将堆栈指针SP指向的内部直接寻址存储器内容复制到AB、内部间接寻址通用存储器访问指令MOVA,R0;将R0指向的内部间接寻址存储器的内容复制到累加器AMOVA,R0;将累加器A的内容复制到R0指向的内部间接寻址存储器00H07FH0000H0FFFFH外部数据存储器,需要扩展,有些单片在内部扩展一部分80H0FFH直接寻址区,用于特殊功能,有很多没有用80H0FFH间接寻址区,保存一般数据,52单片机内部有高128B存储器通用存储器30H7FH位寻址寄存器20H2FH工作寄存器00H1FHPUSHACC;将累加器A的内容复制到系统堆栈栈顶POPACC;将堆栈指针SP指向的内部间接寻址存储器内容复制到AC、内部位寻址区存储器访问指令MOVC,00H;位寻址区的00H位内容复制到C标志MOV01H,C;将C标志内容复制到位寻址区的00H3、单片机外部数据存储器操作指令MOVXA,DPTR;将DPTR指向的外部存储器的内容复制到累加器AMOVXDPTR,A;将累加器A的内容复制到由DPTR指向的外部存储器四、实验内容1、单片机内部RAM填充程序把单片机片内30H50H的单元全部清零。流程图如图32所示。ORG0LJMPSTARTORG100STARTMOVA,00H填充的内容MOVR0,30H填充的区域的首地址MOVR7,32填充的区域的字节数RAMCLEARMOVR0,A填充数据INCR0下一单元DJNZR7,RAMCLEAR没有完成,则返回SJMP填充完成2、采用输入参数的方式设计的程序ORG0LJMPSTARTORG100STARTMOVA,00HMOVR0,30HMOVR7,32LCALLRAMCLEARSJMP3RAM区域填充输入A填充内容,R7填充字节数,R0填充指针(加计数)输出无RAMCLEARMOVR0,AINCR0DJNZR7,RAMCLEARRET开始装备输入参数填充一字节指向下一字节完成完成,退出图32区域填充程序流程图YN3、采用宏汇编结构设计的程序在万利集成开发环境中建立项目文件,并建立两个文件,添加到项目中,文件内容如下FILEINITASMPUBLICRAMCLEARMISCCODESEGMENTCODERSEGMISCCODERAMCLEARMOVR0,AINCR0DJNZR7,RAMCLEARRETEND在主程序中调用另一个文件中的子程序,要在调用之前声明是引用外部程序。FILEMAINPROASMEXTRNCODERAMCLEARMOVR7,32MOVA,00HMOVR0,30HLCALLRAMCLEARSJMP3END五、实验步骤及调试信息(1)、新建实验项目XUEFENGHAI(2)、输入实验程序并补充完整(3)、编译下载实验程序,并修改错误(按附录说明)1、编译出错提示MISSINGENDSTATEMENT原因文件结尾处没有写END。修改后正确2、全速运行程序出现以下现象原因驱动器的选择出现错误。(4)全速运行程序,查看实验现象。实验前的数据内容1运行后的数据内容2运行数据如下6、单步执行,分析各程序的功能特点。若单步执行,则实验结果会从30H逐步执行,实现逐步清零。同时R0从30H逐渐递增到3CH,R7从0CH逐渐递减到00H。7、整理实验设备六、实验思考题1、实验内容1对哪些单元进行清零,程序是否执行正确答实验1从30H到3CH进行清零,程序执行正确。2、说明MOV、MOVX、MOVC三条指令的区别。答MOV单片机内部的寄存器或者存储器之间相互传递数据(内部RAM),MOVX单片机内部的A累加器与片外的数据存储器(片外RAM)或I/O传送数据的指令,MOVC单片机内部的A累加器向ROM程序存储器读取数据,因为程序存储器是固定的不可以写的,所以,A只能读数据,却不能向它写数据。3、如果要在单片机内部填充N个双字节数,请写出相关程序ORG0LJMPSTARTORG100STARTMOVDPTR,0001H填充的内容MOVR0,30H填充的区域的首地址MOVR7,N填充的区域的字节数RAMCLEARMOVR0,DPH填充数据INCR0MOVR0,DPLINCR0下一单元DJNZR7,RAMCLEAR没有完成,则

温馨提示

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

评论

0/150

提交评论