实时时钟的设计
1.实时时钟实现的基本思想
如何获得1秒的定时,可把定时时间定为100ms,采用中断方式进行溢出次数的累计,计满10次,即得到秒计时。
片内RAM中规定3个单元作为秒、分、时单元,具体安排如下:
42H:“秒”单元 ;41H:“分”单元;40H:“时”单元
从秒到分,从分到时是通过软件累加并进行比较的方法来实现的。
2.程序设计
(1)主程序的设计
流程如图所示。
(2)中断服务程序的设计
中断服务程序的主要功能是实现秒、分、时的计时处理。参考程序略。
6-1 定时/计数器方式寄存器TMOD各位有何控制功能?
6-2 定时/计数器控制寄存器TCON的高八位有何意义?
6-3 在晶振主频为12MHz时,要求P1.0输出周期为1ms的对称方波;要求P1.1口输出周期为2ms不对称方波,占空比为1:3(高电平短,地电平长),是用定时方式0、方式1编程。
6-4 在晶振主频为12MHz时,定时最长时间是多少?若要定时1分钟,最简洁的方法是什么?试画出硬件连线图并编程。
6-5 在一个实际系统中,若外部中断请求源多于3个,能否在不增加任何硬件的情况下用其内部中断代替?如何初始化其内部中断?
6-6 在一个实际系统中,若有8个外部中断请求源,如何设计其硬件和中断服务程序?
6-7 试编写一段中断的初始化程序,使之允许T0中断为高优先级中断。
、T0、串行口中断、且使
6-8 阅读T0、T1初始化程序,回答右边几个问题(设主频为6MHz)
MOV A,#11H
MOV TMOD,A
MOV TH0,#9EH
MOV TL0,#58H
MOV TH1,#0F0H
MOV TL1,#60H
CLR PT0
SETB PT1
SETB ET0
SETB ET1
SETB EA
*MOV A,#50H
*MOV TCON,A
…… ……
1) T0,T1各用何方式工作?几位计数器?
2) T0、T1各自定时时间或计数次数是多少?
3) T0、T1的中断优先级?
4) T0、T1的中断矢量地址?
5) 最后两带*号的指令功能是什么?