资源描述
《微机实验》报告
实验名称 分支与循环程序设计实验
指导教师 罗志祥
专业班级 光电1406 姓名 段昳晖 学号 U2014*****
联系电话 137********
一、 任务要求
1. 设有8bits符号数X存于外部RAM单元,按以下方式计算后的结果Y也存于外部RAM单元,请按要求编写完整程序。
2. 利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。P3.0为低电平时开始计时,为高电平时停止计时。设计1s延时子程序(延时误差小于10us,晶振频率12MHz)。
二、 设计思路
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,可以实现随时停止与开始。
三、 资源分配
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存个十位
四、 流程图
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口低四位状态控制开始和停止计数,控制方式自定。
五、 源代码 (含文件头说明、语句行注释)
1. 设有8bits符号数X存于外部RAM单元,按以下方式计算后的结果Y也存于外部RAM单元,请按要求编写完整程序。
File name: task1.asm
Description: 对8bits符号数X,对于不同的X进行不同的运算操作
Date: 2016.10.13
Designed by:
Source used: 1000H: 存X的值
1001H、1002H: 存Y的值
1001H:平方运算所得低位;除法运算所得商
1002H:平方运算所得高位;除法运算所得余数
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV DPTR,#1000H ;X存于1000H
MOV A,#-1 ;给X赋值
MOV B,#0
MOVX @DPTR,A
;正负判断
JB ACC.7,L3 ;X<0,L3
;X>0
CJNE A,#64,L2 ;A!=64,L2
SJMP L1
L1: MOV B,A ;X>=64
MUL AB
SJMP STORE ;低位存于1001H,¸高位存于1002H
L2: JNC L1 ;X>64,L1
CJNE A,#10,L4 ;A!=10,L4
SJMP L3 ;X=10,L3
L4: JC L3 ;X<10,L3
MOV B,#2
DIV AB ;X>10
SJMP STORE ;商存于1001H,余数存于1002H
L3: CPL A ;X<=10
STORE: INC DPTR ;结果存于1001H
MOVX @DPTR,A
INC DPTR
MOV A,B
MOVX @DPTR,A
SJMP $
END
2. 利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。P3.0为低电平时开始计时,为高电平时停止计时。设计1s延时子程序(延时误差小于10us,晶振频率12MHz)。
3.
File name: task2.asm
Description: 24小时制电子时钟
Date: 2016.10.13
Designed by: DYH
Source used:
P0:输出小时数
P1:输出分钟数
P2:输出秒数
R0:小时循环计数
R1:分钟循环计数
R2:秒循环计数
R3:保存分钟数
R4:保存小时数
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV SP,#40H
MOV P0,#0
MOV P1,#0
MOV P2,#0
MOV R3,#0 ;保存小时
MOV R4,#0 ;保存分钟
;设定循环
MOV R0,#24 ;小时 外循环·24
MOV R1,#59 ;分钟 中循环·60
MOV R2,#59 ;秒 内循环·60
CLR A
LOOP: JNB P3.0,$ ;p3.0=0,结束计数
LCALL DELAY ;延时1s
ADD A,#1
DA A
MOV P2,A
DJNZ R2,LOOP
MOV A,R3 ;分钟开始计数 将分钟赋给A
ADD A,#1 ;分钟+1
DA A
MOV R3,A
MOV P1,A
CLR A ;秒清零
MOV R2,#59 ;重置内循环·
DJNZ R1,LOOP ;R1!=0,中循环
MOV R3,#0 ;分钟清零,小时计数
MOV A,R4
ADD A,#1
DA A
MOV R4,A
MOV P0,A
MOV R2,#59 ;重置中循环
MOV R1,#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
DJNZ R5,DELAY1
NOP
NOP
DJNZ R6,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
Designed by: DYH
Source used:
P1输出千百位
P2输出个十位
P3.0 计数开始与停止控制
P3.7 加1减1计数切换
R1存千百位
R2存个十位
ORG 0000H
MOV P1,#0 ;输出千百位
MOV P2,#0 ;输出个十位
MOV R1,#0 ;存千百位
MOV R2,#0 ;存个十位
LJMP MAIN
ORG 0100H
MAIN: JB P3.0,$ ;计数开始与停止控制
JNB P3.7,ADD1 ;加1减1,模式选择
SUB1: MOV P1,#99
MOV P2,#99
MOV R1,#99
LOOP2: MOV R2,#99
LOOP1: JB P3.0,$
JNB P3.7,LOOP3
MOV A,R2
LCALL DELAY
DEC A
MOV R2,A
MOV P2,R2
CJNE R2,#0H,LOOP1
MOV A,R1
DEC A
MOV R1,A
MOV P1,R1
CJNE R1,#0H,LOOP2
SJMP $
ADD1: MOV P1,#0
MOV P2,#0
MOV R1,#0
LOOP4: MOV R2,#0
LOOP3: JB P3.0,$
JB P3.7,LOOP1
MOV A,R2
LCALL DELAY
INC A
MOV R2,A
MOV P2,R2
CJNE R2,#99H,LOOP3
MOV A,R1
INC A
MOV R1,A
MOV P1,R1
CJNE R1,#99H,LOOP4
MOV R1,#0
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
DJNZ R5,DELAY1
NOP
NOP
DJNZ R6,DELAY2
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R7,DELAY3
RET
END
六、 程序测试方法与结果
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=19h Y=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.不要加封面
其中专业理论知识内容包括:保安理论知识、消防业务知识、职业道德、法律常识、保安礼仪、救护知识。作技能训练内容包括:岗位操作指引、勤务技能、消防技能、军事技能。
二.培训的及要求培训目的
安全生产目标责任书
为了进一步落实安全生产责任制,做到“责、权、利”相结合,根据我公司2015年度安全生产目标的内容,现与财务部签订如下安全生产目标:
一、目标值:
1、全年人身死亡事故为零,重伤事故为零,轻伤人数为零。
2、现金安全保管,不发生盗窃事故。
3、每月足额提取安全生产费用,保障安全生产投入资金的到位。
4、安全培训合格率为100%。
二、本单位安全工作上必须做到以下内容:
1、对本单位的安全生产负直接领导责任,必须模范遵守公司的各项安全管理制度,不发布与公司安全管理制度相抵触的指令,严格履行本人的安全职责,确保安全责任制在本单位全面落实,并全力支持安全工作。
2、保证公司各项安全管理制度和管理办法在本单位内全面实施,并自觉接受公司安全部门的监督和管理。
3、在确保安全的前提下组织生产,始终把安全工作放在首位,当“安全与交货期、质量”发生矛盾时,坚持安全第一的原则。
4、参加生产碰头会时,首先汇报本单位的安全生产情况和安全问题落实情况;在安排本单位生产任务时,必须安排安全工作内容,并写入记录。
5、在公司及政府的安全检查中杜绝各类违章现象。
6、组织本部门积极参加安全检查,做到有检查、有整改,记录全。
7、以身作则,不违章指挥、不违章操作。对发现的各类违章现象负有查禁的责任,同时要予以查处。
8、虚心接受员工提出的问题,杜绝不接受或盲目指挥;
9、发生事故,应立即报告主管领导,按照“四不放过”的原则召开事故分析会,提出整改措施和对责任者的处理意见,并填写事故登记表,严禁隐瞒不报或降低对责任者的处罚标准。
10、必须按规定对单位员工进行培训和新员工上岗教育;
11、严格执行公司安全生产十六项禁令,保证本单位所有人员不违章作业。
三、 安全奖惩:
1、对于全年实现安全目标的按照公司生产现场管理规定和工作说明书进行考核奖励;对于未实现安全目标的按照公司规定进行处罚。
2、每月接受主管领导指派人员对安全生产责任状的落
30
展开阅读全文