单片机定时器的配置方法,你们会了吗
定时器有什么用呢 ,我们又在什么时候会用到定时器,想知道这些我们一定要了解清楚定时器有什么用才行;
其实不难理解,定时就是我设定一个计数值,以一个固定的频率从零开始计数,当计数到我们设定的计数值,那么单片机就会给出一个标志位提示定时时间到了,这时就可以拿这个标志位来控制单片机的IO口引脚输出高电平或低电平从而控制你想控制的电器了!
一款单片机定时器做的电子时钟
拿单片机定时器0来举例子;
CKCON |= 1<<3;//定时器0的时钟选择为系统时钟
定时器0时钟选择
TMOD &= ~(1<<3);//无论INT0的逻辑为何,当TR0为1时,开始计数
TMOD &= ~(1<<2);//定时器0随内部系统时钟而递增
TMOD &= ~(3<<0);//模式1: 16位定时器/计数器
TMOD |= 1<<0;
TMOD寄存器配置
TH0 = (65536-16000)/256;//x=1/16000000=0.0000625ms*16000=1ms
TL0 = (65536-16000)%256;
TR0 = 1;//打开定时器0
EA = 1;//打开总中断
ET0 = 1;//使能定时器0中断
void IinterruptTim0(void) interrupt 1
{
TH0 = (65536-16000)/256;//x=1/16000000=0.0000625ms*16000=1ms
TL0 = (65536-16000)%256;
}
以上代码就是配置定时器0以1ms进入一次中断的配置方法。
备注:想学习更多内容,可点击下方链接-> ,如果文章内容对你有帮助,多帮转发收藏并关注哦,相信以后会出更好的文章内容和视频教程,一起学电子。谢谢!
教你玩单片机之定时器(附程序)
80c51的定时器
80c51单片机内有两个可编程的定时/计数器T0、T1。它们是一个16位计数器,分别由一个高8位和一个低8位的寄存器组成的。TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。
定时/计数器的工作原理
定时/计数器实质上是一个加1计数器。它随着计数器的输入脉冲进行自加1,也就是每来一个脉冲,计数器就自动加1,,当加到计数器为全1时,再输入一个脉冲就使计数器回零,且计数器的溢出使相应的中断标志位置1,向CPU发出中断请求(定时/计数器中断允许时)。如果定时/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。可见,由溢出时计数器的值减去计数初值才是加1计数器的计数值。
工作方式寄存器TMOD
GATE:门控制
0时:仅有运行控制位TRx来控制定时/计数器的开启
1时:由TRx和外部中断脉冲计数(用于计算外部中断负跳变 的次数)
C/T:计数器模式和定时器模式选择
0时:选择定时器模式
1时:选择为计数器模式
M1和M0:选择定时/计数器的工作方式
定时器/计数器控制寄存器TCON
IT0和IT1是设置外部中断的触发方式
当其为0时,为低电平触发方式
当其为1时,为负跳变触发方式
IE0和IE1是外部中断标志位
TF0和TF1是定时器的中断标志
TR1和TR0是打开相应的定时器
其他的是定时/计数器的控制
定时/计数器的工作方式
方式1
方式1为13位计数,由TL0的低5位(高3位未用)和TH0的8位组成。TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求。
方式2
方式2的计数位数是16位,由TL0作为低8位、TH0作为高8位,组成了16位加1计数器 。
方式3
方式3为自动重装初值的8位计数方式。
方式4
方式4只适用于定时/计数器T0,定时器T1处于方式3时相当于TR1=0,停止计数。
定时器操作步骤:
选择工作方式(设置M1,M0)
选择控制方式(设置GATE)
选择定时器还是计数器模式(设置C/T)
给定时/计数器赋初值(设置THx和TLx)
开启定时器中断(设置ET0或ET1)
开启总中断(设置EA)
打开计数器(设置TR1或TR0)
定时器小程序
void TimerConfiguration()
{
TMOD = 0x01; //定时器0选择工作方式1
TH0 = 0x3C; //设置初始值
TL0 = 0xB0;
EA = 1; //打开总中断
ET0 = 1; //打开定时器0中断
TR0 = 1; //启动定时器0
}
单片机之定时器LED程序
实验效果 :LED每隔500ms左移一次
void main(void)
{
Time=0;
GPIO_LED=0XFE;
TimerConfiguration();
while(1)
{
if(Time==10)
{
GPIO_LED=_crol_(GPIO_LED,1);
Time=0;
}
}
}
void TimerConfiguration()
{
TMOD = 0x01; //选择工作方式1
TH0 = 0x3C; //设置初始值,定时50MS
TL0 = 0xB0;
EA = 1; //打开总中断
ET0 = 1; //打开定时器0中断
TR0 = 1; //启动定时器0
}
void Timer0() interrupt 1
{
TH0 = 0x3C; //设置初始值
TL0 = 0xB0;
Time++;
}
相关问答
51 单片机 T0 定时器 4种方式的定时时长分别是多少 - 懂得51单片机最大硬件定时时间,就是定时器能定时的时间,最长时间=65536*TcTc=fosc/12,fosc是单片机的晶振频率。以频率=12M为例吧,Tc=1us最大定时时间=6...
单片机定时器 定时的时间肿么算?-ZOL问答51单片机,根据晶振频率,计算指令周期,设置定时器的分频,然后设置定时器的工作方式TMOD,最后设置初值TH0TL0比如用的XHZ的晶振,stc的单片机有3种模式(X/12)x/...
单片机 在使用 定时器 时是用到了哪些引脚?一定是这些吗? - 小...单片机使用定时器时,不用到任何引脚,因为定时器就好比一个时钟,它被安装在单片机内部,在接收到信号之后,就开始运行,一般使用定时器,通过编程的方案...
单片机 定时计数器最大定时时间怎么算?单片机定时计数器最大定时时间取决于所用时钟周期T和定时器位长,比如T=10mS,定时器位长8位(也就是数字最大设置为255),每个时钟到来时,定时计数器采用减1操...
单片机的定时器的 四种工作方式都是什么?书上看不懂。能不能用容易理解的话解释一下?第一种工作方式0,是2的13次方(13位)定时器或计数器,就是最大能数8192个数的模式,数一个数就是1个机器周期。工作方式1就是2的16次方(16位)定时器或计数器...
单片机定时器 中断怎么编程思路是什么?根据定时时间选择定时模式,然后计算初值,在程序开始时要初始化定时器,如果定时器自己不能重装计数初值,那你在中断函数中需要手动赋初值根据定时时间选择定时...
单片机 怎么用 定时器 控制蜂鸣器?要使用定时器控制蜂鸣器,首先需要选择一个合适的定时器模块,并设置其工作模式和计数值。然后,根据需要设置定时器的中断使能位,以便在定时器计数完成时触发...
51 单片机定时器 不够用怎么办?确实如此,定时器是使用频率最高的资源。STC89C52单片机有3个定时器,分别是T0,T1和T2。一般够用,一个串口波特率发生,2个计时。其中T2有捕捉功能。由于定时器...
单片机定时器 不够用怎么办?选52有3个定时器TIME0,1还有个多加的TIME2还一个方法就是TIME1不是占用了T1的一路了吗,但另外一路可以用于定时器方式2用于定时,而T0可以用于计数或是计数用外...
51 单片机的定时器 怎么用?51单片机的定时器是一种用于产生定时或延时的功能模块。首先,需要选择合适的定时器模式和预分频系数,设置定时器的工作方式。然后,通过配置定时器的计数初值...