1、分支与循环程序设计实验报告实验名称 分支与循环程序设计实验指导教师 罗志祥专业班级 光电 1406 姓名 段昳晖 学号 U2014*联系电话 137*一、任务要求1. 设有 8bits 符号数 X存于外部 RAM单元,按以下方式计算后的结果 Y 也存于外部 RAM 单元,请按要求编写完整程序。X 2 当 X 64Y X / 2 当 10 X 64X 当 X 102. 利用 51 系列单片机设计一个 24 小时制电子时钟,电子时钟的时、分、秒数值分别 通过 P0、 P1、 P2 端口输出(以压缩 BCD码的形式)。P3.0 为低电平时开始计时,为高电平 时停止计时。设计 1s 延时子程序(延时误
2、差小于 10us ,晶振频率 12MHz)。二、设计思路1. 设有 8bits 符号数 X存于外部 RAM单元,按以下方式计算后的结果 Y 也存于外部 RAM 单元,请按要求编写完整程序。X 2 当 X 64Y X / 2 当 10 X 64X 当 X 10将外部单元 1000H 中的 X,通过分支判断,分别执行不同的语句,三条语句分别为标记 为 L1、L2、L3,先比较 X与 64的大小关系 ,再判断 X与 10的大小关系,主要利用比较转移 指令 CJNE,以及执行 CJNE指令后的进位位 CY,进一步比较大小, 分别跳转至对应语句。 将结 果存于外部单元的 1001H 以及 1002H。2
3、. 利用 51 系列单片机设计一个 24 小时制电子时钟,电子时钟的时、分、秒数值分别 通过 P0、 P1、 P2 端口输出(以压缩 BCD码的形式)。P3.0 为低电平时开始计时,为高电平 时停止计时。设计 1s 延时子程序(延时误差小于 10us ,晶振频率 12MHz)。主程序设计三层循环,分别对应时、分、秒,最内层安放一秒延时程序。利用 R0、 R1、R2计数, R3保存分钟数、 R4保存小时数,最内层循环 60 次,中循环循环 1 次,中循环 60 秒,外循环循环 1次,外循环循环 24 次,清零。其中对端口显示的秒数、分钟数、时间数, 进行二进制修正。利用循环来设计延时程序,合理计
4、算语句长度,以及循环次数。程序运行时修正 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 中的数存
5、于 A ,对 A 减 1,同时进行十进制修正,存于 P1,达到 0 ,则对 P2,对 R2 进行减一。计数循环前判断 P3.0的值,当P3.0=1时,开始计数, P3.0=0时,原地循环, 停止计数, 直到 P3.0=1,可以实现随时停止与开始。三、资源分配RAM 单元,请按要求编写完整程序。当 X 64当10 X 64当 X 10X 存于片外 1000HY 存于片外 1001H 、 1002H 其中,求平方时,低位存于 1001H, ,高位存于 1002H 除二时,商存于 1001H, ,余数存于 1002H2.利用 51系列单片机设计一个 24 小时制电子时钟, 电子时钟的时、 分、秒数值
6、分别通 过 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
7、加 1 减 1 计数切换R1 存千百位R2 存个十位四、流程图RAM 单元,请按要求编写完整程序。当 X 64当10 X 64当 X 102.利用 51系列单片机设计一个 24 小时制电子时钟, 电子时钟的时、 分、秒数值分别通 过 P0、P1、P2 端口输出(以压缩 BCD 码的形式)。 P3.0 为低电平时开始计时,为高电平时 停止计时。设计 1s 延时子程序(延时误差小于 10us,晶振频率 12MHz )。提高部分(选做) :1)实现 4 位十进制加、减 1 计数,千位、百位由 P1 口输出;十位、个位由 P2 口输出。 利用 P3.7 状态选择加、减计数方式。2)利用 P3 口低四位
8、状态控制开始和停止计数,控制方式自定。五、源代码 (含文件头说明、语句行注释)1. 设有 8bits 符号数 X 存于外部 RAM 单元,按以下方式计算后的结果 RAM 单元,请按要求编写完整程序。X 2 当 X 64Y X / 2 当 10 X 64X 当 X 10Y 也存于外部File name: task1.asmDescription: 对 8bits 符号数 X ,对于不同的 X 进行不同的运算操作 Date:Designed by:Source used: 1000H: 存 X 的值1001H 、 1002H: 存 Y 的值1001H :平方运算所得低位;除法运算所得商1002H
9、:平方运算所得高位;除法运算所得余数ORG 0000HLJMP MAIN ORG 0100HMAIN: MOV DPTR,#1000H MOV A,#-1 MOV B,#0 MOVX DPTR,A;X 存于 1000H ;给 X 赋值;正负判断JB ACC.7,L3;X0CJNE A,#64,L2SJMP L1;A!=64,L2L1: MOV B,AMUL ABSJMP STORE;X=64;低位存于 1001H, ?高位存于 1002HL2:JNC L1;X64,L1CJNE A,#10,L4;A!=10,L4SJMP L3;X=10,L3L4:JC L3;X10SJMP STORE; 商存
10、于 1001H, 余数存于 1002H;X=10;结果存于 1001HL3: CPL ASTORE: INC DPTRMOVX DPTR,A INC DPTR MOV A,BMOVX DPTR,ASJMP $END2.利用 51系列单片机设计一个 24 小时制电子时钟, 电子时钟的时、 分、秒数值分别通 过 P0、P1、P2 端口输出(以压缩 BCD 码的形式)。 P3.0 为低电平时开始计时,为高电平时 停止计时。设计 1s 延时子程序(延时误差小于 10us,晶振频率 12MHz )。3.File name: task2.asmDescription: 24 小时制电子时钟Date:Des
11、igned by: DYHSource used:P0:输出小时数P1:输出分钟数P2:输出秒数R0:小时循环计数R1:分钟循环计数R2:秒循环计数R3:保存分钟数R4:保存小时数ORG 0000HLJMP MAINORG 0100HMAIN: MOV SP,#40HMOV P0,#0MOV P1,#0MOV P2,#0MOV R3,#0 ;保存小时MOV R4,#0 ;保存分钟DELAY: MOV R7,#11 ;n=(201*5+5)*90+9)*11+2=1000001DELAY3: MOV R6,#90 ;t=1.000001sDELAY2: MOV R5,#201DELAY1: NO
12、PNOPNOPDJNZ R5,DELAY1NOPNOPDJNZ R6,DELAY2NOPNOPNOPNOPNOPNOPDJNZ R7,DELAY3RETEND提高部分(选做) :1)实现 4 位十进制加、减 1 计数,千位、百位由 P1 口输出;十位、个位由 P2 口输出。 利用 P3.7 状态选择加、减计数方式。2)利用 P3 口低四位状态控制开始和停止计数,控制方式自定。 Description: 实现 4 位十进制加、减 1 计数Date: Designed by: DYHSource used:P1 输出千百位P2输出个十位P3.0 计数开始与停止控制P3.7 加 1减 1 计数切换R
13、1 存千百位R2 存个十位ORG 0000HMOV P1,#0MOV P2,#0MOV R1,#0MOV R2,#0;输出千百位;输出个十位;存千百位 ;存个十位LJMP MAIN;计数开始与停止控制;加 1 减 1,模式选择ORG 0100HMAIN: JB P3.0,$JNB P3.7,ADD1SUB1: MOV P1,#99MOV P2,#99MOV R1,#99 LOOP2: MOV R2,#99 LOOP1: JB P3.0,$JNB P3.7,LOOP3MOV A,R2LCALL DELAY DEC AMOV R2,AMOV P2,R2CJNE R2,#0H,LOOP1MOV A,
14、R1DEC AMOV R1,AMOV P1,R1CJNE R1,#0H,LOOP2SJMP $ADD1: MOV P1,#0MOV P2,#0MOV R1,#0LOOP4: MOV R2,#0LOOP3: JB P3.0,$JB P3.7,LOOP1MOV A,R2LCALL DELAYINC AMOV R2,AMOV P2,R2CJNE R2,#99H,LOOP3MOV A,R1INC AMOV R1,AMOV P1,R1CJNE R1,#99H,LOOP4MOV R1,#0SJMP $DELAY: MOV R7,#11 ;n=(201*5+5)*90+9)*11+2=1000001DELA
15、Y3: MOV R6,#90 ;t=1.000001sDELAY2: MOV R5,#201DELAY1: NOPNOPNOPDJNZ R5,DELAY1NOPNOPDJNZ R6,DELAY2NOPNOPNOPNOPNOPNOPDJNZ R7,DELAY3RETEND六、程序测试方法与结果Y 也存于外部1. 设有 8bits 符号数 X 存于外部 RAM 单元,按以下方式计算后的结果 RAM 单元,请按要求编写完整程序。X 2 当 X 64Y X / 2 当 10 X 64X 当 X 10(1)X=-30=E2H Y=1DH(2).X=5=05H,Y=FAH(3).X=10=0AH,Y=F5
16、H(4)X=25=19h Y=0CH (商) 01H (余数)(5).X=64=40H Y=1000H2.利用 51系列单片机设计一个 24 小时制电子时钟, 电子时钟的时、 分、秒数值分别通 过 P0、P1、P2 端口输出(以压缩 BCD 码的形式)。 P3.0 为低电平时开始计时,为高电平时 停止计时。设计 1s 延时子程序(延时误差小于 10us,晶振频率 12MHz )。 (1)P3.0=0,停止计数2)分钟进位前3)分钟进位后5)小时进位后提高部分(选做) :1)实现 4 位十进制加、减 1 计数,千位、百位由 P1 口输出;十位、个位由 P2 口输出。 利用 P3.7 状态选择加、
17、减计数方式。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 修正本人承诺 :本报告内容真实,无伪造数据,无抄袭他人成果。本人完全了解学校28 2016 年 10 月 25 日其它说明:1. 标题:黑体,小四号2. 正文:宋体,五号, 1.5 倍行距3. 流程图使用 SmartDraw7 或 Visio 软件绘制4. 不要加封面
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1