设计与开发

51单片机定时器0 教你51单片机的定时器中断以及使用方法

小编 2024-10-11 设计与开发 23 0

教你51单片机的定时器中断以及使用方法

51单片机共有两个16位可编程的定时器/计数器,即定时器T0和定时器T1。它们既有定时功能又有计数功能,通过设置一些相关的特殊功能寄存器就可以选择启用哪一个功能。定时器系统是单片机内部一个独立硬件部分,与CPU和晶振之间通过内部某些控制线连接并相互作用,CPU一旦启动定时功能,定时器便会在晶振的作用下自动计时,当定时器计数器积满之后就会产生中断,通知CPU接下来做什么。

定时器或计数器实质是加一计数器(16位)(其输入脉冲有两个来源,一是由系统时钟振荡器输出脉冲经过十二分频后送来;另外是T0或T1引脚输入的外部脉冲源,每来一个脉冲计数器加1,当加到计数器全为1时,在输入一个脉冲就可使计数器回零,计数器的溢出是的TCON寄存器中TF0或TF1置1,向CPU发出中断请求,如果定时或计数器工作于定时模式,则表示定时时间到了,如果是计数则表示计数值已满)由高八位和低八位两个寄存器组成。

TMOD:定时器/计数器模式控制寄存器(TIMER/COUNTER MODE CONTROL REGISTER) ,确定工作方式和功能

TCON:控制寄存器,控制T0,T1的启动和停止及设置溢出标志。

定时器/计数器模式控制寄存器TMOD是一个逐位定义的8位寄存器,但只能使用字节寻址,其字节地址为89H。其格式为:其中低四位定义定时器/计数器C/T0,高四位定义定时器/计数器C/T1,各位的说明:

GATE——门控制。

GATE=1时,由外部中断引脚INT0、INT1来启动定时器T0、T1。 当INT0引脚为高电平时TR0置位,启动定时器T0; 当INT1引脚为高电平时TR1置位,启动定时器T1。 GATE=0时,仅由TR0,TR1置位分别启动定时器T0、T1。

C/T——功能选择位

C/T=0时为定时功能,C/T=1时为计数功能。 置位时选择计数功能,清零时选择定时功能。

M0、M1——方式选择功能

由于有2位,因此有4种工作方式:

M1M0 工作方式计数器模式 TMOD(设置定时器模式)

0 0 方式0 13位计数器 TMOD=0x00

0 1 方式1 16位计数器 TMOD=0x01

1 0 方式2 自动重装8位计数器 TMOD=0x02

1 1 方式3 T0分为2个8位独立计数器,T1为无中断重装8位计数器 TMOD=0x03 单片机定时器0设置为工作方式1为TMOD=0x01

TCON: 定时器/计数器控制寄存器(TIMER/COUNTER CONTROL REGISTER)

TMOD分成2段,TCON控制更加精细,分成四段,在本文中只要用到高四段。 TF0(TF1)——计数溢出标志位,当计数器计数溢出时,该位置1。

TR0(TR1)——定时器运行控制位 当TR0(TR1)=0 停止定时器/计数器工作 当TR0(TR1)=1 启动定时器/计数器工作

IE0(IE1)——外中断请求标志位

IT0(IT1)——外中断请求信号方式控制位 当IT0(IT1)=1 脉冲方式(后沿负跳有效)

当IT0(IT1)=0 电平方式(低电平有效)此位由软件置1或清0。

TF0(TF1)——计数溢出标志位

当计数器产生计数溢出时,此位由硬件置1。当转向中断服务时,再有硬件自动清0。计数溢出的标志位的使用有两种情况:采用中断方式时,作中断请求标志位来使用;采用查询方式时,作查询状态位来使用。注意记忆方法,理解单词原形,就绝对不会把TF和TR搞混。TF的F也就是溢出Over Flow的F。TR的R就是运行Run。默认是0不运行,当然要置1才运行

在写单片机定时器程序时候,在程序开始出需要对定时器及中断寄存器做初始化设置,通常初始化过程如下:

对TMOD赋值,以确定T0和T1的工作方式;

计算初值,并将初值写入TH0,TL0或者TH1,TL1;

中断方式时,则对IE赋值,开放中断

使TR0或TR1置位,启动定时器/计数器定时或者计数。

//实现led灯一秒亮灭闪烁

void main()

{

TMOD=0x01;//设置定时器0为工作方式1(M1 M0为01)

TH0=(65536-45872)/256;//装初值11.0582晶振定时50ms数为45872

TL0=(65536-45872)%256;

EA=1;//开总中断

ET0=1;//开定时器0中断

TR0=1;//启动定时器0

while(1);//程序停止在这里等待中断发生

}

void T0_time() interrupt 1

{

TMOD=0x01;//重装初值

TH0=(65536-45872)/256;

num++;//num每加一次判断一次是否到20次

if(num==20)//如果到了20次,说明1秒时间到

{

num=0;//num清0重新计数

led=~led1;

}

}

单片机定时器0的使用

一:首先选择使用哪组寄存器?

问:8051单片机有哪些定时器?

答:8051单片机拥有3组定时器,分别是定时器0(T0) 定时器1(T1) 定时器2(T2)。

问:如何选择定时器?

答: 8051单片机定时器需要通过IE(中断允许控制器)进行设置,ET0,ET1 分别对应定时器0 定时器1

ET0,ET1 分别在IE寄存器的第1位和第3位 对应 IE = 0000 0010 IE = 0000 0100

二:选择定时器的工作方式

问:如何设置单片机的定时器是工作在定时模式,还是计数模式?

答:8051单片机的工作方式设定需要通过TMOD寄存器来设置,TMOD寄存器不可以通过位寻址。

TMOD寄存器的高4位用于设置定时器1

TMOD寄存器的第4位用于设置定时器0

定时器0 C/T TMOD的 第3位设置为0为定时模式,设置为1为计数模式 0000 0100

定时器1 C/T TMOD的 第6位设置为0为定时模式,设置为1为计数模式 0100 0000

三:选择定时器的方式选择功能

问:如何设置单片机定时器的工作方式选择功能

答:定时器的方式选择功能由TMOD寄存器来设定,不可以位寻址。

TMOD的第0位第1位 对应定时器0

TMOD的第4位第5位 对应定时器1

方式0 M1=0 M0=0 13位定时器/计数器

方式1 M1=0 M0=1 16位定时器/计数器

方式2 M1=1 MO=0 自动重载8位定时器/计数器

方式3 M1=1 M0=1 T0分为2个8位独立计数器,T1无方式3

相关问答

51单片机 定时计数器工作方式疑点 单片机定时器 /计数器的工...

[最佳回答]因为51单片机处理数据是按八位进行的,所以给定时器赋初值的时候,不能将一个数直接赋到T0中,而是将这个数先转化为一个十六进制数,将它的高两位数(也...

51单片机定时器 t0低8位是哪个?

定时器的低8位是tl0定时器的低8位是tl0

c 51单片机 定时器 多长时间溢出?

51单片机定时器溢出时间取决于两个因素,第一是定时器的时钟源频率,单片机可以配置这个时钟源为主频的1倍或者是1/12;第二个是定时器的初值,定时器是在初值的...

51单片机定时器 中断影响?

51单片机定时器中断主要影响是导致主程序数码管显示出问题。这是因为串口发送改为中断方式最简单的,在通信可靠的前提下尽可能提高串口波特率,同时降低发送频...

如何使用 51单片机 定时器 写一个精确延时1ms的延时子函数。 ...

voidInitTimer0(void){TMOD=0x01;TH0=0x0FC;TL0=0x18;EA=1;ET0=1;TR0=1;}voidmain(voi...

51单片机 定时器 中断是从什么时候开始,又是从什么时候结束的呢?

定时器中断从计数值溢出(0xffff+1或0x0000-1)开始产生中断,到你执行中断响应程序开始(不是中断程序结束)就结束本次中断了,所以在有些时间严格要求的地方在...

51单片机定时器 的内部结构组成?

MCS-51单片机内部结构′是由CPU、存储器和输入/输出接口等组成的。单片机(Single-ChipMicrocomputer)是一种集成电路芯片,是采用超大规模集成电路技术把具有...

51单片机定时器 内部结构由什么组成?

51子系列单片机由CPU、数据存储器RAM、程序存储器ROM、特殊功能寄存器、4个I/O口、串行口、定时器/计数器、中断系统等八个功能部件组成。CPU由累加器A、暂存...

MCS- 51单片机定时器 /计数器作定时和计数作用时,其计算脉冲分别由谁提供?其定时时间与哪些因素有关?

计数的脉冲由外部提供..定时时是由外部晶振提供..定时加1的周期为一个机器周期...定时时间与初值和晶振有关..计数的脉冲由外部提供..定时时是由外部晶振...

使用 51单片机 定时50ms,初始化程序怎么写?

TMOD=0x01;//方式1TH0=(65536-50000)/256;//12MHZ晶振,一个机器周期1us,50000个就是50msTL0=(65536-500...

猜你喜欢