疑惑…單片機(jī)進(jìn)入中斷后不能執(zhí)行調(diào)延時程序?中斷服務(wù)程序里已寫延時程序…

疑惑…單片機(jī)進(jìn)入中斷后不能執(zhí)行調(diào)延時程序?中斷服務(wù)程序里已寫延時程序…

通常在中斷子程序中是不調(diào)用延時子程序的,這樣會增加中斷處理時間,如果有其它低級中斷了,就會延誤響應(yīng)中斷了。所以,中斷子程序中不要寫調(diào)用延時子程序,中斷子程序也不要寫得過長,處理過多的任務(wù),要盡快處理后及時返回,如果中斷一次有很多任務(wù)需要執(zhí)行完全,可以在中斷子程序中設(shè)置一個標(biāo)志位,在主程序中查這個標(biāo)志位,當(dāng)標(biāo)志為1時,就在主程序中完成這些任務(wù),這樣就不會影響其它中斷源的中斷,也不會使中斷產(chǎn)生混亂。

但不知,你這提問是想幫你寫程序昵,還是幫你分析中斷程序的寫法。

求教stc15系列單片機(jī)延時函數(shù)實(shí)際延時時間長了一倍是什么原因?

用軟件延時都是不準(zhǔn)確的,特別是延時越長誤差越大。雖然是用一些軟件生成的,但編譯時生成的HEX代碼不一定是按生成軟件計算的來生成的,這樣,實(shí)際誤差就更大。

STC-ISP軟件也可以生成延時代碼,同樣,時間越長誤差越大。

你這延時2秒,要準(zhǔn)確就用定時器,何必用延時程序。

單片機(jī)C語言編程中延時函數(shù)和定時器中斷有何關(guān)系

延時函數(shù)(延時子程序)是主程序正常運(yùn)行時執(zhí)行的,—主程序運(yùn)行的時間即是延時函數(shù)的延時時間。定時器中斷是在主程序中插入的事件,是在主程序的某個時間點(diǎn),跳出主程序去執(zhí)行定時器中斷要做的事情。

所以如果一個延時子程序不停地被中斷(包括定時器中斷或者其他中斷)打斷,就沒有時間完成自身運(yùn)行一次所需的那些語句。

等到它自身運(yùn)行完一次,可能原定延時時間的很多倍百科已經(jīng)過去了。

為什么進(jìn)入中斷后不執(zhí)行中斷中的延時函數(shù)

1)