定时/计数器有4种工作方式,每种工作方式下,内部计数器的位数及功能有所不同。
1.工作方式0
当TMOD中的M1M0=00时,定时/计数器工作在方式0。此时,定时/计数器内部的计数器为13位计数器,由THi提供高8位,TLi提供低5位。若在THi和TLi中设置好计数初值,且启动定时/计数器就可以进行加法计数。TLi低5位计数满时直接向THi进位,当13位计数器计数满时,定时器溢出中断请求标志位TF i置1。此种工作方式下内部计数器的最大计数值为213=8 192。定时时间及计数值可按如下公式计算。
①作定时器用时,定时时间:
②作计数器用时,计数值:
C=213-计数初值=8 192-计数初值
2.工作方式1
当TMOD中的M1M0=01时,定时/计数器工作在方式1。此时,定时/计数器内部的计数器为16位计数器,由THi提供高8位,TLi提供低8位。在THi和TLi中设置好计数初值,启动定时/计数器就可以进行加法计数。当16位计数器计数满时,定时器溢出中断请求标志位TF i置1。此种工作方式下内部计数器的最大计数值为216=65 536。定时时间及计数值可按如下计算。
①作定时器用时,定时时间:
②作计数器用时,计数值:
C=216-计数初值=65 536-计数初值
例如:当fosc=6 MHz时,计数初值为0FF06H(65 286),则定时时间为(https://www.xing528.com)
3.工作方式2
当TMOD中的M1M0=10时,定时/计数器工作在方式2。此时,定时/计数器内部的计数器为自动重装初值的8位计数器。两个8位计数器THi和TLi中的TLi作加法计数器,THi作为预置常数寄存器。当TLi计数满时,将中断请求TF i置1,同时将THi中的计数初值以硬件方法自动装入TLi。此种工作方式下内部计数器的最大计数值为28=256。定时时间及计数值可按如下计算。
①作定时器用时,定时时间:
②作计数器用时,计数值:
C=28-计数初值=256-计数初值
4.工作方式3
当TMOD中的M1M0=11时,定时/计数器工作在方式3。此时定时/计数器T0可拆成两个独立的8位定时/计数器使用,T1不变。当定时/计数器工作在方式3时,T0、T1的设置和使用方法是不同的。
定时/计数器T0中的两个8位计数器TH0、TL0拆分为两个独立的计数器后,TL0所对应的定时/计数器使用T0原有控制资源,即使用TR0控制启停,TF0作为溢出标志。TH0所对应的定时/计数器只能作8位定时器用,借用T1的资源TR1、TF1。
T0工作在方式3时的定时/计数值计算与方式2相同。
定时/计数器T1仍然可工作于方式0~方式2下,只是由于其TR1、TF1被T0的TH0占用,因而没有计数溢出标志可供使用,计数溢出时只能将输出结果送至串行口,即用作串行口波特率发生器。
微课:定时器初始化程序设计
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。
