分支与循环程序设计实验.doc

分支与循环程序设计实验.doc

ID:52902777

大小:272.78 KB

页数:21页

时间:2020-03-31

分支与循环程序设计实验.doc_第1页
分支与循环程序设计实验.doc_第2页
分支与循环程序设计实验.doc_第3页
分支与循环程序设计实验.doc_第4页
分支与循环程序设计实验.doc_第5页
资源描述:

《分支与循环程序设计实验.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实验名称分支与循环程序设计实验成绩一、任务要求1.设有8bits符号数X存于外部RAM单元,按以下方式计算后的结果Y也存于外部RAM单元,请按要求编写完整程序。2.利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。P3.0为低电平时开始计时,为高电平时停止计时。设计1s延时子程序(延时误差小于10us,晶振频率12MHz)。提高部分(选做):1)实现4位十进制加、减1计数,千位、百位由P1口输出;十位、个位由P2口输出。利用P3.7状态选择

2、加、减计数方式。2)利用P3口低四位状态控制开始和停止计数,控制方式自定。一、设计思路任务一:机器内存入的数默认为无符号数,所以应该先判断正负性。对于8位有符号数,则范围是-128到127。如果是负数则直接归到取反区间;如果是正数,则使用两次比较转移指令,并根据CY的值进行区分,最后得出结果。任务二:判断控制位P3.0是否为0,当P3.0=1时原地踏步重复判断,当P3.0=0时开始计时。计时开始,计时采用多重循环嵌套最内层是秒钟计时,然后是分钟计时,最后是时钟计时。先通过一个延时1s的子程序,每运行一次延时子程序秒钟

3、加1,并通过CJNE指令判断是否等于60,等于60则进入分钟计数并将秒钟清零,否则继续循环计时。当分钟数为60时则向时钟进位,并将分钟数清零。当时钟数为24时,则重新开始计时。任务三(提高部分):先通过检查P3口低四位的状态来控制是否计数,存在高电平则不计数。再检查P3.7端口状态来选择计数模式。加1计数时采用INCA和DAA指令实现十进制加1计数。减1计数采用与-1(BCD码形式)补码相加即99H相加实现十进制减1计数。其中每计数一次延时1s。一、资源分配任务一:3000H:8bit符号数;3001H:平方低位、商

4、、取反;3002H:平方高位、余数任务二:P0:显示小时;P1:显示分钟;P2:显示秒钟;P3.0:时钟开关;R4、R5、R3:存放循环次数任务三(提高部分):P1:显示千位和百位;P2:显示十位和个位;P3:控制计数;R4、R5、R3:存放延时程序中的循环次数二、流程图任务一:任务二:任务三(提高部分):五、源代码(含文件头说明、语句行注释)任务一:Filename:text1.asmDescription:分支程序Sourceused:3000H:8bit符号数3001H:平方低位、商、取反3002H:平方高位、

5、余数MAIN:MOVDPTR,#3000H;指针赋值,8位有符号数地址MOVXA,@DPTR;3000H取数JNBACC.7,L1;不为负数转L1COMP1:CPLA;取反SJMPSAVE;L1:CJNEA,#10,L2;不等于10转L2SJMPCOMP1;L2:JCCOMP1;小于10转COMP1CJNEA,#64,L3;大于10不等于64转L3COMP2:MOVB,A;MULAB;求平方SJMPSAVE;L3:JNCCOMP2;大于64转COMP2MOVB,#2;DIVAB;除以2SAVE:INCDPTR;MOV

6、X@DPTR,A;3001H存:平方低位、商、取反INCDPTR;MOVA,B;MOVX@DPTR,A;3002H存:平方高位、余数END任务二:Filename:text2.asmDescription:电子时钟Sourceused:P0:显示小时、P1:显示分钟、P2:显示秒钟R4、R5、R3:存放循环次数ORG0000HLJMPMAINORG0200HMAIN:MOVP0,#23H;时钟初始值MOVP1,#58H;分钟初始值MOVP2,#30H;秒钟初始值JISHU:JBP3.0,JISHU;P3.0引脚低电平

7、开始计时ACALLDLY;进入延时1s子程序MOVA,P2ADDA,#1DAAMOVP2,ACJNEA,#60H,JISHU;判断是否达到60sMOVP2,#0;秒钟清零MOVA,P1ADDA,#1DAAMOVP1,ACJNEA,#60H,JISHU;判断是否达到60minMOVP1,#0;分钟清零MOVA,P0ADDA,#1DAAMOVP0,ACJNEA,#24H,JISHU;判断是否达到24hMOVP0,#0;时钟清零SJMPJISHUDLY:MOVR4,#46;延时一秒程序L3:MOVR5,#152L1:MOV

8、R3,#70L2:DJNZR3,L2DJNZR5,L1DJNZR4,L3RETEND任务三(提高部分):Filename:text3.asmDescription:十进制加1或减1计数Sourceused:P1:显示千位和百位、P2:显示十位和个位、P3:控制计数R4、R5、R3:存放延时程序中的循环次数ORG0000HLJMPMAINORG0

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

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

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