教你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...