欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5502|回復: 13
打印 上一主題 下一主題
收起左側

關于單片機延時程序的小問題

  [復制鏈接]
跳轉到指定樓層
樓主
ID:366764 發表于 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--);
  求解釋這倆有什么本質上的區別嗎?   同樣都是延時一樣的時間,但這兩種寫法都有見過,不知道只是個人習慣上的問題,還是有什么更專業的區別。



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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

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

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

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

回復

使用道具 舉報

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

使用道具 舉報

6#
ID:300212 發表于 2018-10-19 22:20 來自觸屏版 | 只看該作者
沒有區別,你這個延遲函數應該是軟件一鍵生成的,這是方便一鍵生成而加的循環,實際上道理都是一樣的
回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

9#
ID:412601 發表于 2018-10-20 09:43 來自觸屏版 | 只看該作者
多了一個地址出來
回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表