独闷闷网

标题: 74hc595的驱动代码中, if(ucTempData>=0x80)是什么意思?已解答。 [打印本页]

作者: jianhong_wu    时间: 2014-10-28 16:27
标题: 74hc595的驱动代码中, if(ucTempData>=0x80)是什么意思?已解答。
曹健-江苏:
在74HC595的驱动程序中,有一段代码:
  1.   for(i=0;i<8;i++)
  2.    {
  3.          if(ucTempData>=0x80)hc595_ds_dr=1;
  4.          else hc595_ds_dr=0;

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

  9.          ucTempData=ucTempData<<1;
  10.    }
复制代码

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

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

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

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


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

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







欢迎光临 独闷闷网 (http://dumenmen.com/) Powered by Discuz! X3.2