找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2505|回復(fù): 7
打印 上一主題 下一主題
收起左側(cè)

時序的書寫理解

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:223571 發(fā)表于 2017-12-20 12:06 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式

void I2cStart()
{
        SDA=1;                 (第一行)        
        Delay10us();
        SCL=1;
        Delay10us();//建立時間是SDA保持時間>4.7us   (第4行)
        SDA=0;
        Delay10us();//保持時間是>4us
        SCL=0;                       
        Delay10us();               
}



以上是做I2C實驗的時候起始信號,問題:
(第4行)延時十個微秒的時候,是不是(第一行) 也延時了十個微秒,也就是二十個微秒?
對于用C書寫時序一直很蒙蔽,時序涉及到同一時間段兩個變量并行操作,而C語言只有一條一條語句執(zhí)行,怎么同一時間反映兩個變量的操作呢?
懇請各位指點迷津
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:123289 發(fā)表于 2017-12-20 20:49 | 只看該作者
估計未來你能將計算機(jī)速度做到世界最快,因為你能將兩條命令執(zhí)行的間隔時間做到0.
回復(fù)

使用道具 舉報

板凳
ID:258226 發(fā)表于 2017-12-20 21:02 | 只看該作者
如果單片機(jī)指令速度很快可以忽略不計(至少相比你的delay延時而言)。那么兩個相鄰操作可以認(rèn)為是同時的,實際上確實有執(zhí)行的先后,為了避免誤動作,順序還是要的。mcu的內(nèi)核就是個順序執(zhí)行指令的東西,而且要往絕對了哪怕FPGA算上內(nèi)部走線時延也不是并行了。
回復(fù)

使用道具 舉報

地板
ID:111634 發(fā)表于 2017-12-20 22:26 | 只看該作者
樓主理解錯了!在時鐘線SCL高電平期間,數(shù)據(jù)線SDA出現(xiàn)下降沿,啟動I2C總線傳送數(shù)據(jù)。在時鐘線SCL高電平期間,數(shù)據(jù)線SDA的電平不能變化,否則,將被認(rèn)為是一個起始信號S或終止信號P,引起出錯。因此,若需改變數(shù)據(jù)線SDA的電平,必須先拉低時鐘線SCL電平。
回復(fù)

使用道具 舉報

5#
ID:223571 發(fā)表于 2017-12-25 09:07 | 只看該作者
yzwzfyz 發(fā)表于 2017-12-20 20:49
估計未來你能將計算機(jī)速度做到世界最快,因為你能將兩條命令執(zhí)行的間隔時間做到0.

我的意思是時鐘語句和程序的執(zhí)行語句的執(zhí)行順序是怎么樣的?
像74hc165實驗,數(shù)據(jù)上升沿觸發(fā)才從165出來,那么執(zhí)行語句位置有幾種書寫方式呢?是夾在時鐘語句里面,還是時鐘后面?最終我的想法是讓單片機(jī)識別到我是一個上升沿來了,然后移出一位數(shù)據(jù),懇請指正。
回復(fù)

使用道具 舉報

6#
ID:223571 發(fā)表于 2017-12-25 09:20 | 只看該作者
安心1x2 發(fā)表于 2017-12-20 21:02
如果單片機(jī)指令速度很快可以忽略不計(至少相比你的delay延時而言)。那么兩個相鄰操作可以認(rèn)為是同時的, ...

” 那么兩個相鄰操作可以認(rèn)為是同時的,實際上確實有執(zhí)行的先后,為了避免誤動作,順序還是要的!
SCK = 0;                           //時鐘置0                           
  _nop_();                                 //一個機(jī)器周期
indata |= IN_Data;       
SCK = 1;


//按照你的意思,我可以將上面的時鐘上升沿觸發(fā)的語句改為如下也沒有問題?
SCK = 0;                           //時鐘置0                           
  _nop_();                                 //一個機(jī)器周期
SCK = 1;
indata |= IN_Data;       

你說到了我的點子上,關(guān)鍵是這個順序該如何把握?謝謝,回答。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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