您的位置:首页 > 其它

定时器的使用

2016-04-01 19:39 260 查看
一、定时器的使用方法

(1)打开总中断 //EA, CPU中断允许(总允许)位。

(2)设置定时器工作方式



M1M0工作方式控制位



C/T定时器方式或计数器方式选择位

若C/T=1时, 为计数器方式; C/T = 0时, 为定时器方式。

GATE 定时器/计数器运行门控标志位

当GATE=1时, 只有INT0 (或INT1)引脚为高电平且TR0(或TR1 )置 1 时, 相应的定时器 /计数器才被选通工作, 这时可用于测量在INTx端出现的正脉冲的宽度。若GATE=0, 则只要 TR0 (或 TR1)置 1, 定时器 /计数器就被选通, 而不管 INT0 (或 INT1)的电平是高还是低。

给定时器填初值

1、机器周期也就是CPU完成一个基本操作所需要的时间。

2、机器周期=1/单片机的时钟频率

3、51单片机内部时钟频率是外部时钟的12分频。也就是说当外部晶振的频率输入到单片机里面的时候要进行12分频。比如说你用的是12MHZ的晶振,那么单片机内部的时钟频率就是12/12MHZ,当你使用12MHZ的外部晶振的时候。机器周期=1/1M=1us。

4、单片机的晶振频率12M,震荡周期为 1/12us

单片机机器周期:12个震荡周期 = 1个机器周期,即加一次1us.

打开定时器中断

//ET0,定时/计数器T0中断允许位;ET1,定时/计数器T1中断允许位;

打开定时器(开始计数) // TR0 = 1 / TR1 = 1

写中断服务函数 //中断服务函数不能有参数和返回值

void ISR_Timer0( void ) interrupt 1(中断服务函数标志)
{
1.重新赋初值
2.实现功能
}


中断服务函数标志:0 - 外部中断0;1 - 定时器中断0;2 - 外部中断1;3 - 定时器中断1;4 - 串行口中断


二、定时/计数器的工作原理

描述一:

定时/计数器实质上是一个加1计数器。它随着计数器的输入脉冲进行自加1,也就是每来一个脉冲,计数器就自动加1,当加到计数器为全1时,再输入一个脉冲就使计数器回零,且计数器的溢出使相应的中断标志位置1,向CPU发出中断请求(定时/计数器中断允许时)。如果定时/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。

可见,由溢出时计数器的值减去计数初值才是加1计数器的计数值。

描述二:

定时器中断服务程序的中断源是定时器,由晶振振荡产生内部计数功能,每次自加1。当计数器计数超过溢出值,TF0/TF1置位,产生溢出中断请求,CPU自动中断当前执行任务,把程序当前位置入栈,保护现场,然后跳到中断服务函数,执行中断服务函数后,TF0/TF1置0,恢复现场,回到主程序继续执行被中断的地方。

【注】课外拓展,学会定时器的控制寄存器中的其他bit位代表的含义
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: