关于PIC单片机的定时器精准计时的计算

在此用了16C711单片机的TMR0做定时中断,希望实现精准计时,在程序中,TMR0用了晶振的32分频,初值#0FCH,因此POPBEAR兄弟计算出每个定时中断的计时时间为(256-X)*32*4/32768=0.015625秒。注意,问题就在这里!实际上这个时间是TMR0的初值被置入后两个指令周期后(见PIC单片机定时器/计数器资料)到下一次中断发生时的时间。如果要用到定时器的精准定时,必须理解这一概念!

如采用32768Hz的晶振,每个指令周期为122us,在中断处理程序中,到TMR0的初值被置入,共有7条指令,加上TMR0的初值被置入后两个指令周期,如果中断处理程序不直接放在0004H地址而采用GOTO指令的两个周期,一共为11个指令周期。也就是说,每个定时中断发生的间隔为0.015625秒+11*122us。程序中64次中断为1秒,那么1秒误差为64*11*122us=85.9375ms,1分钟的误差为5.156s。

那么怎样得到精准计时呢?这就要在对定时器的初值赋值上和中断处理程序中做文章。

关于如何产生一个大致比较精准的时间中断

使用TMR0的时候,如果仅TMR0一个中断,显然,使用 TMR0=TMR0+OFFSET的方式就能够产生一个比较精准的时间中断。特别是不用考虑从中断到TMR0的赋值中间间隔了多少时间的延时。

但是使用TMR1时,就产生了问题,因为TMR1是16位的,所以TMR1L=TMR1L+OFFSET_L时,就得考虑TMR1H得进位问题。

使用C内欠套汇编如下(如用赋值而不是增量方式,C中就得中断到赋值得时间了),且TMR1_Revalue_H得值不会为0xFF。

[cpp] view plaincopyprint? #asm

movf _TMR1_Revalue_L & 0x7F,W

addwf _TMR1L,F

btfss _STATUS,0

movf _TMR1_Revalue_H & 0x7F,W

btfsc _STATUS,0

incf _TMR1_Revalue_H & 0x7F,W

addwf _TMR1H

#endasm

方法两种

1)利用CCP模块在Compare模式下特殊事件触发功能实现精确的TMR1定时中断。

2)普通模式下在重装定时初值前TMR1暂停计数,设定完毕后再开启。注意补偿中间置初值的延时时间。

单片机定时器精准定时_PIC单片机的定时器精准计时的计算相关推荐

  1. 单片机定时器精准定时_8051单片机(STC89C52)定时器实现10ms精准定时

    8051内部集成了2个16bits的计数器, 可以根据需要将其作为定时器使用. 这时, 定时器的计数频率为系统CLK/12. 如果CPU的晶振频率为12MHz, 那么定时器信号源的频率固定为12MHz ...

  2. 单片机定时器精准定时_单片机入门-C51语言采用定时器查询方法获取1秒精准定时...

    原标题:单片机入门-C51语言采用定时器查询方法获取1秒精准定时 视频如下: 51系列单片机含有专用的 定时器/计数器,定时器/计数器是一个二进制的加1寄存器,当启动后就开始从所设 定的计数初始值开始 ...

  3. 单片机定时器精准定时_单片机定时器,如何追求极致的精度?

    1.晶振频率的误差 假设你用的是这种常用的无源晶振 它的误差±20PPM可以理解为百万分之20,12Mh晶振的标称的误差±240hz,频率范围在11.9976Mhz--12.00024Mhz范围.软件 ...

  4. 单片机定时器精准定时_单片机很好玩6,制作一个精确的“定时器”,为什么这么重要?...

    单片机常被称作 MCU,MCU 的全称是 Micro Control Unit,就是微型控制器的意思.顾名思义,单片机常被用于控制一些器件工作,因此物联网的终端,或者其他一些智能机器,都是离不开单片机 ...

  5. pic单片机低电压检测_pic单片机汇编语言讲解(上)

    pic 单片机为最常用单片机之一,许多程序均基于 pic 单片机进行开发.因此,熟练 pic 单片机编程尤为重要.为保证大家能准确.熟练掌握 pic 单片机的使用,本文特带来 pic 单片机的各种汇编 ...

  6. 设定pic单片机端口为输入_PIC单片机IO端口的软件/硬件可靠性使用方法讨论

    本帖最后由 dingzy_2002 于 2016-3-19 11:51 编辑 一.PIC的IO端口设置在普通的高低电平情况下 1.有普通的H/L电平下,硬件设计要注意的是外围输出其最大驱动电流(拉出/ ...

  7. 两个单片机iic通讯程序_PIC单片机之DS1302时钟

    大家好,通过前一期的学习,我们已经对ICD2 仿真烧写器和增强型PIC 实验板的使用方法及学习方式有所了解与熟悉,学会了如何用单片机来控制发光管.继电器.蜂鸣器.按键.数码管.RS232串口.步进电机 ...

  8. 设定pic单片机端口为输入_PIC单片机的输入输出端口

    在学习这个部门的时候,曾经碰到过一些题目.PIC单片机的引脚未几,大多都是复用引脚,例如AD.IO.比较器.外接晶振等等,所以在配置端口的时候,一定要知道每个功能怎样设置才能实现的,在这一小节中,我要 ...

  9. 设定pic单片机端口为输入_PIC单片机的模块和功用

    PIC16F616是一款14引脚.8位的CMOS单片机.选用精简指令集,仅有35条指令,因为选用了数据总线和指令总线别离的哈佛总线构造,使得除少数指令不是单周期以外,大有些的指令都是单周期指令.这么有 ...

最新文章

  1. PHP从数据库获取的下拉树
  2. 用C#使用HttpWebRequest Post数据时如何保持Session
  3. Java中书写要注意的地方
  4. java.lang.ExceptionInInitializerError
  5. update-rc.d 更新 Linux 系统启动项 命令 用法详解
  6. java 昵称1到32位字符_Java期末考试编程题复习
  7. ERROR: Cannot unpack file C:\Users\admin\AppData\Local\Temp\pip-unpack-yo8pmupp\simple.htm (download
  8. TensorFlow入门--实现多层感知机
  9. 关于LabVIEW视觉ROI的读取与存储
  10. 为什么家里pm25比外面高_你绝对不会相信在家用卷发棒烫发竟然比在外面烫发更伤发?...
  11. 【网络原理】数据链路层
  12. 中文版-动手学深度学习
  13. 彻底解决电脑空闲时,Win音频设备图形隔离(系统进程)占用CPU的问题
  14. python爬取本地文本中的成语_Python爬取成语:从3字到12字
  15. C/C++ 内存对齐原则及作用
  16. 浅析中国综艺的营销策略
  17. “穿搭速递”首页制作
  18. 王者荣耀最低战力查询-王者战区修改
  19. 雷柏V500s和V500的win键无效
  20. 卷积神经网络论文学习(Lecun1998)

热门文章

  1. 重磅独家 | 腾讯AI Lab AAAI18现场陈述论文:用随机象限性消极下降算法训练L1范数约束模型
  2. 深入理解Nginx 模块开发与架构解析-陶辉 读书笔记
  3. CMake 用法导览
  4. linux文件创建、查看、编辑命令
  5. MySQL 5.7 基于GTID的半同步复制
  6. Electron开发入门
  7. centos升级gcc
  8. 使用sqoop将HIVE中的数据输出带Mysql中
  9. 左神算法:环形单链表的约瑟夫问题(Java版)
  10. 面试必会系列 - 1.1 Java SE 基础