Pic16f877 中断控制电路

  作者:dolphin 时间:2011-05-05



程序范例:
1.外部中断LED 方向控制
2.计时中断LED 方向控制
3.计时加外部中断LED 方向控制
4.计时中断时钟 ─ 分:秒(使用七段显示器)
5.计时中断 ─ 改写8led22.asm 程序
外部中断LED 方向控制
范例一:int1.*
LIST P=16F877,R=DEC
#INCLUDE
;
CBLOCK 0X20
R0,USRFLAG
ENDC
;
ORG 0
NOP
GOTO MAIN
ORG 4
BTFSS USRFLAG,0
GOTO INT1
BCF USRFLAG,0
GOTO INT2
INT1: BSF USRFLAG,0
INT2: BTFSS PORTB,0
GOTO INT2
BCF INTCON,INTF
RETFIE
;
MAIN:
BANKSEL TRISD
MOVLW 0
MOVWF TRISD
BANKSEL PORTD
BSF INTCON,GIE
BSF INTCON,INTE
MOVLW B'11111110'
MOVWF R0
BCF USRFLAG,0
MLOOP: MOVF R0,0
MOVWF PORTD
CALL DELAY250
BTFSC USRFLAG,0
GOTO RIGHT
LEFT: CLRC
BTFSC R0,7
SETC
RLF R0,1
GOTO MLOOP
RIGHT: CLRC
BTFSC R0,0
SETC
RRF R0,1
GOTO MLOOP
;
#INCLUDE
;
END

计时中断LED 方向控制
范例一:int2.*
LIST P=16F877,R=DEC
#INCLUDE
;
CBLOCK 0X20
R0,WBAK,SBAK,USRFLAG
DCONT
ENDC
;
TBUF EQU 256-250
;
ORG 0
NOP
GOTO MAIN
ORG 4
MOVWF WBAK
SWAPF STATUS,0
MOVWF SBAK
MOVLW TBUF
ADDWF TMR0
DECF DCONT
MOVF DCONT,1
SKPZ
GOTO T2INT
MOVLW .200
MOVWF DCONT
BTFSS USRFLAG,0
GOTO T1INT
BCF USRFLAG,0
GOTO T2INT
T1INT: BSF USRFLAG,0
T2INT: BCF INTCON,T0IF
SWAPF SBAK,0
MOVWF STATUS
SWAPF WBAK,1
SWAPF WBAK,0
RETFIE
;
MAIN:
BANKSEL OPTION_REG
MOVLW B'00000111'
MOVWF OPTION_REG
MOVLW 0
MOVWF TRISD
BANKSEL TMR0
MOVLW TBUF
MOVWF TMR0
BSF INTCON,GIE
BSF INTCON,T0IE
MOVLW .200
MOVWF DCONT
MOVLW B'11111110'
MOVWF R0
BCF USRFLAG,0
MLOOP: MOVF R0,0
MOVWF PORTD
CALL DELAY250
BTFSC USRFLAG,0
GOTO RIGHT
LEFT: CLRC
BTFSC R0,7
SETC
RLF R0,1
GOTO MLOOP
RIGHT: CLRC
BTFSC R0,0
SETC
RRF R0,1
GOTO MLOOP
;
#INCLUDE
;
END


计时加外部中断LED方向控制
范例一:int3.*
LIST P=16F877,R=DEC
#INCLUDE
;
CBLOCK 0X20
R0,WBAK,SBAK,USRFLAG
DCONT
ENDC
;
TBUF EQU 256-250
;
ORG 0
NOP
GOTO MAIN
ORG 4
BTFSS INTCON,T0IF
GOTO INT0
BCF INTCON,INTE
MOVWF WBAK
SWAPF STATUS,0
MOVWF SBAK
MOVLW TBUF
ADDWF TMR0
DECF DCONT
MOVF DCONT,1
SKPZ
GOTO T2INT
MOVLW .200
MOVWF DCONT
BTFSS USRFLAG,0
GOTO T1INT
BCF USRFLAG,0
GOTO T2INT
T1INT: BSF USRFLAG,0
T2INT: BCF INTCON,T0IF
BSF INTCON,INTE
SWAPF SBAK,0
MOVWF STATUS
SWAPF WBAK,1
SWAPF WBAK,0
GOTO RIGHT
LEFT: CLRC
BTFSC R0,7
SETC
RLF R0,1
GOTO MLOOP
RIGHT: CLRC
BTFSC R0,0
SETC
RRF R0,1
GOTO MLOOP
;
#INCLUDE
;
END
RETFIE
;
INT0: BCF INTCON,T0IE
BTFSS USRFLAG,0
GOTO INT01
BCF USRFLAG,0
GOTO INT02
INT01: BSF USRFLAG,0
INT02: BTFSS PORTB,0
GOTO INT02
BCF INTCON,INTF
MOVLW TBUF
MOVWF TMR0
MOVLW .200
MOVWF DCONT
BSF INTCON,T0IE
RETFIE
;
MAIN:
BANKSEL OPTION_REG
MOVLW B'00000111'
MOVWF OPTION_REG
MOVLW 0
MOVWF TRISD
BANKSEL TMR0
MOVLW TBUF
MOVWF TMR0
BSF INTCON,GIE
BSF INTCON,T0IE
BSF INTCON,INTE
MOVLW .200
MOVWF DCONT
MOVLW B'11111110'
MOVWF R0
BCF USRFLAG,0
MLOOP: MOVF R0,0
MOVWF PORTD
CALL DELAY250
BTFSC USRFLAG,0


计时中断时钟 ─ 分:秒(使用七段显示器)
范例一:intclock.*
LIST P=16F877,R=DEC
#INCLUDE
;
CBLOCK 0X20
DB0,DB1,WBAK,SBAK,DCONT
C1,C2,TIMS,TIMM
ENDC
;
TBUF EQU 256-250
;
ORG 0
NOP
GOTO MAIN
ORG 4
MOVWF WBAK
SWAPF STATUS,0
MOVWF SBAK
MOVLW TBUF
ADDWF TMR0
DECF DCONT
MOVF DCONT,1
SKPZ
GOTO T2INT
MOVLW .125
MOVWF DCONT

关键词: Pic16f877 中断 控制

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关电路