找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6692|回复: 7
收起左侧

请教个51单片机16进制转2进制的问题

[复制链接]
ID:47286 发表于 2016-5-21 14:21 | 显示全部楼层 |阅读模式
我想用一个字节的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;
}

回复

使用道具 举报

ID:114189 发表于 2016-5-23 03:12 来自触屏版 | 显示全部楼层
ER要定义成位字节
回复

使用道具 举报

ID:22218 发表于 2016-5-24 06:38 | 显示全部楼层
E&&0x02而非E&0x02,后者改变E值。
回复

使用道具 举报

ID:122786 发表于 2016-5-24 09:37 | 显示全部楼层
ER要定义成位字节
回复

使用道具 举报

ID:47286 发表于 2016-5-24 14:52 | 显示全部楼层
Action 发表于 2016-5-23 03:12
ER要定义成位字节

谢谢回复

ER是 unsigned char ER[8];这样定义的 然后在1602显示语句用 用
回复

使用道具 举报

ID:47286 发表于 2016-5-24 14:54 | 显示全部楼层
chinomango 发表于 2016-5-24 06:38
E&&0x02而非E&0x02,后者改变E值。

谢谢回复

原本用的是& 当时死活不行 实在想不出原因就用&&试一下 纯粹是瞎搞
回复

使用道具 举报

ID:47286 发表于 2016-5-24 14:59 | 显示全部楼层
汇报一下结果

后来用一个for语句和一个常量写 意思一样 不知道为什么就可以用了

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

使用道具 举报

ID:122902 发表于 2016-5-24 16:32 | 显示全部楼层
ER要定义成位字节
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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