list p=16f876
#include
;--------------------------
;定時計數(shù)單元
HW_TIME EQU 0X40
;-----------------------------
;定時常數(shù)
HW_TIMECT0 EQU 0XDF;TMR0定時器時間常數(shù),載波信號頻率37.88KHz(13.2us)
HW_TIMECT1 EQU 0X64;發(fā)送信號位間隔,*(1.32ms)
HW_TIMECT3 EQU 0X31;
;-------------------------------------
ORG 0X00
GOTO HW_RECEIVE
;------------------------------------
ORG 0X04
GOTO INT
;---------------------------------------
bcf INTCON,GIE
BCF INTCON,T0IF ;(T0IF)定時器溢出標志位清零
BCF INTCON,T0IE ;關TMR0中斷(T0IE)位清零
BANKSEL OPTION_REG
CLRF OPTION_REG
BANKSEL HW_TIME
MOVLW HW_TIMECT3
MOVWF HW_TIME
MOVLW HW_TIMECT0
MOVWF TMR0
BANKSEL INTCON
BSF INTCON,T0IE
BSF INTCON,GIE
INT;中斷
movwf W_TEMP
movf STATUS,0
bcf STATUS,RP0;working in bank0
movwf STATUS_TEMP
MOVLW HW_TIMECT0
MOVWF TMR0 ;重裝定時常數(shù)
BCF INTCON,T0IF ;清除中斷溢出標志位(T0IF)
;----------------------------------------------------------------------
DECFSZ HW_TIME,1 ;為零,間跳,定時時間到
GOTO HW_LEAVE1
MOVLW HW_TIMECT1 ;重裝時間常數(shù)
MOVWF HW_TIME
BSF HW_Sign,1
HW_LEAVE1
BANKSEL STATUS_TEMP
MOVF STATUS_TEMP,0
MOVWF STATUS
MOVF W_TEMP
RETFIE