华科微机实验报告 联系客服

发布时间 : 星期一 文章华科微机实验报告更新完毕开始阅读23976a2ebf23482fb4daa58da0116c175f0e1e95

《微机实验》报告

实验名称 分支与循环程序设计实验 指导教师 专业班级 姓名 学号 联系电话

一、 任务要求

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

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

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

二、设计思路

1. 分支程序

将外部单元0010H中的x,通过分支判断,分别执行不同的语句,三条语句分别为标记为TO1、TO2、TO3,先比较X与40的大小关系,再判断X与20的大小关系,主要利用比较转移指令CJNE,以及执行CJNE指令后的进位位CY,进一步比较大小,分别跳转至对应语句。将结果存于外部单元的0040H以及0041H。

2.循环程序

主程序设计三层循环,分别对 应时、分、秒,最内层安放一秒延时程序。利用R3、R4、R5计数,R2保存秒数,R1保存分钟数、R0保存小时数,最内层循环198次,中循环循环100次,外循环循环100次。

利用循环来设计延时程序,合理计算语句长度,以及循环次数。 程序运行时修正P3.0的值,可以实现暂停计数和继续的功能。

1

三、资源分配

1.分支程序

《微机实验》报告

X存于外部数据存储器0010H;Y存于外部数据存储器0040H、0041H。其中0041H用于存平方时的高位。

2.循环程序

R0保存小时数;R1保存分钟数;R2保存秒数;R3、R4、R5计数;P0输出小时数;P1输出分钟数;P2输出秒数。

四、流程图

1.分支程序

开始 data→A N A!=127 Y N Y C!=0 N A!=40 Y N C!=0 Y A!=20 Y N Y C!=0 N 求二分之一 求补运算 计算平方 存结果 结束

2

《微机实验》报告

2.循环程序

开始 构建循环延时程序 记入秒的循环次数 输出秒 记入分的循环次数 输出分 记入时的循环次数

输出时 五、源代码 (含文件头说明、语句行注释)

1.分支程序

ORG 0000H LJMP MAIN ORG 0010H

MAIN: MOV DPTR, #0010H ;赋地址指针 MOV A, #8AH ;赋值 MOVX @DPTR, A

CLR A ;清零

MOVX A,@DPTR

CLR C ;清零 CJNE A, #7FH, TO1 ;A!=127 SJMP PLACE1 ;A=127 TO1: JNC PLACE3 ;A>127 CJNE A, #28H, TO2 ;A!=40

3

《微机实验》报告

SJMP PLACE1 ;A=40 TO2: JNC PLACE1 ;A>40 CJNE A, #14H, TO3 ;A!=20 SJMP PLACE3 ;A<20 TO3: JNC PLACE2 ;A>20 SJMP PLACE3 ;A=20 PLACE1: MOV B, A MUL AB SJMP SAVE

PLACE2: CLR C RRC A SJMP SAVE

PLACE3: CPL A SAVE: MOV DPTR, #0040H MOVX @DPTR, A MOV A, B INC DPTR MOVX @DPTR, A HERE: SJMP HERE END

2.循环程序

ORG 0000H

LJMP START ORG 0010H START: MOV SP,#40H MOV P0,#00H MOV P1,#00H

MOV P2,#00H

MOV R0,#00H MOV R1,#00H

;平方 ;求二分之一 ;取反 ;平方存位 4