8051的两个定时器/计数器是16位的(据说是16+1位的),分别用寄存器TH1(高8位)和TL1(低8位)、TH0和TL0表示。
1.Timer/Counter的启动 由TCON的TR1和TR0来设置。(软件设置)
2.Timer/Counter工作方式的设置:TMOD GATE | C/T
| M1 | M0 |
GATE | C/T | M1 | M0
|
高四位控制1,低四位控制0。各位意义如下:
GATE:为1时,对Timer/Counter1来说,启动受到双重控制,即RT1和/INT1同时为高;GATE为0时仅受TR0和TR1控制。
C/T:为1时,工作在Counter状态,计数通过T0(P3.4)和T1(P3.5)的负脉冲来触发;为0时工作在Timer状态,由内部振荡进行计时。
M1、M0:设计工作方式,
M1M0=00,满计数值为2^13,TL存低5位,TH存高8位;
M1M0=01,满计数值为2^16;
M1M0=10,满计数值为2^8,初值自动重装;
M1M0=11,
(各资料上说的不一样);
3.Timer设定初值的方法 Timer工作时,对机器周期计数。如果 fosc = 6 MHz,一个机器周期为 12/fosc = 2 us,则:
方式0:最大定时间隔 = 2^13 * 2 us = 16.384 ms;
方式1:最大定时间隔 = 2^16 * 2 us = 131.072 ms;
方式2:最大定时间隔 = 2^8 * 2 us = 512 us;
对于方式1,要求定时 1ms,计数器初值为 x,则有:
(2^16 - x) * 2 us = 1000 us,可求出 x
4.Counter设定初值的方法 方式0:计满数值 = 2^13 = 8192 ;
方式1:计满数值 = 2^16 = 65536;
方式2:计满数值 = 2^8 = 256;
对于方式2,如果要计10个脉冲值,则设初值为 256-10 。
阅读(3066) | 评论(0) | 转发(0) |