找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9396|回复: 9
收起左侧

DAT=a&0x80是谁与0x80&运算。

[复制链接]
ID:64817 发表于 2014-8-28 16:40 | 显示全部楼层 |阅读模式
各位师傅又要请教大家了。下面是使用74HC595时的一个子函数。DAT为串行数据入。。 DAT=a&0x80  想不明白,是a 和0x80&运算完后赋值给DAT.
还是单片机送来的DAT数据给a ,再和0x80&运算,,,,还有a是子函数的型参,在整个程序中也没有赋值。
void sendbyte(unsigned char a)//单位数据发送函数
{  unsigned char i; //定义一个无字符串变量
   for(i=0;i<8;i++)   //for 循环,循环8次,把一个数变成二进制发送出去
        {
         SCLK=0;// 595 SCLK频率置低电平
         DAT=a&0x80;//把数据与0X80后发送出去
         a=a<<1;  把数据a左移一位
         SCLK=1;  595频率置高
         }
回复

使用道具 举报

ID:26188 发表于 2014-8-28 16:55 | 显示全部楼层
a&0x80  很明显是a这个变量   化为二进制就知道 了  意思就是 取最高位
回复

使用道具 举报

ID:64817 发表于 2014-8-28 20:00 | 显示全部楼层
hujia 发表于 2014-8-28 16:55
a&0x80  很明显是a这个变量   化为二进制就知道 了  意思就是 取最高位

师傅如何取高位呀,,假如a=1 1&1000 0000不是0了吗,,能否详细说说呀,谢谢了
回复

使用道具 举报

ID:62622 发表于 2014-8-28 20:20 来自手机 | 显示全部楼层
a是一个字节,与运算是取最高位给DAT,然后左移,循环八次就完啦。

评分

参与人数 1威望 +35 黑币 +30 收起 理由
admin + 35 + 30 帮助他人解决技术问题的积分奖励

查看全部评分

回复

使用道具 举报

ID:64817 发表于 2014-8-28 20:29 | 显示全部楼层
老好人小童鞋 发表于 2014-8-28 20:20
a是一个字节,与运算是取最高位给DAT,然后左移,循环八次就完啦。

谢了。谢了。谢了。谢了。
回复

使用道具 举报

ID:64817 发表于 2014-8-28 20:59 | 显示全部楼层
老好人小童鞋 发表于 2014-8-28 20:20
a是一个字节,与运算是取最高位给DAT,然后左移,循环八次就完啦。

谢谢,我找到误区了,刚开始我把a看做一个位,,经你提醒明白是字节,后来,我是把DAT=a&0x80&nbsp;后的值,又理解为赋于a;&nbsp;&nbsp;a=a<<1; ..现在刚刚想通可还是蒙蒙老师你那有没有更好的理解方法传受到一下,加深记忆
回复

使用道具 举报

ID:65580 发表于 2014-8-29 14:05 | 显示全部楼层
&运算的优先等级比=高

评分

参与人数 1威望 +35 黑币 +25 收起 理由
admin + 35 + 25 帮助他人解决技术问题的积分奖励

查看全部评分

回复

使用道具 举报

ID:62622 发表于 2014-8-30 15:59 | 显示全部楼层
abeimao 发表于 2014-8-28 20:59
谢谢,我找到误区了,刚开始我把a看做一个位,,经你提醒明白是字节,后来,我是把DAT=a&0x80&nbsp;后的值 ...

不客气,共同学习!!
回复

使用道具 举报

ID:65837 发表于 2014-9-5 16:03 | 显示全部楼层
共同学习了.谢谢!
回复

使用道具 举报

ID:17771 发表于 2014-9-13 12:12 | 显示全部楼层
当然是a与0x80运算!这个子程序就是将a变成8位串行2进制数。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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