单片机编程中TMOD |= 0x10;TMOD &= 0xdf;是什么意思??

2024-12-25 02:25:46
推荐回答(4个)
回答1:

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;               //启动定时器。

}

如果不懂 可以去我百度空间留言 。。。希望以上对你有帮助。

回答2:

TMOD |= 0x10 特殊寄存器TMOD第五位置1,其它不变!
TMOD &= 0xdf特殊寄存器TMOD第六位置0,其它不变!
这两条都是在设置单片机定时器的参数!

回答3:

TMOD |= 0x10;详单于TMOD=TMOD|0x10
如果有定时器0打开这样写就不影响定时器0了,如果你写成TMOD=0x10;而前面定时器0也是打开的,这么写前面的定时器就关闭了受到了影响

回答4:

特殊写法Al=B是AB相或,结果写到A,与A=AlB等价,A&=B,与A=A&B等价