- 4
- 0
- 约6.67千字
- 约 29页
- 2019-03-26 发布于浙江
- 举报
《微机实验》报告
PAGE \* MERGEFORMAT 1
实验名称 分支与循环程序设计实验
指导教师 罗志祥
专业班级 光电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。
利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。P3.0为低电平时开始计时,为高电平时停止计时。设计1s延时子程序(延时误差小于10us,晶振频率12MHz)。
主程序设计三层循环,分别对应时、分、秒,最内层安放一秒延时程序。利用R0、R1、R2计数,R3保存分钟数、R4保存小时数,最内层循环60次,中循环循环1次,中循环60秒,外循环循环1次,外循环循环24次,清零。其中对端口显示的秒数、分钟数、时间数,进行二进制修正。
利用循环来设计延时程序,合理计算语句长度,以及循环次数。
程序运行时修正P3.0的值,可以实现暂停计数和继续的功能。
提高部分(选做):
实现4位十进制加、减1计数,千位、百位由P1口输出;十位、个位由P2口输出。利用P3.7状态选择加、减计数方式。
利用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
利用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单元,请按要求编写完整程序。
利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。P3.0为低电平时开始计时,为高电平时停止计时。设计1s延时子程序(延时误差小于10us,晶振频率12MHz)。
提高部分(选做):
1)实现4位十进制加、减1计数,千位、百位由P1口输出;十位、个位由P2口输出。利用P3.7状态选择加、减计数方式。
2)利用P3口低四位状态控制开始和停止计数,控制方式自定。
原创力文档

文档评论(0)