jianhong_wu 发表于 2014-10-28 16:27:48

74hc595的驱动代码中, if(ucTempData>=0x80)是什么意思?已解答。

曹健-江苏:
在74HC595的驱动程序中,有一段代码:
for(i=0;i<8;i++)
   {
         if(ucTempData>=0x80)hc595_ds_dr=1;
         else hc595_ds_dr=0;

         hc595_sh_dr=0;   //SH引脚的上升沿把数据送入寄存器
         delay_short(15);
         hc595_sh_dr=1;
         delay_short(15);

         ucTempData=ucTempData<<1;
   }

这个ucTempData>=0x80这句话什么意思?

鸿哥--深圳 :
这句话就说明了一个字节变量是8位,如果满足了那个条件,那么最高位一定是1,不可能是0。
比如:
0x80最高位是1吧?
0xA3最高位是1吧?
0xB3最高位是1吧?
0x93最高位是1吧?

因为它们都大于或者等于0x80。

曹健-江苏:
意思就是说,595芯片接收单片机传送的信号必须是一个字节的是吗


鸿哥--深圳:
是的。一个字节是最小单位。而一个字节是8位,74hc595是串行通讯的,要把这个字节发送出去,就必须一位一位来发送,一共要发送8次才能把一个字节发送输出。那个for循环里,是从最高位开始发送,发送完一位后,就马上左移,方便发送下一位,8次后一个字节就发送完毕。

曹健-江苏:
这个解释算是理解了。


页: [1]
查看完整版本: 74hc595的驱动代码中, if(ucTempData>=0x80)是什么意思?已解答。