#INCLUDE<P16F877A.INC>
W_TEMP EQU 70H ; 現(xiàn)場(chǎng)保護(hù)寄存器 STATUS_TEMP EQU 71H PCLATH_TEMP EQU 72H COUNT EQU 20H ; 軟件延時(shí)寄存器 RC EQU 21H ; 定義影子寄存器
ORG 0000H GOTO MAIN
ORG 0004H ;中斷入口
MOVWF W_TEMP ;現(xiàn)場(chǎng)保護(hù) SWAPF STATUS,W CLRF STATUS MOVWF STATUS_TEMP MOVF PCLATH,W MOVWF PCLATH_TEMP
BCF INTCON,T0IF ;中斷標(biāo)志位清零 MOVLW 3CH ADDWF TMR0,F DECFSZ COUNT,F ;軟件延時(shí),循環(huán)十次,每次0.05s GOTO INTEND COMF RC,F MOVF RC,W ;01H取反為0FEH MOVWF PORTC ;輸出信號(hào) MOVLW 0AH MOVWF COUNT GOTO INTEND
MAIN MOVLW 0AH MOVWF COUNT BSF STATUS,RP0 ;置體一 CLRF TRISC MOVLW 0FEH ;定義RC0為輸出 MOVWF TRISC MOVLW 07H MOVWF OPTION_REG ;設(shè)置分頻比為1:256 BCF STATUS,RP0 ;置體0 MOVLW 01H MOVWF RC BSF INTCON,T0IE ;開啟中斷 BSF INTCON,GIE MOVLW 3CH MOVWF TMR0 GOTO $
INTEND ;現(xiàn)場(chǎng)恢復(fù) MOVF PCLATH_TEMP,W MOVWF PCLATH SWAPF STATUS_TEMP,W MOVWF STATUS SWAPF W_TEMP,F SWAPF W_TEMP,W RETFIE
END |