分支与循环程序设计实验报告汇总.docx
- 文档编号:20108416
- 上传时间:2023-04-25
- 格式:DOCX
- 页数:33
- 大小:641.97KB
分支与循环程序设计实验报告汇总.docx
《分支与循环程序设计实验报告汇总.docx》由会员分享,可在线阅读,更多相关《分支与循环程序设计实验报告汇总.docx(33页珍藏版)》请在冰豆网上搜索。
分支与循环程序设计实验报告汇总
分支与循环程序设计实验-报告汇总
———————————————————————————————— 作者:
————————————————————————————————日期:
ﻩ
实验名称 分支与循环程序设计实验
指导教师罗志祥
专业班级 光电1406 姓名段昳晖学号U2014*****
联系电话 137********
1、任务要求
1.设有8bits符号数X存于外部RAM单元,按以下方式计算后的结果Y也存于外部RAM单元,请按要求编写完整程序。
2.利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。
P3.0为低电平时开始计时,为高电平时停止计时。
设计1s延时子程序(延时误差小于10us,晶振频率12MHz)。
2、设计思路
1.设有8bits符号数X存于外部RAM单元,按以下方式计算后的结果Y也存于外部RAM单元,请按要求编写完整程序。
将外部单元1000H中的X,通过分支判断,分别执行不同的语句,三条语句分别为标记为L1、L2、L3,先比较X与64的大小关系,再判断X与10的大小关系,主要利用比较转移指令CJNE,以及执行CJNE指令后的进位位CY,进一步比较大小,分别跳转至对应语句。
将结果存于外部单元的1001H以及1002H。
2.利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。
P3.0为低电平时开始计时,为高电平时停止计时。
设计1s延时子程序(延时误差小于10us,晶振频率12MHz)。
主程序设计三层循环,分别对应时、分、秒,最内层安放一秒延时程序。
利用R0、R1、R2计数,R3保存分钟数、R4保存小时数,最内层循环60次,中循环循环1次,中循环60秒,外循环循环1次,外循环循环24次,清零。
其中对端口显示的秒数、分钟数、时间数,进行二进制修正。
利用循环来设计延时程序,合理计算语句长度,以及循环次数。
程序运行时修正P3.0的值,可以实现暂停计数和继续的功能。
提高部分(选做):
1)实现4位十进制加、减1计数,千位、百位由P1口输出;十位、个位由P2口输出。
利用P3.7状态选择加、减计数方式。
2)利用P3口低四位状态控制开始和停止计数,控制方式自定。
初始化P1、P2,,计数循环中插入一秒延时程序。
R1存千百位、R2存个十位,P3.7=0时,进行加1计数,取出R2中的数存于A,对A加1,同时进行十进制修正,存于P2,达到99,则进位对千百位进行加1。
P3.7=1时,进行减一操作,取出R1中的数存于A,对A减1,同时进行十进制修正,存于P1,达到0,则对P2,对R2进行减一。
计数循环前判断P3.0的值,当P3.0=1时,开始计数,P3.0=0时,原地循环,停止计数,直到P3.0=1,可以实现随时停止与开始。
3、资源分配
1. 设有8bits符号数X存于外部RAM单元,按以下方式计算后的结果Y也存于外部RAM单元,请按要求编写完整程序。
X存于片外1000H
Y存于片外1001H、1002H
其中,求平方时,低位存于1001H,,高位存于1002H
除二时,商存于1001H,,余数存于1002H
2.利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。
P3.0为低电平时开始计时,为高电平时停止计时。
设计1s延时子程序(延时误差小于10us,晶振频率12MHz)。
P0输出小时数
P1输出分钟数
P2输出秒数
R0小时循环计数
R1分钟循环计数
R2秒循环计数
R3保存分钟数
R4保存小时数
提高部分(选做):
1)实现4位十进制加、减1计数,千位、百位由P1口输出;十位、个位由P2口输出。
利用P3.7状态选择加、减计数方式。
2)利用P3口低四位状态控制开始和停止计数,控制方式自定。
P1输出千百位
P2输出个十位
P3.0计数开始与停止控制
P3.7加1减1计数切换
R1存千百位
R2存个十位
4、流程图
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)利用P3口低四位状态控制开始和停止计数,控制方式自定。
5、源代码(含文件头说明、语句行注释)
1.设有8bits符号数X存于外部RAM单元,按以下方式计算后的结果Y也存于外部RAM单元,请按要求编写完整程序。
:
task1.asm
Description:
对8bits符号数X,对于不同的X进行不同的运算操作
Date:
2016.10.13
Designed by:
Sourceused:
1000H:
存X的值
1001H、1002H:
存Y的值
1001H:
平方运算所得低位;除法运算所得商
1002H:
平方运算所得高位;除法运算所得余数
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
MOVDPTR,#1000H;X存于1000H
MOV A,#-1 ;给X赋值
ﻩMOVB,#0
MOVX@DPTR,A
;正负判断
JBACC.7,L3 ;X<0,L3
ﻩ
ﻩ ;X>0
ﻩ CJNEA,#64,L2 ;A!
=64,L2
SJMPL1
L1:
MOVB,A ;X>=64
MUL AB
SJMPSTORE ;低位存于1001H,¸高位存于1002H
ﻩ
L2:
JNCL1 ;X>64,L1
CJNE A,#10,L4 ;A!
=10,L4
SJMPL3 ;X=10,L3
L4:
JCL3 ;X<10,L3
MOVB,#2
DIVAB ;X>10
SJMP STORE ;商存于1001H,余数存于1002H
L3:
CPLA ;X<=10
STORE:
INC DPTR ;结果存于1001H
MOVX @DPTR,A
ﻩ INCDPTR
MOV A,B
MOVX@DPTR,A
SJMP$
END
2.利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。
P3.0为低电平时开始计时,为高电平时停止计时。
设计1s延时子程序(延时误差小于10us,晶振频率12MHz)。
3.
:
task2.asm
Description:
24小时制电子时钟
Date:
2016.10.13
Designedby:
DYH
Sourceused:
P0:
输出小时数
P1:
输出分钟数
P2:
输出秒数
R0:
小时循环计数
R1:
分钟循环计数
R2:
秒循环计数
R3:
保存分钟数
R4:
保存小时数
ORG0000H
ﻩ LJMPMAIN
ﻩORG0100H
MAIN:
MOV SP,#40H
MOVP0,#0
MOV P1,#0
MOVP2,#0
MOV R3,#0;保存小时
MOVR4,#0 ;保存分钟
;设定循环
ﻩMOVR0,#24 ;小时 外循环·24
MOVR1,#59;分钟中循环·60
MOVR2,#59 ;秒 内循环·60
ﻩCLRA
ﻩ
LOOP:
JNBP3.0,$ ;p3.0=0,结束计数
LCALL DELAY ;延时1s
ﻩADD A,#1
ﻩDAA
MOVP2,A
DJNZ R2,LOOP
MOV A,R3 ;分钟开始计数 将分钟赋给A
ADDA,#1;分钟+1
ﻩDA A
MOVR3,A
MOVP1,A
CLRA ;秒清零
MOVR2,#59 ;重置内循环·
DJNZR1,LOOP ;R1!
=0,中循环
MOV R3,#0 ;分钟清零,小时计数
MOV A,R4
ﻩ ADD A,#1
DA A
ﻩ MOVR4,A
ﻩMOV P0,A
ﻩMOVR2,#59;重置中循环
MOVR1,#59;重置外循环
ﻩ DJNZ R0,LOOP
DONE:
SJMP$
DELAY:
MOV R7,#11 ;n==((201*5+5)*90+9)*11+2=1000001
DELAY3:
MOV R6,#90 ;t=1.000001s
DELAY2:
MOV R5,#201
ﻩDELAY1:
NOP
ﻩ NOP
ﻩﻩNOP
ﻩﻩDJNZR5,DELAY1
ﻩﻩ NOP
ﻩﻩ NOP
ﻩﻩ DJNZR6,DELAY2
NOP
ﻩﻩNOP
ﻩNOP
ﻩﻩNOP
NOP
ﻩ NOP
ﻩﻩ DJNZ R7,DELAY3
ﻩRET
END
ﻩ
提高部分(选做):
1)实现4位十进制加、减1计数,千位、百位由P1口输出;十位、个位由P2口输出。
利用P3.7状态选择加、减计数方式。
2)利用P3口低四位状态控制开始和停止计数,控制方式自定。
Description:
实现4位十进制加、减1计数
Date:
2016.10.13
Designedby:
DYH
Sourceused:
P1输出千百位
P2输出个十位
P3.0计数开始与停止控制
P3.7 加1减1计数切换
R1存千百位
R2存个十位
ORG0000H
ﻩMOV P1,#0 ;输出千百位
ﻩMOVP2,#0 ;输出个十位
ﻩMOVR1,#0 ;存千百位
ﻩMOV R2,#0 ;存个十位
ﻩLJMP MAIN
ﻩﻩ
ORG 0100H
MAIN:
ﻩ JBP3.0,$ ;计数开始与停止控制
JNBP3.7,ADD1 ;加1减1,模式选择
SUB1:
MOVP1,#99
ﻩMOVP2,#99
MOVR1,#99
LOOP2:
MOV R2,#99
LOOP1:
JBP3.0,$
JNBP3.7,LOOP3
MOVA,R2
LCALLDELAY
ﻩDECA
MOVR2,A
ﻩMOV P2,R2
ﻩCJNER2,#0H,LOOP1
ﻩMOV A,R1
DECA
ﻩ MOVR1,A
ﻩﻩMOVP1,R1
ﻩCJNE R1,#0H,LOOP2
SJMP$
ADD1:
MOV P1,#0
ﻩﻩMOVP2,#0
ﻩMOVR1,#0
LOOP4:
MOVR2,#0
LOOP3:
JBP3.0,$
JB P3.7,LOOP1
MOVA,R2
LCALLDELAY
INCA
ﻩﻩMOVR2,A
ﻩﻩMOVP2,R2
ﻩ CJNER2,#99H,LOOP3
ﻩMOV A,R1
ﻩﻩINCA
ﻩ MOVR1,A
ﻩﻩMOV P1,R1
ﻩCJNER1,#99H,LOOP4
ﻩﻩ MOVR1,#0
SJMP$
DELAY:
MOVR7,#11 ;n==((201*5+5)*90+9)*11+2=1000001
DELAY3:
MOVR6,#90;t=1.000001s
DELAY2:
MOVR5,#201
ﻩDELAY1:
NOP
ﻩ NOP
ﻩNOP
ﻩDJNZR5,DELAY1
ﻩNOP
ﻩNOP
ﻩDJNZR6,DELAY2
ﻩﻩNOP
ﻩNOP
ﻩNOP
ﻩNOP
ﻩNOP
ﻩNOP
ﻩDJNZ R7,DELAY3
ﻩ RET
END
6、程序测试方法与结果
1.设有8bits符号数X存于外部RAM单元,按以下方式计算后的结果Y也存于外部RAM单元,请按要求编写完整程序。
(1)X=-30=E2H Y=1DH
(2).X=5=05H,Y=FAH
(3).X=10=0AH,Y=F5H
(4)X=25=19hY=0CH(商)01H(余数)
(5).X=64=40H Y=1000H
2.利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。
P3.0为低电平时开始计时,为高电平时停止计时。
设计1s延时子程序(延时误差小于10us,晶振频率12MHz)。
(1)P3.0=0,停止计数
(2)分钟进位前
(3)分钟进位后
(4)小时进位前
(5)小时进位后
提高部分(选做):
1)实现4位十进制加、减1计数,千位、百位由P1口输出;十位、个位由P2口输出。
利用P3.7状态选择加、减计数方式。
2)利用P3口低四位状态控制开始和停止计数,控制方式自定。
(1)P3.0=1,停止计数
(2)P3.0=1,中途停止计数
(3)P3.0=0,从暂停点继续计数
(4)P3.7=0,加1计数前后
(5)P3.7=1,减1计数前后
思考题
1.实现多分支结构程序的主要方法有哪些?
举例说明。
2.在编程上,十进制加1计数器与十六进制加1计数器的区别是什么?
怎样用十进制加法指令实现减1计数?
十进制加1计数器,逢10进1,计数模为10,十六进制加1计数器逢16进1,计数模为16,加上1的补码,再通过DA,进行BCD修正
本人承诺:
本报告内容真实,无伪造数据,无抄袭他人成果。
本人完全了解学校相关规定,如若违反,愿意承担其后果。
签字:
2016年10月25日
其它说明:
1.标题:
黑体,小四号
2.正文:
宋体,五号,1.5倍行距
3.流程图使用SmartDraw7或Visio软件绘制
4.不要加封面
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 分支 循环 程序设计 实验 报告 汇总