单片机报告分支与循环程序设计实验 下载本文

内容发布更新时间 : 2024/6/25 13:43:26星期一 下面是文章的全部内容请认真阅读。

一、任务要求

实验目的:熟练掌握Keil环境下汇编语言程序的调试方法,加深对汇编语言指令、机器码、寻址方式等基本内容的理解,掌握分支程序和简单程序的设计与调试方法,了解并行IO口的使用。 实验内容:

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

?X2当X?40?Y??X/2当20?X?40?当X?20?X

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

提高部分(选做):

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

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

二、设计思路

实验一:

X存于片外RAM 0070H单元,先对X的正负进行判断。若为负数,则取反;若为正

数,则用CJNE语句判断其与14H、28H的大小,若小于14H,取反;若小于28H,大于14H,则除2,;若大于28H,则平方。若大于28H,其结果低四位存在片外RAM 0071H单元,高四位存在 0072H单元;若小于28H,大于14H,其结果的商存于片外RAM 0071单元,余数存在0072单元;若小于14H,其结果存于片外RAM 0071单元,片外RAM 0072单元置零。

实验二:

先判断P3.0口的电平高低。若为低电平,则开始计时;若为低电平,则停止计时。

设计一延时1s的程序,每满1s,秒数值加一,每满60s,分数值加一,每满60min,

1

时数值加一。时数值满24时,重新计数。电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。

实验三(提高部分):

此处使P3口低四位全为一时开始计数。先判断P3.7的状态,此处使若P3.7为0

时进行加计数,先C清零,用ADD对P2加一,再用ADDC对P1加进位位,再用DA A对A进行BCD码修正;若P3.7为1时进行减计数,减计数后,再对P0、P1位进行BCD码修正。特别是当P2为00H时,将P2赋值99H,再将P1减一,而当P1为00H时,将P1赋值99H即可。

三、资源分配

实验一:

数据X存于片外RAM 0700单元;

对X分类:若大于28H,其结果低四位存在片外RAM 0071H单元,高四位存在 0072H

单元;若小于28H,大于14H,其结果的商存于片外RAM 0071单元,余数存在0072 单元;若小于14H,其结果存于片外RAM 0071单元,片外RAM 0072单元置零。

实验二:

时钟时分秒分别存放于P1、P1、P3口,P0口是控制位。 寄存器R1、R2、R3存放1s延时程序的循环次数。 累加器A作为要输出端口的数据缓存。

实验三:

P3作为控制位,P3.7控制加、减计数,后四位控制是否开始。 P1口显示千、百位,P2口显示十、个位。

四、流程图

实验一:

2

3