当前位置:文档之家› 分支与循环程序设计实验报告

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

分支与循环程序设计实验-报告————————————————————————————————作者: ————————————————————————————————日期:实验名称 分支与循环程序设计实验指导教师 罗志祥专业班级 光电1406 姓名 段昳晖 学号 U2014*****联系电话 137********一、任务要求1. 设有8bits 符号数X 存于外部RA M单元,按以下方式计算后的结果Y 也存于外部RAM 单元,请按要求编写完整程序。

264/2106410X X Y X X X X ⎧≥⎪=<<⎨⎪≤⎩ 当 当 当 2. 利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD 码的形式)。

P3.0为低电平时开始计时,为高电平时停止计时。

设计1s 延时子程序(延时误差小于10us ,晶振频率12MHz)。

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

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

将结果存于外部单元的1001H以及1002H 。

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

P3.0为低电平时开始计时,为高电平时停止计时。

设计1s延时子程序(延时误差小于10us,晶振频率12MHz )。

主程序设计三层循环,分别对应时、分、秒,最内层安放一秒延时程序。

利用R 0、R1、R2计数,R3保存分钟数、R4保存小时数,最内层循环60次,中循环循环1次,中循环60秒,外循环循环1次,外循环循环24次,清零。

其中对端口显示的秒数、分钟数、时间数,进行二进制修正。

利用循环来设计延时程序,合理计算语句长度,以及循环次数。

程序运行时修正P3.0的值,可以实现暂停计数和继续的功能。

提高部分(选做):1)实现4位十进制加、减1计数,千位、百位由P1口输出;十位、个位由P2口输出。

利用P 3.7状态选择加、减计数方式。

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

初始化P 1、P2,,计数循环中插入一秒延时程序。

R 1存千百位、R2存个十位,P 3.7=0时,进行加1计数,取出R2中的数存于A ,对A 加1,同时进行十进制修正,存于P2,达到99,则进位对千百位进行加1。

P 3.7=1时,进行减一操作,取出R1中的数存于A,对A 减1,同时进行十进制修正,存于P1,达到0,则对P 2,对R2进行减一。

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

三、资源分配1. 设有8bi ts 符号数X存于外部RA M单元,按以下方式计算后的结果Y 也存于外部RAM 单元,请按要求编写完整程序。

264/2106410X X Y X X X X ⎧≥⎪=<<⎨⎪≤⎩ 当 当 当X存于片外1000HY 存于片外1001H 、1002H其中,求平方时,低位存于1001H,,高位存于1002H除二时,商存于1001H,,余数存于1002H2. 利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD 码的形式)。

P 3.0为低电平时开始计时,为高电平时停止计时。

设计1s 延时子程序(延时误差小于10us ,晶振频率12MHz )。

P0输出小时数P1输出分钟数P2输出秒数R0小时循环计数R 1分钟循环计数R2秒循环计数R3保存分钟数R4保存小时数提高部分(选做):1)实现4位十进制加、减1计数,千位、百位由P1口输出;十位、个位由P2口输出。

利用P3.7状态选择加、减计数方式。

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

P1输出千百位P2输出个十位P 3.0 计数开始与停止控制P3.7 加1减1计数切换R 1存千百位R2存个十位四、流程图1. 设有8bits 符号数X 存于外部R AM 单元,按以下方式计算后的结果Y 也存于外部R AM 单元,请按要求编写完整程序。

264/2106410X X Y X X X X ⎧≥⎪=<<⎨⎪≤⎩ 当 当 当2.利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。

P3.0为低电平时开始计时,为高电平时停止计时。

设计1s延时子程序(延时误差小于10us,晶振频率12MHz)。

提高部分(选做):1)实现4位十进制加、减1计数,千位、百位由P1口输出;十位、个位由P2口输出。

利用P3.7状态选择加、减计数方式。

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

五、源代码 (含文件头说明、语句行注释)1. 设有8bit s符号数X 存于外部RAM 单元,按以下方式计算后的结果Y 也存于外部RAM 单元,请按要求编写完整程序。

264/2106410X X Y X X XX ⎧≥⎪=<<⎨⎪≤⎩ 当 当 当 : ta sk 1.asm Desc ripti on: 对8bits 符号数X,对于不同的X进行不同的运算操作Da te: 2016.10.13Designed by:Source used: 1000H: 存X 的值1001H 、1002H: 存Y的值1001H:平方运算所得低位;除法运算所得商1002H:平方运算所得高位;除法运算所得余数ORG 0000HLJM P MAINﻩ O RG 0100HMAIN : MOV DPT R,#1000H ;X 存于1000HMOV A,#-1 ;给X 赋值MO V B,#0MOVX @DPTR,Aﻩﻩ ;正负判断ﻩ JB ACC .7,L3 ;X<0,L3ﻩﻩ ;X>0ﻩ CJNE A,#64,L2 ;A!=64,L 2ﻩ SJMP L1L1: M OV B ,A ;X >=64M UL ABSJMP STO RE ;低位存于1001H,¸高位存于1002HﻩL2: JNC L1 ;X>64,L1CJNE A,#10,L4 ;A!=10,L4SJM P L3 ;X=10,L3L4: JC L3 ;X<10,L3MOV B,#2DIV AB ;X>10SJM P S TORE ;商存于1001H,余数存于1002HﻩL3: CPL A ;X<=10STORE: INC DPTR ;结果存于1001HMOVX @DPTR,AﻩINC DPTRMOV A,BMOVX@DPTR,AﻩSJMP $END2.利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。

P3.0为低电平时开始计时,为高电平时停止计时。

设计1s延时子程序(延时误差小于10us,晶振频率12MHz)。

3.: task2.asmDescription:24小时制电子时钟Date: 2016.10.13Designedby: DYHSource used:P0:输出小时数P1:输出分钟数P2:输出秒数R0:小时循环计数R1:分钟循环计数R2:秒循环计数R3:保存分钟数R4:保存小时数ORG 0000HLJMP MAINﻩﻩORG 0100HMAIN:MOV SP,#40HMOV P0,#0MOV P1,#0MOVP2,#0MOV R3,#0 ;保存小时MOV R4,#0;保存分钟;设定循环MOV R0,#24;小时外循环·24MOVR1,#59 ;分钟中循环·60MOVR2,#59;秒内循环·60CLRAﻩLOOP:JNB P3.0,$ ;p3.0=0,结束计数LCALL DELAY ;延时1sﻩADD A,#1ﻩDAAMOVP2,ADJNZR2,LOOPﻩMOV A,R3 ;分钟开始计数将分钟赋给AﻩADD A,#1 ;分钟+1DA AﻩMOVR3,AMOV P1,ACLR A ;秒清零MOV R2,#59 ;重置内循环·ﻩDJNZ R1,LOOP ;R1!=0,中循环MOV R3,#0 ;分钟清零,小时计数ﻩMOV A,R4ADD A,#1ﻩDA AﻩMOV R4,AMOV P0,AMOV R2,#59;重置中循环ﻩMOVR1,#59 ;重置外循环ﻩDJNZ R0,LOOPDONE:SJMP $DELAY:MOV R7,#11 ;n==((201*5+5)*90+9)*11+2=1000001DELAY3: MOVR6,#90 ;t=1.000001sDELAY2: MOV R5,#201ﻩDELAY1: NOPﻩNOPﻩﻩNOPﻩDJNZ R5,DELAY1NOPNOPﻩ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.13Designed by: DYHSource 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 ;存个十位LJMPMAINﻩﻩORG 0100HMAIN:ﻩJB P3.0,$;计数开始与停止控制JNB P3.7,ADD1 ;加1减1,模式选择SUB1:MOV P1,#99ﻩMOV P2,#99ﻩﻩMOV R1,#99LOOP2: MOV R2,#99LOOP1:JB P3.0,$JNB P3.7,LOOP3MOV A,R2LCALL DELAYﻩDEC AMOV R2,Aﻩﻩ MOVP2,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,#0MOVR1,#0LOOP4: MOVR2,#0LOOP3: JB P3.0,$JBP3.7,LOOP1MOV A,R2LCALL DELAYﻩINCAMOV R2,AMOVP2,R2CJNER2,#99H,LOOP3ﻩﻩMOV A,R1ﻩ INC AﻩMOVR1,AﻩMOV P1,R1CJNE 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.000001sDELAY2: MOV R5,#201ﻩDELAY1:NOPﻩNOPﻩNOPﻩﻩﻩDJNZ R5,DELAY1ﻩNOPNOPﻩﻩDJNZ R6,DELAY2ﻩNOPﻩﻩNOPﻩﻩNOPﻩﻩﻩNOPﻩﻩﻩ NOPﻩ NOPDJ NZ R7,DELA Y3ﻩ RETE NDﻩ六、程序测试方法与结果1. 设有8bit s符号数X 存于外部RAM 单元,按以下方式计算后的结果Y 也存于外部R AM 单元,请按要求编写完整程序。

相关主题