標(biāo)題: Handler of Interruput [打印本頁]

作者: xuwei    時(shí)間: 2015-6-13 01:43
標(biāo)題: Handler of Interruput



在內(nèi)存中開辟棧保護(hù)區(qū),對中斷現(xiàn)場進(jìn)行保護(hù),然而在C中這些工作編譯器已經(jīng)做了,但是匯編要自己做保護(hù)。值得注意的是PC指針的低位已經(jīng)壓入硬件棧中無需保護(hù),只需要保護(hù)當(dāng)前的狀態(tài)字和累加器還有高位的PC指針值就好了,有的堆?梢杂肞USH和POP處理,有的卻只能開辟內(nèi)存,但是他們的共同點(diǎn)就是都會對PC指針壓棧處理,不這樣也談不上跳轉(zhuǎn)和斷點(diǎn)了,由此可見用匯編寫一段保護(hù)代碼也是很慎重的事情,當(dāng)然取決于自己的想法,對就是對,錯(cuò)就是錯(cuò),事實(shí)騙不了人吧我想。有些重要的變量在中斷現(xiàn)場也應(yīng)該做保護(hù),這就看需要,這只是最基本的,對于用匯編寫程序來說沒有什么函數(shù)和變量,無窮無盡的地址,內(nèi)存是地址,程序也是地址,局部變量全局變量的分配釋放都是自己控制,函數(shù)也是地址等等,用匯編編寫驅(qū)動是極好的,因?yàn)榭刂品浅>珳?zhǔn),精確到每條指令,非常接近與物理狀態(tài),但是用匯編編寫算法就........,就算是一個(gè)很簡單的算法,就夠折騰好一會的,程序的靈魂是算法,故而還是選擇C語言吧,但是學(xué)點(diǎn)匯編是絕對沒有壞處的,匯編使你看到的計(jì)算機(jī)更加的清晰。夫鵠不日浴而白,烏不日黔而黑!不知鵠歟而或?yàn)鯕e?嘻!

;///////////////////////// Interrupt_Handler_Start///////////////////////////////////***********************************************
;/////////////////////////////////////////////////////////////***********************************************

INTEERUPUT_HIGHT:
MOVWF W_TEMP
SWAPF STATUS,0
CLRF STATUS
MOVWF STATUS_TEMP     ;中斷現(xiàn)場壓入內(nèi)存
MOVF PCLATH,0
MOVWF PCLATH_TEMP
CLRF PCLATH
;............(中斷程序的核心部分)

;choose branch


;............(中斷程序的核心部分)
MOVF PCLATH_TEMP,0
MOVWF PCLATH
SWAPF STATUS_TEMP,0
MOVWF STATUS;    ;中斷現(xiàn)場彈出內(nèi)存
SWAPF W_TEMP,1;
SWAPF W_TEMP,0;
RETURN
;/////////////////////////Interrupt_Handler  end///////////////////////////////////***********************************************
;/////////////////////////////////////////////////////////////***********************************************







歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1