为Timer1 添加外部LP 振荡器,可以为用户提供RTC 功能。这是通过一个提供精确时基的廉价时钟晶振以及几行计算时间的应用程序代码实现的。当器件工作于休眠模式下并使用电池或超大容量电容作为电源时,可以省去额外的RTC 器件和备用电池。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
应用代码程序RTCisr,给出了使用中断服务程序以1 秒的间隔递增计数器的简单方法。 将TMR1 寄存器对的值不断加1 直至溢出,触发中断并调用中断服务程序,该程序会使秒计数器加1,而分钟和小时计数器则会在前面的计数器溢出时加1。由于这对寄存器为16 位宽,因此使用32.768 kHz 时钟,将其计数到溢出需要2 秒。要使溢出按所需的1 秒间隔进行,必须预先装载这对寄存器。最简单的方法是使用BSF 指令将TMR1H 的最高有效位置1。请注意决不要预先加载或改变TMR<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />1L寄存器,这样做可能会引起多个周期的累积错误。要使此方法精确,Timer1 必须工作在异步模式且必须允许Timer1 溢出中断(PIE1<0> = 1),如程序RTCinit所示。同时Timer1 振荡器也必须使能并始终保持运行。
详细的源程序段见: http://www.supermcu.com
用户161931 2008-12-17 10:41
你好!http://www.supermcu.com里面找不到代码啊!能发到我的邮箱吗!谢谢!410262163@qq.com
用户161931 2008-12-17 10:40
你好!http://www.supermcu.com里面找不到代码啊!能发到我的邮箱吗!谢谢!410262163@qq.com