实验七 电子钟

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验七 电子钟(定时器、中断综合实验)
一、实验目的
熟悉MCS51类CPU 的定时器、中断系统编程方法,了解定时器的应用、实时程序的设计和调试技巧。

二、实验内容
编写一个时钟程序,使用定时器产生一个50ms 的定时中断,对定时中断计数,将时、分、秒显示在数码管上。

三、程序框图
主程序
中断处理
电子钟程序框图
四、实验步骤
1、连线说明:
2、时间显示在数码管上
五、程序清单 ms50 DATA 31H
;存放多少个50ms sec DATA 32H ;秒 min DATA 33H ;分 hour DATA 34H ;时
buffer DATA 35H ;显示缓冲区
EXTRN CODE(Display8)
ORG 0000H
LJMP STAR
ORG 000BH ;定时器T0中断处理入口地址
LJMP INT_Timer0
ORG 0100H
STAR: MOV SP,#60H ;堆栈
MOV ms50,A ;清零ms50
MOV hour,#12 ;设定初值: 12:59:50
MOV min,#59
MOV sec,#50
MOV TH0,#60 ;定时中断计数器初值
MOV TL0,#176 ;定时50ms
MOV TMOD,#1 ;定时器0:方式一
MOV IE,#82H ;允许定时器0中断
SETB TR0 ;开定时器T0
STAR1: LCALL Display ;调用显示
JNB F0,$
CLR F0
SJMP STAR1 ;需要重新显示时间
;中断服务程序
INT_Timer0: MOV TL0,#176-5
MOV TH0,#60
PUSH 01H
MOV R1,#ms50
INC @R1 ;50ms单元加1
CJNE @R1,#20,ExitInt
MOV @R1,#0 ;恢复初值
INC R1
INC @R1 ;秒加1
CJNE @R1,#60,ExitInt1
MOV @R1,#0
INC R1
INC @R1 ;分加1
CJNE @R1,#60,ExitInt1
MOV @R1,#0
INC R1
INC @R1 ;时加1
CJNE @R1,#24,ExitInt1
MOV @R1,#0
ExitInt1: SETB F0
ExitInt: POP 01H
RETI
HexToBCD: MOV B,#10
DIV AB
MOV @R0,B
INC R0
MOV @R0,A
INC R0
RET
Display: MOV R0,#buffer
MOV A,sec
ACALL HexToBCD
MOV @R0,#10H ;第三位不显示
INC R0
MOV A,min
ACALL HexToBCD
MOV @R0,#10H ;第六位不显示
INC R0
MOV A,hour
ACALL HexToBCD
MOV R0,#buffer
LCALL Display8
RET
END
六、思考题
1、电子钟走时精度与哪些有关系?中断程序中给TL0赋值为什么与初始化程序中不一样?
2、使用定时器方式二,重新编写程序。

相关文档
最新文档