中斷函數為什么能自動執行?
按照C語言的規則,子函數必須要被主函數調用才能發揮作用,然而在52單片機里,主函數并沒有調用中斷函數 …………然后我查到了這個: 程序中斷和調用子程序有何區別:
1.子程序調用是預先安排好的,程序中斷是隨機發生的;
2.調用子程序,是為主程序服務的,而中斷程序與主程序的程序毫無關系;
3.子程序是由調用指令給出目標地址,中斷是通過隱指令獲得中斷服務程序的入口地址 看到這個,大概意思應該是: 中斷程序不同于子程序,不需要主函數main調用就能執行。 中斷服務程序只需要滿足一定條件即可執行,比如定時器/計數器(在寫入定時器中斷服務程序的前提下)只需要計數“計滿”即可觸發中斷服務程序;外部中斷(在寫入外部中斷的服務程序的前提下)只需要觸發外部中斷引腳即可自動執行,不需要主函數調用。
子程序完全為主程序服務的,兩者屬于主從關系,主程序需要子程序時就去調用子程序,并把調用結果帶回主程序繼續執行。
而中斷服務程序與主程序兩者一般是無關的,不存在誰為誰服務的問題,兩者是平行關系