分支程序设计实验.doc

分支程序设计实验.doc

ID:50713264

大小:630.50 KB

页数:14页

时间:2020-03-07

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

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

1、《微机实验》报告实验名称分支程序设计实验专业班级xxxxx姓名xxxxx学号xxxxxx联系方式xxxxxxxxxxxxxxxxxxxxxxx一、任务要求1.设有8bits符号数X存于外部RAM单元,按以下方式计算后的结果Y也存于外部RAM单元,请按要求编写程序。X2当X≥40Y=X/2当20〈X〈40ì³ï/X=当X≤20<<íï£2.利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。P3.0为低电平时开始计时,为高电平时停止计时。提高部

2、分(选做):a.实现4位十进制加、减1计数,千位、百位由P1口输出;十位、个位由P2口输出。利用P3.7状态选择加、减计数方式。b.利用P3口低四位状态控制开始和停止计数,控制方式自定。一、设计思路任务1:机器内存入的数默认为无符号数,所以应该先判断正负性。如果是负数则直接归到取反区间;如果是正数,则与20,40进行大小比较,即和20,40分别做减法,然后根据比较结果归到各个区间。任务2:先将R0~R2和P0~P2清零,开始先判断控制位P3.0是否为0,当P3.0=1时原地踏步重复判断,当P3.0=0时开始计时。计时

3、开始,进行秒钟R0计数,每次计数完成用BCD码子程序转换,然后判断计数后R0值是否到60,若R0的值不足60,就直接输出给P2,若R0的值为60,就把R0和P2进行清零后,开始分钟计数部分。同理,每次分钟计数完之后用BCD码子程序转换,然后判断计数后R1的值是否为60,若不为60,就直接输出给P1,若R1的值为60,就把R1和P1清零后开始时钟计数部分。时钟计数完后同样用BCD码子程序转换,然后判断计数后的R2的值是否为24,若不为24,就直接输出给P0,若R2为24,就吧R2和P0清零后直接跳出计数部分,从判断P3

4、.0部分再开始.每两次计数输出之间穿插一个1s的延时程序。就可以达到时钟的功能。一、资源分配1.分支程序:数据指针DPTR:对片外RAM进行读写操作2000H:存放8bits符号数X2010H:存放结果Y(取反后的数,或者平方后的高8位,或者除法后的商)2011H:存放结果Y(平方后的低8位,或者除法后的余数)2.时钟程序:R0、R1、R2:分别进行秒钟,分钟,时钟的计数P2、P1、P0:分别输出秒钟,分钟,时钟P3.0:是否计数的控制位R3、R4、R5:为1s延时程序指定循环次数B:BCD码转换子程序的操作数一、流

5、程图1,分支程序设计1,时钟程序一、源代码(含文件头说明、资源使用说明、语句行注释)任务一:Filename:first.asmDescription:多向分支程序设计Date:2013.10.15Designedby:陈欣雨ORG0000HLJMPMAINORG0100HMAIN:MOVDPTR,#2000HMOVA,#10MOVX@DPTR,A;存数MOVB,0;寄存器B清零MOVXA,@DPTR;从R0中取出数xJNBACC.7,COMP1;判断符号位,符号位为0时转到COMP1LP3:CPLA;对x取反SJM

6、PSTORECOMP1:CJNEA,#20,COMP2;A≠20时,转到COMP2SJMPLP3;A=20时,转到LP3取反COMP2:JCLP3;C=1,A<20,转到LP3取反CJNEA,#40,COMP3;C=0,A>20.当A≠40时,转到COMP3LP1:MOVB,A;A=40时,给B赋值为AMULAB;计算x平方SJMPSTORECOMP3:JNCLP1;C=0,A>40,转到LP1计算x平方MOVB,#02H;C=1,A<40,赋值B=2DIVAB;计算x除以2STORE:MOVDPTR,#2010HM

7、OVX@DPTR,A;存数:INCDPTR;对于平方,高位在前地位在后MOVA,B;对于除法,商在前余数在后MOVX@DPTR,ASJMP$END任务二:ORG0000HSJMPSTARTORG0030HSTART:MOVSP,#40HMOVP1,#0MOVR3,#0;设定R3初值为0,用R3保存分钟数MOVR4,#0;设定R4初值为0,用R4保存小时数MOVR0,#60;设定内循环次数为60MOVR1,#60;设定中循环次数为60MOVR2,#24;设定外循环次数为24CLRANEXT:JNBP3.0,DONE;如

8、果P3.0等于0,则结束计数ADDA,#1;BCD码加1计数DAA;对A进行修正MOVP2,A;显示计数DJNZR0,NEXT;R0<----R0-1,R0不等于零,跳到NEXT继续循环MOVA,R3;将分钟数赋给AADDA,#1;分钟数加1DAAMOVR3,A;分钟数用R3保存MOVP1,A;显示计数CLRAMOVR0,#60;重置内循环次数

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

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

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