哈工大单片机实验报告 下载本文

内容发布更新时间 : 2024/4/27 19:58:04星期一 下面是文章的全部内容请认真阅读。

MOV R6, #13H MOV R7, #16H MOV A, R3 MOV B, R7 MUL AB XCH A, R7 MOV R5, B MOV B, R2 MUL AB ADD A, R5 MOV R4, A CLR A ADDC A, B MOV R5, A MOV A, R6 MOV B, R3 MUL AB ADD A, R4 XCH A, R6 XCH A, B ADDC A, R5 MOV R5, A MOV F0, C MOV A, R2 MUL AB ADD A, R5 MOV R5, A CLR A MOV ACC.0, C MOV C, F0 ADDC A, B MOV R4, A END

-10-

实验八 多分支程序

一、实验目的

掌握汇编语言的编程。

二、实验内容

编写程序,根据送入的数据转移运行。

三、程序框图

四、实验过程

实验中利用散转指令JMP @A+DPTR实现程序的多分支跳转,这里A为变址寄存器,DPTR为基址寄存器。跳转到不同分支的运行结果由LED进行显示,每个分支对应的数码管上显示不同的数字。显示数字由数字七段码送至I/O口显示。在显示程序中利用循环左移加延时子程序调用,实现数字循环显示的效果。

编程中需要注意的是,A需乘以2即左移一位再加上A之后再作为变址寄存器,这是程序中由于分支跳转语句为3个字节所致。

五、实验结果及分析

实验中可以看到选择不同的数字进入不同分支,LED管上会出现不同数字的循环左移显示。

问题回答:如需将循环速度减慢,只要将延时子程序初值变大,即在调用延时子程序之前给R2传送一个更大的值,或增加循环嵌套层数,或者再加一段循环程序即可,如可以进行如下两种修改:

(1)、在主程序中将MOV R2, #20H改为MOV R2, #50H。 (2)、将延时子程序做如下修改:

DEYS: PUSH 02H 改为 DEYS: PUSH 02H DEY0: PUSH 02H DEY0: PUSH 02H DEY1: PUSH 02H DEY1: PUSH 02H DJNZ R2, $ DEY2: PUSH 02H POP 02H DJNZ R2, $ DJNZ R2, DEY1 POP 02H POP 02H DJNZ R2, DEY2 DJNZ R2, DEY0 POP 02H POP 02H DJNZ R2, DEY1 DJNZ R2, DEYS POP 02H RET DJNZ R2, DEY0

-11-

POP 02H DJNZ R2, DEYS RET

若将0字循环改为4字循环只需将0字七段码0C0H改为4字七段码99H即可。

六、实验源程序

ORG 0000H LJMP S08 ORG 0A10H S08: MOV 20H, #02H MOV A, 20H MOV R1, A RL A ADD A, R1 MOV DPTR, #PTAB JMP @A+DPTR PTAB: LJMP PM0 LJMP PM1 LJMP PM2 LJMP PM3 PM0: MOV 21H, #0C0H SJMP LEDO PM1: MOV 21H, #0F9H SJMP LEDO PM2: MOV 21H, #0A4H SJMP LEDO PM3: MOV 21H, #0B0H SJMP LEDO LEDO: MOV A, 21H MOV R0, #0DCH MOV R1, #0DDH

MOVX @R0, A MOV A, #01H S1: MOVX @R1, A

;取来7段码 ;显示器段地址

;显示器位地址 ;将7段码输出

;最\右\边的位发光

-12-

MOV R2, #20H ;准备延时

LCALL DEYS ;调用延时子程序 RL A SJMP S1

DEYS: PUSH 02H ;延时子程序 DEY0: PUSH 02H DEY1: PUSH 02H DJNZ R2, $ POP 02H DJNZ R2, DEY1 POP 02H DJNZ R2, DEY0 POP 02H DJNZ R2, DEYS RET ;返回 END

;左移显示的位 ;无穷循环

实验十 电脑时钟(定时器、中断器综合实验)

一、实验目的

熟悉MCS-51定时器,串行口和中断初始化编程方法,了解定时器的应用实时程序的设计与调试技巧。

二、实验内容

编写程序,从本实验系统键盘上输入时间初值,用定时器产生0.1S定时中断,对时钟计数器计数,并将数值实时地送数码管显示。

三、程序框图

-13-

四、实验过程

在与PC联机状态下,编译、连接、下载se10.asm,用连续方式运行该程序。在键盘上输入时间初值,按执行键EXEC执行,数码管上实时显示时间值。按“暂停图标”或实验箱上的“暂停按钮”,系统无条件退出该程序运行返回监控状态。

五、实验结果及分析

键入起始时刻小时分钟后,秒显示器从11开始逐次加1,至60进位分显示器,最后到小时显示器,到24小时后全部清零循环往复。

问题回答:使定时器工作方式实现12小时制,只需要将CLOCK子程序中倒数第二句语句CJNE A,#24H,DONE改为CJNE A,#12H,DONE即可。

六、实验源程序

;电脑时钟(定时器、中断综合实验) ORG 0000H SJMP CHK00 ORG 000BH

LJMP CLOCK;INT_T0 ORG 0030H CHK00: MOV SP,#60H LCALL LEDP

CHK0: LCALL LCK0 ;键扫,显示子程序 LCALL PTDS0 ;显示缓冲区放数子程序 MOV TMOD,#01H

ORL IE,#10000010b ;EA=1, IT0=1 MOV TL0,#0

MOV TH0,#4ch ;定时中断初始化 MOV 23H,#00H

SETB TR0 ;开定时 LOO5: LCALL DIS LCALL PTDS0 SJMP LOO5 PTDS0: MOV R0,#79H MOV A,22H ACALL PTDS MOV A,21H ACALL PTDS MOV A,20H

;SSEE ;显示

-14-