独闷闷网

 找回密码
 立即注册
搜索
查看: 2560|回复: 0
收起左侧

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

[复制链接]
发表于 2014-10-28 16:27:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
曹健-江苏:
在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次后一个字节就发送完毕。

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


乐于分享,勇于质疑!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|独闷闷网 ( 粤ICP备12007667号-2 )

GMT+8, 2021-9-24 23:51 , Processed in 0.142000 second(s), 18 queries .

快速回复 返回顶部 返回列表