PIC18F定时器初值计算

合集下载

第五章 PIC单片机计数器定时器

第五章 PIC单片机计数器定时器

定时实例
用定时器TMR1产生一个50HZ的方波,由RC.0输 出,设晶振频率为4MHz。 解: 由题意知,方波的周期 T=1/50=0.02s=20ms,用TMR1定时t=10ms,设 分频比P取值为8,指令周期为1μs,则计数 初值X为
X=216-t /(T×P)=216-10000/(1×8)=FB20
}
}
计数器实例
试用定时器TMR0作外部工件计数器,外部工件信号由T0CKI 端引入,TMR2作定时器,每隔一秒钟检测一次TMR0的计数值, 当检测到100个工件时使RC.0端输出信号反相,程序不断循环 控制RC.0端的输出. 解:外部工件信号由T0CKI端引入单片机,设置TMR0为计数 工作方式,TMR2为定时工作方式,定时时间与软件一起实现 为1秒。定时器TMR0的计数初值为(取分频比P为1)
• 对8位定时器TMR0来说,不使用分频器时, 定时时间的计算公式为:
(28 –计数初值)×指令周期,
• 使用分频器时,定时时间的计算公式为:
分频比×(28 –计数初值) ×指令周期
• 分频比取值为2、4、8…256。
• 若晶振频率为4MHz,则机器周期为1μs,定时器TMR0最小 定时时间为: [28-(28–1)]×1=1μs • 定时器TMR0最大定时时间为: [(28-0)×1]×256=65536μs • 如设定定时时间为t,指令周期为T,分频比为P,不使用 分频器时,计数寄存器写入的初始值X为: X=28-t/T • 使用分频器时,那么计数寄存器写入的初始值X为: X=28-t/(T×P)
MOVWF TMR1L ;设定TMR1低位初值 MOVLW B'11110000‗ ;设置定时器工作方式, MOVWF T1CON;分频比为1:8 BSF T1CON,TMR1ON ;启动定时器TMR1 LOOP1 BTFSS PIR1,TMR1IF ;是否溢出? GOTO LOOP1;未溢出,等待 BCF PIR1,TMR1IF ;溢出,清溢出标志 MOVLW B'00000001';对RC0求 反 XORWF PORTC,1 GOTO LOOP;循环 END

单片机定时器初值计算公式(51单片机和AVR单片机的初值计算三种方法)

单片机定时器初值计算公式(51单片机和AVR单片机的初值计算三种方法)

单片机定时器初值计算公式(51单片机和A VR单片机的初值计算三种方法)单片机定时器初值计算公式
一、51单片机定时器初值计算1、方法一
void main(void)
{
s1=1;
TMOD=0x01; //使用定时器T0的模式1
TH0=(65536-46083)/256; //定时器T0的高8位设置初值
TL0=(65536-46083)%256; //定时器T0的低8位设置初值
函数功能:定时器T0的中断服务函数
********************************************************/
void TIme0(void )interrupt 1 using 0 //定时器T0的中断编号为1,使用第1组工作寄存器
{
count++; //每产生1次中断,中断累计次数加1
if(count==20)//如果中断次数计满20次
count=0; //中断累计次数清0
s++; //秒加1
网络上阅读一段程序,定时器初值46083 是怎么计算出来的?一般我们如用AT892051的话定时50MS 就是TH0=(65536-50000)/256;
猜想应该是使用的12M晶体,20次为1S.
2、方法二
10MS定时器初值的计算:
1)晶振12M
12MHz除12为1MHz,也就是说一秒=1000000次机器周期。

10ms=10000次机器周期。

65536-10000=55536(d8f0)。

pic18f26k80_AD

pic18f26k80_AD

该模块具有以下寄存器:•A / D控制寄存器0(ADCON0寄存器)•A / D控制寄存器1(ADCON1)进行•A / D控制寄存器2(ADCON2寄存器)•A / D端口配置寄存器1(ANCON0)•A / D端口配置寄存器2(ANCON1)•装入ADRESH(上,A / D结果寄存器)•ADRESL(较低,A / D结果寄存器)ADCON0寄存器,如寄存器23-1所示,控制的A/ D模块的操作。

将ADCON1寄存器,如寄存器23-2所示,电压配置参考和特殊触发。

该ADCON2寄存器寄存器,如寄存器23-3所示,配置A/ D转换时钟源和采集时间和程序理由。

ADCON0寄存器第7位未用:读为0bit 6-2 CHS<4:0>:模拟通道选择位00000=通道00(AN0的)10000=(保留)(2)00001=通道01(AN1)=10001(保留)(2)00010=通道02(AN2的)=10010(保留)(2)00011=通道03(AN3的)=10011(保留)(2)00100=通道04(AN4的)=10100(保留)(2)00101=通道05(AN5使用相同)(1,2)=10101(保留)(2)00110=通道06(AN6)(1,2)=10110(保留)(2)00111=通道07(AN7)(1,2)=10111(保留)(2)01000=通道08(AN8的)=11000(保留)(2)01001=通道09(AN9)=11001(保留)(2)01010=通道10(AN10的)=11010(保留)(2)01011=(保留)(2)=11011(保留)(2)01100=(保留)(2))=11100(复用器断开)(3)01101=(保留)(2))11101=通道29(温度二极管)01110=(保留)(2))11110=通道30(VDDCORE的)01111=(保留)(2)11111 =31频道(1.024V带隙)第1位GO / DONE:A / D转换状态位1 = A / D转换周期进度。

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

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

PIC 单片机的定时器精准计时的计算关于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 一个中断,显然,使用。

定时器初始值确定

定时器初始值确定
uchar code table[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,
0x7d,0x07,0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71
};
uchar bai,shi,ge;
uint shu;//调试了一个小时,真晕。问题出在这!!!我这个猪脑子。
{
display();//在数码管显示
if(s2==0)
{
delay(10);//去抖
if(s2==0)
{
TR0=0;//如果键被按下,则停止计数
while(!s2)display();//在此等待按键松开,松开后,继续计数
{
//显示个位
P0=table[ge];
dula=1;
dula=0;
P0=0xfb;
wela=1;
wela=0;
delay(20);
//显示十位
P0=table[shi];
dula=1;
dula=0;
P0=0xfd;
wela=1;
sbit s5=P3^7;//独立键盘s5
//初始化
void init()
{
shu=0;
TMOD=0x01;
TH0=0xdc;//(65536-9216)/256=220
TL0=0x00;//(65536-9216)%256=0
EA=1;
ET0=1;
TR0=1;
shi=shu%100/10;//提取十位数
ge=shu%10;//提取个位数
}
注意问题:

单片机初值的计算方法

单片机初值的计算方法

计数初值的计算定时或计数方式下计数初值如何确定,定时器选择不同的工作方式,不同的操作模式其计数值均不相同。

若设最大计数值为 M ,各操作模式下的 M 值为:模式 0 : M=2 13 =8192模式 1 : M=2 16 =65536模式 2 : M=2 8 =256模式 3 : M=256 ,定时器 T0 分成 2 个独立的 8 位计数器,所以 TH0 、 TL0 的 M 均为 256 。

因为 MCS-51 的两个定时器均为加 1 计数器,当初到最大值( 00H 或 0000H )时产生溢出,将 TF 位置 1 ,可发出溢出中断,因此计数器初值 X 的计算式为: X=M- 计数值式中的 M 由操作模式确定,不同的操作模式计数器的长不相同,故M值也不相同。

而式中的计数值与定时器的工作方式有关。

1 、计数工作方式时计数工作方式时,计数脉冲由外部引入,是对外部冲进行计数,因此计数值根据要求确定。

其计数初值: X=M- 计数值例如:某工序要求对外部脉冲信号计 100 次, X=M-1002 、定时工作方式时定时工作方式时,因为计数脉冲由内部供给,是对机器周期进行计数,故计数脉冲频率为 f cont =f osc × 1/12 、计数周期 T=1/f cont =12/f osc 定时工作方式的计数初值 X 等于:X=M- 计数值 =M-t/T=M- ( f osc × t ) /12式中: f osc 为振荡器的振荡频率, t 为要求定时的时间。

定时器有两种工作方式:即定时和计数工作方式。

由 TMOD 的 D6 位和 D2 位选择,其中 D6 位选择 T1 的工作方式, D2 位选择 T0 的工作方式。

=0 工作在定时方式, =1 工作在计数方式。

并有四种操作模式:1 、模式 0 : 13 位计数器, TLi 只用低 5 位。

2 、模式 1 : 16 位计数器。

3 、模式 2 : 8 位自动重装计数器, THi 的值在计数中不变, TLi 溢出时, THi 中的值自动装入 TLi 中。

PIC单片机简答参考

PIC单片机简答参考

PIC单片机简答题参考(包括:定时器、ADC、CCP、SPI等4MHZ:void DELAY(unsigned int n){unsigned int j;char k;for (j=0;j<n;j++)for (k=246;k>0;k--) NOP();}简答题定时器延时计算用TMR0定时tms,--> us256 * K * TCY = T(us) –》k = (预分频1:2^1 、1:2^2 …1: 2^8) 向大取(256 - x)*k*TCY = T(us) ----> x = 四舍五入tmr0 = x用TMR1定时tms -- > us65536 * k * tcy = t(us)--> k = (预分频1、2、4、8) 向大取65536 – x) * k * tcy = t --》x = 四舍五入= 0x____ 转成16进制--》TMR1H = 0X__ TMR1L = 0X__TMR2 – PR2TMR2延时tms --> us(256) * k * tcy = t us --> k = (分频值2^k) 往上取--》k = k1 前分频* k2后分频k1 = 1、4、8 (取2^k)k2 = 1:1 – 1:16 (取2^k)(PR2 +1) *K *TCY = t(us) --> PR2 = 四舍五入CCP模块PWM计算PWM模式参数计算tp td = _0% tp1.周期Tp=256×K (TMR2预分频值) ×TCY --> K= 1:1、1:4、1:16 (向上取) 如算出K = 1.953 应取K=42.(PR2 +1) *K *TCY = TP(us) --> PR2 = 四舍五入3.Td=DC1×K (TMR2预分频值) ×Tosc(tcy / 4) --> DC1 = 化为16进制–》化为二进制DC1=(CCPR1L:CCP1CON<5:4>) 10 位--》可得CCPR1L和CCP1CON<5:4>的值。

第6章 PIC中档单片机定时计数器

第6章 PIC中档单片机定时计数器

定时/计数器TMR0

设计思路:将定时器/计数器TMR0工作在计数模 式,8位计数器初始值设置FFH,要求送入一个脉 冲(按一下按键),计数器产生一次溢出,8位累 加器的内容为01H,对应的二极管亮(连接RD0 上的二极管LED0亮),再按一下按键又产生一次 溢出,累加器的内容为02H,对应的二极管亮 (RD1上的二极管LED1亮),以此类推。
分频器原理和电路
定时/计数器TMR0

6.2.1 TMR0的基本特性:
(1)它是一个 8 位宽度的定时/计数器。 (2)定时寄存器的当前计数值可读/写。 (3)可以附带一个 8 位宽度的预分频器。 (4)可以选择内部指令周期计数或外部输入脉冲计数。 (5)以递增方式计数,当计数值从 0XFF 溢出变回 0X00时产生溢出标志,可以引发中断。 (6)当设为外部脉冲计数时还可以选择是上升沿计数还 是下降沿计数。
异步二进制加法计数器
定时/计数原理

当脉冲的频率是已知的且固定不变时,固定个 数脉冲的时间 T 也是固定的, 即 T = k x t0 其中, t0 :是固定频率脉冲的周期,而 k 是 固定的脉冲的个数。
定时/计数原理


如果采用工作时钟作为计数器的时钟源,就称定 时/计数器工作在定时模式。对 PIC 中档单片机而 言,t0等于单片机的指令周期, t0 就是振荡电路 频率 foso的四分之一。 对于常用的 4 MHz 外部晶振, t0等于 1 us。此时 ቤተ መጻሕፍቲ ባይዱ定时/计数器就是单片机的一个计时单位为 1us 的“闹钟”,它将在达到定时时间时通过中断提 醒单片机的 CPU 。通常称这种计数脉冲来自单 片机工作时钟的工作模式为“定时模式”。
第6章 PIC中档单片机定时/计数器
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档