分支和循环程序设计

分支和循环程序设计

ID:21479075

大小:650.50 KB

页数:16页

时间:2018-10-22

上传者:U-960
分支和循环程序设计_第1页
分支和循环程序设计_第2页
分支和循环程序设计_第3页
分支和循环程序设计_第4页
分支和循环程序设计_第5页
资源描述:

《分支和循环程序设计》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

专业技术资料分享实验名称分支与循环程序设计成绩指导教师******专业班级******姓名白***学号*******联系电话********一、任务要求1.熟练掌握Keil环境下汇编语言程序的调试方法,加深对汇编语言指令、机器码、寻址方式等基本内容的理解,掌握分支程序和简单程序的设计与调试方法,了解并行IO口的使用。2.设有8bits符号数X存于外部RAM单元,按以下方式计算后的结果Y也存于外部RAM单元,请按要求编写完整程序。3.利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。P3.0为低电平时开始计时,为高电平时停止计时。设计1s延时子程序(延时误差小于10us,晶振频率12MHz)。4.1)实现4位十进制加、减1计数,千位、百位由P1口输出;十位、个位由P2口输出。利用P3.7状态选择加、减计数方式。2)利用P3口低四位状态控制开始和停止计数,控制方式自定。二、设计思路WORD文档下载可编辑 专业技术资料分享1.先在外部RAM取数,然后判断该符号数是否为负数,若为负数,则取相反数并存数;若为正数,则接着判断该数是否大于等于64,若满足,则求平方并存数,先存低位,后存高位;若小于64,则接着判断该数是否大于10,若满足,则求该数的一半并存数;若小于等于10,则取相反数并存数。2.第一步先编可以延时1S的子程序DELAY;接着判断P3.O是否满足开始计数条件,若不满足,则重复判断;若满足,则对时分秒分别赋值,调用延时子程序,判断是否满足计时条件,若不满足,则重复判断直至满足;若满足,则秒钟自加一,循环,判断秒钟循环满60次后出循环,对分钟自加一,然后继续循环,最后判断分钟循环满60次后出循环,对时钟自加一,然后判断时钟循环满24则回到初值,时分秒重新赋值并重新开始循环。3.判断P3.7,若为1,则进行加一计数,若为0,则跳转至另一程序进行减一计数;加一计数中,先取低位P1送A,自加一,送P1,判断是否有溢出,若有,则取高位P2送A,自加一,送P2,然后回判断循环;减一计数同理,即先取低位P1送A,自减一,送P1,判断是否有进位,若有,则取高位P2送A,自减一,送P2,然后回判断继续循环。三、资源分配1.2000H片外RAM存数2001H存结果低八位2002H存结果高八位B寄存器暂存结果高八位2.P3.0存计时判断位R0、R1、R2存延时子程序中各重循环的循环次数R3、R4、R5存时分秒的循环次数P0、P1、P2存时分秒的输出值3.P1、P2分别存十进制计数的低两位、高两位P3.7存计数方式的控制位WORD文档下载可编辑 专业技术资料分享四、流程图1、8bit符号数的判断与计算WORD文档下载可编辑 专业技术资料分享2、时钟设计WORD文档下载可编辑 专业技术资料分享3.十进制加减一计数器五、源代码(含文件头说明、语句行注释)1.8bit符号数的判断与计算ORG0000HLJMPSTARTORG1000HSTART:MOVDPTR,#2000H;地址指针赋初值MOVA,#22MOVX@DPTR,AMOVXA,@DPTR;取数JBACC.7,DDCJNEA,#64,AA;若A≠64,则转AAAA:JCBB;若A<64,则转BBMOVB,AMULAB;求A的平方WORD文档下载可编辑 专业技术资料分享INCDPTRMOVX@DPTR,A;存结果低八位INCDPTRMOVA,BMOVX@DPTR,A;存结果高八位SJMP$BB:CJNEA,#10,CC;若A≠10,则转CCCPLAEE:INCDPTRMOVX@DPTR,ASJMP$CC:JCDD;若A<10,则转DDRRA;若A>10,则右移一位SJMPEEDD:CPLAINCASJMPEEENDWORD文档下载可编辑 专业技术资料分享2.时钟设计ORG0000HLJMPSTARTORG1000HSTART:JBP3.0,START;若为0,则开始计时RESTA:MOVR3,#24MOVP0,#00H;时钟赋初值LOOP3:MOVR4,#60MOVP1,#00H;分钟赋初值LOOP2:MOVR5,#60MOVP2,#00H;秒钟赋初值WORD文档下载可编辑 专业技术资料分享LOOP1:ACALLDELAY;调用延时1S子程序LOOP:JBP3.0,LOOP;若为1,则停止计时MOVA,P2ADDA,#01HDAAMOVP2,ADJNZR5,LOOP1;判断秒钟是否结束循环MOVA,P1ADDA,#01HDAAMOVP1,ADJNZR4,LOOP2;判断分钟是否结束循环MOVA,P0ADDA,#01HDAAMOVP0,ADJNZR3,LOOP3;判断时钟是否结束循环LJMPRESTADELAY:MOVR0,#12NOPDELAY3:MOVR1,#130DELAY2:MOVR2,#212NOPNOPDELAY1:NOPDJNZR2,DELAY1DJNZR1,DELAY2WORD文档下载可编辑 专业技术资料分享DJNZR0,DELAY3RETEND3.十进制加减计数器ORG0000HLJMPSTARTORG1000HSTART:MOVP1,#12HMOVP2,#92HLOOP:ACALLDELAYMOVA,P2WORD文档下载可编辑 专业技术资料分享JBP3.7,AA;若为1,则转AA实现记数加1ADDA,#99HDAA;实现十进制减1MOVP2,AJCBB;判断是否产生借位,若产生,则对高位减1MOVA,P1ADDA,#99HDAAMOVP1,AAJMPLOOPAA:ADDA,#01HDAA;实现十进制加1MOVP2,AJNCBB;判断是否产生进位,若产生,则对高位加1MOVA,P1ADDA,#01HDAAMOVP1,ABB:AJMPLOOPDELAY:MOVR0,#12NOPDELAY3:MOVR1,#130DELAY2:MOVR2,#212NOPNOPDELAY1:NOPDJNZR2,DELAY1DJNZR1,DELAY2DJNZR0,DELAY3WORD文档下载可编辑 专业技术资料分享RETEND六、程序测试方法与结果1.8bit符号数的判断与计算1)令片外RAM中数据为642)令片外RAM中数据为22WORD文档下载可编辑 专业技术资料分享3)令片外RAM数据为14)令片外RAM数据为-22.时钟设计1)令P3.0=0,程序按十进制正常运行WORD文档下载可编辑 专业技术资料分享2)令P3.0=0,暂停计数3)设置断点观察延时子程序的延时时间,刚好为1sWORD文档下载可编辑 专业技术资料分享3.十进制加减1计数器1)将P3.7置1,计数器实现加一计数2)将P3.7置0,计数器实现减一计数WORD文档下载可编辑 专业技术资料分享七、思考题1.实现多分支结构程序的主要方法有哪些?举例说明。a)分支地址表法b)转移指令表法c)地址偏移量表法2.在编程上,十进制加1计数器与十六进制加1计数器的区别是什么?怎样用十进制加法指令实现减1计数?a)十进制加1计数器满十进1,十六进制加1计数器满16进1,十进制加法需用DAA指令进行调整b)用ADDA,#99HDAA指令,即可实现减1计数本人承诺:本报告内容真实,无伪造数据,无抄袭他人成果。本人完全了解学校相关规定,如若违反,愿意承担其后果。签字:白如海2017年10月20日WORD文档下载可编辑 专业技术资料分享其它说明:1.标题:黑体,小四号2.正文:宋体,五号,1.5倍行距3.流程图使用SmartDraw7或Visio软件绘制4.不要加封面WORD文档下载可编辑

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
大家都在看
近期热门
关闭