微机基础原理及应用实验报告(中南大学2014年).doc

收藏

编号:2601366    类型:共享资源    大小:92.52KB    格式:DOC    上传时间:2020-04-23
8
金币
关 键 词:
微机 基础 原理 应用 利用 运用 实验 试验 报告 讲演 呈文 中南 大学
资源描述:
-/ 微机原理及应用实验报告 班级: 姓名: 学号: 中南大学 机电工程学院 精密测控实验室 实验二 软件程序设计 1.实验目的: 1、掌握MCS-51单片机指令系统及用汇编语言编程技巧; 2、了解和熟悉用MCS-51单片机仿真开发机调试程序的方法。 2.实验内容: 1、编写排序程序并上机调试通过。 已知8031内部RAM60H~69H单元中,依次存放了FFH,99H,77H,CCH,33H,DDH,88H,BBH,44H,EEH,它们均为无符号数,编程将它们按递减次序排序,即最大数放在60H中,最小数放在69H中。 2.、编写多字节加法程序并上机调试通过。 8031内部RAM20H~22H单元中,存放了3字节被加数(低字节在前),在2AH~2CH单元中存放3字节加数(低字节在前),求两数之和,并将结果存入以20H为起始地址的区域中(低字节在前)。 3.实验设备名称、型号: 台式微型计算机 MCS-51仿真开发机 THKSCM-2A 4.画出软件程序流程图,写出上机调试通过的汇编语言程序清单: 程序1、 编写排序程序并上机调试通过。 已知8031内部RAM60H~69H单元中,依次存放了 FFH,99H,77H,CCH,33H,DDH,88H,BBH,44H,EEH,它们均为无符号数,编程将它们按递减次序排序,即最大数放在60H中,最小数放在69H中。 解:本设计采用冒泡排序法,使用双重循环,并在内循环中进行比较如果合乎从大到小的顺序则不动,否则两两交换,这样比较下去,比较9次后,最小的那个数就会沉底,在下一次比较时将减少一次比较次数。如果一次比较完毕,没有发生交换,说明已经按照从大到小的顺序排列了。则可以退出循环,结束程序。 程序结构框图和程序代码如下: ORG 1000H TEM DATA 50H MOV R7 , #9 MOV 60H , #0FFH MOV 61H , #99H MOV 62H , #77H MOV 63H , #0CCH MOV 64H , #33H MOV 65H , #0DDH MOV 66H , #88H MOV 67H , #0BBH MOV 68H , #44H MOV 69H , #0EEH LOOP0: CLR F0 MOV A , R7 MOV R6, A MOV R0 , #60H MOV R1, #60H INC R1 LOOP1: MOV A , @R0 MOV TEM , A MOV A , @R1 CJNE A ,TEM , NEXT SJMP NOCHA NEXT: JC NOCHA SETB F0 MOV @R0 , A XCH A , TEM MOV @R1 , A NOCHA:INC R0 INC R1 DJNZ R6, LOOP1 JNB F0, HAL DJNZ R7, LOOP0 HAL: SJMP $ END 程序2:编写多字节加法程序并上机调试通过。 8031内部RAM20H~22H单元中,存放了3字节被加数(低字节在前),在2AH~2CH单元中存放3字节加数(低字节在前),求两数之和,并将结果存入以20H为起始地址的区域中(低字节在前)。 解:改程序由三个字节数相加,其结果不会超过4个字节,可以采用循环求和的办法,吧加数和被加数依次从低位带进位相加,当然加最低位时必须先对进位位清零。可以采用线性结构,也可以采用循环结构。我在设计该程序采用单重循环,结构简单,特别是当相加的数较长时,优势更加明显。 程序结构框图和源代码如下: ORG 1000H MOV 20H,#H MOV 21H,#H MOV 22H,#H MOV 2AH,#H MOV 2BH,#H MOV 2CH,#H MOV R0 #20H MOV R1 #2AH MOV R7 #03H CLR C LOOP0: MOV A ,@R0 MOV B ,@R1 ADDC A ,B MOV @R0 ,A INC R0 INC R1 DJNZ R7 ,LOOP0 NEXT : JNC HAL INC R0 MOV @R0 ,#01H HAL: SJMP $ END 5.思考题 1、如果题目1改为递增排序,如何修改程序,为什么? 答:将NEXT中的指令中的JC 指令换为JNC指令即可 2、如果题目1改为从30H单元开始的16个单元中无符号数排序,改哪几条指令? 答:改变R7的值为15,将值赋予30H到3FH上就可以了 3、如果题目2改为从50H开始的4字节数与60H开始的四字节数相加,如何修改? 答:MOV R0 #20H 改为MOV R0 #50H MOV R1 #2AH 改为MOV R1 #60H MOV R7 #03H 改为MOV R7 #04H 4、写出题目2中你处理最高位进位的相应指令。 答:NEXT : JNC HAL INC R0 MOV @R0 ,#01H HAL: SJMP $ 5、循环程序中为何常用间接寻址方式(@Ri,@DPTR)? 答:因为间接寻址可以实现程序的循环,便于编写程序。 6.心得体会: 通过实际模拟操作,加深了对单片机的理解,更好的理解编程语言,本次实验较为简单, 我是独立按时完成,当我看到发光二极管一次亮时别提我的兴奋劲了。在试验的编程过程中 弄清了定时器的使用方法,以及延时的计算。 审 阅: 实验三 定时/计数器实验 1.实验目的: 1、 掌握MCS-51单片机内部定时/计数器的功能与特点,工作方式选择和编程方法,中断功能的使用和中断服务程序的设计; 2、 解和熟悉MCS-51单片机实验板的功能。 2.实验内容: 1、用MCS-51单片机的内部定时器定时中断,通过P1口控制实验板上八个LED发光二极管轮流循环显示发光,每个LED发光二极管显示时间为0.5秒; 2、用MCS-51单片机的内部定时器定时中断,编写一段电子秒表程序。(选做) 3.实验设备名称、型号: 台式微型计算机 MCS-51仿真开发机 THKSCM-2A 4.画出软件程序流程图写出上机调试通过的汇编语言程序清单: 1、 用MCS-51单片机的内部定时器定时中断,通过P1口控制实验板上八个LED发光二 极管轮流循环显示发光,每个LED发光二极管显示时间为0.5秒. 分析:采用的晶振为11.0592MHz,所以时间周期T=1.085069μs。采用方式一计时需要 460800 次, 超过了计时范围, 故在采用一个内循环, 取为10 , 则共需 46080010=46080。 X=2^(16)-46080=19456=4C00H 编程: START:MOV TMOD,#01H MOV TH0,#4CH MOV TL0,#00H SETB TR0 SETB EA SETB ET0 MOV A,#F7H MOV P1,A MOV 40H,#0AH SJMP $ ORG 0000H LJMP START ORG 00BH MOV TH0,#4CH MOV TL0,#00H DJNZ 40H,OVER MOV 40H,#0AH MOV P1,A RR A OVER: RETI 5.思考题 1、你采用的是定时器0还是定时器1?如果换用另外一个定时器,需要修改那些语句?为什么? 答:采用定时器0 ,若用另一个则要替换的语句是 MOV TMOD ,#01H 换为 MOV TMOD ,#10H MOV TH0 ,#4CH 换为 MOV TH1 ,#4CH MOV TL0, #00H 换为 MOV TL1, #00H SETB TR0 换为 SETB TR1 2、如果将延时时间变为1秒,如何修改程序,为何? 答:两个程序均是将MOV 40H,#0AH 改为 MOV 40H,#14H 3、改变发光二极管循环点亮方向,如何修改程序?如果间隔闪亮(亮一个,黑一个,亮一个……)如何修改程序?你还能做哪些花样? 答:将 RL A 改为 RR A 如果要间隔闪亮可以将A 连续两次左移即RL A 变为 RL A 再加RL A就可以了。我还可以要其两同时亮,将累加器A 的值变为0FDH 就可以了语言是MOV A # 0FEH 变为MOV A ,#0FDH 7.心得体会: 通过实际模拟操作,加深了对单片机的理解,更好的理解编程语言,本次实验较为简单, 我是独立按时完成,当我看到发光二极管一次亮时别提我的兴奋劲了。在试验的编程过程中弄清了定时器的使用方法,以及延时的计算。 审 阅: 实验四 串行数据传送实验 1.实验目的: 1、掌握七段LED数码管显示器工作原理,以及用动态扫描方法编程实现8位LED数码管显示的方法; 2.进一步了解和熟悉MCS-51单片机实验板的功能。 2. 实验内容: 1.用MCS-51 的P1、P2输出段码和位码,编程实现8位LED数码管循环显示出“1”“2”“3”“4”“5”“6”间隔时间0.5秒。 2.缩短间隔时间,直至显示效果为稳定的“123456” 3.实验设备名称、型号: 台式微型计算机 MCS-51仿真开发机 THKSCM-2A 4.画出软件程序流程图,写出上机调试通过的汇编语言程序清单: 说明:采用的晶振为11.0592MHz,所以时间周期T=1.085069μs。执行一次DJNZ指令需要2T,要间隔0.5s。故需要执行0.5(2T)=230400次。取三次循环,第一次为4,第二次为256,第三次为2304004256=225=0E1H。 代码如下: ORG 0000H MOV 40H,#00H MOV 41H,#01H MOV 42H,#02H MOV 43H,#03H MOV 44H,#04H MOV 45H,#05H START:MOV R0,#40H MOV R2,#06H MOV R7,#7FH LOOP: MOV A,@R0 MOV DPTR,#DISTAB MOVC A,@A+DPTR MOV P1,A MOV A,R7 MOV P2,A RR A MOV R7,A MOV R3,#04H MOV R4,#00H MOV R5,#0E1H LOOP1:DJNZ R5,LOOP1 DJNZ R4,LOOP1 DJNZ R3,LOOP1 INC R0 DJNZ R2,LOOP LJMP START DISTAB: DB 06H;显示1 DB 5BH;显示2 DB 4FH;显示3 DB 66H;显示4 DB 6DH;显示5 DB 7DH;显示6 END 修改 MOV R3,#04H MOV R4,#00H MOV R5,#0E1H 可以缩短显示时间。当修改为 MOV R3,#04H MOV R4,#04H MOV R5,#02H时从视觉看已经看不出变化。 用定时器实现方法:采用的晶振为11.0592MHz,所以时间周期T=1.085069μs。采用方式一 计时需要460800 次,超过了计时范围,故在采用一个内循环,取为50,则共需 46080050=9216。X=216-9216=56350=DC1EH 源代码如下: MOV TMOD,#01H MOV TH0,#0DCH MOV TL0,#1EH SETB EA SETB ET0 SETB TR0 SJMP $ 0RGB 000BH MOV R2,#32H DJNZ R2,NEXT ORG 0050H MOV 40H,#00H MOV 41H,#01H MOV 42H,#02H MOV 43H,#03H MOV 44H,#04H MOV 45H,#05H START:MOV R0,#40H MOV R2,#06H MOV R7,#EFH LOOP: MOV A,@R0 MOV DPTR,#DISTAB MOVC A,@A+DPTR MOV P1,A MOV A,R7 MOV P2,A RR A MOV R7,A INC R0 NEXT:RETI DISTAB: DB 06H;显示1 DB 5BH;显示2 DB 4FH;显示3 DB 66H;显示4 DB 6DH;显示5 DB 7DH;显示6 END 5.思考题 1、要显示实验当天的日期(如20100509),怎样调试? 答:将 MOV R2,#06H 改为 MOV R2,#08H DISTAB: DB 06H;显示1 改为 DISTAB: DB 5BH;显示2 DB 5BH;显示2 DB 3FH;显示0 DB 4FH;显示3 DB 06H;显示1 DB 66H;显示4 DB 3FH;显示0 DB 6DH;显示5 DB 3FH;显示0 DB 7DH;显示6 DB 6DH;显示5 DB 3FH;显示0 DB 6FH;显示9 2、用其中4位数码管显示“good”,程序如何修改? 答:将 MOV R2,#06H 改为 MOV R2,#04H DISTAB: DB 06H;显示1 改为 DISTAB: DB 6FH;显示g DB 5BH;显示2 DB 3FH;显示0 DB 4FH;显示3 DB 3FH;显示0 DB 66H;显示4 DB 5EH;显示d DB 6DH;显示5 DB 7DH;显示6 7.心得体会: 通过实际模拟操作,加深了对单片机的理解,更好的理解编程语言,本次实验我能够根 据老师给出的代码理解完成,并且取得满意的结果。在试验的编程过程中弄清了很多在课堂 上没有理解的操作码的含义。熟悉了各个操作码的使用方法及为什么如此用。 审 阅:
展开阅读全文
提示  淘文阁 - 分享文档赚钱的网站所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:微机基础原理及应用实验报告(中南大学2014年).doc
链接地址:https://www.taowenge.com/p-2601366.html
关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

收起
展开