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

(2008-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

赠金笔

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

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

发评论

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

昵   称:

评论并转载此博文

发评论

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

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

  1. pic单片机内部时钟校准c语言,pic单片机时钟配置

    pic单片机时钟配置 已有 1687 次阅读2016-1-2 18:38 |个人分类:发现 还是PIC12F1572,某个io 输出脉冲信号.io置高,置低都是立即数给寄存器,电平竟然要16us才变化 ...

  2. 单片机系统测试c语言程序,宏晶最新1T8051单片机内部EEPROM测试C语言程序

    /* --- STC International Limited ---------------- 一个完整的EEPROM 测试程序,用宏晶的下载板可以直接测试 STC12C5AxxAD 系列单片机 ...

  3. 单片机简易电子钟设计c语言,基于51单片机的简易电子钟设计

    单片机实现电子钟主要有两种方案.一种是利用单片机内部的定时/计数器产生标准秒信号,并根据时间系统的进位原则进行加1调整.另一种方法是为单片机配置一片可独立走时的实时钟(RTC)芯片,单片机通过串行信号 ...

  4. 51单片机中断的调用寄存器组(PSW)的作用,以及汇编堆栈的作用,堆栈指针的SP的使用方法,RAM的运行和ROM在单片机具体运行和C语言的优势和中断,定时器基础知识(上)

    一,堆栈在汇编的作用,以及PUSH ACC 和 PUSH PSW 通过最简单的8051单片机RAM的分配可知,单片机从烧程序到达到一定的工作过程.首先明白为什么要引如"烧"写的过程 ...

  5. 用单片机c51电子秤的c语言,基于51单片机的电子秤系统设计

    微机原理论文第八篇:基于51单片机的电子秤系统设计 摘要:本文主要分析51单片机下的数字电子秤.在设计过程中,这种电子秤具体包括电源.传感器.蓝牙.转换器.单片机.键盘.开关.显示器等组成部分,在实践 ...

  6. 基于单片机的倒车雷达系统设计c语言,基于AT89C2051单片机实现超声波倒车雷达系统的设计...

    描述 倒车雷达(Car Reversing Aid Systems)的全称是"倒车防撞雷达",也称"泊车辅助装置",是汽车泊车安全辅助装置,能以声音或者更为直观 ...

  7. 单片机检测电机频率c语言,基于51单片机的电动机测速表的设计.doc

    基于51单片机的电动机测速表的设计 基于51单片机的电动机测速表设计 摘 要 本文介绍了采用光电传感器实施电机转速测量的方法.基本原理,完成了一种基于AT89C51单片机平台的电动机测速表的软硬件设计 ...

  8. c语言单片机自动浇花系统,基于51系列单片机的盆花自动浇水系统设计.doc

    摘要:随着科学技术的发展,尤其是单片机技术和半导体技术的高速发展,利用单片机控制仪器的研究及应用越来越受到重视.目前,盆栽植物越来越受到城市居民的喜爱,但是往往存在着人工给盆栽植物浇水带来的局限性,为 ...

  9. 单片机串口全双工C语言,C系列单片机有一个全双工的串行口.ppt

    C系列单片机有一个全双工的串行口.ppt 80C51系列单片机有一个全双工的串行口,这个口既可以用于网络通信,也可以实现串行异步通信,还可以作为同步移位寄存器使用. 2.串行控制寄存器SCON 3.电 ...

最新文章

  1. c语言-01背包问题
  2. 7.0系统设备xposed框架激活经验
  3. 从零开始学Win32平台缓冲区溢出(Part1)
  4. dec++如何查看机器指令_机器指令到汇编再到高级编程语言!
  5. java什么时候可能产生内存溢出_哪些场景会产生OOM?怎么解决?
  6. [css] 当使用opacity时会使得元素的子元素也透明,此时不想要子元素也跟着透明怎么办?
  7. C++之对象的动态建立和释放
  8. matlab线性拉伸函数,采用线性变换对图像的每一个像素灰度作线性拉伸-Read.PPT
  9. 微型计算机主板上安装的主要部件有,微型计算机的主板上安装的主要部件有()....
  10. Drupal 更新开源编辑器 CKEditor,修复两个 XSS 漏洞
  11. Linux驱动编程操作GPIO的简要说明
  12. JS输出内容为[object Object]
  13. 基于Hough变换的直线检测(Matlab)
  14. 【堆栈溢出】堆栈溢出_liangchaoxi的IT博客_新浪博客
  15. GOM引擎启动提示invalid filename怎么处理?
  16. Eclipse主题插件之Darkest Dark Theme with DevStyle
  17. R语言建立Cox回归模型(包含所有协变量)比较不同治疗方法生存率的差异、predict函数对cox模型进行新数据的预测、计算不同样本的风险比HR(hazard ratio)
  18. MATLAB如何去掉坐标轴上的数字或去掉坐标轴但保留刻度边框
  19. 数据泄露的原因是什么?如何保护数据安全?
  20. 电视盒子 android tv6,电视盒子到底应该怎么选?掌握这5点就行了

热门文章

  1. 从零学javascript_我刚刚问了23,000个开发人员他们对JavaScript的看法。 这是我学到的。...
  2. SAS在金融中的应用五
  3. 2020年编程现状:Python将成为第一大编程语言,中国开源涨势最猛
  4. Oracle数据库启动以及说明
  5. 【C++】重载赋值运算符
  6. 数学-矩阵计算(2)矩阵函数微积分前奏
  7. 大数据、数据挖掘、机器学习与模式识别的关系
  8. 动态添加控件[可重复同一控件]
  9. 改善深层神经网络:超参数调整、正则化以及优化——2.6 动量梯度下降法
  10. Opencv--undistortPoints()和cvUndistortPoints()