1、定时器和计数器的介绍
(1)定时器是单片机里面的一个内部外设,就是CPU的“闹钟”。CPU定时的时间段里面,CPU也能干别的事。当定的时间到了后,CPU再去干被指定的事。
(2)定时器其实就是用计数器实现的,计数器是记录脉冲的个数。计数器可以计算CPU外部脉冲的个数。
2、定时器是如何工作
(1)先设置好定时器的时钟源(既一个脉冲的持续的时间,一般不需要设置)
(2)初始化的时钟相关的寄存器
(3)设置定时的时间(通过设置脉冲的个数)
(4)设置中断要处理程序(时间到后被指点要做的事)
(5)打开定时器
(6)计时开始,时间到后产生中断,执行指点程序
1.1定时/计数器的工作原理
S1:启动或停止计数器计数
S2:允许或禁止溢出中断
计数器溢出:S1闭合时,计数器从初值开始,对脉冲进行加1或减1计数,当加到或减到最大最小值时,计数器产生溢出,将相应的溢出标志位TF置1.
1.2定时/计数器的组成
51单片机内部有两个16位的可编程定时/计数器,称为T0和T1,
51单片机的定时/计数器由T0、T1、工作方式寄存器TMOD和控制寄存器TCON四部组成,T0、T1均为加法计数器
定时/计数器工作过程:
(1)设置工作方式,通过对TMOD进行设置,确定是计数还是定时,确定工作方式及启动方法;
工作方式有四种:方式0,1,2,3。启动方式有:软件启动和硬软共同启动
(2)设置计数初值,T0,T1分别由两个8位专用寄存器组成,T0由TH0和TL0组成,T1由TH1和TL1组成
(3)启动定时/计数器。根据(1)步骤设置定时/计数器启动方式,启动定时/计数器。如果采用软件启动,TCON中的TR0或TR1置1,如果采用硬软共同启动方式,不仅要把TCON中的TR0或TR1置1,还要相应的外部启动信号为高电平。
设置定时器的工作方式并启动定时器后,定时器便会按照设定工作方式独立工作,不在占用CPU的操作时间///
(4)计数溢出。计数溢出标志位在控制寄存器TCON中,用于通知用户定时/计数器已经计满,用户可以采用查询方式或中断方式进行操作。
1.3定时/计数器工作方式寄存器TMOD
TMOD格式如下:
TMOD的低四位为T0的工作方式字段,高四位为T1的工作字段,他们的含义相同。
(1)M1、M0:工作方式选择位
(2)、(3)
GATE是TMOD寄存器中的,也有2个分别对应T0和T1。GATE位中文名叫门控位,工作方式是:当GATE=0时(相当于门是打开的,此时GATE位是可以忽略的),此时定时器开关就只受TR位影响。具体就是TR=1开启计数,TR=0结束计数。当timer处于定时器工作模式时GATE就要等于0;GATE一般是在timer处于计数器模式时用的。当timer用来计数时,很关键的就是什么条件下计数,什么条件下不计数。当GATE=0时计数条件只有TR1一个(TR1=1就计数,TR1=0就不计数),当GATE=1时是否计数不仅取决于TR1还取决于INT1引脚(P3.3),实际规则是:当TR1=1并且INT1引脚也为高电平时才会计数。若TR1=1,则与门打开,外部信号电平通过INT1引脚直接开启或关闭T1,当INT1引脚为高电平时,允许计数,若TR1=0,则与门被封锁,控制开关关闭,停止计数。
注释:位寻址允许对单个数据位进行修改或操作
位寻址和字节寻址是计算机内存地址表示的不同层次:
字节寻址:这是最基本的寻址单位,每个存储单元通常被称为一个字节(byte),其大小通常是8比特(bits)。在大多数现代计算机系统中,数据是以字节为单位存储和处理的,比如读取、写入文件或执行指令。通过字节寻址,程序员可以直接操作内存中的每一个8位二进制数。
位寻址:更精细的是,每个字节可以进一步细分为8位,每一位都有独立的地址,称为位(bit)。这种级别的寻址常用于特定的操作,如硬件中断控制器、嵌入式系统或底层网络协议中需要精确控制某个信号的状态。位寻址允许对单个数据位进行修改或操作,这对于实现某些高级功能非常有用,但效率相对较低,因为它涉及到更多的步骤。
1.4定时/计数器控制寄存器TCON
TCON的作用是控制定时器的启动、停止,标识定时器溢出和中断情况
TCON中的低四位用于控制外部中断,与定时/计数器无关,当系统复位时,TCON的所有位均清零。TCON可以进行位操作,溢出标志位清零或启动定时器都可以用位操作语句;
例如:TR=1; //启动T1
TF1=0; //T1溢出标志位清零
while语句回忆:
while(iNum<=100)
{
iSum=iSum+iNum;
iNum++;
}