音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(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樓: >>參與討論
張明峰
問題
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
謝謝張工,再幫我看看這樣寫是不是一樣的效果
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樓: >>參與討論
張明峰
基本上可以
但一個好習(xí)慣是不要在中斷里面調(diào)子程序,因為這樣會多占一層硬件堆棧。

在中斷返回恢復(fù)保存的寄存器前,注意bank的設(shè)定

5樓: >>參與討論
guangg
再一次感謝張工
 
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
P87LPC767為什么對晶振沒要求,就能從掉電模式輕易換醒??
在請教各位,12C508的TIMER0怎么用?有沒有溢出標(biāo)志的?
請問TRIS指令有沒有位操作,沒有就麻煩了!唉!
12c508a加密后有沒有辦法再寫
問問大俠:PIC16C926可以帶多大的LCD?
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號