c语言中=和|=的区别

时间:2021-08-27 10:05:33

在配置定时器使用了如下语句:

TMOD |= 0x20;       //TMOD: timer 1, mode 2, 8-bit reload

不禁疑问:这与TMOD=0x20有什么区别呢? 不都是把0x20给TMOD吗?

 NO。当只需要改变TMOD中的某一位时,就用 |=,如果直接用 = 赋值,会导致TMOD其它位被改变。

如,TMOD=0x20就使除了位5为1,别的位都为0了,这在程序中可不是我想看到的。