1. 關於c語言中中斷的問題
標准c語言沒有中斷調用機制,但是不同編譯器都有相應的中斷處理方式,可以使用戶實現中斷功能。
下面是我曾經寫過的一片跟中斷有關的東西,希望對你有幫助。
~~~~~~~~~~~~~~~~~~~~~~~~~
曾經設計俄羅斯方塊,採取延時的方法,比如每次循環延時100毫秒,但是這個期間無法響應鍵盤的請求,游戲總的來說感覺卡卡的。
現在想想解決方案還真不少:
1、採取輪詢的方式解決,就是每10毫秒檢查一下是否有鍵盤請求,總的來說,這樣基本上可以解決問題,而且簡單易行,但每10毫秒都要檢查,系統消耗太大。
2、採取中斷的方式:
(1)用高級語言調用中斷來處理問題。中斷是cpu響應一個中斷外圍設備8259A的一個過程,當鍵盤敲擊,cpu保存斷點暫停執行並且跳到相應的中斷處理程序繼續執行,結束後根據斷點再跳回來。通過這種方式可以輕松+愉快地解決這個問題。但是需要用到高級語言調用匯編,根據編譯器的不同而有所差別。
(2)自己模擬中斷。可以另外建立一個線程專門響應鍵盤的敲擊,如果有敲擊則打斷主線程。這樣做實現起來很復雜,而且涉及到不少復雜的關鍵技術,比如信號量之類的鬼東西~。
3、強大的vc
原來一直感覺vc只是一個編譯器,現在才發現,vc也可以是一種語言。vc採取了消息映射的機制來處理外部設備的請求,比如時鍾中斷、鍵盤中斷等等。通過此可以灰常灰常容易的處理外部中斷。
2. 單片機c語言中的中斷問題
1.void(中斷函數返回類型(空型)) Time1 (中斷函數名)(void(參數類型) interrupt 3 (中斷號)
2: 中斷條件發生時執行中斷,比如void Time1(void) interrupt 3 是定時器1定時時間到發生中斷,中斷函數放在那裡無所謂
3:void PxInt0(void) interrupt 0 中斷名為PxInt0的0號中斷
void PxInt1(void) interrupt 2 中斷名為PxInt1的2號中斷
void time0_int(void) interrupt 1 中斷名為time0_int的1號中斷
void time1_int(void) interrupt 3 中斷名為time1_int的3號中斷
4:中斷的代碼是你想中斷執行的工作,中斷的代碼是根據任務,需要你自己寫的
3. 什麼是C語言的中斷程序 有什麼用啊
C語言標准語法中是沒有中斷的,中斷是硬體在應用C語言開發時引入的,中斷的實現邏輯都由硬體來完成。
下面以單片機的中斷為例:一般有兩種,定時器中斷和外部中斷。中斷的提出主要是為了讓CPU能及時處理突發事件以及提高代碼運行效率。
舉生活中的例子:現在假設你正在家裡看書,突然電話響了,你會放下書,去接聽電話,聽完電話後,你會回去繼續看書。在這里,將主程序的運行比作看書,電話鈴聲響了是中斷觸發信號,你放下書是保護現場,接聽電話是在執行中斷,回去看書是返回現場繼續運行主程序。
當然中斷還有嵌套和優先順序的問題,這里就不詳細來講。
希望我的回答對你有所幫助!
4. 什麼是C語言的中斷程序作用是什麼
中斷服務程序:處理器處理「急件」,可理解為是一種服務,是通過執行事先編好的某個特定的程序來完成的,這種處理「急件」的程序被稱為——中斷服務程序。
當中央處理器正在處理內部數據時,外界發生了緊急情況,要求CPU暫停當前的工作轉去處理這個緊急事件。處理完畢後,再回到原來被中斷的地址,繼續原來的工作,這樣的過程稱為中斷。實現這一功能的部件稱為中斷系統,申請CPU中斷的請求源稱為中斷源,單片機的中斷系統一般允許多個中斷源,當多個中斷源同時向CPU請求中斷時,就存在一個中斷優先權的問題。通常根據中斷源的優先順序別,優先處理最緊急事件的中斷請求源,即最先響應級別最高的中斷請求。
5. C語言中是怎麼實現中斷的能提供點資料或舉幾個例子更好……
中斷大概是這樣的。。。如果有點錯誤不要怪我。。。我以前作過滑鼠中斷的東西。。現在有些想不起來了。。。所以。。。呵呵呵。。。
當程序運行到中斷條件的時候,會向CPU發信號改變優先順序(原先運行的東西會放進哪個特定的地方的,作保存),以發出中斷的那段程序作為最高優先,執行完成後再由執行另外的。。。建議你去看看匯編。。。哈哈哈。。。我沒學過的。。。
C中實現中斷是用了一個函數:geninterrupt(...)
這個「...」是個16進制的數字,是中斷號,像滑鼠中斷號就是0x33
還要用到類似匯編里寄存器模樣的變數:如_AX,_BX,_CX,_DX...不同的值功能不同。。。哎呀,我都忘完了。。。建議去查下geninterrupt()的用法就OK了。。。
6. C語言中的interrupt是怎麼回事
二樓的說得很對。它是一個中斷處理函數,與一般的函數的區別在於他被調用的方式。一般的函數是由其上一層函數調用而得到執行。而中斷函數是是外圍設備觸發它執行的。比如說:spi接收到一位元組的數據、adc采樣完成、定時器發生溢出等等。一旦這些事件發生了,只要中斷處於使能狀態,就會觸發對應的中斷。
不管主程序執行到什麼地方,cpu都會暫停它並立即執行這種中斷處理函數。中斷處理函數執行完成後又恢復之前的程序位置繼續執行。
中斷的產生,不是由調用引起的,是由外界觸發的。就像,有人敲門,你就要去開門,這不等於你去開門了,就一定有人敲門。
另,中斷函數不能被直接調用,否則會出錯。
7. c語言中斷
標准c語言沒有中斷調用機制,但是不同編譯器都有相應的中斷處理方式,可以使用戶實現中斷功能。
下面是我曾經寫過的一片跟中斷有關的東西,希望對你有幫助。
~~~~~~~~~~~~~~~~~~~~~~~~~
曾經設計俄羅斯方塊,採取延時的方法,比如每次循環延時100毫秒,但是這個期間無法響應鍵盤的請求,游戲總的來說感覺卡卡的。
現在想想解決方案還真不少:
1、採取輪詢的方式解決,就是每10毫秒檢查一下是否有鍵盤請求,總的來說,這樣基本上可以解決問題,而且簡單易行,但每10毫秒都要檢查,系統消耗太大。
2、採取中斷的方式:
(1)用高級語言調用中斷來處理問題。中斷是cpu響應一個中斷外圍設備8259A的一個過程,當鍵盤敲擊,cpu保存斷點暫停執行並且跳到相應的中斷處理程序繼續執行,結束後根據斷點再跳回來。通過這種方式可以輕松+愉快地解決這個問題。但是需要用到高級語言調用匯編,根據編譯器的不同而有所差別。
(2)自己模擬中斷。可以另外建立一個線程專門響應鍵盤的敲擊,如果有敲擊則打斷主線程。這樣做實現起來很復雜,而且涉及到不少復雜的關鍵技術,比如信號量之類的鬼東西~。
3、強大的vc
原來一直感覺vc只是一個編譯器,現在才發現,vc也可以是一種語言。vc採取了消息映射的機制來處理外部設備的請求,比如時鍾中斷、鍵盤中斷等等。通過此可以灰常灰常容易的處理外部中斷。