找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

關(guān)于單片機(jī)延時程序的小問題

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:366764 發(fā)表于 2018-10-18 20:57 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
void delay10ms(void)  
{
    unsigned char a,b,c;
    for(a=1;a>0;a--)
        for(b=38;b>0;b--)
            for(c=130;c>0;c--);

void delay10ms(void)  
{
    unsigned char a,b;
    for(a=38;a>0;a--)
        for(b=130;b>0;b--);
  求解釋這倆有什么本質(zhì)上的區(qū)別嗎?   同樣都是延時一樣的時間,但這兩種寫法都有見過,不知道只是個人習(xí)慣上的問題,還是有什么更專業(yè)的區(qū)別。



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:213173 發(fā)表于 2018-10-19 07:40 | 只看該作者
1. T=a*b*c
2. T=a*b
回復(fù)

使用道具 舉報

板凳
ID:164602 發(fā)表于 2018-10-19 08:39 | 只看該作者
其實是一樣的。
第一種情況,多一個循環(huán),但只循環(huán)一次,與第二種相差的時間可以忽略。
回復(fù)

使用道具 舉報

地板
ID:155507 發(fā)表于 2018-10-19 10:57 | 只看該作者
都是軟件延時,阻塞延時,就相當(dāng)于CPU在空跑。

1. 新手的程序都是While大循環(huán)里,而且代碼執(zhí)行時間也比較短,這個時候用軟件延時看不出來明顯的差異。

2. 一般不建議使用軟件延時,因為CPU的資源是有限的,軟件延時就相當(dāng)于CPU在空跑,當(dāng)程序比較龐大的時候,許多程序處理不過來,根本沒有多余的時間給你去延時。

3. 可以用定時器,如定時1ms,然后把程序分為1ms的任務(wù),2ms的任務(wù),4ms的任務(wù),分時去操作,當(dāng)你需要延時的時候,就在里邊搞個計數(shù),時間到再去執(zhí)行。

回復(fù)

使用道具 舉報

5#
ID:401564 發(fā)表于 2018-10-19 17:02 | 只看該作者
本質(zhì)上是有區(qū)別的,就看你單片機(jī)的時鐘頻率了
前面一個函數(shù)用了三個變量,在編譯的時候,單片機(jī)延時會用到三個地址,后面的函數(shù)用了兩個變量,同理,編譯時就用到兩個地址。這樣一來,前面一個函數(shù)就比后面的函數(shù)多用幾個時鐘來初始化那多出來的一個地址,至于會用到幾個時鐘,不知道,也許就現(xiàn)一兩個時鐘吧。
如果你晶振是MHZ級別的,那區(qū)別也就幾uS或者0.幾uS,對于100mS的延時來說,沒有什么差別,如果你用的是KHZ級別的時鐘,那相差就是0.幾mS了。
只要有指令,編譯器就會編譯,就算是沒有什么用的指令,單片機(jī)也一樣的執(zhí)行,一樣的用上一定的時間。
回復(fù)

使用道具 舉報

6#
ID:300212 發(fā)表于 2018-10-19 22:20 來自手機(jī) | 只看該作者
沒有區(qū)別,你這個延遲函數(shù)應(yīng)該是軟件一鍵生成的,這是方便一鍵生成而加的循環(huán),實際上道理都是一樣的
回復(fù)

使用道具 舉報

7#
ID:412533 發(fā)表于 2018-10-19 23:44 | 只看該作者
其實也很簡單啊,復(fù)制就行,比如這個說。
回復(fù)

使用道具 舉報

8#
ID:412575 發(fā)表于 2018-10-20 08:35 | 只看該作者
第一種for循環(huán)只執(zhí)行一次,寫不寫意義不大,只占用一個一個執(zhí)行周期,理論上講第一種比第二種延時時間長一點,用示波器可以看出兩個信號的微小區(qū)別
回復(fù)

使用道具 舉報

9#
ID:412601 發(fā)表于 2018-10-20 09:43 來自手機(jī) | 只看該作者
多了一個地址出來
回復(fù)

使用道具 舉報

10#
ID:357520 發(fā)表于 2018-10-20 11:29 | 只看該作者
第二種可以少寫一句話,看著也舒服
回復(fù)

使用道具 舉報

11#
ID:412662 發(fā)表于 2018-10-20 11:52 | 只看該作者
幾乎沒有差別
回復(fù)

使用道具 舉報

12#
ID:412694 發(fā)表于 2018-10-20 13:40 | 只看該作者
沒有區(qū)別,都是通過來執(zhí)行這些for循環(huán)來占用時間,從而達(dá)到一定延時的效果
回復(fù)

使用道具 舉報

13#
ID:147024 發(fā)表于 2018-10-20 23:04 | 只看該作者
1*38*130與38*130的區(qū)別,你說有區(qū)別沒有
回復(fù)

使用道具 舉報

14#
ID:412964 發(fā)表于 2018-10-21 08:31 | 只看該作者
為啥寫這么復(fù)雜,寫i<N  不是更好么?簡單。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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