標題: 單片機24c02讀取問題 有幾句源代碼不理解 [打印本頁]

作者: Yubug    時間: 2018-4-8 17:49
標題: 單片機24c02讀取問題 有幾句源代碼不理解
uchar iicre_byte(void)  
{  
uchar i;
uchar dat;
scl=0;  
delay();  
sda=1;  
delay(); //////////???????????
     for(i=0;i<8;i++)  
     {  
        scl=1;  
        delay();  
        dat=dat<<1;  
        if(sda)  
       {  
        dat++;
       }  
        scl=0;  
       delay();  
      }  
return dat;
}




uchar read_byte()
{
                uchar i,k;


                for(i=0;i<8;i++)
                {
                scl=1;      
                k=(k<<1)|sda;   
                scl=0;
                }
                scl=0;
                sda=1;
                return k;
}
這兩個程序都可以完成讀取。第一個for前面加的scl,delay,sda,delay是什么意思?要不要不是都行嗎,求指點。


作者: Yubug    時間: 2018-4-8 22:05
或者說按我的理解應(yīng)該放在for語句后面~~~前后一樣?
作者: 51jia    時間: 2018-4-8 23:47
個人覺得,怎么寫代碼沒關(guān)系,只要能滿足I2C協(xié)議條件就行。
作者: arthuryu    時間: 2018-4-9 07:57
前面一個比較安全。后面一個與主頻相關(guān)。因為I2C協(xié)議對時間間隔是有要求的。
作者: HC6800-ES-V2.0    時間: 2018-4-9 08:29
你將I2C通訊時序搞清楚了,這些語句及排列就可以搞明白了。
第一個程序,可能有程序員自己的習慣,編寫的程序留有余地——時鐘信號與數(shù)據(jù)信號間,留了反應(yīng)時間。
第二個程序,有全盤考慮,在其它操作時,已經(jīng)先確定了兩線的信號,所以這里不再設(shè)置。

可以這樣說:第一個程序移植性較好,第二段程序移植性不好。你可以在網(wǎng)上找找I2C的通用程序,那個移植性肯定非常好,對照一下,可以學(xué)到很多東西。
作者: Yubug    時間: 2018-4-9 08:52
51jia 發(fā)表于 2018-4-8 23:47
個人覺得,怎么寫代碼沒關(guān)系,只要能滿足I2C協(xié)議條件就行。

我刪掉第九位sda的置高程序也沒有問題~干了,條件這么寬松嗎,還是我沒有真正理解?
作者: werrfccd    時間: 2018-4-9 10:01
嚴格按照時序來寫就沒錯
作者: 1433864957    時間: 2018-4-9 10:45
zh俄格問題有點難,研究研究
作者: 自強不息的波波    時間: 2018-4-9 13:29
適當?shù)亩虝貉訒r有助于系統(tǒng)穩(wěn)定,適當重復(fù)操作可以提高系統(tǒng)的耐操性。高手寫的程序和新手寫的程序的差別。
作者: Yubug    時間: 2018-4-9 14:19
HC6800-ES-V2.0 發(fā)表于 2018-4-9 08:29
你將I2C通訊時序搞清楚了,這些語句及排列就可以搞明白了。
第一個程序,可能有程序員自己的習慣,編寫的 ...

謝謝了。
我查了查,他們說第一個的那幾句是置數(shù)據(jù)線為輸入方式。最近有點忙,有時間在細細的查查
作者: 51jia    時間: 2018-4-9 23:26
Yubug 發(fā)表于 2018-4-9 08:52
我刪掉第九位sda的置高程序也沒有問題~干了,條件這么寬松嗎,還是我沒有真正理解?

I2C協(xié)議只要時間大于4.7us就行。
作者: hulujia    時間: 2018-4-10 16:55
這個學(xué)習的時候老師說得有5us的時延,有嚴格的時序,你可以看看時序圖




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1