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

標題: 單片機初學者請教軟件延時和定時器延時的區別? [打印本頁]

作者: lwhmgp    時間: 2018-11-23 19:51
標題: 單片機初學者請教軟件延時和定時器延時的區別?
對于軟件延時還是定時器延時有點疑惑,為什么說定時器延時不占用單片機時間,書上和視頻中都說軟件延時占用單片機的掃描時間,會錯過一些事件,不都是起一個延時的效果嗎,比如 led=0;delay();led=1;delay(); ........
比如第一個delay()不論是軟件延時還是定時器延時,都得把延時函數執行完才會執行下一步吧,如像書上和視頻中說的定時器延時不占用掃描時間,哪豈不是就跳過delay() 函數了,哪還有什么意義。
作者: 背球客    時間: 2018-11-23 21:36
定時器延時會使程序進入中斷,中斷進行中,主程序并不會運行,所以沒問題
作者: 冰冰潔潔    時間: 2018-11-24 07:44
定時器有專用寄程器的,如你的主程序隨便運行,只要定時中斷一到就會叫停主程序而執行行定時中斷,這個中斷可以是點個小燈。如你主程序不停取反閃爍一個燈,定時一到就長亮。你看這不就是你主程序一直運行取反,無論定時到的那一會燈是什么狀態,他都會常亮。這樣理行能行嗎?

作者: lwhmgp    時間: 2018-11-24 08:07
背球客 發表于 2018-11-23 21:36
定時器延時會使程序進入中斷,中斷進行中,主程序并不會運行,所以沒問題

你的意思是程序是在中斷中進行的,可主程序中往往有很多的狀態要掃描的,你說主程序在這個時候是不運行的,哪不是主程序的掃描停止了嗎,哪和軟件延時還有什么區別,都是停在delay不往下進行,都會錯過一些狀態的,我的疑惑就在這兒.
作者: phang    時間: 2018-11-24 09:21
1軟件延時:
其他執行  --------           --------
延時執行             --------          --------
    看到軟件延時像是一般其他執行那樣,會占用時間的

2定時器延時:
其他執行 ------- - - - -   --------  - - - -  --------
延時執行         - - - - -            - - - - -
   看到,在定時器計數時,單片機是在做著其他工作,知道定時器加1一次,才回到定時器延時執行。

大概就這么個理解,要深入理解,變成自己的知識,還是多寫代碼多看書。
作者: angmall    時間: 2018-11-24 09:21
用軟件延時,CPU 循環執行一小段延時程序。
浪費 CPU 的精力。

用定時器定時,CPU 就可以干別的。
作者: angmall    時間: 2018-11-24 09:26
1、軟件循環延時:采用循環語句,如for,while等,進行長時間的空操作,或者空語句。
優點:程序理解簡易,入手快,新手必備武器!
缺點:時間精度不高,且占用單片機大量時間資源,引發其它子函數的不流暢(卡滯、遲鈍),導致系統實時反應能力下降。
2、定時延時:采用定時器定時,如T0,T1;
優點:時間精度高,提高系統程序執行的高效性,不影響子函數的正常運行。
缺點:需占用1個定時器資源(可以復用),需良好程序構架支持,入手難。
個人建議:一旦學會定時器,就不應該再使用“循環延時”函數,采用定時器才是正道。如果對延時精度要求不高,建議使用結構體組成多個延時體。

作者: Sea海    時間: 2018-11-24 09:31
用軟件定時,CPU 循環執行一小段延時程序。 浪費 CPU 的精力。 用定時器定時,CPU 就可以干別的。
作者: 冰冰潔潔    時間: 2018-11-24 10:05
lwhmgp 發表于 2018-11-24 08:07
你的意思是程序是在中斷中進行的,可主程序中往往有很多的狀態要掃描的,你說主程序在這個時候是不運行的, ...

那是對的,但中斷所以才分優先級別,中斷還可以被另一個中斷高級別叫停,回歸,但延時就只能等待,
作者: 冰冰潔潔    時間: 2018-11-24 10:10
lwhmgp 發表于 2018-11-24 08:07
你的意思是程序是在中斷中進行的,可主程序中往往有很多的狀態要掃描的,你說主程序在這個時候是不運行的, ...

所以我們才會引入N多中斷優先級,防止延時或者大量不應答器件,死在那里,使得主程序停止,中斷有時等于你認為的延
作者: azhaozhijia    時間: 2018-11-24 13:51
軟件延時說白了就是浪費CPU時間而且還有很大的機械抖動,而定時器就不一樣他是單片機的內部定時就好像你要2MS的延時,定時器就像CPU雇傭的工人2MS
作者: BWxiaozhang    時間: 2018-11-24 14:15
軟件延遲一般時間不精準,定時器就比較準
作者: 6467778399    時間: 2018-12-11 17:08
精度不一樣
作者: DA柱    時間: 2018-12-11 17:22
軟件延時會占用cpu,定時器延時的話就好比你在工作的時候還有個小助手來幫你,不用經常打斷你的工作
作者: 昆明路口賣提莫    時間: 2018-12-11 19:00
延時函數時CPU會一直純延時,什么都不干,  而定時器不一樣,它在背后跑它自己的,到時間了會進入中斷,執行中斷函數里的程序,不占用CPU,主程序和定時器互不影響
作者: Mr.MR.Z    時間: 2018-12-12 15:06
可以這樣理解:定時器延時是讓程序跑進定時器里面運行,單片機依舊可以干別的事情,軟件延時就是讓單片機依舊不停在干活,只不過干的活是無意義純粹消磨時間的期間單片機干不了別的。
作者: 坐在分頭調戲鬼    時間: 2018-12-13 09:58
只是暫時跳過吧    當中斷執行完以后還會繼續執行沒有完成的程序   等到下次中斷時間到了在進去中斷就這么循環下去
作者: saya0769    時間: 2019-3-28 09:03
我可以這樣理解嗎? 延時是單片機等待,什么都做不了,主程序也不會繼續執行。定時器雖然也讓主程序不繼續執行。但是有多個定時器的話,那多個定時器都還在執行???
作者: 77smile    時間: 2019-3-28 11:10
定時器延時是利用定時計數,視為外設,計數是一直在進行的,當計數到溢出更新值時產生中斷信號,MCU接收到這個信號后,在中斷函數中可以處理你要延時之后再執行的代碼,在未進入定時中斷時間內,MCU同時可以執行其他代碼;而普通的延時函數,函數里面的代碼是需要MCU一句一句地執行,要占用時間。
作者: 笨笨兔    時間: 2019-3-28 11:17
舉個例子:單片機要點亮1 Minute的LED,軟件延時的意思是,從點亮LED開始,單片機什么都不干,等待1 Minute,到時關閉LED;
定時器延時意思就是,從點亮LED開始,設置好定時器延時時間,單片機該干什么就干什么,等到延時器延時時間到了,來個中斷,單片機放下當前工作,保存現場參數,響應中斷并關閉LED,單片機回復現場參數,接著干原來的工作;

作者: 艱難018jin    時間: 2019-3-28 12:55
用軟件定時,CPU 循環執行一小段延時程序。 浪費 CPU 的精力。浪費資源。
作者: pingshuenhao    時間: 2019-3-28 15:42
定時器延時準確,依靠晶振。重點是不耽誤單片機運行。軟件延時消耗的是cpu指令時間。CPU處于暫停(只能執行延時)狀態
作者: jyysns    時間: 2019-8-13 23:46
pingshuenhao 發表于 2019-3-28 15:42
定時器延時準確,依靠晶振。重點是不耽誤單片機運行。軟件延時消耗的是cpu指令時間。CPU處于暫停(只能執行 ...

說的好呀
作者: 天風情    時間: 2019-8-14 10:01
軟件延時只是傻瓜式的空等,此時延時的優先級高于一切中斷,這樣做是有風險的
作者: qxdqxd123456    時間: 2019-8-14 10:33
延時不精確,主要是相當于用單片機執行空語句, 而定時器則是精確定時,每隔幾ms或us執行一次程序
作者: 13236498633    時間: 2019-8-14 11:35
定時器延時是單機內部硬件延時,不占用軟件時間。
作者: 流著汗的魚    時間: 2019-8-14 16:02
你這個問題,可以留著,等你多學習一點,自己就明白了!




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