今天,將兩個單片機里用的比較多的位運算。 &運算(與運算)和|運算(或運算)
一般來說,定時器用的比較多。 比如,定時器的TMOD(定時器模式寄存器),這個寄存器是不可位尋址的,也就是不能單獨的用sbit來操作這個寄存器的每一位。
TMOD——定時器模式寄存器的位分配(地址 0x89、不可位尋址
位 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 符號 | GATE
(T1)
| C/T
(T1)
| M1
(T1)
| M0
(T1)
| GATE
(T0)
| C/T
(T0)
| M1
(T0)
| M0
(T0)
| 復(fù)位值 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0
| 這里,TMOD有8位,低4位是控制T0定時器的,而高4位控制T1定時器。
如果想要選擇定時器T0的模式1,怎么做呢? 我們假設(shè),這8位數(shù)為yyyyxxxx 1、我們先清零低4位,同時,不能影響到高4位yyyy。即(yyyy0000),我們的做法是這樣的: (yyyyxxxx) & 0xf0 寫作:TMOD &= 0xf0; 2、我們選擇定時器0的模式一,即(yyyy0001)。我們的做法是這樣的: (yyyy0000) |= 0x01 寫作:TMOD |= 0x01;
總結(jié)一下: 1、如果要保留一些位不變的同時,其他位清零,用 & 運算 2、如果要保留一些位不變的同時,其他位置1,用 | 運算
|