当前位置:文档下载 > 所有分类 > 工程科技 > 信息与通信 > PIC系列单片机片内定时器实时时钟的实现
侵权投诉

PIC系列单片机片内定时器实时时钟的实现

单片机 应用 电子制作 毕业设计

郑州大学学报(理学版)第35卷第1期Vo

PIC系列单片机片内定时器实时时钟的实现

l.35No.1

               

2003年3月Mar.2003JOURNALOFZHENGZHOUUNIVERSITY

PIC系列单片机片内定时器实时时钟的实现

孙东胜, 王继雄, 王福源

(1.上海交通大学电力学院 上海200030;2.上海牧阳人学校 上海201201;

3.郑州大学信息工程学院 郑州450052)

摘 要:针对直接用单片机片内定时器作实时计时不准问题,本文提出了一种可以获取与秒成整数倍关系的定时

器溢出信号的方法,同时克服定时溢出中断信号被其它中断暂停所受的计时影响.实验表明,在4MHz晶振下,计时误差可控制在每天14s以下.本方法也适用于一般的单片机.在PIC87系列上的实验结果表明效果很好.

关键词:单片机;定时器;实时时钟;PIC中图分类号:TP368.2

文章编号1671-(05

,很难达到实时时钟的

要求.另外,.解决的方法通常是外接一个时钟芯片(如DALLAS(如DS12C887),采用频率为32.768kHz的振荡器.时钟芯片内置有寄存器,可供.这种方法会增加元器件,同时占用CPU的I.O端口资源

本文提出了一种可以获取与秒成整数倍关系的定时器溢出信号的方法,同时克服定时溢出中断信号被其它中断暂停所受的计时影响.实验表明,在4MHz晶振下,计时误差可控制在每天14s以下.本方法对一般的单层机也适用.

1 实现方法

1.1 振荡频率的考虑

工作频率为4MHz的单片机,选择32.768kHz的晶振显然不能充分发挥其效能.让单片机工作于最高频率,选择频率为非2的整数次幂的晶振,在实现计时功能时则会带来较大的不便和误差.

PIC16F87X系列单片机均带有至少1个定时器模块——TMR0.TMR0是一个8位可擦写的简单增量溢出计数器,时钟源可以是内部系统时钟(FOSC 4),也可以是外部时钟.另外,为扩大计时范围,片内有一个可编程的预分频器可供TMR0使用,预分频器的比例可以为1∶2,1∶4,1∶8,1∶16,1∶32,1∶64,1∶128和1∶256中的任一个.TMR0计数溢出产生中断,并从00H重新增量.在程序设计中,可将部分数据寄存器用作存储当前时间值,在处理TMR0中断时,对这些寄存器进行递增、进位与归零操作来实现实时时钟的功能.

假定单片机采用4MHz的振荡器,在不使用预分频器的情况下,TMR0每个指令周期(1Λs)递增一次.为尽量减少处理TMR0中断所占用的CPU时间,可将预分频器分配给TMR0使用,并设定分频比例为1∶256.这样,TMR0每递增一次用256Λs,从0开始递增至溢出共用65536Λs,平均每个时钟计时单位(1s)内产生约15.26个计时溢出中断,在中断期间不能对储存时间值的寄存器进行操作.为调整TMR0溢出的时间间隔和使得每秒产生整数个溢出中断,每次溢出后对TMR0写入一个适当的初值.这样,相邻两次TMR0溢出的间隔时间就可分为两部分,一部分为TMR0溢出到重新写入TMR0初值所用时间t1,另一部分为写入TMR0初值到TMR0溢出所用时间t2.其中,t2取决于写入初值的大小,t1则取决于TMR0溢出后进入中断处理的响应时间和中断处理中写入初值的时机.如果整个应用所需的中断仅是这个TMR0中

收稿日期:2002209222

作者简介:孙东胜(1973-

),男,硕士研究生,工程师,主要从事自动化工程研究.

第1页

免费下载Word文档免费下载:PIC系列单片机片内定时器实时时钟的实现

(下载1-5页,共5页)

我要评论

返回顶部