标题:
单片机+SPI-E2PROM读取的程序问题
[打印本页]
作者:
wps10025
时间:
2021-11-22 22:00
标题:
单片机+SPI-E2PROM读取的程序问题
对25AA02的读写底层读程序这样:
unsigned char EE_Read_Byte()
{
unsigned char dat;
unsigned char i;
for(i=0;i<8;i++)
{
dat<<=1;
AA_SCK=0;
AA_SCK=1;
if(SO!=0)
{
dat=dat|0x01;
}
else
{
dat=dat&0xfe;
}
}
return dat;
}
仿真结果是255
unsigned char EE_Read_Byte()
{
unsigned char dat;
unsigned char i;
for(i=0;i<8;i++)
{
AA_SCK=0;
AA_SCK=1;
if(SO!=0)
{
dat=dat|0x01;
}
else
{
dat=dat&0xfe;
}
dat<<=1;
}
return dat;
}
仿真结果是254
有没有大神指点一下,为什么移位操作位置不同会丢个1?
作者:
188610329
时间:
2021-11-22 22:52
如果移位再最后,
那么,做完最后一次 dat |= 0x01,之后, 假定是 0xFF; 即 11111111 。 你再次移位, 最高位移出,最低为补0, 就变成了 0xFE 即 11111110, 同理,由于移位的时候,都是最高位舍弃,最低为补0 所以你的 else 是不需要的,只要判断了 SO == 1 然后 dat |= 0x01; 即可, 因为你不给最低位置1,最低位就是默认的0。
作者:
wps10025
时间:
2021-11-23 06:30
188610329 发表于 2021-11-22 22:52
如果移位再最后,
那么,做完最后一次 dat |= 0x01,之后, 假定是 0xFF; 即 11111111 。 你再次移位 ...
多谢多谢,明白了
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1