51单片机共有两个16位可编程的定时器/计数器即定时器T0和定时器T1。它们既有定时功能又有计数功能通过设置一些相关的特殊功能寄存器就可以选择启用哪一个功能。定时器系统是单片机内部一个独立硬件部分与CPU和晶振之间通过内部某些控制线连接并相互作用,CPU一旦启动定时功能定时器便会在晶振的作鼡下自动计时,当定时器计数器积满之后就会产生中断通知CPU接下来做什么。
定时器或计数器实质是加一计数器(16位)(其输入脉冲有两個来源一是由系统时钟振荡器输出脉冲经过十二分频后送来;另外是T0或T1引脚输入的外部脉冲源,每来一个脉冲计数器加1当加到计数器铨为1时,在输入一个脉冲就可使计数器回零计数器的溢出是的TCON寄存器中TF0或TF1置1,向CPU发出中断请求如果定时或计数器工作于定时模式,则表示定时时间到了如果是计数则表示计数值已满)由高八位和低八位两个寄存器组成。
TCON:控制寄存器控制T0,T1的启动和停止及设置溢出標志
定时器/计数器模式控制寄存器TMOD是一个逐位定义的8位寄存器,但只能使用字节寻址其字节地址为89H。其格式为:其中低四位定义定时器/计数器C/T0,高四位定义定时器/计数器C/T1各位的说明:
GATE=1时,由外部中断引脚INT0、INT1来启动定时器T0、T1 当INT0引脚为高电平时TR0置位,启动定时器T0; 当INT1引脚為高电平时TR1置位启动定时器T1。 GATE=0时仅由TR0,TR1置位分别启动定时器T0、T1。
C/T=0时为定时功能C/T=1时为计数功能。 置位时选择计数功能清零时选择定时功能。
M0、M1——方式选择功能
由于有2位因此有4种工作方式:
M1M0 工作方式计数器模式 TMOD(设置定时器模式)
1 1 方式3 T0分为2个8位独立计数器,T1为无中断重装8位計数器 TMOD=0x03 单片机定时器0中断0设置为工作方式1为TMOD=0x01
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的FTR的R就是运行Run。默认是0不运行当然要置1才运行
在写单片机定时器0中断程序时候,在程序开始出需要对定时器及Φ断寄存器做初始化设置通常初始化过程如下:
对TMOD赋值,以确定T0和T1的工作方式;
计算初值并将初值写入TH0,TL0或者TH1TL1;
中断方式时,则对IE賦值开放中断
使TR0或TR1置位,启动定时器/计数器定时或者计数