音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

郁悶死了。。

作者:jingfan 欄目:單片機(jī)
郁悶死了。!
各位兄弟:小弟近日用C51寫AT24C16的讀寫程序,但兩天了,用盡了各種方法就是無法正確讀。ㄐ〉芟扔镁幊唐髟2416中寫入固定值為了更好驗證)。因為我用的片子無法用仿真器單步調(diào)試,只能編譯后在線下裝下去看運(yùn)行結(jié)果。哪位清楚多幫忙,簡直郁悶死我了。

2樓: >>參與討論
ljw.06
呵呵
 沒得必要郁悶的

3樓: >>參與討論
jingfan
請多多捧場。
 
4樓: >>參與討論
mabaoqiu
編一個程序:
讀的正確就亮燈,不對燈就閃爍,就知道是否寫的正確了!
(簡單的話,在p1口上接個led就可以了!)

5樓: >>參與討論
jingfan
進(jìn)一步說明
我曾經(jīng)參考了網(wǎng)上多個例子,但沒有一個可以直接解決問題,對照時序圖也都檢查了,但就是不知問題出來哪里。我的試驗版本起碼有3個了,沒有一個好用。但同樣是串行E2,寫5043時參考例子一次就成功了。簡直煩透了。!

6樓: >>參與討論
yang96381
你在哪里,如果在西安的話我可以幫助你!
關(guān)鍵是吃透協(xié)議,時序要求比較嚴(yán)格!!!不妨先用匯編試一下!!!

7樓: >>參與討論
yang96381
呵呵,自己動手,豐衣足食!!!
 
8樓: >>參與討論
jingfan
請繼續(xù)指教
多謝各位捧場,今天又準(zhǔn)備試驗了一下。還望各位給點解決問題的建議。我現(xiàn)在寫入了固定值,但讀出來總是0XFF,肯定是不對的,但不清楚錯在什么地方!

9樓: >>參與討論
jingfan
在此呼喚
高人:幫忙看一下我的程序有何問題。
void StartI2c(void)
{
  uchar i;
  IO2416SDA=IO2416SCL=1;
  for(i=0;i<2;i++);
  IO2416SDA=0;
  for(i=0;i<2;i++);
  IO2416SCL=0;
}
//終止IIC通訊
void EndI2c(void)
{
  uchar i;
  IO2416SDA=0;
  IO2416SCL=1;
  for(i=0;i<2;i++);
  IO2416SDA=1;
}
uchar Read2416()
{
  uchar i,n;

  n=0x00;
  for ( i=0x80; i>=0x01; i=i>>1 )
  {
    IO2416SCL = 1;
    IO2416SDA = 1;    //置 SDA 為讀
    IO2416SCL = 0;
    if ( IO2416SDA == 1 ) n = ( n | i );
  }
  return( n );
}
void Write2416(uchar n)
{
  uchar i;

  for ( i=0x80; i>=0x01; i=i>>1 )
  {
    IO2416SCL = 0;     //SCL=0
    if ( ( n & i ) == 0 )
      IO2416SDA = 0;
    else IO2416SDA = 1;//置SDA
    IO2416SCL = 1;     //SCL=1
    IO2416SDA=0;       //清SDA
  }
  //IO2416SCL=0;
  IO2416SDA=1;//釋放SDA總線
  Delayms(1);
  IO2416SCL=1;//SCL上升沿I2C輸出ACK應(yīng)答
  Delayms(2);
  //while(IO2416SDA==1){}//SDA==0為ACK應(yīng)答信號
  IO2416SCL=0;//結(jié)束ACK應(yīng)答信號接收
  Delayms(1);
}
void Read(void)
{
  StartI2c;
  Delayms(1);
  Write2416(0xa0);
  Delayms(1);
  Write2416(0x00);
  Delayms(1);
  StartI2c;
  Delayms(1);
  Write2416(0xa1);
  Delayms(1);
  AddrNo=Read2416();
  Delayms(1);
  EndI2c;
}
我現(xiàn)在就是在2416中寫入了定值,如00中寫入11,然后進(jìn)行讀操作,但總是返回0XFF,關(guān)鍵可能是write2416函數(shù)中等待應(yīng)答信號的地方,因為我只要打開這行程序,則程序就進(jìn)入了死循環(huán),也就是總是沒有應(yīng)答信號,望高人指點!


10樓: >>參與討論
angelp
RE
要保證SDA和SCL的時序的嚴(yán)格,盡量保持高低電平時間相等,典型值T高=T低=47us

11樓: >>參與討論
jingfan
多謝指教,試驗一下
我看時序圖對于電平時間沒有最大值的要求,因此為保險計就給了毫秒級的延時,我試驗一下47US延時。

12樓: >>參與討論
jingfan
還是不行啊
剛剛試驗了一下,改成47us還是不行啊,肯定是我的程序中有問題,而且極有可能就出在  
  IO2416SDA=1;//釋放SDA總線
  for(j=0;j<15;j++);
  IO2416SCL=1;//SCL上升沿I2C輸出ACK應(yīng)答
  //while(IO2416SDA==1){}//SDA==0為ACK應(yīng)答信號
  IO2416SCL=0;//結(jié)束ACK應(yīng)答信號接收
這幾行上。請諸位多幫忙。

13樓: >>參與討論
jingfan
繼續(xù)呼吁
 
14樓: >>參與討論
jingfan
隔了一天來看還是沒人給予指點,繼續(xù)請教!
 
15樓: >>參與討論
yuntian
程序操作前要查CLK SDA是否為高電平,否則不操作
 
16樓: >>參與討論
shengm
re
  首先,電路要對,SDA和SCL要有上拉電阻。再是保證操作時是SCL低才改變SDA,你的程序好象有點亂,不好看下去。

17樓: >>參與討論
chen_alex
堅決擁護(hù)yang96381。
 
18樓: >>參與討論
polestar95
Re:

先確定你的電路是正確的,比如上拉,端口定義,供電等。
按理說網(wǎng)上的程式應(yīng)該可以用的,更何況你有三個啊。
不過,看你上面的程式,為什么read/write時,SDA/SCL電平轉(zhuǎn)換時都不加延時?
要是用12MHZ晶體,時間應(yīng)該不夠的。
在每次操作SDA/SCL的指令后都加個delay,比如5us試試。

19樓: >>參與討論
jingfan
多謝各位老大,請繼續(xù)幫忙
多謝各位老大幫忙,這兩天出差了。剛剛回來,我用了一段程序用PL/M語言寫好在196芯片下調(diào)試運(yùn)行,對于2416的讀寫都沒有問題。但同樣的程序翻譯為C語言后在51下運(yùn)行則沒有反應(yīng)。51我用的9.6M晶振,只是因為沒有辦法跟蹤調(diào)試才導(dǎo)致現(xiàn)在的局面。實在不行我只能去看看哪里可找到普通51的板子,寫好C程序調(diào)試通過后再在自己的板子上運(yùn)行吧。如果各位有可以直接通過的程序萬望指教。

20樓: >>參與討論
bh_wang
re:
1.線路有無問題
2.嚴(yán)格按照IIC協(xié)議寫﹐檢查時序
3.檢查read/write時﹐EEPROM有無ack

4.太亂了~~~

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
各位這次大家真的要幫幫小妹的忙呀!千恩萬謝!
請問,單片機(jī)的電壓監(jiān)視芯片,大家用些什么型號的芯片?
把P1.1輸出的1.5kHz的報警信號放大,選什么ic?
請大俠指點方案的可行性
單片機(jī)與IBM/PC機(jī)硬盤驅(qū)動器的接口
免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號