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

  • 格式:doc
  • 大小:2.21 MB
  • 文档页数:29

下载文档原格式

  / 29
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

指导教师 罗志祥

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

一、任务要求

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

2

64/2

106410

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

二、设计思路

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

2

64/2

106410

X X Y X X X X ⎧≥⎪=<<⎨⎪≤⎩ 当 当 当 将外部单元1000H 中的X ,通过分支判断,分别执行不同的语句,三条语句分别为标记为L1、L2、L3,先比较X 与64的大小关系,再判断X 与10的大小关系,主要利用比较转移指令CJNE,以及执行CJNE 指令后的进位位CY,进一步比较大小,分别跳转至对应语句。将结果存于外部单元的1001H 以及1002H 。

2. 利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD 码的形式)。P

3.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 单元,请按要求编写完整程序。

2

64/2

106410

X X Y X X X X ⎧≥⎪=<<⎨⎪≤⎩ 当 当 当

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

64/2

106410

X X Y X X X X ⎧≥⎪=<<⎨⎪≤⎩ 当 当 当

2.利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。P

3.0为低电平时开始计时,为高电平时停止计时。设计1s延时子程序(延时误差小于10us,晶振频率12MHz)。

提高部分(选做):

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

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

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

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

2

64/2

106410

X X Y X X X

X ⎧≥⎪=<<⎨⎪≤⎩ 当 当 当 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