单片机定时器的配置方法,你们会了吗
定时器有什么用呢 ,我们又在什么时候会用到定时器,想知道这些我们一定要了解清楚定时器有什么用才行;
其实不难理解,定时就是我设定一个计数值,以一个固定的频率从零开始计数,当计数到我们设定的计数值,那么单片机就会给出一个标志位提示定时时间到了,这时就可以拿这个标志位来控制单片机的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++;
}
相关问答
单片机 定时的时间怎么改变?定时器实质是计数器。当计数脉冲周期一定时,就有定时功能。雅帆用水桶给你打个比方吧!一、向上计定时数器举例当一个255毫升的烧杯,提前放入155毫升水后,...
利用51 单片机定时器 编写一个C语言程序,实现一个发光二极管定时亮、灭,要求亮一秒、灭一秒交替闪烁不?初始值为0,只只要启动定时器,定时器就开始工作,当计数溢出后,TF被置1,此时在程序中查询TF的状态,做相应的程序处理。一般建议用中断来做,查询方式会占用c...
51 单片机定时器 一毫秒怎么写?假设晶振为12MHz,不用中断时程序语句如下:TMOD=0x01;//定时器0工作方式1TH0=(65536-1000)/256;//装入初值TL0=(65536-1000)%256;TF...
单片机定时器 应用实验用80C51内部定时器1,按方式1工作,即作...[最佳回答]完全一样的题目呀,真幸运,看我的吧(我的是8052的,没关系的):汇编程序:S1EQU30HS2EQU31HORG0000HAJMPMAIN&nb...完全一...
8051 单片机定时器 计算器的门控信号G ATE设置为1时。定时器如何启动?设8051单片机定时器0的门控信号GATE设置为1,定时器0如何启动?1、设置TR0=1,但这时候是不启动的,因为还需要一个条件。2、给INT0引脚输入高电平,这时候才启...
c语言中怎么编写一个 定时器 中断程序来实现定时功能?首先,单片机的定时器和计数器不构成因果关系。但是,TMOD(工作方式寄存器)决定着单片机是定时还是计数的工作方式而我自己的理解是:定时功能:单片机设定...
模式0,1,2,3,对应的 定时器 0,1,求大神帮忙 啊 - 莉莉...有相关资料要的话留邮箱那得看你用什么单片机,51单片机的话有两定时器T0和T1;TMOD是一个八位的寄存器,分别对应两个定时器的一些状态,如工作方式...
单片机 振荡频率计算?1、系统晶振频率是12M,则机器周期=12/12=1us;2、定时1ms=1*1000=1000us;3、工作在方式0下:最大计数值是2^13=8192;4、定时初值=8192-(1*1000....
51 单片机 中的 定时器 中断是怎么用的?所以中断的使用:1.开全局中断51是EA=12.对应中断使能比如定时器1ET1=1、定时器0ET0=13.定时器工作方式配置:有三种方式双8位定时16位定时...
单片机定时器 延时计算方法?51系列单片机的话:先算出来你的定时器+1的单位时间Tu,你需要定时的时间是Tc(注意Tc不能超过定时器的最大定时时间),你的定时器的位数是n,那么你的定时器初...