第一种情况:
void write_byte(uchar *date)//data指向数据首地址
{ uchar i,j,a[4],b;
i=*date;
for(i=0;i<8;i++)
{
for(j=0;j<4;j++)
{
a[j]=( ( *(date+j) ) >>i ) & 0x01; //分开存放四字节的位值
}
write_bit(a);
}
}
第二种情况:
void write_byte(uchar *date)//data指向数据首地址
{ uchar i,j,a[4],b;
i=*date;
}
为什么在keil软件仿真时候第一情况里面i的数值没有变化,第二种情况里i的数值变为*date。 是不是keil优化掉了,可是这违反了哪个规定,才导致被优化。
注:被优化是我遐想出来的。
还请各路高手不吝赐教! |