2024年陈凡嵌入式系统基础实验报告_第1页
2024年陈凡嵌入式系统基础实验报告_第2页
2024年陈凡嵌入式系统基础实验报告_第3页
2024年陈凡嵌入式系统基础实验报告_第4页
2024年陈凡嵌入式系统基础实验报告_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

本科试验报告课程名称:单片机原理试验项目:定时/计数器试验地点:北区跨越机房专业班级:通信工程1101学号:001365学生姓名:温景国指引教师:陈凡04月28日试验一双字节BCD加法试验试验目标和要求1、通过常用指令的使用,深入了解并掌握MCS-51单片机的指令系统。2、学习并掌握双字节BCD加法的程序设计。3.学习汇编语言的程序设计基本措施。二、试验内容和原理编写并调试一个双字节加法程序完成运算:A(0030H,0031H)+B(0032H,0033H)=C(0034H,0035H)两数的低位相加后保存进位位,高位数相加时,将低位的进位加上。三、重要仪器设备计算机一台,操作系统:Windows98//XP,应用软件:WAVE6000。四、源程序与调试步骤源程序:;程序名称:ADD.ASM;功效:完成双字节加法运算A(0030H,0031H)+B(0032H,0033H)=C(0034H,0035H) ORG0000H AJMPMAIN ORG0040HMAIN:MOV0030H,#01HMOV0031H,#11H;A=1101HMOV0032H,#0FFHMOV0033H,#01H;B=01FFHMOVA,0030HADDA,0032H;A的低位与B的低位相加MOV0034H,AMOVA,0031HADDCA,0033H;A的高位与B的高位相加并加上进位CyMOV0035H,AEND源程序编写完后,然后进行复位,单步执行观测成果是否正确。五、试验数据统计与处理在执行单步时,低位的运算成果在0034H中,成果是00H((0030H)+(0032H)),高位成果在0035H中,成果为13H((0031H)+(0033H)+(CY))。试验成果与试验预期成果同样。六、试验成果与分析当进行低位加法时,加下来的成果自动产生进位,并且在状态字的最高位中,因此,在进行高位相加时要带进位进行相加,否则成果与预期的不一样样。七、试验心得通过对双字节BCD加法编程的练习,深入了解并掌握MCS-51单片机的指令系统,并且熟悉了WAVE6000软件的使用,对汇编语言的程序设计愈加熟悉。通过详细实践,对于装载指令ORG,带进位加法指令ADDC有了更明确的了解。写程序时常犯的错误是忘掉了单片机复位后pc指向0000H,需要在0000h单元存储跳转指令跳转到程序入口继续执行。另外一个体会就是程序调试的重要性,一个程序,写好了,编译好了,只算是成功了二分之一,另二分之一在于调试,程序执行出了问题光靠盯着屏幕极难找到问题所在,要通过度析判断,合理调试才能发觉和处理问题。试验二子程序调用试验目标:1、通过常用指令的编辑练习,深入了解并掌握MCS-51单片机的指令系统。2、学习并掌握子程序调用的程序设计。3、掌握子程序调用过程中保护现场与恢复现场以及调用程序与被调用程序之间的参数传递。4、学习汇编语言的程序设计基本措施试验内容:编写程序,计算Y=Σai2试验设备:计算机一台;操作系统:Windowsxp;应用软件:WAVE6000试验源程序:ORG0000HAJMPMAINORG8000HMAIN:MOVR0,#20HMOVR7,#10MOVR3,#0MOVR2,#0LOOP:MOVA,@R0ACALLSORT;调用求平方子程序ADDA,R2MOVR2,A;书上源程序有错误,已更正CLRAADDCA,R3MOVR3,AINCR0DJNZR7,LOOP;未完,继续SJMP$SORT:MOVDPTR,#TAB;进入子程序查平方表MOVCA,@A+DPTRRET;返主程序TAB:DB0,1,4,9,16DB25,36,49,64,81EN:NOPEND试验成果与分析程序执行完成时,R2中为1D,R3中为01,成果为011DH(285)与分析成果一致即:0+1+4+9+16+25+36+49+64+81=285。程序以R7(10)作为计数变量,通过子程序的查表功效,依次读取各数的平方并相加。尤其留心的是,高位相加时要用ADDC指令,加上低位的进位。试验总结:通过本次子程序调用程序的练习,加深了对子程序的了解,即怎样保护和恢复现场以及怎样在调用程序与被调用程序之间传递参数。子程序有利于提升编码效率,缩短了源程序与目标程序的长度,节约了程序存储的空间,使程序模块化、通用化,便于阅读、交流与共享。另外,通过本次试验我对于wave6000平台下程序的编译、执行以及数据查看有了深入的认识,理论与实践的结合让我对课本知识有了愈加好的了解。试验三冒泡排序试验一、试验目标和要求(1)熟悉MCS-51指令系统,掌握程序设计措施。(2)掌握排序程序算法。(3)掌握用循环程序实现数据排序的基本措施。二、试验内容和原理编写并调试一个通用排序子程序,其功效为将RAM的40H~4FH单元16个字,节无符号二进制整数按从小到大次序排序,将排序后的数据存储在50H~5FH缓冲区中。从20H单元的第一个数开始依次和相邻单元的另一个数比较,假如次序对,则不作任何操作;假如次序不对,则将这两个数互换位置。这么,在完成第一遍n-1次比较后,n-1次比较后n-1遍比较就可完成排序。在比较中设置一个标志位flag清零,在循环结束时,若flag=1阐明排序未完成,进入外循环;若flag=0,阐明排序完成,程序结束。三、重要仪器设备计算机一台,操作系统:Windows98//XP,应用软件:WAVE6000或其他。四、源程序与调试步骤源程序: ;程序名称:MAOPAO.ASM ;功效:用冒泡算法实现长度为16的数列由小到大排列源程序: ORG0000HMOVR7,#10H;数列长度MOVR0,#40H;R0指向首地址MOVR1,#60HSTART:MOVA,R1MOV@R0,AINCR0DECR1DJNZR7,STARTMOVR7,#0FHLP0:MOVR0,#40HMOVA,R7MOVR6,ACLR7FH;设定7fh位为flag并置0LP1:MOVA,@R0MOV20H,@R0INCR0MOV21H,@R0CLRCSUBBA,21HJCLP2;假如前者不小于后者则进行互换SETB7FHMOV@R0,20HDECR0MOV@R0,21HINCR0LP2:DJNZR6,LP1;判断是否达成内循环次数JNB7FH,LP3DJNZR7,LP0;判断是否达成外循环次数LP3:MOVR7,#10H;传输个数为16MOVR0,#40HMOVR1,#50HLP4:MOVA,@R0MOV@R1,AINCR0INCR1DJNZR7,LP4SJMP$END先进行复位,进行单步执行,观测成果。五、试验数据统计和处理程序执行之前,数据排序为:10H,03H,04H,08H,09H,0FH,0CH,0EH,01H,02H,05H,07H,06H,0AH,0BH,0DH排序之后的数据次序为从低到高,即:01H,02H,03H,04H,05H,06H,07H,08H,09H,0AH,0BH,0CH,0DH,0EH,0FH,10H六、试验成果与分析冒泡法排序通过双层循环完成了数组从小到大的排列,假设数组长度为N,则外层循环计数次数应为N-1,内层循环次数:第一次比较N-1次,第二次比较N-2次,。。。第N-1次比较一次。在每次内循环中进行大小比较,满足前项小于等于后项则进入下一个内循环,否则互换前后单元的内容。这么循环完成后即可完成了数组的从小到大排列。七、试验心得通过本次上机试验,使我对MCS-51指令系统愈加了解,掌握了程序的设计措施,掌握了排序程序算法,并且掌握了使用循环程序实现数据排序的基本措施。更重要的是,通过实践与错误,我深深感觉到对于算法的编程实现一定要画出流程图,搞清楚算法的原理,对于汇编语言而言,还要做好存储器作用的规划,用到堆栈时还要做好堆栈的规划……虽然看似多了诸多步骤和考虑,不过实际上是节约了时间的,因为假如不这么做就很轻易犯错,而要去排除一个错误,是很花费时间精力的,不如在设计规划阶段就做好准备,仔细思考,从而事半功倍。试验四定期计数器一、试验目标和要求(1)加深对MCS-51单片机定期/计数器内部结构、工作原理和工作方式的了解。(2)掌握定期计数器工作在定期和计数两种状态下的使用方法。(3)掌握中断服务程序的设计措施。二、试验内容和原理在使用12MHz晶振的条件下,用T1产生50ms定期,两个7段LED数码管从“00”开始显示,没1s加1,抵达“59”后,再从“00”开始,完成60s定期功效。在定期工作状态下,输入的时钟脉冲是由晶体荡器的输出经12分频取得的,因此,定期器看作是对单片机及其周期的计数器。若晶振频率为12MHz,贼定期器的加1计数器每隔1us加1。加1计数器计满溢出时才申请中断,因此在给加1计数器赋予计数初值时,输入的是加1计数器计数的最大值与这一计数值的差值。定期器初始化程序定期器包括两个控制存储器TMOD和TCON,向TMOD和TCON写入对应设置各个定期器的操作模式和控制功效。开启定期器的步骤如下:(1)设定TMOD的值:TMOD=10H,设置T1工作于定期方式1。(2)设定IE的值:开启中断SETBET1。(3)设定TL1和TH1的值:TL1=0B0H,TH1=3CH。(4)开启T1定期:SETBTR1。三、重要仪器设备计算机一台,操作系统:Windows98//XP,应用软件:WAVE6000。四、源程序与调试步骤试验程序:ORG0000HAJMPSTART;跳到START处开始执行ORG001BH;定期/计数器1中断入口地址AJMPTIME1;跳转到中断执行程序ORG0030HSTART:MOVSP,#60H;设置堆栈起始地址MOVTMOD,#10H;设定T1工作于定期方式1SETBEA;开启总中断SETBET1;开启T1中断MOVR3,#60;设定期60sMOVR0,#0;初始化软件计数器1MOVR1,#0;初始化软件计数器2MOVTH1,#3CH;装入定期器计数初值MOVTL1,#0B0H;定期时间为50msSETBTR1;开启T1定期AJMP$

温馨提示

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

评论

0/150

提交评论