分支程序的设计实验实验报告_第1页
分支程序的设计实验实验报告_第2页
分支程序的设计实验实验报告_第3页
分支程序的设计实验实验报告_第4页
分支程序的设计实验实验报告_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

./实验二分支程序设计实验实验报告实验名称:分支程序设计实验指导教师罗志祥专业班级光信1006姓名张博学号U201013339联系方式一、任务要求:熟练掌握KeilC环境下汇编语言程序的调试方法,加深对汇编语言指令、机器码、寻址方式等基本内容的理解,掌握分支程序和简单程序的设计与调试方法,了解并行IO口的使用.1.设有8bits符号数X存于外部RAM单元,按以下方式计算后的结果Y也存于外部RAM单元,请按要求编写程序.2.利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出〔以压缩BCD码的形式.P3.0为低电平时开始计时,为高电平时停止计时.提高部分〔选做:a.实现4位十进制加、减1计数,千位、百位由P1口输出;十位、个位由P2口输出.利用P3.7状态选择加、减计数方式.b.利用P3口低四位状态控制开始和停止计数,控制方式自定.二、设计思路:1.分支函数程序设计:首先将X赋给累加器A,与40比较大小,将大于或等于40的执行乘方操作;小于40的再与20做比较,大于20的执行取除法操作,小于或等于20的执行取反操作.最后将计算结果Y存于片外的RAM上.2.电子时钟程序设计思路:首先用循环程序的嵌套实现一个1s的延时,同时让记秒的端口P2同步加一,到60后清零;再让此循环执行60次实现1min的延时,同时让P1同步加一,到60后清零;再让分钟的循环执行24次,实现1hour的延时,同时让P0同步加一.至此循环,即可实现24小时的时钟功能.〔注:本计算机的晶振频率为12MHz3.4位十进制加、减1计数程序思路:低位的个位和十位赋给一个寄存器,而将高位即百位千位赋给另外一个寄存器,通过循环程序使低位数循环100次即向高位进位或借位,高位循环100次后即回归初始状态,同时设计两个子函数分别执行加一、减一操作.其中,用P3的第7位的状态实现对计数与否的控制.三、资源分配:1.分支函数程序:A:累加器 C:位操作 B:做乘方的寄存器 DPTR:片外寻址指针 2000H、2001H、2002H:片外存储空间2.电子时钟程序:A:累加器 C:位操作 P0、P1、P2:分别电子时钟的时、分、秒输出 R0、R1、R2:分别时分秒计数用存储器 R3、R4、R5:完成1s延时的相关数据存储3.四位十进制加、减1计数程序:A:累加器 C:位操作 P0:低位输出口P1:高位输出口R0:高位寄存器R1:低位寄存器R7R6:分别临时储存低位和高位的寄存器四、流程图:1.分支函数程序流程图2.电子时钟程序流程图3.四进制加、减1计数程序流程图各图形如下:开始开始取数取数比较X与40的大小比较X与40的大小大于或等于40比较X与20的大小比较X与20的大小小于或等于20大于20求平均值执行取反运算执行平方运算求平均值执行取反运算执行平方运算存结果于Y存结果于Y结束结束电子时钟:开始开始R0,R1,R2置零R0,R1,R2置零P0,P1,P2置零R2<-0R2<-0R1<-0R1<-0R0<-0R0<-0空操作延时1秒空操作延时1秒R0加1,输出P2R0加1,输出P2R0=60?R0=60?NOYESR1+1,输出P1R1+1,输出P1R1=60?NOR1=60?YESR2+1,输出P0R2+1,输出P0R2=24?R2=24?NOYES清零清零结束结束开始加减计数器流程图:开始P0,P1,P2<-0P0,P1,P2<-0P3.7=0?P3.7=0?执行—1计数执行—1计数执行+1计数R0=0?高两位R1-1,转换为十进制,输出P0R0<-99R0=0?R1<-99低位R0—1,转换为十进制,输出P1P0,P1<-99P0,P1<-0R0=0?高两位R1-1,转换为十进制,输出P0R0<-99R0=0?R1<-99低位R0—1,转换为十进制,输出P1P0,P1<-99P0,P1<-0R1<-0R1<-0R0<-0R0<-0低两位R0+1,转换为十进制,输出P1低两位R0+1,转换为十进制,输出P1R0=99?R0=99?NONOYESYES高两位R1+1,转换为十进制,输出P0高两位R1+1,转换为十进制,输出P0R0=99?YESYESR0=99?NONO清零清零结束结束五、源代码:1ORG0000HMOVA,#50HMOVDPTR,#2000HMOVX@DPTR,A;将数存入片外RAMMOVDPTR,#2000HMOVXA,@DPTR ;从片外RAM中取数XMOVR7,ACLRCMOVR0,#40H ;对X的值进行比较SUBBA,R0JNCMUTIMOVR1,#20HCLRCMOVA,R1SUBBA,R7JCDIVIMOVA,R7CPLA ;对X进行取反MOVDPTR,#2001HMOVX@DPTR,A;存入片外RAMLJMPSTOPDIVI:MOVB,#2H;除法子程序MOVA,R7DIVABMOVDPTR,#2001HMOVX@DPTR,ALJMPSTOPMUTI:MOVA,R7;平方子程序MOVB,AMULABMOVDPTR,#2001H;低位存入片外RAM中2001H MOVX@DPTR,A INCDPTR MOVA,B MOVX@DPTR,A ;高位存入片外RAM中2002HSTOP:SJMP$ END2ORG0000HMOVR0,#0;R0,R1,R2置0MOVR1,#0MOVR2,#0MOVP0,#0;P0,P1,P2置0MOVP1,#0MOVP2,#0INPUT:JNBP3.0,STEPSTART:ACALLDELAY INCR0;秒钟计数MOVA,R0ACALLOUTPUT;转化为bcd码 MOVP2,ACJNER0,#60,START;60进制判断进1MOVR0,#0;MOVP2,#0;INCR1;分钟计数MOVA,R1ACALLOUTPUT;转化为bcd码 MOVP1,ACJNER1,#60,START;60进制判断MOVR1,#0;MOVP1,#0;INCR2;时钟计数MOVA,R2;ACALLOUTPUT;计算bcd码 MOVP0,ACJNER2,#24,START;判断是不是溢出了MOVR2,#0;溢出清0MOVP0,#0;输出清0SJMPINPUT;跳出循环DELAY:MOVR3,#19H;循环次数LOOP:MOVR4,#28HLOOP1:MOVR5,#0FAH;循环次数LOOP2:NOPNOPDJNZR5,LOOP2DJNZR4,LOOP1DJNZR3,LOOPSJMPSTARTRETOUTPUT:MOVB,#0AH;DIVABSWAPAORLA,BRETDONE:SJMP$STEP:SJMPSTEPEND3ORG0000HMOVP0,#0HMOVP1,#0HMOVP2,#0HJUDGE:CLRCMOVC,P3.7 JNCADDDONESUBDDONE:MOVP0,#99HMOVP1,#99HMOVR0,#63H;千,百位MOVR1,#63H;十,个位START: MOVA,R1 ACALLDELAYDECA MOVR7,A ACALLOUTPUT MOVP1,A MOVB,R7 MOVR1,B CJNEA,#0H,START ;低位循环 MOVA,#63H MOVR7,A ACALLOUTPUT MOVP1,A MOVB,R7 MOVR1,B MOVA,R0 MOVR7,A DECA ACALLOUTPUT MOVP0,A MOVB,R7 MOVR0,B CJNEA,#0H,START ;高位循环 SJMP$;原地踏步ADDDONE:MOVP0,#00HMOVP1,#00HMOVR0,#00H;千,百位MOVR1,#00H;十,个位 MOVR0,#0HSTART1: MOVA,R1 ACALLDELAYINCA MOVR7,A ACALLOUTPUT MOVP1,A MOVB,R7 MOVR1,B CJNEA,#99H,START1 ;低位循环 MOVA,#0H MOVR7,A ACALLOUTPUT MOVP1,A MOVB,R7 MOVR1,B MOVA,R0 INCA MOVR6,A ACALLOUTPUT MOVP0,A MOVB,R6 MOVR0,B CJNEA,#99H,START1 ;高位循环 SJMP$;原地踏步OUTPUT:MOVB,#0AH;转化为BCD码DIVABSWAPAORLA,BRETDELAY:MOVR3,#32H;循环次数LOOP:MOVR4,#14H;循环次数LOOP1:MOVR5,#0FAH;循环次数LOOP2:NOPNOPDJNZR5,LOOP2DJNZR4,LOOP1DJNZR3,LOOPRETEND六、程序测试方法与结果、软件性能分析1分段函数测试分别令X=10、30、50测试个分段函数,再使用X=20、40测试分界点,其对应结果如下:X=40时,得到X,Y存入片外RAMX=20时,X=30时,X=40时,Y的高位存入片外RAM2002H,低位存入2001HX=50时,Y的高位存入片外RAM2002H,低位存入2001H2>、电子时钟测试当P3.0为高电平时,不记时,如图:当P3.7为低电平时计时开始,其计时效果如下:由于小时等待时间太长,故在此不再截图显示3、4位十进制加、减1计数:当P3.7为低电平时执行加一计数P0输出千位和百位P1输出十位和各位当P3.7为高电平时执行减一计数P0输出千位和百位P1输出十位和各位七、思考题1.实现多分支结构程

温馨提示

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

最新文档

评论

0/150

提交评论