今天,将两个单片机里用的比较多的位运算。
&运算(与运算)和|运算(或运算)
一般来说,定时器用的比较多。
比如,定时器的TMOD(定时器模式寄存器),这个寄存器是不可位寻址的,也就是不能单独的用sbit来操作这个寄存器的每一位。
位 | 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) |
复位值 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
如果想要选择定时器T0的模式1,怎么做呢?
我们假设,这8位数为yyyyxxxx
1、我们先清零低4位,同时,不能影响到高4位yyyy。即(yyyy0000),我们的做法是这样的:
(yyyyxxxx) & 0xf0
写作:TMOD &= 0xf0;
2、我们选择定时器0的模式一,即(yyyy0001)。我们的做法是这样的:
(yyyy0000) |= 0x01
写作:TMOD |= 0x01;
总结一下:
1、如果要保留一些位不变的同时,其他位清零,用 & 运算
2、如果要保留一些位不变的同时,其他位置1,用 | 运算
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |