简体中文 English
Tel:0755-83293082 Fax:0755-82958032 QQ:997033232 询价热线 QQ:1913901382 询价热线

  热门搜索:ltm4600ev 
首页 库存中心 图片展示 品牌分类 文章资讯 在线订购 联系方式 关于我们
快速检索库存
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9
产品资讯 您现在的位置:网站首页 > 产品资讯

Pic16f877 中断控制电路


来源: | 时间:2010年05月07日

 

程序范例:
1.外部中断LED 方向控制
2.计时中断LED 方向控制
3.计时加外部中断LED 方向控制
4.计时中断时钟 ─ 分:秒(使用七段显示器)
5.计时中断 ─ 改写8led22.asm 程序

外部中断LED 方向控制

范例一:int1.*
LIST P=16F877,R=DEC
#INCLUDE <P16F877.INC>
;
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 <DELAY250.INC>
;
END
 

计时中断LED 方向控制

范例一:int2.*
LIST P=16F877,R=DEC
#INCLUDE <P16F877.INC>
;
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 <DELAY250.INC>
;
END
 

 

计时加外部中断LED方向控制
范例一:int3.*
LIST P=16F877,R=DEC
#INCLUDE <P16F877.INC>
;
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 <DELAY250.INC>
;
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 <P16F877.INC>
;
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
CALL TEST1
CALL TEST2
T2INT: BCF INTCON,T0IF
SWAPF SBAK,0
MOVWF STATUS
SWAPF WBAK,1
SWAPF WBAK,0
RETFIE
;
MAIN:
BANKSEL OPTION_REG
MOVLW B'00000110'
MOVWF OPTION_REG
MOVLW 0

;
SWAPF TIMM,0
CALL TABLE
MOVWF PORTD
MOVLW H'F7'
MOVWF PORTB
CALL DELAY25
BSF PORTB,3
GOTO MLOOP
;
TABLE: ANDLW H'0F'
ADDWF PCL
T1: RETLW H'C0' ;'0'
RETLW H'F9' ;'1'
RETLW H'A4' ;'2'
RETLW H'B0' ;'3'
RETLW H'99' ;'4'
RETLW H'92' ;'5'
RETLW H'82' ;'6'
RETLW H'F8' ;'7'
RETLW H'80' ;'8'
RETLW H'90' ;'9'
RETLW H'88' ;'A'
RETLW H'83' ;'B'
RETLW H'C6' ;'C'
RETLW H'A1' ;'D'
RETLW H'86' ;'E'
RETLW H'8E' ;'F'
;
TEST1: INCF DB0
MOVF DB0,0
SUBLW .60
SKPZ
RETURN
MOVLW 0
MOVWF DB0
INCF DB1
MOVF DB1,0
SUBLW .60
SKPZ
RETURN
MOVLW

MOVWF TRISD
MOVWF TRISB
BANKSEL TMR0
MOVLW TBUF
MOVWF TMR0
BSF INTCON,GIE
BSF INTCON,T0IE
MOVLW .125
MOVWF DCONT
MOVLW H'FF'
MOVWF PORTB
MOVLW 0
MOVWF DB0
MOVWF DB1
MOVWF TIMS
MOVWF TIMM
MLOOP: MOVF TIMS,0
CALL TABLE
MOVWF PORTD
MOVLW H'FE'
MOVWF PORTB
CALL DELAY25
BSF PORTB,0
;
SWAPF TIMS,0
CALL TABLE
MOVWF PORTD
MOVLW H'FD'
MOVWF PORTB
CALL DELAY25
BSF PORTB,1
;
MOVF TIMM,0
CALL TABLE
MOVWF PORTD
MOVLW H'FB'
MOVWF PORTB
CALL DELAY25
BSF PORTB,2

MOVWF DB1
RETURN
;
TEST2: CLRF C1
CLRF C2
MOVF DB0,0
MOVWF TIMS
MOVF DB1,0
MOVWF TIMM
TA: MOVLW .10
SUBWF TIMS,0
SKPC
GOTO TB
MOVWF TIMS
INCF C1
GOTO TA
TB: SWAPF C1,0
IORWF TIMS,0
MOVWF TIMS
TC: MOVLW .10
SUBWF TIMM,0
SKPC
GOTO TD
MOVWF TIMM
INCF C2
GOTO TC
TD: SWAPF C2,0
IORWF TIMM,0
MOVWF TIMM
RETURN
;
#INCLUDE <DELAY25.INC>
;
END

 

 

计时中断 ─ 改写8led22.asm 程序
范例一:int4.*
LIST P=16F877,R=DEC
#INCLUDE <P16F877.INC>
;
CBLOCK H'20'
WBAK,SBAK,DCONT,PORT_REG
ENDC
;
ORG 0
NOP
GOTO MAIN
ORG 4
MOVWF WBAK
SWAPF STATUS,0
MOVWF SBAK
MOVLW 6
ADDWF TMR0
DECF DCONT
MOVF DCONT,1
SKPZ
GOTO T2INT
MOVLW 125
MOVWF DCONT
BTFSC PORT_REG,7
GOTO T1INT
MOVLW B'11111110'
MOVWF PORT_REG
GOTO T2INT
T1INT: SETC
RLF PORT_REG,1
T2INT: BCF INTCON,T0IF
SWAPF SBAK,0
MOVWF STATUS
SWAPF WBAK,1
SWAPF WBAK,0
RETFIE
;
MAIN:
BANKSEL OPTION_REG
MOVLW B'00000110'
MOVWF OPTION_REG
MOVLW 0
MOVWF TRISD
BANKSEL TMR0
MOVLW 6
MOVWF TMR0
BSF INTCON,GIE
BSF INTCON,T0IE
MOVLW 125
MOVWF DCONT
MOVLW B'11111110'
MOVWF PORT_REG
AGAIN: MOVF PORT_REG,0
MOVWF PORTD
GOTO AGAIN
END
※ 移位时间设为1 秒钟 ※
 


上一篇:CPLD是什么
下一篇:电磁炉igbt代换


网站首页 | 库存中心 | 图片展示 | 品牌分类 | 文章资讯 | 在线订购 | 联系我们 | 关于我们
Copyright @ 1998 - 2019 Henlito. All Rights Reserve 备案号:粤ICP备2024178190号-2
页面执行时间:0.0309911 秒
在线客服系统

IGBT模块IGBT 三菱IGBT英飞凌IGBT模块Infineon英飞凌SEMIKRONSanRex西门康整流桥三社可控硅

富士IGBT