发布时间 : 星期一 文章华科微机实验报告更新完毕开始阅读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