分支和循环程序设计

分支和循环程序设计

ID:22423524

大小:651.00 KB

页数:16页

时间:2018-10-29

分支和循环程序设计_第1页
分支和循环程序设计_第2页
分支和循环程序设计_第3页
分支和循环程序设计_第4页
分支和循环程序设计_第5页
资源描述:

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

1、实验名称分支与循环程序设计成绩指导教师******专业班级******姓名白***学号*******联系电话********一、任务要求1.熟练掌握Keil环境下汇编语言程序的调试方法,加深对汇编语言指令、机器码、寻址方式等基本内容的理解,掌握分支程序和简单程序的设计与调试方法,了解并行IO口的使用。2.设有8bits符号数X存于外部RAM单元,按以下方式计算后的结果Y也存于外部RAM单元,请按要求编写完整程序。3.利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。P3.0为低电平时开

2、始计时,为高电平时停止计时。设计1s延时子程序(延时误差小于10us,晶振频率12MHz)。4.1)实现4位十进制加、减1计数,千位、百位由P1口输出;十位、个位由P2口输出。利用P3.7状态选择加、减计数方式。2)利用P3口低四位状态控制开始和停止计数,控制方式自定。二、设计思路1.先在外部RAM取数,然后判断该符号数是否为负数,若为负数,则取相反数并存数;若为正数,则接着判断该数是否大于等于64,若满足,则求平方并存数,先存低位,后存高位;若小于64,则接着判断该数是否大于10,若满足,则求该数的一半并存数;若小于等于10,则取相反数并存数。2.第一步先编可

3、以延时1S的子程序DELAY;接着判断P3.O是否满足开始计数条件,若不满足,则重复判断;若满足,则对时分秒分别赋值,调用延时子程序,判断是否满足计时条件,若不满足,则重复判断直至满足;若满足,则秒钟自加一,循环,判断秒钟循环满60次后出循环,对分钟自加一,然后继续循环,最后判断分钟循环满60次后出循环,对时钟自加一,然后判断时钟循环满24则回到初值,时分秒重新赋值并重新开始循环。3.判断P3.7,若为1,则进行加一计数,若为0,则跳转至另一程序进行减一计数;加一计数中,先取低位P1送A,自加一,送P1,判断是否有溢出,若有,则取高位P2送A,自加一,送P2,然

4、后回判断循环;减一计数同理,即先取低位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存计数方式的控制位四、流程图1、8bit符号数的判断与计算2、时钟设计3.十进制加减一计数器五、源代码(含文件头说明、语句行注释)

5、1.8bit符号数的判断与计算ORG0000HLJMPSTARTORG1000HSTART:MOVDPTR,#2000H;地址指针赋初值MOVA,#22MOVX@DPTR,AMOVXA,@DPTR;取数JBACC.7,DDCJNEA,#64,AA;若A≠64,则转AAAA:JCBB;若A<64,则转BBMOVB,AMULAB;求A的平方INCDPTRMOVX@DPTR,A;存结果低八位INCDPTRMOVA,BMOVX@DPTR,A;存结果高八位SJMP$BB:CJNEA,#10,CC;若A≠10,则转CCCPLAEE:INCDPTRMOVX@DPTR,ASJM

6、P$CC:JCDD;若A<10,则转DDRRA;若A>10,则右移一位SJMPEEDD:CPLAINCASJMPEEEND2.时钟设计ORG0000HLJMPSTARTORG1000HSTART:JBP3.0,START;若为0,则开始计时RESTA:MOVR3,#24MOVP0,#00H;时钟赋初值LOOP3:MOVR4,#60MOVP1,#00H;分钟赋初值LOOP2:MOVR5,#60MOVP2,#00H;秒钟赋初值LOOP1:ACALLDELAY;调用延时1S子程序LOOP:JBP3.0,LOOP;若为1,则停止计时MOVA,P2ADDA,#01HDAA

7、MOVP2,ADJNZR5,LOOP1;判断秒钟是否结束循环MOVA,P1ADDA,#01HDAAMOVP1,ADJNZR4,LOOP2;判断分钟是否结束循环MOVA,P0ADDA,#01HDAAMOVP0,ADJNZR3,LOOP3;判断时钟是否结束循环LJMPRESTADELAY:MOVR0,#12NOPDELAY3:MOVR1,#130DELAY2:MOVR2,#212NOPNOPDELAY1:NOPDJNZR2,DELAY1DJNZR1,DELAY2DJNZR0,DELAY3RETEND3.十进制加减计数器ORG0000HLJMPSTARTORG1000

8、HSTART:MOVP1

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

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

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