实验二分支程序 豆丁_实验二分支程序设计
实验二分支程序 豆丁由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“实验二分支程序设计”。
微机《实验》报告
实验名称 分支程序设计实验
指导教师 曹 丹 华
专业班级 光电1007班 姓名 余 冬 学号 U201013524 序号 16 联系方式 ***
一、任务要求
1.设有8bits符号数X存于外部RAM单元,按以下方式计算后的结果Y也存于外部RAM单元,请按要求编写程序。
X2当X40YX/2当20X40
当X20X2.利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。P3.0为低电平时开始计时,为高电平时停止计时。提高部分(选做):
a.实现4位十进制加、减1计数,千位、百位由P1口输出;十位、个位由P2口输出。利用P3.7状态选择加、减计数方式。
b.利用P3口低四位状态控制开始和停止计数,控制方式自定。
二、设计思路
任务1:将位于2000H中的X取出,判断是否为负数,若为负数,则对X按位取反,结果送入3000H单元。若为正数,则将X的值与40比较,若大于等于40,则将X平方后的结果送入3000H低字节和高字节单元中。若X小于40,则将X的值与20比较,若X>20,则将除以2后存入3000H单元。否则对X按位取反,结果送入3000H单元。
其中,按位取反使用CPL指令实现:除以2运算使用2进制位带左移实现:平方运算使用MUL指令实现。并且平方运算后的结果用2个存储单元保存。任务2:
先将P2、P1和P0端口置0,注意P0没有锁存功能,用R5存储P0的内容,并将R5也置0.然后根据P3.0的值来判断是否开始计时,计时开始后等待一秒,而后P2加1,判断P2与60的大小,若P2小于60,则重新判断P3.0的值来决定是否开始计时。若P2等于60,则将P2置0,同时P1加1.再判断P1与60的大小,若小于60,则重新看P3.0的值是否开始计时。若P1等于60,则将P1置0,同时R5加1后将其值赋给P0。再判断R5与24的大小,若R5小于24,则重新判断P3.0的值来看是否开始计时。若R5等于24,则将置1后将其值赋给P0。等待一秒后又再次判断P3.0的值,目的是保证当改变P3.0后程序能立即做出反应。
三、资源分配
1.2000H:存入8bits符号数X 3000H、3001H:保存计算后的结果 DPTR:对片外RAM进行读写操作 R1:减法运算时保存A的值 2.R5:暂时存储P0端口的值
R0、R1、R2、R3、R4:为实现延时一秒而指定操作的周期数 P0、P1、P2:分别输出时、分、秒数值 P3:起计时控制作用
四、流程图1、2.五、源代码(含文件头说明、资源使用说明、语句行注释)1.M EQU 10H ORG 0000H LJMP MAIN ORG 0100H MAIN:MOV DPTR,#2000H MOV A,#10H
MOVX @DPTR,A;MOVX A,@DPTR
JB ACC.7,LOOP2 MOV R1,A
CLR C
SUBB A,#40H
MOV A,R1
JC LOOP1
MOV B,A MUL AB
MOV DPTR,#3000H MOVX @DPTR,A
MOV A,B INC DPTR MOVX @DPTR,A
DONE:SJMP DONE LOOP1:MOV R1,A
CLR C SUBB A,#20H
MOV A,R1
JC LOOP2
JZ LOOP2
CLR C
RRC A
将初始值存入2000H单元
;从2000H单元读出M的值
;判断M是否为负,若为负,跳转LOOP2;暂时保存A的值
;将M的值与40进行比较;将减法运算之前的值再赋给A;若M的值小于40,跳转LOOP1
;进行M的平方运算
;低位存入3000H单元
;高位存入3001H单元;暂时保存A的值
;将M的值与20进行比较;将减法运算之前的值再赋给A;若M小于20,跳转LOOP2;若M等于20,跳转LOOP2;进行除了操作 OVER:MOV DPTR,#3000H MOVX @DPTR,A SJMP DONE
;字节取反
;将结果存于3000H单元
LOOP2:CPL A
SJMP OVER END2、ORG 0000H LJMP MAIN ORG 0300H MAIN:MOV P2,#00H;将P2端口置0 MOV P1,#00H MOV P0,#00H MOV R5,#00H
;将P1端口置0;将P0端口置0
;将P0端口的暂时存储器置0 START:JB P3.0,START;判断P3.0是否为0,若为0,则向下执行 LCALL DELAY;调用延时子程序 HERE: JB P3.0,HERE MOV A,P2
ADD A,#01H DA A MOV P2,A MOV A,P1 ADD A,#01H DA A MOV P1,A CLR C SUBB A,#60H JC LOOP2 MOV P1,#00H MOV A,R5 ADD A,#01H
;将秒钟值加强,并作十进制修正
DA A MOV R5,A MOV P0,R5 CLR C SUBB A,#24H
JC LOOP3 MOV R5,#00H MOV P0,R5 MOV R0,#13 DELAY9:NOP NOP DJNZ R0,DELAY9 AJMP START LOOP3:MOV R0,#13 DELAY8:NOP NOP
DJNZ R0,DELAY8 NOP NOP NOP LJMP START LOOP2:MOV R0,#16 DELAY7:NOP
NOP DJNZ R0,DELAY7 NOP NOP NOP AJMP START LOOP1:MOV R0,#19H DELAY6:NOP NOP
DJNZ R0,DELAY6 NOP AJMP START DELAY:MOV R2,#6H DELAY3:MOV R1,#255 DELAY2:MOV R0,#255 DELAY1:NOP
NOP NOP DJNZ R0,DELAY1 DJNZ R1,DELAY2 DJNZ R2,DELAY3 MOV R4,#58 DELAY5:MOV R3,#255 DELAY4:NOP DJNZ R3,DELAY4
DJNZ R4,DELAY5 RET END
六、程序测试方法与结果、软件性能分析 1.a.赋值X为-2,截图如下 :
B.赋值X为16,截图如下:
C.赋值X为22,截图如下:
D.赋值X为42,截图如下:
2.第一步,当程序刚开始运行的时候,时分秒全部清零,如下图:
第二步,当秒向分进位时,前后对比如下:
运行前
运行后 由上可以看出前后刚好延时一秒。
第三步,当分向时进位时,前后对比如下:
运行前
运行后
由上可以看出分向时进位时,前后延时一秒。第四步,到23:59:59时,运行前后如下:
运行前
运行后
由上也可以看出,分向时进位也延时一秒。综上,软件性能良好。
七、思考题
1.实现多分支结构程序的主要方法有哪些?举例说明、答:若分支比较少,则通常用条件转移指令来实现。
例如,判断两个单字节无符号数的大小,分别存于片内RAM的40H和41HUJ单元)并把人数存入单元。可以用判断CY的转移指令来实现,程序如下: JUDGE: MOM A,40H CLR C SUBB A,41H JNC LP MOV 42H,41H RET LP:MOV 42H RET 若分支比较多,则可采用的有三种形式:分支地址表、转移指令表、地址偏移量表。具体例子不详述。
2.在编程上,十进制加1计数器与十六进制加1计数器的区别是什么?怎样用十进制加法指令实现减1计数?
答:十进制加法1计数器进行加1操作时,每加一次1,就得将每一字节进行十进制修正;而十六进制加法是相当于单字节或多字节的加法运算,其中被加数是计数器的当前值,加数始终是1.十进制加法进行减1计数时,应该将计数器的当前值与-1的补码FFH相加,然后将每一字节进行修正,从而实现十进制减1计数。
八、心得
本次实验遇到的问题包括时钟的程序设计和流程图的绘制。看出来,单片机的基础知识还没掌握好,应复习相应的课件,补充缺陷的地方。下次实验再继续努力。说明:
标题:黑体,小四号
正文:宋体,五号,1.5倍行距
流程图使用 SmartDraw7
或Visio软件绘制
微机《实验》报告实验名称 分支程序设计实验指导教师 曹 丹 华专业班级 光电1007班 姓名 余 冬 学号 U201013524 序号 16 联系方式 *** 一、任务要求1.设有8bits符......
实验二小升旗仪式程序第一项:出旗第二项:升国旗,奏国歌,少先队员行队礼,非少先队员行注目礼。 第三项:全体师生唱国歌第四项:国旗下讲话(老师或学生代表)第五项:宣誓呼号(辅导员带领)第......
2010年工 作 总 结金桥铝型材厂有限公司科技部电器维修班2010年技术工作总结随着2011年的到来,回顾2010年过去的一年中,在公司领导的指导下,秉承公司“守法、勤奋、节约、高效......
大学毕业感言豆丁(精选15篇)由网友“楠宝宝”投稿提供,下面是小编给大家整理后的大学毕业感言豆丁,欢迎大家借鉴与参考,希望对大家有所帮助。篇1:英文简历 豆丁网 yjbysFemale, 18......
程序的分支结构说课稿作为一位杰出的老师,有必要进行细致的说课稿准备工作,说课稿可以帮助我们提高教学效果。优秀的说课稿都具备一些什么特点呢?下面是小编为大家整理的程序的......
