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

QQ登錄

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

搜索
查看: 2240|回復(fù): 2
收起左側(cè)

普中es V2.0 開(kāi)發(fā)板的IIC發(fā)送程序是不是有問(wèn)題?

[復(fù)制鏈接]
ID:135253 發(fā)表于 2017-9-17 10:53 | 顯示全部樓層 |閱讀模式
unsigned char I2cSendByte(unsigned char dat)
{
        unsigned char a=0,b=0;//最大255,一個(gè)機(jī)器周期為1us,最大延時(shí)255us。               
        for(a=0;a<8;a++)//要發(fā)送8位,從最高位開(kāi)始
        {
                SDA=dat>>7;         //起始信號(hào)之后SCL=0,所以可以直接改變SDA信號(hào)
                dat=dat<<1;
                Delay5us();
                SCL=1;
                Delay5us();//建立時(shí)間>4.7us
                SCL=0;
                Delay5us();//時(shí)間大于4us               
        }
        SDA=1;
        Delay5us();
        SCL=1;
        while(SDA)//等待應(yīng)答,也就是等待從設(shè)備把SDA拉低
        {
                b++;
                if(b>200)         //如果超過(guò)2000us沒(méi)有應(yīng)答發(fā)送失敗,或者為非應(yīng)答,表示接收結(jié)束
                {
                        SCL=0;
                        Delay5us();
                        return 0;
                }
        }
        SCL=0;
        Delay5us();
         return 1;               
}
如果是這樣,不論有無(wú)應(yīng)答,返回都是1
回復(fù)

使用道具 舉報(bào)

ID:164602 發(fā)表于 2017-9-18 08:34 | 顯示全部樓層
看到這段程序沒(méi)?
while(SDA)//等待應(yīng)答,也就是等待從設(shè)備把SDA拉低
        {
                b++;
                if(b>200)         //如果超過(guò)2000us沒(méi)有應(yīng)答發(fā)送失敗,或者為非應(yīng)答,表示接收結(jié)束
                {
                        SCL=0;
                        Delay5us();
                        return 0;
                }
        }
執(zhí)行這段程序,就返回0啊。
只要執(zhí)行了return,那么,子函數(shù)就返回了,不會(huì)再執(zhí)行其它子函數(shù)的語(yǔ)句了。
回復(fù)

使用道具 舉報(bào)

ID:233755 發(fā)表于 2017-9-18 09:35 | 顯示全部樓層
對(duì)著手冊(cè)看時(shí)序了嗎?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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