
C语言编程开发中用好位操作符.doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言编程开发中用好位操作符.doc
- 资源描述:
-
1、C语言编程开发中用好位操作符1. C 语言中的位操作符因为 C 语言的设计目的是取代汇编语言,所以它必须支持汇编语言所具有的运算能力,所以 C 语言支持全部的位操作符(Bitwise Operators)。位操作是对字节或字中的位(bit)进行测试、置位或移位处理,在对微处理器的编程中,特别适合对寄存器、I/O 端口进行操作。因而本节将对此作比较详细地介绍。6种位操作符的形式与含义如下:其中让 PORTD 中控制 TRX_CE 信号的那一位先置1,再清 0,输出一高一低的脉冲信号,就在一个脉冲周期内,完成了一次数据发送。因为在程序的开头已经定义 TRX_CE 信号为 PD6位,即 TRXCE
2、= 6,因而上面两行程序等价于:PORTD|=(1 6);PORTD 测试寄存器指定位的状态nRF905在接收数据过程中,要分别发出 CD、AM 和 DR 信号,而 MPU 也要分别对这些位进行检测,看它们是否变高,若变高,就执行下一步,否则就跳出分支,返回主程序。下面就是对这些位进行检测的一段函数:/*检查接收情况*/void nrf905_RxRecv(void)while (PIND /CD 引脚置1,检测到载波信号while (PIND /一般先 AM=1指示地址匹配对while (PIND /DR=1时表示数据接收对而且 Crc 正确/nrf905已经接收到数据nrf905_Read
3、Data(0);/读出 nrf905中的数据其中有:while (PIND 或者:if (PIND 语句,其功能就是对寄存器指定的位进行测试。括号中是一个等式,我们将其拆分开介绍它的作用:1DR:DR 在程序的开始已经被定义为2 ,(1DR) 也就是(1 2),表示将0x01左移2位,结果为0000 0100;PIND& (1DR):PIND 为 PORTD 端口的8位引脚的值, PIND& (1DR)表示让它和(1DR) 亦即和0000 0100按位相“与”。不管 PIND 的其它位为何值,由于和0相与,这些位的结果都为0,我们关心的只有第2位的状态。由于该位与1相与,只要 DR 为高,就会有:PIND xxx x1xx& 0000 0100结果 = 0000 0100结果的第二位的状态为1,也就是整个表达式:(PIND&(1DR)= = 0不成立,语句的逻辑值为0。若 DR 为低,则有:PIND xxxx x0xx& 0000 0100结果 = 0000 0000也就是整个表达式的结果为0,(PIND&(1DR)= = 0成立,语句的逻辑值为1 。根据括号中逻辑值的情况,while 或者 if 语句再决定程序的流向。
展开阅读全文
