我是想通过ACC输出0x05,
sbit ACC7=ACC^7;
uchar read_da1302_byte() //这种写法可以返回0x05;
{
ACC7=1;
ACC=ACC>>1;
ACC7=0;
ACC=ACC>>1;
ACC7=1;
ACC=ACC>>1;
ACC7=0;
ACC=ACC>>1;
ACC7=0;
ACC=ACC>>1;
ACC7=0;
ACC=ACC>>1;
ACC7=0;
ACC=ACC>>1;
ACC7=0;
return ACC;
}
///////////////////////////////////////////////////////
uchar read_da1302_byte() //这样写就不行了呢?
{
uchar i;
for(i=0;i<8;i++)
{
ACC=ACC>>1;
switch(i)
{
case 0:ACC7=1;break;
case 1:ACC7=0;break;
case 2:ACC7=1;break;
case 3:ACC7=0;break;
case 4:ACC7=0;break;
case 5:ACC7=0;break;
case 6:ACC7=0;break;
case 7:ACC7=0;break;
}
}
return(ACC);
}
这两种写法有区别吗? 请指教!
没有人能帮忙吗?
一楼的那位朋友,我只是想知道上面那两种程序写法区别在哪里,为什么第一种写法可以通过位赋值给ACC^7,移位,最后是使ACC变为00000101(0x05);
第二种只是换了种方法赋值给ACC^7,却不能使ACC变为00000101(0x05)呢?
(二楼的,你那种方法移位移了八次,最后的值还是不对,从最高位到最低位只要移动7次就够了)
我想应该从单片机角度着手吧,不能单从C语言........