您好,欢迎来到微智科技网。
搜索
您的当前位置:首页分支和循环程序设计实验报告

分支和循环程序设计实验报告

来源:微智科技网
实验名称 分支与循环程序设计实验

指导教师 罗志祥

专业班级 光电1406 姓名 段昳晖 学号 U2014***** 联系电话 137********

一、任务要求

1. 设有8bits符号数X存于外部RAM单元,按以下方式计算后的结果Y也存于外部RAM单元,请按要求编写完整程序。

X2YX/2X 当X 当10X 当X102. 利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。为低电平时开始计时,为高电平时停止计时。设计1s延时子程序(延时误差小于10us,晶振频率12MHz)。

二、设计思路

1. 设有8bits符号数X存于外部RAM单元,按以下方式计算后的结果Y也存于外部RAM单元,请按要求编写完整程序。

X2YX/2X 当X 当10X 当X10将外部单元1000H中的X,通过分支判断,分别执行不同的语句,三条语句分别为标记为L1、L2、L3,先比较X与的大小关系,再判断X与10的大小关系,主要利用比较转移指令CJNE,以及执行CJNE指令后的进位位CY,进一步比较大小,分别跳转至对应语句。将结果存于外部单元的1001H以及1002H。

2. 利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。为低电平时开始计时,为高电平时停止计时。设计1s延时子程序(延时误差小于10us,晶振频率12MHz)。

主程序设计三层循环,分别对应时、分、秒,最内层安放一秒延时程序。利用R0、R1、R2计数,R3保存分钟数、R4保存小时数,最内层循环60次,中循环循环1次,中循环60秒,外循环循环1次,外循环循环24次,清零。其中对端口显示的秒数、分钟数、时间数,进行二进制修正。

利用循环来设计延时程序,合理计算语句长度,以及循环次数。 程序运行时修正的值,可以实现暂停计数和继续的功能。

提高部分(选做):

1)实现4位十进制加、减1计数,千位、百位由P1口输出;十位、个位由P2口输出。利用状态选择加、减计数方式。

2)利用P3口低四位状态控制开始和停止计数,控制方式自定。

初始化P1、P2,,计数循环中插入一秒延时程序。R1存千百位、R2存个十位,=0时,进行加1计数,取出R2中的数存于A,对A 加1,同时进行十进制修正,存于P2,达到99,则进位对千百位进行加1。=1时,进行减一操作,取出R1中的数存于A,对A减1,同时进行十进制修正,存于P1,达到0,则对P2,对R2进行减一。

计数循环前判断的值,当=1时,开始计数,=0时,原地循环,停止计数,直到=1,可以实现随时停止与开始。

三、资源分配

1. 设有8bits符号数X存于外部RAM单元,按以下方式计算后的结果Y也存于外部RAM单元,请按要求编写完整程序。

X2YX/2XX存于片外1000H Y存于片外1001H、1002H

当X 当10X 当X10

其中,求平方时,低位存于1001H,,高位存于1002H 除二时,商存于1001H,,余数存于1002H

2. 利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。为低电平时开始计时,为高电平时停止计时。设计1s延时子程序(延时误差小于10us,晶振频率12MHz)。

P0输出小时数 P1输出分钟数 P2输出秒数 R0小时循环计数 R1分钟循环计数 R2秒循环计数 R3保存分钟数 R4保存小时数

提高部分(选做):

1)实现4位十进制加、减1计数,千位、百位由P1口输出;十位、个位由P2口输出。利用状态选择加、减计数方式。

2)利用P3口低四位状态控制开始和停止计数,控制方式自定。

P1输出千百位

P2输出个十位 计数开始与停止控制 加1减1计数切换 R1存千百位 R2存个十位

四、流程图

1. 设有8bits符号数X存于外部RAM单元,按以下方式计算后的结果Y也存于外部RAM单元,请按要求编写完整程序。

X2YX/2X 当X 当10X 当X10

2. 利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。为低电平时开始计时,为高电平时停止计时。设计1s延时子程序(延时误差小于10us,晶振频率12MHz)。

提高部分(选做):

1)实现4位十进制加、减1计数,千位、百位由P1口输出;十位、个位由P2口输出。利用状态选择加、减计数方式。

2)利用P3口低四位状态控制开始和停止计数,控制方式自定。

五、源代码 (含文件头说明、语句行注释)

1. 设有8bits符号数X存于外部RAM单元,按以下方式计算后的结果Y也存于外部RAM单元,请按要求编写完整程序。

X2YX/2XFile name:

当X 当10X 当X10Description: 对8bits符号数X,对于不同的X进行不同的运算操作 Date: 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 ,L3 ;X<0,L3 ;X>0

CJNE A,#,L2 ;A!=,L2 SJMP L1

L1: MOV B,A ;X>=

MUL AB

SJMP STORE ;低位存于1001H,¸高位存于1002H

L2: JNC L1 ;X>,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码的形式)。为低电平时开始计时,为高电平时停止计时。设计1s延时子程序(延时误差小于10us,晶振频率12MHz)。

3. File name:

Description: 24小时制电子时钟 Date: 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 ,$ ;=0,结束计数 LCALL DELAY ;延时1s ADD A,#1

DA A

MOV P2,A DJNZ R2,LOOP MOV A,R3 ADD A,#1 ; DA A MOV R3,A MOV P1,A

CLR A MOV R2,#59

DJNZ R1,LOOP 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 $

;分钟开始计数 将分钟赋给A 分钟+1 ;秒清零 ;重置内循环· ;R1!=0,中循环

分钟清零,小时计数 重置中循环 重置外循环 ; ;DELAY: MOV R7,#11 ;n==((201*5+5)*90+9)*11+2=1000001 DELAY3: MOV R6,#90 ;t= DELAY2: MOV R5,#201

END

DELAY1: NOP NOP

NOP

DJNZ R5,DELAY1 NOP NOP

DJNZ R6,DELAY2 NOP NOP NOP NOP NOP NOP

DJNZ R7,DELAY3

RET

提高部分(选做):

1)实现4位十进制加、减1计数,千位、百位由P1口输出;十位、个位由P2口输出。利用状态选择加、减计数方式。

2)利用P3口低四位状态控制开始和停止计数,控制方式自定。 Description: 实现4位十进制加、减1计数 Date: by: DYH

Source used:

P1输出千百位 P2输出个十位 计数开始与停止控制 加1减1计数切换 R1存千百位 R2存个十位

ORG 0000H

MOV P1,#0 ;输出千百位 MOV P2,#0 ;输出个十位 MOV R1,#0 ;存千百位 MOV R2,#0 ;存个十位 LJMP MAIN

ORG 0100H

MAIN: JB ,$ ;计数开始与停止控制 JNB ,ADD1 ;加1减1,模式选择 SUB1: MOV P1,#99

MOV P2,#99 MOV R1,#99

LOOP2: MOV R2,#99 LOOP1: JB ,$ JNB ,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 ,$ JB ,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= 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单元,请按要求编写完整程序。

X2YX/2X

(1)X=-30=E2H Y=1DH

当X 当10X 当X10

(2).X=5=05H,Y=FAH

(3).X=10=0AH,Y=F5H

(4)X=25=19h Y=0CH(商) 01H(余数)

(5).X==40H Y=1000H

2. 利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。为低电平时开始计时,为高电平时停止计时。设计1s延时子程序(延时误差小于10us,晶振频率12MHz)。 (1)=0,停止计数

2)分钟进位前

3)分钟进位后

4)小时进位前

5)小时进位后

提高部分(选做):

1)实现4位十进制加、减1计数,千位、百位由P1口输出;十位、个位由P2口输出。利用状态选择加、减计数方式。

2)利用P3口低四位状态控制开始和停止计数,控制方式自定。

(1)=1,停止计数

2)=1,中途停止计数

(3)=0,从暂停点继续计数

4)=0,加1计数前后

(5)=1,减1计数前后

思考题

1.实现多分支结构程序的主要方法有哪些举例说明。

2.在编程上,十进制加1计数器与十六进制加1计数器的区别是什么怎样用十进制加法指令实现减1计数

十进制加1计数器,逢10进1,计数模为10,十六进制加1计数器逢16进1,计数模为16,加上1的补码,再通过DA,进行BCD修正

本人承诺: 本报告内容真实,无伪造数据,无抄袭他人成果。本人完全了解学校相关规定,如若违反,愿意承担其后果。 签字:

其它说明:

1.标题:黑体,小四号

2. 正文:宋体,五号,倍行距

3.流程图使用 SmartDraw7 或Visio软件绘制 4.不要加封面

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 7swz.com 版权所有 赣ICP备2024042798号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务