版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、本科实验报告课程名称: 微机原理与接口技术姓 名: 邵芳琳学 院(系): 控制学院专 业: 自动化学 号: 3140103307指导教师: 曹峥1 / 22 2016年 11月 11日 实验一 存储器块操作实验一、实验目的1 熟悉 KEIL 集成调试环境和汇编程序的调试方法。2 掌握存储器读写方法;3 了解内存块的移动方法;二、实验说明实验 1 指定某块存储器的起始地址和长度,要求能将其内容赋值。通过该实验学生可以了解单片机读写存储器的方法,同时也可以了解单片机编程、调试方法。块移动是单片机常用操作之一,多用于大量的数据复制和图象操作。例程 2 给出起始地址,用地址加一方法移动块,将指定源地址
2、和长度的存储块移到指定目标地址为起始地址的单元中去。移动 3000H 起始的 256个字节到 4000H 起始的 256 个字节。思考题1 如何将存储器块的内容置成某固定值(例全填充为 0FFH)? 请用户修改程序,完成此操作。将MOV A,#1H 改为MOV A,#FFH2 若源块地址和目标块地址有重叠,该如何避免?源块地址和目标块地址重叠部分数据压制堆栈中,当要使用重叠部分源数据时,直接从堆栈中弹出。实验内容1. 试编程将片内 RAM 中的数据依次复制到片外 RAM。假设源数据区的首地址为 40H,目的数据区的首地址为 1000H,数据块长度为 10H。 ORG 0000H MOV R0,
3、#40HMOV A,#01HMOV R5,#10HLOOP: MOV R0,AINC R0DJNZ R5,LOOPMOV R0,#40H ;起始地址MOV R2,#10H MOV R3,#00HMOV R7,#10H ;循环次数LOOP1: MOV A,R0MOV DPH,R2MOV DPL,R3MOVX DPTR,AINC R0INC R3DJNZ R7,LOOP1 LJMP $ END运行结果:2. 两个 16 位无符号二进制数分别存放在片外 RAM 首址为 2000H 和 2002H 单元内,将它们相加,结果存入片内 RAM 30H(低 8 位)、31H(高 8 位)。 ORG 0000
4、HMOV A,#11HMOV DPTR,#2000H MOVX DPTR,AMOV DPTR,#2003H MOVX DPTR,AMOV R0,AMOV DPTR,#2002HMOVX A,DPTRADD A,R0MOV 30H,A MOV DPTR,#2001HMOVX A,DPTRMOV R0,AMOV DPTR,#2003HMOVX A,DPTRADDC A,R0MOV 31H,AEND运行前:运行后:1100+0011=1111运行结果正确。 实验二 数值转换实验一、实验目的1 熟悉 KEIL 集成调试环境和汇编程序的调试方法。2 掌握简单的数值转换算法。3 基本了解数值的各种表达方法
5、。4 掌握数值的加减法运算。5 掌握用查表的方法将 BCD 值转换成 ASCII 值。二、实验说明单片机系统内部运算用二进制,而输入输出常用十进制,以符合日常习惯,因此,数制转换是仪表设计中常用的程序之一。单片机中的数值有各种表达方式,这是单片机的基础。掌握各种数制之间的转换是一种基本功。我们将给定的一字节二进制数,转换成二十进制(BCD)码。将累加器 A 的值拆为三个 BCD 码,并存入 RESULT 开始的三个单元,例程 A 赋值#123。实验 2 主要让学生了解数值的 BCD 码和 ASCII 码的区别,利用查表方法快速地进行数值转换。进一步掌握数值的各种表达方式。现在我们给出一个 BC
6、D 数,将其转换成 ASCII 值。如下:将累加器 A 的值转换为二个 ASCII 码,并存入 Result 开始的二个单元,例如 A 赋值#1AH。思考题BCD 码转换成二进制数的算法是什么?例如:(91) BCD 对应的二进制数是多少?将BCD码写成权值相加的形式,再将各位转化为二进制。9×101+1×100=91=()B实验内容1. 把 R 3 中的 8 位二进制整数转换为压缩 BCD 码,存放在 R4, R5 中。ORG 0000HMOV R3,#10111011BMOV A,R3MOV B,#100DIV ABMOV R4,AMOV A,BMOV B,#10DIV
7、 ABMOV R5,ASWAP AADD A,BMOV R5,A寄存器结果:2. 设 4 位 BCD 码 abcd 依次存放在内部 RAM 中 50H53H 单元的低 4 位,(高 4 位为 0)。试编程将其转换成二进制数并存入 R6R7 中。ORG 0000H MOV 50H,#01MOV 51H,#02 MOV 52H,#03 MOV 53H,#04MOV A,50H MOV B,#10MUL ABMOV B,#100MUL ABMOV R1,B MOV R0,A MOV B,#100MOV A,51HMUL ABADD A,R0MOV R0,A MOV A,BADDC A,R1MOV R
8、1,AMOV B,#10MOV A,52HMUL ABADD A,R0MOV R0,AMOV A,R1ADDC A,#0MOV R1,AMOV A,R0ADD A,53HMOV R0,AMOV A,R1ADDC A,#0MOV R6,AMOV A,R0MOV R7,A执行结果:4位BCD码为1234,转换为2进制数为4d2与实际相符。 实验三 程序跳转表实验一、实验目的1 熟悉 KEIL 集成调试环境和汇编程序的调试方法。2 了解简单的函数计算。3 掌握多分支结构程序的编程方法二、实验说明多分支结构是程序中常见的结构,在多分支结构的程序中,能够按调用号执行相应的功能,完成指定操作。若给出调用号
9、来调用子程序,一般用查表方法,查到子程序的地址,转到相应子程序。三、思考题1 写跳转程序时要注意些什么?1)子程序的第1条指令前必须有标号,即表明子程序的名称,也作为调用指令的符号地址。2)要有入口条件,用来说明入子程序时,它所要处理的数据如何得到。另外,要有出口条件,即处理的结果是如何存放的。3)注意保护现场和恢复现场,即在调用子程序前将不允许被破坏的内容保存起来;恢复现场即在子程序执行完毕返回主程序前,将保存的内容恢复到保护现场前的状况;4)子程序必须以RET结束。子程序中,对堆栈的入栈和出栈操作次数必须相同,以保证返回后堆栈指针SP的值与调用时一直。2 可以避免重复书写相同的程序;可以简
10、化程序的逻辑结构;使程序模块化,通用化。3、 实验内容ORG 0000HMOV R0,#0FCHCJNE R0,#0,NEXT0 MOV R0,#2 MOV A,R0 SJMP NEXT3NEXT0:CJNE R0,#80H,NEXT1 MOV R0,#2 MOV A,R0 SJMP NEXT3NEXT1:JC NEXT2 SETB C MOV A,R0 RRC A SJMP NEXT3NEXT2:MOV A,R0 MOV B,#2 MUL ABNEXT3:MOV 30H,AEND测试结果:X<0X=0X>0 实验四 数据排序实验一、实验目的1 熟悉 KEIL 集成调试环境和汇编程
11、序的调试方法。2 掌握排序程序的设计方法。二、实验说明本例程采用交换排序法将内部RAM 中的5059H 单元中的10个单字节无符号二进制数按从小到大的次序排列,并将这一列排序后的数据从小到大依次存贮到外部RAM 1000H开始处。初始:结果:三、实验内容画出本实验程序的流程图。 实验五 键盘显示仿真实验一、实验目的1 熟悉 KEIL 集成调试环境和汇编程序的调试方法。2 学习使用外围接口工具调试程。3 熟悉键盘显示接口电路及程序设计。提高实验1. 根据键盘、LED 仿真板,设计一个走马灯程序,通过按键实现启停、速率及方向的控制UpDown BIT 00H StartEnd BIT 01H LA
12、MPCODE EQU 21HORG 0000H AJMP MAIN ORG 30H MAIN: MOV SP,#5FH MOV P1,#0FFH CLR UpDown ;启动时处于向上的状态 CLR StartEnd ;启动时处于停止状态 MOV LAMPCODE,#01H ;单灯流动的代码 LOOP:ACALL KEY ;调用键盘程序 JNB F0,LNEXT ;如果无键按下,则继续 ACALL KEYPROC ;否则调用键盘处理程序 LNEXT: ACALL LAMP ;调用灯显示程序 AJMP LOOP DELAY: MOV R7,#100 D1: MOV R6,#100 DJNZ R6
13、,$ DJNZ R7,D1 RET KEYPROC: MOV A,B ;从B寄存器中获取键值 JB ACC.2,KeyStart ;分析键的代码,某位被按下,则该位为1 JB ACC.3,KeyOver JB ACC.4,KeyUp JB ACC.5,KeyDown AJMP KEY_RET KeyStart: SETB StartEnd ;第一个键按下后的处理 AJMP KEY_RET KeyOver: CLR StartEnd ;第二个键按下后的处理 AJMP KEY_RET KeyUp: SETB UpDown ;第三个键按下后的处理 AJMP KEY_RETKeyDown: CLR U
14、pDown ;第四个键按下后的处理 KEY_RET: RET KEY: CLR F0 ;清F0,表示无键按下。 ORL P3,#00111100B ;将P3口的接有键的四位置1 MOV A,P3 ;取P3的值 ORL A,#11000011B ;将其余4位置1 CPL A ;取反 JZ K_RET ;如果为0则一定无键按下 CALL DELAY ;否则延时去键抖 ORL P3,#00111100B MOV A,P3 ORL A,#11000011B CPL A JZ K_RET MOV B,A ;确实有键按下,将键值存入B中 SETB F0 ;设置有键按下的标志 K_RET: ORL P3,#
15、00111100B ;此处循环等待键的释放 MOV A,P3 ORL A,#11000011B CPL A JZ K_RET1 ;读取的数据取反后为0说明键释放了 AJMP K_RET K_RET1:CALL DELAY ;消除后沿抖动 RETD500MS: ;流水灯的延迟时间 MOV R7,#255 D51: MOV R6,#255 DJNZ R6,$ DJNZ R7,D51 RET LAMP: JB StartEnd,LampStart; 如果StartEnd=1,则启动 MOV P1,#0ffH LampStart: AJMP LAMPRET ;否则关闭所有显示,返回 LampStart
16、: JB UpDown,LAMPUP ;如果UpDown=1,则向上流动 MOV A,LAMPCODE RL A ;左移位而MOV LAMPCODE,A MOV P1,A LCALL D500MS LCALL D500MS AJMP LAMPRET LAMPUP: MOV A,LAMPCODE RR A ;向下流动实际就是右移 MOV LAMPCODE,A MOV P1,A LCALL D500MS LAMPRET: RET END 2. 根据实验仿真板 2 设计一个按键显示数字的程序,即按 0 显示 0,依次类推。ORG 0000HSTART:MOV P2,#0FEHMOV P3,#0EFHJB P3.0,NEXT1MOV P0,#0C0HLJMP FINALNEXT1:MOV P3,#0EFHJB P3.1,NEXT2MOV P0,#0F9HLJMP FINALNEXT2: MOV P3,#0EFHJB P3.2,NEXT3MOV P0,#0A4HLJMP FINALNEXT3: MOV P3,#0EFHJB P3.3,NEXT4MOV P0,#0B0HLJMP FINALNEXT4: MOV P3,#0DFHJB P3.0,NEXT5MOV P0,#99HLJMP FINALNEXT5: MOV P3,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度建筑工程师聘用合同:绿色建筑节能技术专案范本3篇
- 2025年度学生宿舍消防安全管理服务合同范本2篇
- 2025年度广告制作发布合同:品牌形象宣传视频拍摄3篇
- 2025年度企业社会责任宣传画册制作合同3篇
- 2025年度学校宿舍管理员用工合同(含智能化设备操作)3篇
- 2025年度新式商铺铺面租赁合同(智慧化升级版)3篇
- 2025年室内门安装销售与市场调研合作合同2篇
- 2025年图书约稿合同模板:漫画改编小说约稿合作细则3篇
- (经营管理助手集)XXXX贷款担保合同模板
- 钢筋钢材运输合同三篇
- 2022年广东省广州市白云区八年级上学期期末语文试卷
- 12二年级《跳跃:多种形式跳跃的练习方法》
- 服装厂安全生产责任书
- 医务科医疗管理架构图
- 屋面细石混凝土保护层施工方案及方法
- 2018-2019学年北京市西城区人教版六年级上册期末测试数学试卷
- 旅行社公司章程53410
- 小学班主任工作总结PPT
- 起世经白话解-
- 螺杆式制冷压缩机操作规程完整
- 五金件成品检验报告
评论
0/150
提交评论