call init_tmr1_prg
continue_pd clrwdt call pd_tmr1_stop_prg btfss stop_sign ;判断计数器是否停止 goto continue_pd;没有停止则继续关门 ;******************************************************************** pd_tmr1_stop_prg call delay001s decfsz r4,1 goto pd_tmr1_stop_prg_ret1 movlw d'100' movwf r4 movf tmr1l,0 subwf ys_tmr1l,0 btfss z goto tmr1_no_stop movf tmr1h,0 subwf ys_tmr1h,0 btfss z goto tmr1_no_stop bsf stop_sign ;计数器的停止标志 goto pd_tmr1_stop_prg_ret tmr1_no_stop movf tmr1l,0 movwf ys_tmr1l movf tmr1h,0 movwf ys_tmr1h pd_tmr1_stop_prg_ret1 bcf stop_sign pd_tmr1_stop_prg_ret return
;******************************************************************* ;子程序名:定时器1初始化程序'init_tmr1_prg'
;*************************************************************** init_tmr1_prg movlw b'00000010' ;工作在计数状态,分频比为1:1 movwf t1con clrf intcon clrf tmr1l clrf tmr1h clrf ys_tmr1l clrf ys_tmr1h bsf tmr1on ;计数器开始计数 bcf stop_sign ;计数器停止标志位清‘0’ return ;****************************************************************** |