#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 |