找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索

I2C 為啥有的程序沒(méi)被編譯

查看數(shù): 1783 | 評(píng)論數(shù): 4 | 收藏 0
關(guān)燈 | 提示:支持鍵盤翻頁(yè)<-左 右->
    組圖打開(kāi)中,請(qǐng)稍候......
發(fā)布時(shí)間: 2023-10-8 16:56

正文摘要:

#include <reg51.h> #include <intrins.h> #define uchar   unsigned char   #define uint    unsigned int sbit SDA=P3^6;     //模擬I2C數(shù)據(jù)傳送 ...

回復(fù)

ID:611626 發(fā)表于 2023-10-9 08:43
  1.   delayus(2);
  2. //請(qǐng)教122行,這里SDA賦值1
  3.      SDA=1;                                  //8位發(fā)送完后釋放數(shù)據(jù)線,準(zhǔn)備接收應(yīng)答位
  4.     delayus(2);  
  5.      SCL=1;
  6.      delayus(3);
  7. //這里豈不是每次都讀取失敗,ACK返回0
  8.      if(SDA==1)
  9.          ack=0;   
  10. //這個(gè)函數(shù)豈不是執(zhí)行不到底
  11. uchar read_current()
  12. {
  13.      uchar read_data;
  14.      Start_I2C();
  15.      SendByte(DS3231_ReadAddress);
  16.      if(ack==0)
  17.          return(0);
復(fù)制代碼
ID:883242 發(fā)表于 2023-10-8 19:21
lkc8210 發(fā)表于 2023-10-8 18:19
被優(yōu)化掉,加試試volatile

明顯是Keil C51,這個(gè)編譯器假設(shè)用戶都不懂volatile這個(gè)關(guān)鍵字,寫不寫都一樣。
ID:611626 發(fā)表于 2023-10-8 18:40
lkc8210 發(fā)表于 2023-10-8 18:19
被優(yōu)化掉,加試試volatile

還是讀取不到數(shù)據(jù)
ID:161164 發(fā)表于 2023-10-8 18:19
被優(yōu)化掉,加試試volatile
  1. //延時(shí)
  2. void delayus(volatile uint us)
  3. {
  4.     while (us--);
復(fù)制代碼

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

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

快速回復(fù) 返回頂部 返回列表