|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
中斷處理問題 |
| 作者:guangg 欄目:單片機 |
PIC16F873下寫了下面這樣一個中斷服務(wù)程序,各個中斷處理完后都返回Lhome,不知為何中斷處理后都無法返回主程序,請大家?guī)臀铱纯从泻螁栴},謝謝! org 0004h ;Interrupt movwf W_TEMP movf STATUS,W bcf STATUS,RP0 movwf STATUS_TEMP movf PCLATH,W movwf PCLATH_TEMP clrf PCLATH btfsc PIR1,TMR1IF ;Interrupt Setsect goto TMR1serv btfsc INTCON,RBIF goto RBserv btfsc PIR1,RCIF goto RCserv Lhome bcf STATUS,RP0 bsf INTCON,GIE movf PCLATH_TEMP,W movwf PCLATH movf STATUS_TEMP,W movwf STATUS swapf W_TEMP,F swapf W_TEMP,W retfie |
| 2樓: | >>參與討論 |
| 作者: 張明峰 于 2003/5/20 21:16:00 發(fā)布:
問題 Lhome bcf STATUS,RP0 bsf INTCON,GIE <=== 嚴(yán)重錯誤 在"retfie"指令前絕對不能使GIE=1。指令"retfie"會自動使GIE=1 中斷源的判別 btfsc PIR1,TMR1IF ;Interrupt Setsect goto TMR1serv btfsc INTCON,RBIF goto RBserv btfsc PIR1,RCIF goto RCserv TMR1serv bcf PIR1,TMR1IF ... goto Lhome RBserv movf PORTB,w bcf INTCON,RBIF ... goto Lhome RCserv movf RCREG,w ... goto Lhome |
|
| 3樓: | >>參與討論 |
| 作者: guangg 于 2003/5/21 14:25:00 發(fā)布:
謝謝張工,再幫我看看這樣寫是不是一樣的效果 org 0004h ;Interrupt movwf W_TEMP movf STATUS,W bcf STATUS,RP0 movwf STATUS_TEMP movf PCLATH,W movwf PCLATH_TEMP clrf PCLATH btfsc PIR1,TMR1IF ;Interrupt Setsect call TMR1serv btfsc INTCON,RBIF call RBserv btfsc PIR1,RCIF call RCserv Lhome movf PCLATH_TEMP,W movwf PCLATH movf STATUS_TEMP,W movwf STATUS swapf W_TEMP,F swapf W_TEMP,W retfie TMR1serv bcf PIR1,TMR1IF ... return RBserv movf PORTB,F bcf INTCON,RBIF ... return RCserv movf RCREG,w ... return |
|
| 4樓: | >>參與討論 |
| 作者: 張明峰 于 2003/5/21 17:22:00 發(fā)布:
基本上可以 但一個好習(xí)慣是不要在中斷里面調(diào)子程序,因為這樣會多占一層硬件堆棧。 在中斷返回恢復(fù)保存的寄存器前,注意bank的設(shè)定 |
|
| 5樓: | >>參與討論 |
| 作者: guangg 于 2003/5/22 10:53:00 發(fā)布:
再一次感謝張工 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |