蒃袂羈本科实验报告蒆螅莂课程名称:单片机原理虿薈实验项目:定时/计数器袃螁实验地点:北区跨越机房葿芅专业班级:通信工程1101芆膀学号:2011001365腿莇学生姓名:温景国莄袄指导教师:陈凡羀蒈2014年04月28日蒂芃蚀芅实验一双字节BCD加法实验袅螃莁实验目的和要求1、通过常用指令的使用,进一步理解并掌握MCS-51单片机的指令系统。2、学习并掌握双字节BCD加法的程序设计。。芇二、实验内容和原理羃编写并调试一个双字节加法程序完成运算:A(0030H,0031H)+B(0032H,0033H)=C(0034H,0035H)膂两数的低位相加后保留进位位,高位数相加时,将低位的进位加上。三、主要仪器设备膁计算机一台,操作系统:Windows98/2000/XP,应用软件:WAVE6000。莈四、源程序与调试步骤莆源程序:;程序名称:;功能:完成双字节加法运算A(0030H,0031H)+B(0032H,0033H)=C(0034H,0035H)袁膅ORG0000H蒄 0040H莈膇MAIN:MOV0030H,#01H薂MOV0031H,#11H;A=1101H蒀MOV0032H,#0FFH膈MOV0033H,#01H;B=01FFH芈羅MOVA,0030H膃ADDA,0032H;A的低位与B的低位相加袈MOV0034H,A肆MOVA,0031H肃ADDCA,0033H;A的高位与B的高位相加并加上进位Cy薃MOV0035H,A蕿END膇源程序编写完后,然后进行复位,单步执行观察结果是否正确。蒅五、实验数据记录与处理羂在执行单步时,低位的运算结果在0034H中,结果是00H((0030H)+(0032H)),高位结果在0035H中,结果为13H((0031H)+(0033H)+(CY))。实验结果与实验预期结果一样。荿六、实验结果与分析膈当进行低位加法时,加下来的结果自动产生进位,并且在状态字的最高位中,所以,在进行高位相加时要带进位进行相加,否则结果与预期的不一样。薄七、实验心得莂通过对双字节BCD加法编程的练习,进一步理解并掌握MCS-51单片机的指令系统,并且熟悉了WAVE6000软件的使用,对汇编语言的程序设计更加熟悉。经过具体实践,,带进位加法指令ADDC有了更明确的理解。写程序时常犯的错误是忘记了单片机复位后pc指向0000H,需要在0000h单元存放跳转指令跳转到程序入口继续执行。另外一个体会就是程序调试的重要性,一个程序,写好了,编译好了,只算是成功了一半,另一半在于调试,程序执行出了问题光靠盯着屏幕很难找到问题所在,要通过分析判断,合理调试才能发现和解决问题。聿羆羆袁袀肇肅芀薀肈膃羄莁袆薅莃肁羇蚄实验二子程序调用袂薇实验目的:罿1、通过常用指令的编辑练习,进一步理解并掌握MCS-51单片机的指令系统。肆2、学习并掌握子程序调用的程序设计。蒆3、掌握子程序调用过程中保护现场与恢复现场以及调用程序与被调用程序之间的参数传递。薂4、学习汇编语言的程序设计基本方法肀实验内容:莈编写程序,计算Y=Σai2。a1,a2,……,a10存放在内部RAM的20H开始的存储区内,计算所得结果放入R2和R3中。羅实验设备:节计算机一台;操作系统:Windowsxp;应用软件:WAVE6000膁实验源程序:8000H膃MAIN:MOVR0,#20H衿MOVR7,#10螄MOVR3,#0螃MOVR2,#0羀LOOP:MOVA,***@R0羈ACALLSORT;调用求平方子程序蒇ADDA,R2薃MOVR2,A;书上源程序有错误,已更正肂CLRA莀ADDCA,R3袇MOVR3,A芄INCR0衿DJNZR7,LOOP;未完,继续蒈SJMP$莆SORT:MOVDPTR,#TAB;进入子程序查平方表肄MOVCA,***@A+DPTR袀RET;返主程序薇TAB:DB0,1,4,9,16螅DB25,36,49,64,81螄EN:NOP羂END罿实验结果与分析膅程序执行完成时,R2中为1D,R3中为01,结果为011DH(285)与分析结果一致即:0+1+4+9+16+25+36+49+64+81=285。程序以R7(10)作为计数变量,通过子程序的查表功能,依次读取各数的平方并相加。特别留意的是,高位相加时要用ADDC指令,加上低位的进位。蒅蝿实验总结:肇通过本次子程序调用程序的练习,加深了对子程序的理解,即如何保护和恢复现场以及如何在调用程序与被调用程序之间传递参数。子程序有利于提高编码效率,缩短了源程序与目标程序的长度,节省了程序存储的空间,使程序模块化、通用化,便于阅读、交流与共享。另外,通过本次实验我对于wave6000平台下程序的编译、执行以及数据查看有了进一步的认识,理论与实践的结合让我对书本知识
陈凡嵌入式系统基础实验报告副本副本 来自淘豆网m.daumloan.com转载请标明出处.