1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > pic单片机内部时钟校准c语言 PIC系列单片机片内定时器实时时钟的实现(转)

pic单片机内部时钟校准c语言 PIC系列单片机片内定时器实时时钟的实现(转)

时间:2024-01-20 06:21:28

相关推荐

pic单片机内部时钟校准c语言 PIC系列单片机片内定时器实时时钟的实现(转)

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

(-08-11 14:24:59)

标签:

杂谈

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 重新增量. 在程序设计中, 可将部分数据寄存器用作存储当前时间值, 在处理TMR 0

中断时, 对这些寄存器进行递增、进位与归零操作来实现实时时钟的功能. 假定单片机采用4MHz 的振荡器, 在不使用预分频器的情况下,

TMR 0 每个指令周期(1Ls) 递增一次.为尽量减少处理TMR0 中断所占用的CPU 时间, 可将预分频器分配给TMR0 使用,

并设定分频比例为1∶256. 这样, TMR0 每递增一次用256Ls, 从0 开始递增至溢出共用65 536Ls,

平均每个时钟计时单位(1s)内产生约15. 26 个计时溢出中断, 在中断期间不能对储存时间值的寄存器进行操作. 为调整TMR 0

溢出的时间间隔和使得每秒产生整数个溢出中断, 每次溢出后对TMR0 写入一个适当的初值. 这样, 相邻两次TMR0

溢出的间隔时间就可分为两部分, 一部分为TMR0 溢出到重新写入TMR 0 初值所用时间t1, 另一部分为写入TMR 0

初值到TMR0 溢出所用时间t2. 其中, t2 取决于写入初值的大小, t1 则取决于TMR 0

溢出后进入中断处理的响应时间和中断处理中写入初值的时机. 如果整个应用所需的中断仅是这个TMR0 中断,

在计时溢出时就可以立即进入其中断服务程序, 通过调整中断处理程序中写入TMR0 初值的时机, 就可以得到所需的t1 值.

这种办法可以将振荡频率对计时不准的影响减低到最小.

分享:

喜欢

0

赠金笔

加载中,请稍候......

评论加载中,请稍候...

发评论

登录名: 密码: 找回密码 注册记住登录状态

昵称:

评论并转载此博文

发评论

以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。