分支与循环程序设计实验 报告_第1页
分支与循环程序设计实验 报告_第2页
分支与循环程序设计实验 报告_第3页
分支与循环程序设计实验 报告_第4页
分支与循环程序设计实验 报告_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验名称 分支与循环程序设计实验 指导教师 罗志祥 专业班级 光电1406 姓名 段昳晖 学号 u2014* 联系电话 137*1、 任务要求1. 设有8bits符号数x存于外部ram单元,按以下方式计算后的结果y也存于外部ram单元,请按要求编写完整程序。 2. 利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过p0、p1、p2端口输出(以压缩bcd码的形式)。p3.0为低电平时开始计时,为高电平时停止计时。设计1s延时子程序(延时误差小于10us,晶振频率12mhz)。2、 设计思路1. 设有8bits符号数x存于外部ram单元,按以下方式计算后的结果y也存于外

2、部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)。 主程序设计三层

3、循环,分别对应时、分、秒,最内层安放一秒延时程序。利用r0、r1、r2计数,r3保存分钟数、r4保存小时数,最内层循环60次,中循环循环1次,中循环60秒,外循环循环1次,外循环循环24次,清零。其中对端口显示的秒数、分钟数、时间数,进行二进制修正。利用循环来设计延时程序,合理计算语句长度,以及循环次数。程序运行时修正p3.0的值,可以实现暂停计数和继续的功能。提高部分(选做):1) 实现4位十进制加、减1计数,千位、百位由p1口输出;十位、个位由p2口输出。利用p3.7状态选择加、减计数方式。2) 利用p3口低四位状态控制开始和停止计数,控制方式自定。 初始化p1、p2,计数循环中插入一秒延

4、时程序。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,可以实现随时停止与开始。3、 资源分配1. 设有8bits符号数x存于外部ram单元,按以下方式计算后的结果y也存于外部ram单元,请按要求编写完整程序。 x存于片外1000hy存于片外1001h、1

5、002h其中,求平方时,低位存于1001h,,高位存于1002h除二时,商存于1001h,,余数存于1002h2. 利用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状态选择加、减计数方

6、式。2)利用p3口低四位状态控制开始和停止计数,控制方式自定。 p1输出千百位p2输出个十位p3.0 计数开始与停止控制p3.7 加1减1计数切换r1存千百位r2存个十位4、 流程图1. 设有8bits符号数x存于外部ram单元,按以下方式计算后的结果y也存于外部ram单元,请按要求编写完整程序。 2. 利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过p0、p1、p2端口输出(以压缩bcd码的形式)。p3.0为低电平时开始计时,为高电平时停止计时。设计1s延时子程序(延时误差小于10us,晶振频率12mhz)。提高部分(选做):1)实现4位十进制加、减1计数,千位

7、、百位由p1口输出;十位、个位由p2口输出。利用p3.7状态选择加、减计数方式。2)利用p3口低四位状态控制开始和停止计数,控制方式自定。 5、 源代码 (含文件头说明、语句行注释)1. 设有8bits符号数x存于外部ram单元,按以下方式计算后的结果y也存于外部ram单元,请按要求编写完整程序。 file name: task1.asmdescription: 对8bits符号数x,对于不同的x进行不同的运算操作date: 2016.10.13designed by: source used: 1000h: 存x的值 1001h、1002h: 存y的值 1001h:平方运算所得低位;除法运算

8、所得商 1002h:平方运算所得高位;除法运算所得余数org 0000h ljmp main org 0100hmain: mov dptr,#1000h ;x存于1000h mov a,#-1 ;给x赋值 mov b,#0 movx dptr,a ;正负判断 jb acc.7,l3 ;x0 cjne a,#64,l2 ;a!=64,l2 sjmp l1l1: mov b,a ;x=64 mul ab sjmp store ;低位存于1001h,高位存于1002h l2: jnc l1 ;x64,l1 cjne a,#10,l4 ;a!=10,l4 sjmp l3 ;x=10,l3 l4: j

9、c l3 ;x10 sjmp store ;商存于1001h,余数存于1002h l3: cpl a ;x=10store: inc dptr ;结果存于1001h movx dptr,a inc dptr mov a,b movx dptr,a sjmp $end 2. 利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过p0、p1、p2端口输出(以压缩bcd码的形式)。p3.0为低电平时开始计时,为高电平时停止计时。设计1s延时子程序(延时误差小于10us,晶振频率12mhz)。3.file name: task2.asmdescription: 24小时制电子时

10、钟date: 2016.10.13designed by: dyhsource used: p0:输出小时数p1:输出分钟数p2:输出秒数r0:小时循环计数r1:分钟循环计数r2:秒循环计数r3:保存分钟数r4:保存小时数 org 0000h ljmp main org 0100hmain: 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:

11、 jnb p3.0,$ ;p3.0=0,结束计数 lcall delay ;延时1s add a,#1 da a mov p2,a djnz r2,loop mov a,r3 ;分钟开始计数 将分钟赋给a add a,#1 ;分钟+1 da a mov r3,a mov p1,a clr a ;秒清零 mov r2,#59 ;重置内循环 djnz r1,loop ;r1!=0,中循环 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,

12、loopdone: sjmp $ delay: mov r7,#11 ;n=(201*5+5)*90+9)*11+2=1000001 delay3: mov r6,#90 ;t=1.000001s 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)实现4位十进制加、减1计数,千位、百位由p1口输出;十位、个位由p2口输出。利用p3.7状态选择加、减计数方式。2)利用p3口低四

13、位状态控制开始和停止计数,控制方式自定。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 ;存个十位 ljmp main org 0100hmain: jb p3.0,$ ;计数开始与停止控制 jnb p3.7,add1 ;加1减1,模式选择sub1: mov

14、 p1,#99 mov p2,#99 mov r1,#99 loop2: mov r2,#99 loop1: jb p3.0,$ jnb p3.7,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 p3.0,$ jb p3.7,loop1 mov a,r2 lcal

15、l 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=1.000001s delay2: mov r5,#201 delay1: nop nop nop djnz r5,delay1 nop nop djnz r6,delay2 nop nop nop nop nop

16、 nop djnz r7,delay3 ret end 6、 程序测试方法与结果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=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) 分钟进位后(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 实现多分支结构程序的主要方

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论