找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1480|回復: 2
打印 上一主題 下一主題
收起左側(cè)

單片機+SPI-E2PROM讀取的程序問題

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:578842 發(fā)表于 2021-11-22 22:00 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
對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;

}

仿真結(jié)果是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;

}

仿真結(jié)果是254


有沒有大神指點一下,為什么移位操作位置不同會丟個1?

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:624769 發(fā)表于 2021-11-22 22:52 | 只看該作者
如果移位再最后,

那么,做完最后一次  dat |= 0x01,之后, 假定是 0xFF;  即 11111111 。 你再次移位, 最高位移出,最低為補0, 就變成了 0xFE 即 11111110, 同理,由于移位的時候,都是最高位舍棄,最低為補0 所以你的 else 是不需要的,只要判斷了 SO == 1    然后 dat |= 0x01; 即可, 因為你不給最低位置1,最低位就是默認的0。

評分

參與人數(shù) 1黑幣 +15 收起 理由
wps10025 + 15 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

板凳
ID:578842 發(fā)表于 2021-11-23 06:30 | 只看該作者
188610329 發(fā)表于 2021-11-22 22:52
如果移位再最后,

那么,做完最后一次  dat |= 0x01,之后, 假定是 0xFF;  即 11111111 。 你再次移位 ...

多謝多謝,明白了
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表