登录
首页 单片机论坛
回帖 发帖
正文

主题:ad转换

点击:975 回复:8

附件
这几条语句看不懂  请高手指点翻译一下
就在&这块看不懂  他俩与完了是一个什么条件执行sda=0或1
11-05-22 22:11
&0X80:D6-D0屏蔽,取D7;
如果 D7=1;SDA=1;
否则 D7=0;SDA=0;
11-05-23 10:13
哦 原来如此,谢谢啦
11-05-23 18:48
对了(c《bitcnt)也解释一下吧   我怕我理解错了,呵呵麻烦了
还有&&应用的格式我了解
这个&应用的格式我就不了解了,能不能也给我讲一下,非常感谢
11-05-23 21:36
bitcnt循环8次的时候将8传送给c,c在跟0x80&,当c中的date与0x80比较一致也就是0x80定义的d7为1时就执行sda=1   是不是这样啊
11-05-23 21:50
&:运算符号:参与的数据会改变
&&:逻辑符号:只判断,不改变数据;
<<为左移动;
你可在编译软件理软仿真看看数据;
11-05-25 10:34
哦  只明白一点
11-05-25 18:16
&和&&在C语言中都是双目运算符,即在使用它们时,在运算符的两侧都各要有一个操作数,如:a&b或c&&d。
但&是二进制运算符,它在执行时,将左右两侧的操作数按二进制数逐位地进行运算,比如:    a=0x57; b=0xac; c=a&b;
a:   0 1 0 1   0 1 1 1
b:   1 0 1 0   1 1 0 0
  &
----------------------------------
c:   0 0 0 0   0 1 0 0
所以执行后,c的值为0x04。
&&是逻辑运算符,它在执行时,将左右两侧的操作数都当作逻辑值,即真或假对待,然后按照逻辑与(两者同时为真,结果才为真)的规则,得出运算结果,结果也是逻辑值。这里有个事实要记住,C语言在判断一个量是真还是假时的依据是:只有0是假,一切非0值都是真;而C语言在表示一个值的真假时,用1(即0x01)表示真,用0(即0x00)表示假。
还以上例为例,a=0x57; b=0xac; c=a&b;
a:   0 1 0 1   0 1 1 1      C语言翻译为----->     0000 0001 (由非零为真翻译来的)
b:   1 0 1 0   1 1 0 0      C语言翻译为----->     0000 0001 (由非零为真翻译来的)
 &&                                                       &&
----------------------------------                             -------------------------
c:   0 0 0 0   0 1 0 0                                      0000 0001 (C语言给出的结果,真)
上例按&&运算后,c的值为0x01,表示真。
void SendByte(unsigned char c)
{
unsigned char BitCnt;
for(BitCnt=0;BitCnt<8;BitCnt++)
 {
  if((c<   else SDA=0;
 }
}
这个函数的功能是:将调用时的单字节实参值,通过SDA线发送出去,发送时,高位(左侧的位)先发送。以如下调用为例:SendByte(0xa5); 函数执行时的过程如下:
1、刚进入SendByte()函数时,BitCnt取值为0,即对c不进行左移操作,用c的原值与0x80进行与操作,因为0xa5和0x80的最高位都是1,与的结果最高位也是1,为非0,为真,执行SDA=1;将数字1发送到SDA线上,此值正好与0xa5的最高位相同,符合实际。
2、当第一轮发送完1后,由于头一轮循环的最后执行了BitCnt++,BitCnt取值为1,再次执行c< 按照2的执行过程,直到将0xa5的最后一位发送出去。
11-06-14 19:34
那第一次循环一位第二次循环两位第三次循环三位。。。。。
那这样的话不用八次就循环完了
还是我没看懂啊  呵呵
11-06-28 20:27

工控新闻

更多新闻资讯