三個:
1.總中斷使能位EA=1
2.相應中斷使能 (ET0、EX0……) 打開
3.中斷源:外部中斷引腳的電平觸發、定時器溢出……
oid PxInt0(void) interrupt 0 //定義外部中斷0
void PxInt1(void) interrupt 2 //定義外部中斷1
void time0_int(void) interrupt 1 //定義定時器0
void time1_int(void) interrupt 3 //定義定時器1
這里為什麼是 0 1 2 3的順序呢~?其實是單片機內部默認的,順序依次是:
0 外部中斷0
1 定時/計數器0
2 外部中斷1
3 定時/計數器1
4 串列口中斷
這個是沒有什麼理由的,記住就行,以後要定義一個中斷的時候,定義的是哪一個,就在後面加上它的序號就行了,比如void PxInt0(void) interrupt 0 表示外部中斷0,就在後面加上interrupt 0.
逐詞解釋的話。。。如:void PxInt0(void) interrupt 0
void的意思是沒有返回值,Pxint0(void)是你定義的函數名,interrupt表示你定義的是中斷函數,0表示你定義的是外部中斷0
後面的依此類推。
另外,中斷函數不需要在main函數前聲明,當單片機檢測到中斷所需的信號時,它會自動立即停止正在進行的工作進入中斷函數。
❷ 單片機 C語言 中斷
主程序和中斷沒關系的,主程序是個死循環,一直執行。中斷是打斷主程序進入中斷子程序,中斷完成後繼續執行主程序。中斷標志要在進入中斷後清除,如果不清除,下次不會再觸發。主程序繼續執行無影響。
TR0是啟動定時器,啟動以後不要再改寫就好每到定時時間進入中斷。進入中斷後要清除中斷使能標志,不是叫你關閉定時器。這兩種不是一個概念。定時器控制寄存器裡面有一個中斷標志A,為1的時候代表進入中斷,進入中斷後A要清零,之後才會繼續查看A是否再次為1,為1即進中斷,在中斷寫零,如此循環進行。
關閉或者重新開啟TR0,標志A都是硬體自動重新裝載(初始化)0,以使中斷執行。所以也能達到效果,但是每次執行都重新設置定時器會比較耗費資源,其實只需要清零標志位就ok了。
❸ 單片機的中斷
你是想問什麼是中斷嗎?
單片機中斷分外部中斷、定時器中斷。外部中斷即通過設置相應寄存器,可以使單片機的相應引腳有高信號時,暫時放棄執行主程序,轉而去執行中斷程序,中斷程序執行完後,繼續執行主程序;定時器中斷也是通過設置相應寄存器,使單片機內部的累加器運行(不會影響單片機執行主程序),當累加器溢出時(即累加器的所有二進制位都加到了1)會產生中斷信號,此時,單片機暫時放棄執行主程序,轉而去執行中斷程序,中斷程序執行完後,繼續執行主程序。
相關資料書上介紹的很詳細,仔細看看就行。
❹ 51單片機中斷原理
中斷意思是打斷,即允許單片機的正常工作被一些特殊的任務所打斷,從而保證單片機能夠專心工作又不錯過重要事務。中斷系統包括中斷源和中斷控制系統,單片機每執行完一條指令,就會檢測中斷源,當有中斷發生且中斷未被屏蔽,就會轉向中斷程序入口地址,執行中斷程序,執行完中斷程序,又返回主程序。
❺ 單片機編程時,中斷程序的編程原則是什麼
由於中斷程序是在打斷正在運行的程序而執行的代碼,運行之前需要保存寄存器等操作,所以中斷程序應盡量:
1.精簡短小,使之盡快執行完返回。
2.能不放在中斷中的代碼盡量不放在中斷程序中。
❻ 什麼是單片機的中斷
不同的計算機其硬體結構和軟體指令是不完全相同的,因此,中斷系統也是不相同的。
計算機的中斷系統能夠加強CPU對多任務事件的處理能力。中斷機制是現代計算機系統中的基礎設施之一,它在系統中起著通信網路作用,以協調系統對各種外部事件的響應和處理。中斷是實現多道程序設計的必要條件。 中斷是CPU對系統發生的某個事件作出的一種反應。
引起中斷的事件稱為中斷源。中斷源向CPU提出處理的請求稱為中斷請求。發生中斷時被打斷程序的暫停點稱為斷點。
CPU暫停現行程序而轉為響應中斷請求的過程稱為中斷響應。處理中斷源的程序稱為中斷處理程序。
CPU執行有關的中斷處理程序稱為中斷處理。而返回斷點的過程稱為中斷返回。中斷的實現實行軟體和硬體綜合完成,硬體部分叫做硬體裝置,軟體部分稱為軟體處理程序。
響應處理
大多數中斷系統都具有如下幾方面的操作,這些操作是按照中斷的執行先後次序排列的。
1、 接收中斷請求。
2、 查看本級中斷屏蔽位,若該位為1則本級中斷源參加優先權排隊。
3、 中斷優先權選擇。
4、 處理機執行完一條指令後或者這條指令已無法執行完,則立即中止現行程序。接著,中斷部件根據中斷級去指定相應的主存單元,並把被中斷的指令地址和處理機當前的主要狀態信息存放在此單元中。
5、 中斷部件根據中斷級又指定另外的主存單元,從這些單元中取出處理機新的狀態信息和該級中斷控製程序的起始地址。
6、 執行中斷控製程序和相應的中斷服務程序。
7、 執行完中斷服務程序後,利用專用指令使處理機返回被中斷的程序或轉向其他程序。
沖突
在一些罕見的情況下,兩個ISA設備可以共享相同的 IRQ,只要它們不同時使用即可。為了解決這個問題,後來的PCI 匯流排允許 IRQ 共享。PCI Express沒有物理中斷線,並使用消息信號中斷(MSI) 到操作系統(如果可用)。
在早期的 IBM 兼容個人計算機中,中斷曾經是一種常見的硬體錯誤,當兩個設備嘗試使用相同的中斷請求(或 中斷)向可編程中斷控制器(PIC)發出中斷信號時會收到該錯誤。
PIC 期望每條線路僅來自一個設備的中斷請求,因此沿同一條線路發送中斷信號的多個設備通常會導致 中斷 沖突,從而導致計算機死機。
例如,如果在系統中添加數據機擴展卡並分配給中斷4,傳統上分配給串列埠1,則可能會導致中斷沖突。最初,中斷 7 是使用音效卡的常見選擇,但後來發現 中斷 7 會干擾列印機埠(LPT1)時使用了中斷5。該串列埠經常禁用可以用於其他設備的中斷線。
中斷 2/9 是 MPU-401 MIDI 埠的傳統中斷線,但這與ACPI系統控制中斷(SCI 在 Intel 晶元組上硬連線到 中斷9)沖突;
這意味著 ISAMPU-401帶有硬連線中斷2/9 的卡和帶有硬編碼 中斷 2/9 的 MPU-401 設備驅動程序不能在啟用 ACPI 的系統上以中斷驅動模式使用。
以上內容參考網路-中斷
❼ 單片機中斷程序
結構很規矩,這個程序。
首先單片機上電復位,運行死循環前面的程序(,你這里就是init_timer(); // 應該叫初始化定時器,才合適,讓定時器按照你需要的定時長度工作,或叫產生中斷 )
接下來單片機主程序就是一直在死循環了。我們的主要任務一般在這里處理。
中斷,就是在處理一些特殊任務,比如按鍵,或定時處理的程序,或外部一個不知道什麼時間發生的任務,或通信任務等等。你在主循環的時候,無論在什麼時候,中斷請求來了(可以理解為需要處理比較緊急任務,優先處理的任務),就會暫停主循環,進入對應中斷服務程序。運行完,在回主循環的暫停地方,繼續執行死循環的任務。
定時器中斷,就是每過一定時間,運行一下中斷服務程序。常用來計時和產生脈沖信號。
初始化定時器,就是給定時器的寄存器,設置工作模式,時鍾源,溢出的計數值。設置好了,定時器就能根據每個時鍾源的頻率,進行計數,直至溢出,然後產生一個中斷請求。如果不餓能自動載入計數初值的定時器,在中斷處理函數(服務函數)必須手動載入初值。
❽ 單片機編程時中斷程序如何使用
中斷程序不是使用的,是當單片機的中斷源有中斷請求時,以允許中斷的情況下,就是自動轉到中斷程序去執行了。所以,編程時,需要在中斷完成什麼任務,都要寫到中斷程序中就行了,會自己去執行的。而不需要你去使用的。