单片机
返回首页

PIC16 定时器与晶振计算

2016-08-26 来源:eefocus

PIC16 定时器与晶振计算

T=(256-A)*(4/F)*分频比
T:是你要设定的时间.
A:是对应要赋的值(就是我要得到的值).

F:晶振频率
Tmax=256*(4/F)*分频比max
T:单位是US
1S=1000MS=1000000US

分频器一般都是跟计数单元一起结合使用。

预分频比是在计数单元值发生变化之前起作用(假如不用预分频时,计数器在每个上升沿到来时加1,而现在使用分频比为1:2的预分频器的话,那么必须等到两个上升沿的到来,计数器才会加1)

后分频器与预分频器功能一样,只不过是在计数器值发生改变后起作用。像TMR2的后分频器,如果不使用,计数器一但发生溢出,将立即置位标志为TMR2IF,但是如果有1:2的后分频器的话,必须两次溢出后才会置位。


关于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。


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


进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 家用电源无载自动断电装置的设计与制作

  • 短波AM发射器电路设计图

  • 带有短路保护系统的5V直流稳压电源电路图

  • 如何调制IC555振荡器

  • 基于ICL296的大电流开关稳压器电源电路

  • 基于TDA2003的简单低功耗汽车立体声放大器电路

    相关电子头条文章