分支与循环程序设计实验报告.docx

上传人:b****8 文档编号:12775853 上传时间:2023-06-08 格式:DOCX 页数:32 大小:642.15KB
下载 相关 举报
分支与循环程序设计实验报告.docx_第1页
第1页 / 共32页
分支与循环程序设计实验报告.docx_第2页
第2页 / 共32页
分支与循环程序设计实验报告.docx_第3页
第3页 / 共32页
分支与循环程序设计实验报告.docx_第4页
第4页 / 共32页
分支与循环程序设计实验报告.docx_第5页
第5页 / 共32页
分支与循环程序设计实验报告.docx_第6页
第6页 / 共32页
分支与循环程序设计实验报告.docx_第7页
第7页 / 共32页
分支与循环程序设计实验报告.docx_第8页
第8页 / 共32页
分支与循环程序设计实验报告.docx_第9页
第9页 / 共32页
分支与循环程序设计实验报告.docx_第10页
第10页 / 共32页
分支与循环程序设计实验报告.docx_第11页
第11页 / 共32页
分支与循环程序设计实验报告.docx_第12页
第12页 / 共32页
分支与循环程序设计实验报告.docx_第13页
第13页 / 共32页
分支与循环程序设计实验报告.docx_第14页
第14页 / 共32页
分支与循环程序设计实验报告.docx_第15页
第15页 / 共32页
分支与循环程序设计实验报告.docx_第16页
第16页 / 共32页
分支与循环程序设计实验报告.docx_第17页
第17页 / 共32页
分支与循环程序设计实验报告.docx_第18页
第18页 / 共32页
分支与循环程序设计实验报告.docx_第19页
第19页 / 共32页
分支与循环程序设计实验报告.docx_第20页
第20页 / 共32页
亲,该文档总共32页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

分支与循环程序设计实验报告.docx

《分支与循环程序设计实验报告.docx》由会员分享,可在线阅读,更多相关《分支与循环程序设计实验报告.docx(32页珍藏版)》请在冰点文库上搜索。

分支与循环程序设计实验报告.docx

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

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

 

 

————————————————————————————————作者:

————————————————————————————————日期:

 

实验名称 分支与循环程序设计实验

指导教师 罗志祥        

专业班级 光电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单元,请按要求编写完整程序。

:

 task1.asm

Description:

 对8bits符号数X,对于不同的X进行不同的运算操作

Date:

2016.10.13

Designedby:

Sourceused:

1000H:

存X的值

  1001H、1002H:

存Y的值

     1001H:

平方运算所得低位;除法运算所得商

      1002H:

平方运算所得高位;除法运算所得余数

 

ORG0000H

   LJMPMAIN

ﻩ ORG0100H

MAIN:

 MOVDPTR,#1000H;X存于1000H

    MOVA,#-1    ;给X赋值

 MOV B,#0

     MOVX@DPTR,A

ﻩ 

ﻩ;正负判断

ﻩJBACC.7,L3   ;X<0,L3

ﻩ  ;X>0

ﻩCJNEA,#64,L2   ;A!

=64,L2

ﻩSJMP L1

L1:

MOV B,A   ;X>=64

  MUL AB

  SJMPSTORE ;低位存于1001H,¸高位存于1002H

  

L2:

 JNCL1    ;X>64,L1

  CJNEA,#10,L4   ;A!

=10,L4

SJMPL3      ;X=10,L3

 L4:

 JCL3      ;X<10,L3

  MOV B,#2

 DIV AB    ;X>10

 SJMPSTORE   ;商存于1001H,余数存于1002H

ﻩ 

L3:

CPLA    ;X<=10

STORE:

INCDPTR     ;结果存于1001H

    MOVX@DPTR,A

ﻩ INCDPTR

 MOVA,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

Designed by:

DYH

Sourceused:

 

P0:

输出小时数

P1:

输出分钟数

P2:

输出秒数

R0:

小时循环计数

R1:

分钟循环计数

R2:

秒循环计数

R3:

保存分钟数

R4:

保存小时数

 

 ORG0000H

LJMPMAIN

ﻩ 

ﻩORG0100H

MAIN:

 MOVSP,#40H

 MOVP0,#0

 MOV P1,#0

MOVP2,#0

 MOVR3,#0  ;保存小时

MOVR4,#0  ;保存分钟

 ;设定循环

MOVR0,#24  ;小时外循环·24

MOV R1,#59;分钟 中循环·60

  MOV R2,#59  ;秒 内循环·60

  CLRA

LOOP:

 JNB P3.0,$  ;p3.0=0,结束计数

LCALLDELAY;延时1s

ﻩ ADDA,#1

ﻩ DAA

 MOVP2,A

  DJNZR2,LOOP

ﻩ MOVA,R3;分钟开始计数将分钟赋给A

ﻩADDA,#1  ;分钟+1

 DAA

ﻩMOVR3,A

MOV P1,A 

CLRA  ;秒清零

MOV R2,#59 ;重置内循环·

ﻩ DJNZ R1,LOOP;R1!

=0,中循环

  MOV R3,#0 ;分钟清零,小时计数

ﻩMOV A,R4

ADD  A,#1

ﻩ DAA

ﻩMOV R4,A

 MOV P0,A

MOVR2,#59;重置中循环

ﻩMOV R1,#59 ;重置外循环

ﻩ DJNZR0,LOOP

DONE:

 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

ﻩDJNZ R5,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

ﻩﻩMOVP1,#0   ;输出千百位

 MOVP2,#0 ;输出个十位

ﻩMOVR1,#0   ;存千百位

ﻩMOVR2,#0   ;存个十位

LJMP MAIN

 

ﻩﻩ ORG0100H

MAIN:

ﻩJBP3.0,$       ;计数开始与停止控制

 JNB P3.7,ADD1;加1减1,模式选择

SUB1:

 MOVP1,#99    

ﻩ MOVP2,#99

ﻩﻩ MOVR1,#99

LOOP2:

MOVR2,#99

LOOP1:

 JB P3.0,$

    JNBP3.7,LOOP3

 MOVA,R2

 LCALLDELAY

ﻩ DECA

 MOVR2,A

ﻩﻩMOVP2,R2

ﻩCJNER2,#0H,LOOP1

ﻩ MOV A,R1

ﻩDECA

ﻩﻩ MOV R1,A

ﻩﻩMOVP1,R1

ﻩCJNER1,#0H,LOOP2

ﻩﻩSJMP $

ADD1:

 MOVP1,#0

ﻩﻩ MOVP2,#0

MOVR1,#0

 LOOP4:

MOVR2,#0

LOOP3:

JBP3.0,$

 JB P3.7,LOOP1

   MOVA,R2

 LCALLDELAY

ﻩINCA

MOV R2,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:

MOV R5,#201

ﻩ DELAY1:

NOP

ﻩ  NOP

ﻩ NOP

ﻩﻩﻩ DJNZR5,DELAY1

ﻩNOP

 NOP

ﻩﻩDJNZR6,DELAY2

ﻩNOP

ﻩﻩNOP

ﻩﻩNOP

ﻩﻩﻩNOP

ﻩﻩﻩ NOP

ﻩ NOP

DJNZR7,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=19hY=0CH(商)01H(余数)

 

(5).X=64=40HY=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.不要加封面

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2