还有一段中断子程序是实现0-9999计数的,可是总是到999就清零了,调试了几天也没搞明白:
TMR0SER ;中断服务程序
MOVWF W_TEMP ;将W内容备份
SWAPF STATUS,W
CLRF STATUS
MOVWF S_TEMP ;将STATUS备份
MOVFW PCLATH
MOVWF P_TEMP
MOVFW FSR
MOVWF F_TEMP
CLRF PCLATH
DIGIT0
MOVF LED0,W
SUBLW D'9'
BTFSC STATUS,Z
GOTO DIGIT1
INCF LED0,F
GOTO TEMP_RE
DIGIT1
CLRF LED0
MOVF LED1,W
SUBLW D'9'
BTFSC STATUS,Z
GOTO DIGIT2
INCF LED1,F
GOTO TEMP_RE
DIGIT2
CLRF LED0
CLRF LED1
MOVF LED2,W
SUBLW D'9'
BTFSC STATUS,Z
GOTO DIGIT3
INCF LED2,F
GOTO TEMP_RE
DIGIT3
CLRF LED0
CLRF LED1
CLRF LED2
MOVF LED3,W
SUBLW D'9'
BTFSC STATUS,Z
INCF LED3,F
TEMP_RE
BCF PIR1,TMR1IF ;清除TMR1中断溢出标志
CLRF STATUS
MOVFW P_TEMP
MOVWF PCLATH
MOVFW S_TEMP
MOVWF STATUS
SWAPF W_TEMP,F
SWAPF W_TEMP,W
RETFIE
好像程序根本就不进DIGIT3的地方,奇怪的要死
|