产品概述

定时器单片机编程 单片机定时器的配置方法,你们会了吗

小编 2025-08-01 产品概述 23 0

单片机定时器的配置方法,你们会了吗

定时器有什么用呢 ,我们又在什么时候会用到定时器,想知道这些我们一定要了解清楚定时器有什么用才行;

其实不难理解,定时就是我设定一个计数值,以一个固定的频率从零开始计数,当计数到我们设定的计数值,那么单片机就会给出一个标志位提示定时时间到了,这时就可以拿这个标志位来控制单片机的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,那么你的定时器初...

猜你喜欢