新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > PIC單片機中斷嵌套

        PIC單片機中斷嵌套

        作者: 時間:2016-11-29 來源:網絡 收藏
        #INCLUDE"P16F877.inc"
        W_TEMP EQU 20H ; 實際上20H、A0H、120H和1A0H
        STATUS_TEMP EQU 21H ;在體0中建立保護單元
        PCLATH_TEMP EQU 22H ;在體0中建立保護單元
        ORG 000H
        GOTO A1
        ORG 04H;中斷入口地址
        GOTO ZD01
        A1 BSF STATUS,RP0
        BCF STATUS,RP1;體1
        MOVLW 00H;1:2TMRO比例
        MOVWF OPTION_REG;分頻1/2
        MOVLW 0H
        MOVWF TRISA;設置A口為輸出口
        MOVLW 06H
        MOVWF ADCON1;設置A口為普通I/O口模式
        movlw 0FFH
        movwf TRISB;設定RB為輸入
        BCF STATUS,RP0
        BCF STATUS,RP1;體0
        MOVLW 0FFH;
        MOVFW TMR0;初值
        MOVLW 0FFH
        MOVWF PORTA;A口輸出高電平
        MOVLW 1;位1顯示數
        MOVWF 50H;
        MOVLW 2;位2顯示數
        MOVWF 51H;
        MOVLW 3;位3顯示數
        MOVWF 52H;
        MOVLW 4;位4顯示數
        MOVWF 53H;
        MOVLW 4;顯示位數
        MOVWF 40H;
        MOVLW B00000001;位碼
        MOVWF 41H;
        MOVLW 50H;
        MOVWF FSR ;間接尋址
        BCF INTCON,INTF;清中斷標志
        BSF INTCON,INTE;開外部中斷
        BCF INTCON,T0IF;清定時中斷標志
        BSF INTCON,T0IE;開定時中斷
        BSF INTCON,GIE;開總中斷
        GOTO $
        ZD01
        BTFSS INTCON,INTF;判斷是否發生外部中斷
        GOTO ZD02
        BCF INTCON,INTE;關閉外部中斷避免2次中斷
        BSF INTCON,GIE;開總中斷允許定時中斷嵌套進來
        BCF INTCON,INTF;清中斷標志
        BTFSS PORTB,0;;判斷觸發中斷鍵是否抬起避免產生2次中斷
        GOTO $-1;
        COMF PORTA,1;取反A口
        BSF INTCON,INTE;開外部中斷
        RETFIE ;中斷標志結束
        ZD02 BTFSS INTCON,T0IF;判斷是否產生定時中斷
        GOTO ZD04;否跳出是繼續執行
        ;***************************************************
        ; 保護現場
        MOVWF W_TEMP;W備份到W_TEMP中
        SWAPF STATUS,0;STATUS半字交換后送W
        CLRF STATUS;選擇體0為當前體備份
        MOVWF STATUS_TEMP;將原來的STATUS送體0上的
        MOVF PCLATH,0;PCLATH送W
        MOVWF PCLATH_TEMP;W送備份寄存器中
        CLRF PCLATH ;設置為0頁
        ;***************************************************
        BCF INTCON,T0IF
        BSF STATUS,RP0;體1
        BCF STATUS,RP1;
        MOVLW 0;
        MOVWF TRISC;RB口設為輸出口
        MOVWF TRISD;RD口設為輸出口
        BCF STATUS,RP0;體0
        BCF STATUS,RP1;
        MOVLW 0FFH;
        MOVWF PORTC;RB口輸出高電平
        MOVLW 0
        MOVWF PORTD;RD口輸出低電平起清屏作用
        MOVFW INDF;間接尋址顯示數據
        CALL Q1;查數據表
        MOVWF PORTC;顯示斷碼輸出到RB口
        INCF FSR,1;間接尋址地址加1
        MOVFW 41H ;位碼
        MOVWF PORTD;位碼輸出到RD口
        RLF 41H,0;處理C
        RLF 41H,1;左移位碼
        DECFSZ 40H,1;判斷是否顯示完4位
        GOTO ZD03;否則繼續顯示
        MOVLW 4;顯示位數
        MOVWF 40H;
        MOVLW B00000001;位碼
        MOVWF 41H;
        MOVLW 50H;
        MOVWF FSR ;間接尋址
        ZD03
        ;***************************************************
        ; 恢復現場
        CLRF STATUS;恢復到體0
        MOVF PCLATH_TEMP,0;開始恢復數據
        MOVWF PCLATH;恢復PCLATH
        SWAPF STATUS_TEMP,0
        MOVWF STATUS;恢復STATUS
        SWAPF W_TEMP,1;半字交換后放回
        SWAPF W_TEMP,0;再半字交換后送W
        ;***************************************************
        MOVLW 0FFH;
        MOVFW TMR0;重裝初值
        ZD04
        RETFIE ;中斷結束
        ;********************************************
        ; 數據表
        ;********************************************
        Q1 ADDWF PCL,1
        RETLW 00C0H ;0
        RETLW 00F9H ;1
        RETLW 00A4H ;2
        RETLW 00B0H ;3
        RETLW 0099H ;4
        RETLW 0092H ;5
        RETLW 0082H ;6
        RETLW 00F8H ;7
        RETLW 0080H ;8
        RETLW 0090H ;9
        RETLW 0088H ;A
        RETLW 0083H ;B
        RETLW 00C6H ;C
        RETLW 00A1H ;D
        RETLW 0086H ;E
        RETLW 008EH ;F
        END


        關鍵詞: PIC單片機中斷嵌

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 湖口县| 疏勒县| 永济市| 两当县| 洛扎县| 湖北省| 巩留县| 卢氏县| 吴堡县| 汉寿县| 共和县| 丰镇市| 遵义市| 雷波县| 峨山| 体育| 资讯 | 思茅市| 丰台区| 黔江区| 文山县| 南华县| 定日县| 阳西县| 萨嘎县| 自治县| 昆明市| 即墨市| 金山区| 深水埗区| 郸城县| 大港区| 大姚县| 扎兰屯市| 合作市| 巴彦淖尔市| 疏勒县| 二连浩特市| 阳泉市| 广丰县| 武山县|