{if (LED & 0x80) DAT164 = 1; else DAT164 = 0;

langtou519   2010-5-26 11:51 楼主
{if (LED & 0x80) DAT164 = 1; else DAT164 = 0;
这句话如何解,是不是数码管的数据与上0x80显示为9的话
164数据位打开,否则关闭???

回复评论 (8)

像这种语句,你要放在具体环境,而且要看宏定义LED,DAT164定义是什么,甚至要看具体的硬件连接。

但看代码,就这样理解,当LED(或许是变量,或许是IO口输入值)最高位为1,那么输出到DAT164引脚为高,否则,为低。
点赞  2010-5-26 11:58
引用: 引用 1 楼 peasant_lee 的回复:
像这种语句,你要放在具体环境,而且要看宏定义LED,DAT164定义是什么,甚至要看具体的硬件连接。

但看代码,就这样理解,当LED(或许是变量,或许是IO口输入值)最高位为1,那么输出到DAT164引脚为高,否则,为低。
二楼兄弟,单个&应该是按位与吧,这个地方是不是应该用逻辑与呢,我是初学的,个人看法。
点赞  2010-5-26 14:02
本来就是按位操作,同意1楼说的,这句跟具体的硬件环境有关系。
点赞  2010-5-26 17:10
引用: 引用 2 楼 hnhappy 的回复:
引用 1 楼 peasant_lee 的回复:
像这种语句,你要放在具体环境,而且要看宏定义LED,DAT164定义是什么,甚至要看具体的硬件连接。

但看代码,就这样理解,当LED(或许是变量,或许是IO口输入值)最高位为1,那么输出到DAT164引脚为高,否则,为低。
二楼兄弟,单个&应该是按位与吧,这个地方是不是应该用逻辑与呢,我是初学的,个人看法。


是按位与啊,我没说逻辑与吧?与0x80按位与,就时判读其最高bit是否为1。
点赞  2010-5-26 17:47
肯定是用按位与啊,这种写法在判断变量某位为1或0时常用啊
点赞  2010-5-26 19:20
if((LED & 0x80)==0x80) ?
点赞  2010-5-26 21:03
引用: 引用 1 楼 peasant_lee 的回复:
像这种语句,你要放在具体环境,而且要看宏定义LED,DAT164定义是什么,甚至要看具体的硬件连接。

但看代码,就这样理解,当LED(或许是变量,或许是IO口输入值)最高位为1,那么输出到DAT164引脚为高,否则,为低。



支持  这种写法很多的。
点赞  2010-5-26 23:21
我搞明白了,谢谢楼上几位指点,我是初学者,有点班门弄斧的感觉,不过学到知识最重要,再次感谢
点赞  2010-5-27 08:20
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复