c51 bit使用
扫描二维码
随时随地手机看文章
如i=0时,tab[i]的值为0x3f,那么这句bit_dat((bit)(tab[i]&0x80));的作用是:
第一步:tab[i]与0x80作位与,即0x3f与0x80作位与(与0x40相位与就是取了第6位),这样的效果是取得了0x3f的最高位(第7位),其它位全部被屏蔽为0
第二步:作int向bit强制转换,向bit转换有一个规则,只要待转换前变量是非零,转换后的bit类型变量即为1,否则为0,这里,0x3f&0x80的结果为0,也就是((bit)(tab[i]&0x80))的结果为0
第三步:调用bit_dat函数,向外设写入这一位。
后面的(bit_dat((bit)(tab[i]&0x40))句子就是取次高位,后面的依此类推,就可以从高位取到低位了。