打印
[疑难问答]

16进制转2进制的问题

[复制链接]
480|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
shashaa|  楼主 | 2016-5-24 21:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教个51单片机16进制转2进制的问题。
我想用一个字节的8个位分别表示8个状态然后显示出来
比如 得到的结果“E”是0x04 屏幕上就显示0000 0100 用下面的方法一位一位判断 显示结果是 1111 1111 请问前辈们 哪错了

if((E&&0x01)==0x01)
{
         ER[0]=1;
}
if((E&0x02)==0x02)
{
        ER[1]=1;
}
if((E&0x04)==0x04)
{
        ER[2]=1;
}
if((E&0x08)==0x08)
{
        ER[3]=1;
}
if((E&0x10)==0x10)
{
        ER[4]=1;
}
if((E&0x20)==0x20)
{
        ER[5]=1;
}
if((E&0x40)==0x40)
{
        ER[6]=1;
}
if((E&0x80)==0x80)
{
        ER[7]=1;
}
沙发
qiangweii| | 2016-5-24 21:33 | 只看该作者
ER要定义成位字节吧。。。。

使用特权

评论回复
板凳
litengg| | 2016-5-24 21:40 | 只看该作者
E&&0x02而非E&0x02,后者改变E值了。

使用特权

评论回复
地板
androidbus| | 2016-5-24 21:42 | 只看该作者
这个ER必须要定义成位字节吗?

使用特权

评论回复
5
androidbus| | 2016-5-24 21:47 | 只看该作者
本帖最后由 androidbus 于 2016-5-24 21:56 编辑

哦 对的,是我想错了,,
ER要定义成位字节。。

使用特权

评论回复
6
shashaa|  楼主 | 2016-5-24 21:48 | 只看该作者
后来用一个for语句和一个常量写 意思一样 不知道为什么就可以用了

for(i=0;i<8;i++)
{
        if((E&Err_List[i])==Err_List[i])
        {
                ER[i]=1;
        }
        else
        {
                ER[i]=0;
        }
}

使用特权

评论回复
7
feiqi1| | 2016-5-24 21:55 | 只看该作者
这个 ,问题感觉也是挺奇怪的,看来楼主问题解决了哈。

使用特权

评论回复
8
xia00| | 2016-5-24 22:00 | 只看该作者
看看,还是没明白楼主问题的关键所在!!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

142

主题

1494

帖子

6

粉丝