按位或。意思是
TMOD = TMOD | (0x01 | 0x04)
因为 0x01 | 0x04 == 0x05,因此也相当于
TMOD = TMOD | 0x05
也可简写成 TMOD |= 0x05
假设 TMOD 是 unsigned char:如果 TMOD 初始值是0,则结果是 0x05,如果初始值是 0xFF,则结果还是 0xFF
实际结果取决于 TMOD 的初始值,手工计算的结果的话,要把 TMOD 的初始值转换成二进制,然后计算
TMOD: ????????
| 0x05: 00000101
----------------------------
= ?????1?1
计算完后可以把结果转回十进制或十六进制,方便看。
这句话只想把TMOD的bit0和bit2这两位置为1,而其他位是什么东西,程序不关心,也没有去更改。 建议以后用这种方法赋值,不要直接给寄存器赋值