1.实时时钟实现的基本方法
实时时钟是以秒、分、时为单位进行计时的。时钟的最小计时单位是秒,假如使用定时器的方式1,在6MHz的系统振荡频率下,最大的定时时间也只能达到约131ms。因此,可把定时器的定时时间定为100ms,这样,计数溢出10次即可得到时钟的最小计时单位秒,而计数10次可用软件累计溢出次数来实现。
(1)定时器/计数器计数初值的计算
设定定时器/计数器工作在方式1,进行100ms的定时。单片机的晶振频率为6MHz,则机器周期Tcy=2μs,所以计数初值为
初值=最大计数值-定时时间/Tcy=216-100×103/2=15536D=3CB0H
(2)秒、分、时计时的实现
秒计时是采用中断方式进行溢出次数的累计得到的。从秒到分,从分到时可通过软件累加和比较的方法来实现。要求每满1秒,则“秒”单元中的内容加1;“秒”单元每满60,则“秒”单元清0,同时“分”单元中的内容加1;“分”单元每满60,则“分”单元清0,同时“时”单元中的内容加1;“时”单元每满24,则将“时”单元清0。
2.程序设计
(1)主程序的设计
主程序的主要功能是进行定时器/计数器的初始化,然后通过循环(或反复调用显示子程序)等待100ms定时中断的到来。时钟主程序流程图如图7-9所示。(www.xing528.com)
(2)中断服务程序的设计
中断服务程序的主要功能是实现秒、分、时的计时处理,流程图如图7-10所示。
图7-9 主程序流程图
图7-10 时钟中断服务程序流程图
下面是简易实时时钟的参考程序。程序中,使用定时器/计数器T1作为100ms定时器,片内33H单元作为100ms计数单元,32H、31H、30H单元分别作为时、分、秒单元。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。