TMOD:定时器/计数器模式控制寄存器
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
void timer1_init() //这里是定时器1初始化函数
{
TMOD |= 0x10; //TMOD 里 MO 置1
TMOD &= 0xdf; //TOOD 里 M1 清零 定时器选择为 16位定时模式
TH1 = 0xFC; //下面2句是 定时器的初值 也就是你定时器需要定时的时间
TL1 = 0x67;
TR1 = 1; //启动定时器。
}
如果不懂 可以去我百度空间留言 。。。希望以上对你有帮助。
TMOD |= 0x10 特殊寄存器TMOD第五位置1,其它不变!
TMOD &= 0xdf特殊寄存器TMOD第六位置0,其它不变!
这两条都是在设置单片机定时器的参数!
TMOD |= 0x10;详单于TMOD=TMOD|0x10
如果有定时器0打开这样写就不影响定时器0了,如果你写成TMOD=0x10;而前面定时器0也是打开的,这么写前面的定时器就关闭了受到了影响
特殊写法Al=B是AB相或,结果写到A,与A=AlB等价,A&=B,与A=A&B等价