新聞中心

PIC單片機中斷嵌套

作者: 時間:2016-11-29 來源:網(wǎng)絡(luò) 收藏
#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;設(shè)置A口為輸出口
MOVLW 06H
MOVWF ADCON1;設(shè)置A口為普通I/O口模式
movlw 0FFH
movwf TRISB;設(shè)定RB為輸入
BCF STATUS,RP0
BCF STATUS,RP1;體0
MOVLW 0FFH;
MOVFW TMR0;初值
MOVLW 0FFH
MOVWF PORTA;A口輸出高電平
MOVLW 1;位1顯示數(shù)
MOVWF 50H;
MOVLW 2;位2顯示數(shù)
MOVWF 51H;
MOVLW 3;位3顯示數(shù)
MOVWF 52H;
MOVLW 4;位4顯示數(shù)
MOVWF 53H;
MOVLW 4;顯示位數(shù)
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;判斷是否發(fā)生外部中斷
GOTO ZD02
BCF INTCON,INTE;關(guān)閉外部中斷避免2次中斷
BSF INTCON,GIE;開總中斷允許定時中斷嵌套進來
BCF INTCON,INTF;清中斷標志
BTFSS PORTB,0;;判斷觸發(fā)中斷鍵是否抬起避免產(chǎn)生2次中斷
GOTO $-1;
COMF PORTA,1;取反A口
BSF INTCON,INTE;開外部中斷
RETFIE ;中斷標志結(jié)束
ZD02 BTFSS INTCON,T0IF;判斷是否產(chǎn)生定時中斷
GOTO ZD04;否跳出是繼續(xù)執(zhí)行
;***************************************************
; 保護現(xiàn)場
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 ;設(shè)置為0頁
;***************************************************
BCF INTCON,T0IF
BSF STATUS,RP0;體1
BCF STATUS,RP1;
MOVLW 0;
MOVWF TRISC;RB口設(shè)為輸出口
MOVWF TRISD;RD口設(shè)為輸出口
BCF STATUS,RP0;體0
BCF STATUS,RP1;
MOVLW 0FFH;
MOVWF PORTC;RB口輸出高電平
MOVLW 0
MOVWF PORTD;RD口輸出低電平起清屏作用
MOVFW INDF;間接尋址顯示數(shù)據(jù)
CALL Q1;查數(shù)據(jù)表
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;否則繼續(xù)顯示
MOVLW 4;顯示位數(shù)
MOVWF 40H;
MOVLW B00000001;位碼
MOVWF 41H;
MOVLW 50H;
MOVWF FSR ;間接尋址
ZD03
;***************************************************
; 恢復(fù)現(xiàn)場
CLRF STATUS;恢復(fù)到體0
MOVF PCLATH_TEMP,0;開始恢復(fù)數(shù)據(jù)
MOVWF PCLATH;恢復(fù)PCLATH
SWAPF STATUS_TEMP,0
MOVWF STATUS;恢復(fù)STATUS
SWAPF W_TEMP,1;半字交換后放回
SWAPF W_TEMP,0;再半字交換后送W
;***************************************************
MOVLW 0FFH;
MOVFW TMR0;重裝初值
ZD04
RETFIE ;中斷結(jié)束
;********************************************
; 數(shù)據(jù)表
;********************************************
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


關(guān)鍵詞: PIC單片機中斷嵌

評論


技術(shù)專區(qū)

關(guān)閉