|
#INCLUDE<P16F877A.INC>
W_TEMP EQU 70H ; 現場保護寄存器 STATUS_TEMP EQU 71H PCLATH_TEMP EQU 72H COUNT EQU 20H ; 軟件延時寄存器 RC EQU 21H ; 定義影子寄存器
ORG 0000H GOTO MAIN
ORG 0004H ;中斷入口
MOVWF W_TEMP ;現場保護 SWAPF STATUS,W CLRF STATUS MOVWF STATUS_TEMP MOVF PCLATH,W MOVWF PCLATH_TEMP
BCF INTCON,T0IF ;中斷標志位清零 MOVLW 3CH ADDWF TMR0,F DECFSZ COUNT,F ;軟件延時,循環十次,每次0.05s GOTO INTEND COMF RC,F MOVF RC,W ;01H取反為0FEH MOVWF PORTC ;輸出信號 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 ;設置分頻比為1:256 BCF STATUS,RP0 ;置體0 MOVLW 01H MOVWF RC BSF INTCON,T0IE ;開啟中斷 BSF INTCON,GIE MOVLW 3CH MOVWF TMR0 GOTO $
INTEND ;現場恢復 MOVF PCLATH_TEMP,W MOVWF PCLATH SWAPF STATUS_TEMP,W MOVWF STATUS SWAPF W_TEMP,F SWAPF W_TEMP,W RETFIE
END |