电工之家_电工基础知识学习网站
当前位置:电工之家 > 电工知识 > 单片机 > 正文

51单片机定时器初值计算

时间:2019-01-08 12:11 来源:电工之家

用STC89C52单片机来说,它有3个定时器,分别是T0,T1和T2。其中T2有捕捉功能。
举例如定时器配置为 16 位定时器/计数器(模式1), TL0 的 8 位和 TH0 的 8 位所构成16位计数器(就是2位数16位,转换为10进制就是0到65535),当它溢出是将置位TCON的TF0位。如果开了T0中断,将进入T0中断程序(一定要有,哪怕是空的),硬件将自动清除中断标志。
初值的意义就是从这个数字开始到65536溢出,这个差值乘以计数周期就是定时的时间。如果初值为0,就是最长定时周期,如果为65535,就是来一个计数周期,就会溢出,产生中断。 用一段程序来说明。要使用定时器,需要设置TMOD定时器寄存器,指定工作模式,设置定时器初值。开定时器,开中断。如果不开,就需要程序中手动判断TF0标志位,进行处理。
/*定时器0,系统时钟为11.059200M,12T模式,定时器5ms,则初值计算为65536-11059200/12*0.005=60928=0xEE00,则TH0=0xEE,TL0=0x00;*/
void T0_init()
{
TMOD&=0xF0;
TMOD|=0x01;
TH0=0xEE;
TL0=0x00;
TR0=1; //开定时器
ET0=1; //开中断
}
void Timer0() interrupt 1 //中断程序,需要重新赋初值
{ static unsigned char cnt=0;
TH0=0xEE;
TL0=0x00;
cnt++; //200次中断,产生1秒标志位 if(cnt>=200)
{ cnt=0;
flag1s=1;
LED=~LED; //1sLED指示
} P0 = 0xFF; //消隐
switch(i) //动态切换P0口,显示LED值
{ case 0: ADDR2=0; ADDR1=0; ADDR0=0; i++; P0=LedBuff[0];break;
case 1: ADDR2=0; ADDR1=0; ADDR0=1; i++; P0=(LedBuff[1]&0x7F);break;
case 2: ADDR2=0; ADDR1=1; ADDR0=0; i=0; P0=LedBuff[2];break;
default:break;
}
}
51单片机定时器初值计算
附图是T0模式1的结构,89C52可以选择6T(速度快1倍))或12T模式。定时器计数器模式选择。是否与外部中断0一起控制启动计数器(脉宽测量)。来一个计数脉冲TH0TL0加1,到65536,溢出置位标志TF0,产生中断。

看过《51单片机定时器初值计算》的人还看了以下文章
如何把蓝牙模块HC-05与51单片机连接起来 如何把蓝牙模块HC-05与51单片机连接起来
单片机是可以和蓝牙连接的,通过UART串口连接。HC-05是市面上比较常见的蓝牙模组,主从是一体的,跟单片机通过UART串口连接,连接完成后,即把蓝牙当作串口来使用,使用AT指令即可操作蓝牙,从而忽略掉蓝牙协议,大大降低了产品的开发难度。 单片机和蓝牙的...
51单片机定时器不够用怎么办 51单片机定时器不够用怎么办
STC89C52单片机有3个定时器,分别是T0,T1和T2。一般够用,一个串口波特率发生,2个计时。其中T2有捕捉功能。由于定时器较少,一般用法都是在一个定时器中,设置不同的时间位,如1ms定时,在中断中进行计数,通过计数周期不同来产生不同的时间位,设置10ms定...
从51单片机转Stm32的开发难不难 从51单片机转Stm32的开发难不难
从51单片机转Stm32的开发,相对于对从51不熟悉就直接学习stm32的朋友来说,要容易的很多,因为在学习51和学习stm32的思路与方法,基本上差不多,如果您学习51单片机学的不错,在学习stm32的时候事半功倍。 建议最开始购买一套开发板,如果自制Stm32开发板是...
怎么做才能将STM32学会?从51单片机转STM32的经验 怎么做才能将STM32学会?从51单片机转STM32
我当时为什么想学STM32,是因为了解到这颗MCU具有强大的功能,那时候有人用这个芯片Div做过手持式示波器,我当时觉得很厉害。自己也很想用它来做些高大上的东西。所以说这个,是想表述要对于新鲜事物,要保持一颗好奇心和探究心。这是你学习的源动力。 如果...
51单片机,stm32,arduino都是用什么语言进行编程的 51单片机,stm32,arduino都是用什么语言进行
51单片机,STM32单片机用汇编或者C语言,现在基本都用C语言编程,Arduino有自己的编程环境,用户也是用C语言编程。 51单片机的编程 51单片机进入中国比较早,在早前用汇编编程比较多,我在上大学时也是学习的汇编编程,但是现在我用C语言编程,汇编已经不会...