微控制器中斷返回進不去主函式是怎麼回事啊?定義了標誌位,中斷後為1,主函式裡清零,但是要中斷好

2021-04-21 12:19:43 字數 1671 閱讀 5508

1樓:匿名使用者

你這麼說,沒有用。得把你的程式發上來,看一下。

你這是**,還是實物呢。

再說了,你怎麼知道「中斷返回進不去主函式」?這是不可能的事。還是你的判斷有誤。

51微控制器執行完外部中斷0後,想讓他返回主函式的開頭從新執行,繼續檢測中斷執行中斷在返回主函式開頭

2樓:匿名使用者

你主函式中除了初始化的語句外,其它的處理部分都放在while(1)的迴圈中啊,然後 外部中

專斷中設定一

屬個標誌位,舉例說明,比如。下面例子,是外中斷一次,p0取反一次,你如果還想有其它資料處理,可以把語句寫在while(1)中。中斷執行後,判斷flag,然後會自動回到主函式中。

void main(void)

可以在此新增語句。 }

}void it0(void) interrupt 0 using 0

3樓:匿名使用者

這個思路不對吧?中斷來了自然就去執行中斷函式了,還要到主函式開頭等待嗎?

51微控制器寫個程式,好像在中斷裡面出不來了,主程式只執行了一部分,之後一直在中斷裡面執行

4樓:如此簡單

跟我之來前一樣,對中斷,定源

時器瞭解的不夠透徹,被老師訓了之後查資料搞實驗後終於搞清楚了,下面說說我的看法:千萬不要在中斷函式中做多餘的事!!!只能做最基本的操作,比如置標誌位,讓一個數加一等,與延時有關的操作千萬不要做!

你10ms進一次中斷,在裡面又掃描按鍵,又顯示液晶,這裡面花的時間遠遠地超過10ms,它肯定死在中斷裡出不來啊,因為你不關閉中斷的話它一直10ms進去,最好在中斷裡設定幾個標誌位,進中斷就讓標誌位置1,然後出中斷,在主迴圈裡判斷標誌位,如果標誌位置1了,就清零標誌位,然後做其他的動作。好好想一想,思路一定要清晰!

5樓:匿名使用者

如果真如你所說,那麼問題出在keyscan()函式。

6樓:雪芃長流如

開中斷以後,在中斷服務子程式中設定一箇中斷次數計數器,統計達到2次後

中斷次數計數器清0,然後再把莫暫存器加一。

微控制器外部中斷0,發生中斷並執行完中斷程式後,怎樣返回主函式?用c語言。。

7樓:匿名使用者

執行完成之後自動返回主函式。

中斷是指計算機在執行程式的過回程中,當出現異答常情況或特殊請求時,計算機停止現行程式的執行,轉向對這些異常情況或特殊請求的處理,處理結束後再返回現行程式的間斷處,繼續執行原程式。 中斷是微控制器實時地處理內部或外部事件的一種內部機制。當某種內部或外部事件發生時,微控制器的中斷系統將迫使cpu暫停正在執行的程式,轉而去進行中斷事件的處理,中斷處理完畢後,又返回被中斷的程式處,繼續執行下去。

8樓:匿名使用者

程式使bai用interrupt關鍵字

函式du寫法 void int0_isr(void) interrupt 0

0號中斷就是int0 ,使用interrupt關鍵字dao,編譯專後中斷向量

屬新增跳轉指令跳入該函式入口,返回指令為reti,非ret。程式內自動壓棧acc和psw

9樓:使用者名稱賊受歡迎

問一下,你這個問題解決了嗎

微控制器中斷返回指令,微控制器組合語言指令中中斷返回指令RET和RETI有什麼不同?

程式結構錯誤。mov th0,65536 50000 256 定時50毫秒 mov tl0,65536 50000 256mov ie,82h setb tr0 主程式,到這,就沒有了,這那行?timer 下面就是 定時器中斷服務程式mov th0,65536 50000 256 初脈衝50ms m...

微控制器中的中斷函式是不是隻能寫在主函式裡面

首先為這個你要bai呼叫的c檔案寫一個頭文du件zhi 比如這個檔案叫daofun.c,那你可以寫一個回叫fun.h的標頭檔案。這個標頭檔案的答內容是fun.c檔案裡的函式宣告。接著把fun.c加入你的專案裡。下一步在主函式的上面用 include fun.h 把標頭檔案包含進來。當然不是。首先,中...

51微控制器中斷服務函式與其他函式的區別

中斷函式,屬於後臺觸發,前臺執行的函式體 其他函式,都屬於前臺呼叫執行的函式體。51微控制器中斷服務函式與其他函式的差異性 1,中斷函式與普通函式相比要注意在入口遮蔽一些中斷,在出口恢復,防止中斷函式在處理重要工作中,又被中斷重入,導致處理異常。2,中斷函式還要注意在入口儲存重要的暫存器狀態,特別是...