ö
Λ
ΛΛ
第 35 卷第 1 期郑州大学学报(理学版) V o l. 35 N o. 1
2003 年 3 月 JOU RNAL O F ZH EN GZHOU UN IVER S ITY M ar. 2003
P IC 系列单片机片内定时器实时时钟的实现
孙东胜, 王继雄, 王福源
(1. 上海交通大学电力学院上海 200030; 2. 上海牧阳人学校上海 201201;
3. 郑州大学信息工程学院郑州 450052)
摘要: 针对直接用单片机片内定时器作实时计时不准问题2 2 , 本文提出了一种可以获取与秒成整数倍关系的定时
器溢出信号的方法, 同时克服定时溢出中断信号被其它中断暂停所受的计时影响. 实验表明, 在 4M H z 晶
振下, 计时误差可控制在每天 14s 以下. 本方法也适用于一般的单片机. 在 P IC87 系列上的实验结果表明
效果很好.
关键词: 单片机; 定时器; 实时时钟; P IC
中图分类号: T P368. 2 文章编号: 1671- 6841(2003) 01- 0057- 05
一般的单片机片内没有设定实时时钟的功能而只有定时器. 片内定时器精度不高, 很难达到实时时钟的
要求. 另外, 定时器的溢出中断可能被其它中断暂停而影响走时精度. 解决的方法通常是外接一个时钟芯片
(如DALLA S 公司的D S1302) , 或时钟模块(如D S12C887) , 采用频率为 32. 768kH z 的振荡器. 时钟芯片内
置有寄存器, 可供 CPU 对其设定和读取. 这种方法会增加元器件, 同时占用 CPU 的 IO 端口资源.
本文提出了一种可以获取与秒成整数倍关系的定时器溢出信号的方法, 同时克服定时溢出中断信号被
其它中断暂停所受的计时影响. 实验表明, 在 4M H z 晶振下, 计时误差可控制在每天 14s 以下. 本方法对一般
的单层机也适用.
1 实现方法
1. 1 振荡频率的考虑
工作频率为 4M H z 的单片机, 选择 32. 768kH z 的晶振显然不能充分发挥其效能. 让单片机工作于最高
频率, 选择频率为非 2 的整数次幂的晶振, 在实现计时功能时则会带来较大的不便和误差.
P IC16F87X 系列单片机均带有至少 1 个定时器模块——TM R 0. TM R 0 是一个 8 位可擦写的简单增量
溢出计数器, 时钟源可以是内部系统时钟(F O SC 4) , 也可以是外部时钟. 另外, 为扩大计时范围, 片内有一个
可编程的预分频器可供 TM R 0 使用, 预分频器的比例可以为 1∶2, 1∶4, 1∶8, 1∶16, 1∶32, 1∶64, 1∶128
和 1∶256 中的任一个. TM R 0 计数溢出产生中断, 并从 00H 重新增量. 在程序设计中, 可将部分数据寄存器
用作存储当前时间值, 在处理 TM R 0 中断时, 对这些寄存器进行递增、进位与归零操作来实现实时时钟的功
能.
假定单片机采用 4M H z 的振荡器, 在不使用预分频器的情况下, TM R 0 每个指令周期(1 s) 递增一次.
为尽量减少处理 TM R 0 中断所占用的 CPU 时间,
PIC系列单片机片内定时器实时时钟的实现 来自淘豆网m.daumloan.com转载请标明出处.