1樓:督秀珍安念
中斷保護現場,是為了你中斷子程式執行完以後能夠返回到你程式中中斷點,即產生中斷的地方,使程式能夠繼續向下執行!!!
如過你說的不用保護現場的話,那麼程式執行完以後就不能夠回到現場,那麼你的程式將不知道要跳轉到那裡去了,也就是飛鳥,呵呵……
你說的中斷巢狀,也是一樣的,兩者都要保護現場,不然你也不能夠回到現場,程式也會飛的!!!
而我們保護現場的資料都是放在堆疊中的,因此,你的中斷次數也不能夠超過堆疊的級數,那樣資料也會丟失!!!
說白了,中斷它不同於子程式,子程式是固定好了的,返回的位置也固定了;而中斷我們不能夠預知它在那裡發生中斷,因此要保護現場,使中斷子程式執行完後返回到中斷的地方!!!
呵呵……說的太多了!!!
我知道你說的意思了,但是你要知道,中斷現場保護是在中斷子程式中進行的,因此當你高一級的中斷髮生的時候(他們不可能共用一箇中斷子程式,如果是同一中斷,那也不可能,因為51中斷中你進入中斷子程式後要將禁止該中斷再次中斷,好象似的,嘿嘿……你可以試試),在高一級的中斷子程式中也有現場保護,你的問題就是沒有把現場保護放對地方!!!
它們是把現場保護在同一堆疊中,我跟你打個比方吧,假如說堆疊的地址是80h,低一級的中斷要保護的是1,2,3;高一級要保護的現場是4,5,6,那麼在低一級的中斷髮生的時候,現場保護1,2,3將壓如堆疊,(順序書上應該有,這裡是個比喻),那我先壓入1,堆疊地址加1,壓入2,堆疊地址再加1,如果這個時候高一級的中斷髮生,那麼現在就應該跳到高一級中斷的子程式,堆疊地址就是82h了,在將4,5,6分別壓入堆疊,這樣堆疊的地址就是85h,當高一級的中斷子程式結束後,返回現場,堆疊的資料要從85h開始彈出,這樣現場返回的就是6,5,4,這個時候程式就會跳到中斷之前的地方,即底一級的中斷那裡,將要繼續將3保護到堆疊中,在執行低一級的中斷子程式。(其中,你要在中斷保護現場完了後將中斷標誌清0啊,不然它始終會中斷的,不可能去執行程式去了。
2樓:網破侖
中斷很有用的,例如當程式大了的時候,採用掃描的方式系統反應會很慢,而採用中斷時系統就能很迅速的反應。在實時性方面很有用。
3樓:匿名使用者
中斷可以滿足很多實時性要求,比如老師正在上課,你很想上wc,你就會舉手去中斷他,然後說你要上廁所,他響應你這中斷,同意你去,然後你就要以實時的去解決你的緊急事宜了。
如果老師不響應中斷的話,正常情況下,你就只能憋著了。。。
當然,最後下課其實也是一箇中斷,呵呵!
微控制器中斷控制原理
4樓:匿名使用者
cpu是計算機的指揮中心,它與外圍裝置(如:按鍵,顯示器等)通訊的方法有查詢和中斷2種。
1:查詢:無論外圍i/o是否需要服務,cpu每隔一段時間都要依次查詢一遍,這種查詢的方法,cpu需要花費一些時間在做查詢的服務工作。
2:中斷:在外圍裝置需要通訊服務時主動告訴cpu,cpu停下當前工作去處理中斷程式,從而提高了cpu的工作效率。
(2):可以實現實時處理。
外設任何時候都可能發出請求中斷的訊號,cpu接到請求後及時處理,以滿足實時系統的需要。
(3):可以及時處理故障。
計算機系統執行過程中難免會出現故障,eg:電源中斷,儲存器出錯,外圍裝置工作不正常等,這時可以通過中斷系統向中斷源的cpu發出請求,以便解決故障。
定時器和中斷都屬於微控制器的內部資源,在開發板上是沒有晶片的,同時定時器的初始化程式一旦溢位,會自動去執行定時器中斷子程式,而不需要我們自己去呼叫,這些都是由硬體直接控制的。
2:定時器計算的是固定脈衝,其定時時間是可以計算出來的。它比延時函式有更好的作用,能提高cpu 的效率,因為延時函式是需要耗費cpu去執行的,在此期間,cpu是不能執行其它功能的,而定時器是需要用到 的時候,cpu自動呼叫。
微控制器中斷程式怎麼讀啊,什麼是微控制器的中斷
讀懂中斷服務程式很容易的。首先你要搞懂這是什麼中斷,從中斷服務程式第一行可以看出來。void int time void interrupt 1這是中斷名,可以隨便取 這是中斷號,從0 開始往上排,1表示定時器0中斷。分別是 0 外部中斷0 1 定時器0中斷。2 外部中斷1 3 定時器1 4 串列埠中...
微控制器呼叫中斷服務子程式和呼叫子程式的區別是什麼
中斷服務子程bai序入口地du址相對某一中斷是固zhi定的,呼叫子程式的偏dao移專地址是隨機的,基本過程差不屬多,返回時,中斷服務子程式用的是reti 呼叫子程式是ret 呼叫中斷服務子程式和呼叫子程式都會把當前偏移地址的下一地址壓棧,但呼叫子程式的返回指令ret不影響標誌位,reti從中斷程式返...
微控制器89c51外部摁鍵中斷程式
ex0 1 開外部中斷0 ea 0 開總中斷 lt0 1 下降沿觸發 然後寫中斷函式即可 void extern0 interrupt 0 按鍵一端接地,另一端接p3 2 就是外部中斷0 sbit key p3 2 void main void int0 interrupt 0 else 這個程式包...