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

下载本文档

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

文档简介

./《单片机实验》报告实验名称分支程序设计实验指导教师刘冬生专业班级电子1103班姓名XXXXXX学号XXXXXXXXXXX联系方式XXXXXXXXXXX一、任务要求熟练掌握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.实现多分支结构程序的主要方法有哪些?举例说明。2.在编程上,十进制加1计数器与十六进制加1计数器的区别是什么?怎样用十进制加法指令实现减1计数?二、设计思路1.分段函数设计第一个任务相当于一个分段函数程序,根据变量X的值所处的区间进行相应的计算。可利用比较转移指令CJNE来判断X是否等于临界值20、40,若不等,再根据执行CJNE指令后的进位位CY的值来判断X与临界值的的大小关系,易知CY=0则X大于临界值,CY=1则X小于临界值;如此,再进行相应的计算。另外若乘方运算结果大于255,高八位与低八位应分开存储;本次除法采用右移一位来处理,未考虑余数。2.24小时制时钟程序首先构建一个三重循环实现"一秒延时",循环体利用NOP指令〔单字节指令,1µs经多次循环达到延时一秒的效果。再利用已经构建好的"一秒延时"部分,设计计时系统:秒〔0-59、分〔0-59、时〔0-23。需要注意的是,在小时、分、秒达到59时,下一次应该为零。程序运行时修改P3.0的值可以实现暂停和继续的功能。三、资源分配1.分段函数假设该8位无符号数的地址2000H分配给它,把片外地址2001H和2002H分配给经分段函数计算得到的结果Y。按位取反计算结果存于2001H单元,乘方计算中结果的高、低八位分开存储于2001H-2002H单元,除法运算结果放在2001H中。寄存器A,B存放在乘除运算中所得的中间结果。2.二十四小时制时钟工作寄存器R0、R1、R2分别用于秒、分、时循环次数的计数,R5-R7用于"一秒延时"循环中的循环次数设定。秒、分、时数值分别由P2、P1、P0端口输出。四、流程图1.分段函数开始开始将C置零取出外部数据是否大于20取反并存储结果是否小于40平方并存储结果除以2并存储结果结束否否是是2.二十四小时制时钟开始开始P3.0=1?等待端口初始化,输出端口置0;计数R0、R1、R2置1延时1秒,P2←R2,R2加1,并转化为十进制R6=60H?R2置1,P2置0,P1←R1R1加1,并转化为十进制R1=60H?R2、R1置1,P2、P1置0,P0←R0,R0加1,并转化为十进制R0=24H?是否否否否是是是五、源代码〔含文件头说明、资源使用说明、语句行注释1.分段函数 clrc ; 清零 movdptr,#2000h ; 取外部数据 movxa,@dptr// mova,#1h cjnea,#14h,cmp20 ; 与20比较大小qufan: cpla ; incdptr movx@dptr,a sjmpjieshucmp20: jcqufan cjnea,#28h,cmp40 ; 与40比较大小sq: movr7,a ; 平方 movb,r7 mulab incdptr movx@dptr,a mova,b incdptr movx@dptr,a sjmpjieshucmp40: jncsqchu2: rra ; 除以2〔右移一位 incdptr movx@dptr,a sjmpjieshujieshu: nop end 2.二十四小时制时钟start: movr0,#01h ; 寄存器初始化 movr1,#01h movr2,#01h movp0,#00h ; 端口初始化 movp1,#00h movp2,#00h mova,#0// setbp3.0 ; 设置、判断p3.0 clrp3.0 jbp3.0 ,$onesec: movr7,#10 ; 1秒延时del1: movr6,#200 nopdel2: movr5,#248del3: djnzr5,del3 djnzr6,del2 djnzr7,del1movp2,r2 ; 把秒数送入p2 mova,r2 adda,#01h daa movr2,a cjner2,#60h,onesec ; 判断r2是否计到60,跳转onemin: movr2,#01h ; 把r2,p2初始化,开始分钟计数 movp2,#00h movp1,r1 mova,r1 adda,#01h daa movr1,a cjner1,#60h,onesec ; 判断r1是否计到60,跳转hour: movr2,#01h ; 把r2,p2,r1,p1初始化,开始小时计数 movp2,#00h movr1,#01h movp1,#00h movp0,r0 mova,r0 adda,#01h daa movr0,a cjner0,#24h,onesec ; 判断r0是否计到24,跳转 sjmpstart end六、程序测试方法与结果、软件性能分析1.分段函数X=01HX=1EHX=31H功能分析:该程序可正常执行要求的3项功能2.二十四小时制时钟功能分析:该程序运行后可按正确的二十四小时制时钟进行计时,程序功能完整可靠。[思考题]●实现多分支结构程序的主要方法有哪些?举例说明。答:一是利用条件转移指令实现,如DJNZ,JNC等等,二是利用分支表来实现,如分支地址表、转移指令表、地址偏移量表

温馨提示

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

评论

0/150

提交评论