?? timer.asm
字號:
;==========================================================================
; File Name : timer.asm
;
; Rev: Date: Author: Reason:
; 1.00 dd-mm-yy nnnnnnnnnnn rrrrrrrrrrrrrrrrrr
;==========================================================================
;****************************************************************************
;FUNCTION: THIS SUBROUTINE IS TO TOGGLE THE SLOW MOTION FUNCTION FLAG TO
; ENABLE THE START BIT TO BE TOGGLED DURING FIRING. WHEN THE TIMER
; IS UP THE FLAG F_PAUSE WILL BE TOGGLED AND THE TIMER RELOADED.
;FILENAME: C:\PROJECTS\SV363\TIMER.ASM
;ROUTINE NAME: P_SLOW
;INPUT: TMR_SLOW
;OUTPUT: WHEN TMR_SLOW = 0, F_PAUSE TOGGLED, TMR_SLOW = 5. IF THIS ROUTINE
; IS UPDATED EVERY 1/100 SECOND, THE RESULTING RATE = 10 HZ.
; WHEN TMR_SLOW NOT = 0, F_PAUSE UNCHANGED
;RAM AFFECTED:
;SUBROUTINE CALL:
;****************************************************************************
;
;p_slow:
; btfsc f_sloled ;PROCESS ONLY IF SLOW IS SET
; goto pslow1
; bcf f_pause ;F_PAUSE ==> START BIT NOT ASSERTED
; return
;pslow1:
; decfsz tmr_slow,F ;UPDATE SLOW COUNTER
; return ;EXIT IF NOT TIME'S UP
; btfss f_pause ;TOGGLE F_PAUSE FLAG
; goto ps_setf
; bcf f_pause
; goto pslowend
;ps_setf:
; bsf f_pause
;pslowend:
; movlw DUR_SLOW ;RELOAD COUNTER
; movw tmr_slow
; return
;
;****************************************************************************
;FUNCTION: THIS SUBROUTINE IS TO TOGGLE THE AUTO FIRE FUNCTION FLAG TO
; ENABLE THE AUTO FIRE TO BE FUNCTION DURING FIRING. WHEN THE TIMER
; IS UP THE FLAG F_FIRE WILL BE TOGGLED AND THE TIMER RELOADED.
;FILENAME: C:\PROJECTS\SV363\TIMER.ASM
;ROUTINE NAME: P_FIRE
;INPUT: TMR_AUTO
;OUTPUT: WHEN TMR_AUTO = 0, F_FIRE TOGGLED, TMR_AUTO = 5. IF THIS ROUTINE
; IS UPDATED EVERY 1/100 SECOND, THE RESULTING RATE = 10 HZ.
; WHEN TMR_AUTO NOT = 0, F_FIRE UNCHANGED
;RAM AFFECTED:
;SUBROUTINE CALL:
;****************************************************************************
;
p_fire:
btfsc f_set_force
goto pfire1
btfsc f_autled1 ;PROCESS ONLY IF AUTO IS SET
goto pfire1
bsf f_fire ;F_FIRE ==> NOW FIRING
return
pfire1:
decfsz tmr_auto,F ;UPDATE AUTO COUNTER
return ;EXIT IF NOT TIME'S UP
btfss f_fire ;TOGGLE F_FIRE FLAG
goto pf_setf
bcf f_fire
goto pfend
pf_setf:
bsf f_fire
pfend:
movlw DUR_AUTO ;RELOAD COUNTER
movw tmr_auto
return
;****************************************************************************
; p_mode_led:
; mode flash in set_force mode
;****************************************************************************
;
;p_mode:
; btfss f_set_force ;PROCESS ONLY IF in set force mode
; goto end_p_mode
;
;pmode1:
; decfsz tmr_auto,F ;UPDATE AUTO COUNTER
; return ;EXIT IF NOT TIME'S UP
; btfss f_fire ;TOGGLE F_FIRE FLAG
; goto pm_setf
; bcf f_fire
; goto end_p_mode
;pm_setf:
; bsf f_fire
;end_p_mode:
; movlw DUR_AUTO ;RELOAD COUNTER
; movw tmr_auto
; return
;------------------------------------------------------------
; Name : p_timer
; Parm :
; Retn :
; Desc :
;------------------------------------------------------------
p_timer:
call p_show_led
clrwdt
btfss timebase_intr
return
bcf timebase_intr
; 1/100th sec. processes
movf tmr_step,F
btfss STATUS,Z
decf tmr_step,F
movf tmr_beep,F
btfss STATUS,Z
decf tmr_beep,F
call p_dbc
call p_pgmled
; call p_autled
; btfss f_set_force ; if set force, no autofire
call p_fire
bsf STATUS,RP0
incf m_reset,F
movf m_reset,W
bcf STATUS,RP0
sublw 0xd0
btfsc STATUS,C
goto p_time_not_reset
bsf f_time_reset
p_time_not_reset:
end_p_timer:
return
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -