TMR0定时中断扫描 中断服务
BCF INTCON,T0IF ;清TRM0溢出标志位 … … RETFIE
定时器16ms中断定时
MOVLW 0A0H ;打开TMR0中断申请 MOVWF INTCON
BSF STATUS,RP0 ;选体1
MOVLW 05H ;设置TMR0分频比1:
MOVWF OPTION_REG
BCF STATUS,RP0 ;选体0
MOVLW 05H ;送初值常数入TMR0,时间为16mS MOVWF TMR0
GOTO $-1 ;等待TMR0中断发生
减1计数程序 GWJY
DECF LED0 ;个位减1
MOVLW 00H ;将W寄存器设数值为0 SUBWF LED0 ;将LED0减0
BTFSS STATUS,Z ;检测LED0是否到0
GOTO GWJY ;个位不到0,返回继续减1 DECF LED1 ;个位到0,十位减1 MOVLW 09H ;个为设数值为9 MOVWF LED0 SWJY
MOVLW 00H ;将W寄存器设数值为0 SUBWF LED1 ;将LED1减0
BTFSS STATUS,Z ;检测LED1是否到0 GOTO GWJY ;十位不到0,返回继续减1 DECF LED2 ;十位到0,百位减1 MOVLW 09H ;十位设数值为9 MOVWF LED1 BWJY
MOVLW 00H ;将W寄存器设数值为0 SUBWF LED2 ;将LED2减0
BTFSS STATUS,Z ;检测LED2是否到0 GOTO GWJY ;百位不到0,返回继续减1 DECF LED3 ;百位到0,千位减1 MOVLW 09H ;百位设数值为9
PDF created with FinePrint pdfFactory trial version http://www.fineprint.comMOVWF LED2 QWJY
MOVLW 00H ;将W寄存器设数值为0 SUBWF LED3 ;将LED3减0
BTFSS STATUS,Z ;检测LED3是否到0 GOTO GWJY ;千位不到0,返回继续减1 MOVLW 09H ;千位到0重设数值为9999 MOVWF LDE3 MOVWF LDE2 MOVWF LDE1 MOVWF LDE0 RETURN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;计数程序
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; GWX INCF LED0,F ;个位加1
MOVF LED0,W ;将个位当前值送W XORLW 0AH ;检测个位是否满10 BTFSS STATUS,Z
GOTO GWX ;不满10返回GWX继续 INCF LED1 ;满10,十位加1 CLRF LED0 ;满10,个位清0
BCF STATUS,Z ;满10,STATUS寄存器Z位清0 SWX MOVF LED1,W ;将十位当前值送W XORLW 0AH ;检测十位是否满10 BTFSS STATUS,Z
GOTO GWX ;不满10返回GWX继续 INCF LED2 ;满10,百位加1 CLRF LED1 ;满10,十位清0
BCF STATUS,Z ;满10,STATUS寄存器Z位清0 BWX MOVF LED2,W ;将百位当前值送W XORLW 0AH ;检测百位是否满10 BTFSS STATUS,Z
GOTO GWX ;不满10返回GWX继续 INCF LED3 ;满10,千位加1 CLRF LED2 ;满10,百位清0
BCF STATUS,Z ;满10,STATUS寄存器Z位清0 QWX MOVF LED3,W ;将千位当前值送W XORLW 0AH ;检测千位是否满10 BTFSS STATUS,Z
GOTO GWX ;不满10返回GWX继续 CLRF LED0 ;千位满10,个位清0 CLRF LED1 ;千位满10,十位清0 CLRF LED2 ;千位满10,百位清0
PDF created with FinePrint pdfFactory trial version http://www.fineprint.com CLRF LED3 ;千位满10,千位清0
BCF STATUS,Z ;千位满10,STATUS寄存器Z位清0 RETURN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;计数程序
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; GWX INCF LED0,F ;个位加1
MOVF LED0,W ;将个位当前值送W XORLW 0AH ;检测个位是否满10 BTFSS STATUS,Z
GOTO GWX ;不满10返回GWX继续 INCF LED1 ;满10,十位加1 CLRF LED0 ;满10,个位清0
BCF STATUS,Z ;满10,STATUS寄存器Z位清0 SWX MOVF LED1,W ;将十位当前值送W XORLW 0AH ;检测十位是否满10 BTFSS STATUS,Z
GOTO GWX ;不满10返回GWX继续 INCF LED2 ;满10,百位加1 CLRF LED1 ;满10,十位清0
BCF STATUS,Z ;满10,STATUS寄存器Z位清0 BWX MOVF LED2,W ;将百位当前值送W XORLW 0AH ;检测百位是否满10 BTFSS STATUS,Z
GOTO GWX ;不满10返回GWX继续 INCF LED3 ;满10,千位加1 CLRF LED2 ;满10,百位清0
BCF STATUS,Z ;满10,STATUS寄存器Z位清0 QWX MOVF LED3,W ;将千位当前值送W XORLW 0AH ;检测千位是否满10 BTFSS STATUS,Z
GOTO GWX ;不满10返回GWX继续 CLRF LED0 ;千位满10,个位清0 CLRF LED1 ;千位满10,十位清0 CLRF LED2 ;千位满10,百位清0 CLRF LED3 ;千位满10,千位清0
BCF STATUS,Z ;千位满10,STATUS寄存器Z位清0 RETURN
PDF created with FinePrint pdfFactory trial version http://www.fineprint.com