51单片机如何读取二进制中的每一位?
char a;
char sz[8];
a=0x61;
for(i=0;i<8;i++)
{
sz[i]=???
}
如何才能取出 a (十六进制的0x61,二进制的01100001)
这个二进制中的每一位并放到sz(数组)中
我要得到的数组结果为
sz[0]=0
sz[1]=1
sz[2]=1
sz[3]=0
sz[4]=0
sz[5]=0
sz[6]=0
sz[7]=1
同样的我如何再返回去
通过一个表示二进制的数组 变成 一个16进制数
我的目的是用一个IO口分8次显示一个16进制数
例如上面的a
就依次显示
灭亮亮灭灭灭灭亮
每次显示一秒钟分8秒钟显示完成
小弟刚试玩单片机没有什么概念,望高手指点一二
[解决办法]
unsigned char A = 0x61;
unsigned char cont = 0x01;//索引
for(i = 0; i < 8; i++, cont <<= 1)
{
if (cont & A)
sz[i] = 1;
else
sz[i] = 0;
}
大概这个样子,反回去那就自己想想看怎么弄
[解决办法]
unsigned char A = 0x61;
unsigned char cont = 0x80;
for(i = 0; i < 8; i++)
{
if (cont & A)
sz[i] = 1;
else
sz[i] = 0;
A <<= 1;
}
unsigned char temp=0;
for(i=0;i<8;i++)
{
temp >>= 1;
if(sz[i])
{
temp |= 0x80;
}
}
return temp;
[解决办法]