📄 pwm_proc.asm
字号:
L_CH1_AAPwmProc:
;Input
; ch1 ADC Value...
; ch4 ADC Value...
; M_CH1mA_Buf
; M_CH2mA_Buf
;=================================================================================
;first part pwm control....
;;-----------------------------------------------------------
SNZ F_ADC1_OK ;current channel
JMP L_CH1_Endcheck
CLR F_ADC1_OK
;-----------------------------------------------------------
SZ M_CH1_Delay20ms
JMP L_CH1_ADC1_pwm1
; check if baterry off lone
SZ M_Ch1AdcBufH
JMP L_CH1_ADC1_pwm1
MOV A,M_Ch1AdcBufL
SUB A,5
SZ C
JMP L_CH1_ADC1_pwm1
MOV A,CH1_TestMode
XOR A,1
SNZ Z
JMP L_CH1_ADC1_pwm1
;SET F_Ch1_EnDelay05s
;mov A,50
;MOV M_Ch1Delay05s,a
CALL L_CH1_RESET
RET
L_CH1_ADC1_pwm1:
;-----------------------------------------------------------
CALL L_CH1_CalDelta ;0
MOV A,M_Pwm0Delta
SUB A,C_CH1_500mADelta
SNZ C
JMP L_CH1_InDeltaRange
SNZ F_CH1_Negtive
JMP L_CH1_DecPwm0Buf
MOV A,M_PWM0_BUF
XOR A,0FFH
SNZ Z
inc M_PWM0_BUF
JMP L_CH1_InDeltaRange
L_CH1_DecPwm0Buf:
sz M_PWM0_BUF
DEC M_PWM0_BUF
L_CH1_InDeltaRange:
MOV A,M_PWM0_BUF
MOV PWM0,A
L_CH1_Endcheck:
RET
;=================================================================================
L_CH1_AAAPwmProc:
;Input
; ch1 ADC Value...
; ch4 ADC Value...
; M_CH1mA_Buf
; M_CH2mA_Buf
;=================================================================================
;first part pwm control....
;;-----------------------------------------------------------
SNZ F_ADC2_OK ;current channel
JMP L_CH1_AAAEndcheck
CLR F_ADC2_OK
;-----------------------------------------------------------
SZ M_CH1_Delay20ms
JMP L_CH1_ADC2_pwm1
; check if baterry off line
SZ M_Ch2AdcBufH
JMP L_CH1_ADC2_pwm1
MOV A,M_Ch2AdcBufL
SUB A,5
SZ C
JMP L_CH1_ADC2_pwm1
MOV A,CH1_TestMode
XOR A,1
SNZ Z
JMP L_CH1_ADC2_pwm1
;SET F_Ch1_EnDelay05s
;mov A,50
;MOV M_Ch1Delay05s,a
CALL L_CH1_RESET
RET
L_CH1_ADC2_pwm1:
;-----------------------------------------------------------
CALL L_CH1_AAACalDelta
MOV A,M_Pwm0Delta
SUB A,C_CH1_500mADelta
SNZ C
JMP L_CH1_AAAInDeltaRange
SNZ F_CH1_AAANegtive
JMP L_CH1_AAADecPwm0Buf
MOV A,M_PWM0_BUF
XOR A,0FFH
SNZ Z
inc M_PWM0_BUF
JMP L_CH1_AAAInDeltaRange
L_CH1_AAADecPwm0Buf:
sz M_PWM0_BUF
DEC M_PWM0_BUF
L_CH1_AAAInDeltaRange:
MOV A,M_PWM0_BUF
MOV PWM0,A
L_CH1_AAAEndcheck:
RET
;=================================================================================
L_CH2_AAPwmProc:
;=================================================================================
;second part pwm control....
;;-----------------------------------------------------------
SNZ F_ADC4_OK ;current channel
JMP L_CH2_Endcheck
CLR F_ADC4_OK
;-----------------------------------------------------------
SZ M_CH2_Delay20ms
JMP L_CH2_ADC4_pwm1
; check if baterry off line
SZ M_Ch4AdcBufH
JMP L_CH2_ADC4_pwm1
MOV A,M_Ch4AdcBufL
SUB A,5
SZ C
JMP L_CH2_ADC4_pwm1
;SET F_Ch2_EnDelay05s
;mov A,50
;MOV M_Ch2Delay05s,a
MOV A,CH2_TestMode
XOR A,1
SNZ Z
JMP L_CH2_ADC4_pwm1
CALL L_CH2_RESET
RET
L_CH2_ADC4_pwm1:
;-----------------------------------------------------------
CALL L_CH2_CalDelta
MOV A,M_Pwm1Delta
SUB A,C_CH2_500mADelta
SNZ C
JMP L_CH2_InDeltaRange
SNZ F_CH2_Negtive
JMP L_CH2_DecPwm1Buf
MOV A,M_PWM1_BUF
XOR A,0FFH
SNZ Z
inc M_PWM1_BUF
JMP L_CH2_InDeltaRange
L_CH2_DecPwm1Buf:
sz M_PWM1_BUF
DEC M_PWM1_BUF
L_CH2_InDeltaRange:
MOV A,M_PWM1_BUF
MOV PWM1,A
L_CH2_Endcheck:
RET
;=================================================================================
L_CH2_AAAPwmProc:
;=================================================================================
;second part pwm control....
;;-----------------------------------------------------------
SNZ F_ADC5_OK ;current channel
JMP L_CH2_AAAEndcheck
CLR F_ADC5_OK
;-----------------------------------------------------------
SZ M_CH2_Delay20ms
JMP L_CH2_ADC5_pwm1
; check if baterry off line
SZ M_Ch5AdcBufH
JMP L_CH2_ADC5_pwm1
MOV A,M_Ch5AdcBufL
SUB A,5
SZ C
JMP L_CH2_ADC5_pwm1
; SET F_Ch2_EnDelay05s
; mov A,50
; MOV M_Ch2Delay05s,a
MOV A,CH2_TestMode ;5s charge state...
XOR A,1
SNZ Z
JMP L_CH2_ADC5_pwm1
CALL L_CH2_RESET
RET
L_CH2_ADC5_pwm1:
;-----------------------------------------------------------
CALL L_CH2_AAACalDelta
MOV A,M_Pwm1Delta
SUB A,C_CH2_500mADelta
SNZ C
JMP L_CH2_AAAInDeltaRange
SNZ F_CH2_AAANegtive
JMP L_CH2_AAADecPwm1Buf
MOV A,M_PWM1_BUF
XOR A,0FFH
SNZ Z
inc M_PWM1_BUF
JMP L_CH2_AAAInDeltaRange
L_CH2_AAADecPwm1Buf:
sz M_PWM1_BUF
DEC M_PWM1_BUF
L_CH2_AAAInDeltaRange:
MOV A,M_PWM1_BUF
MOV PWM1,A
L_CH2_AAAEndcheck:
RET
;=================================================================================
;=================================================================================
L_CH1_CalDelta:
SZ M_Ch1AdcBufH
JMP L_CH1_ErrorProc
CLR F_CH1_Negtive
MOV A,M_Ch1AdcBufL
SUB A,M_CH1mA_Buf ;C_CH1_500mA
SZ C
JMP L_CH1_SaveDelta
SET F_CH1_Negtive
CPL ACC
INC ACC
L_CH1_SaveDelta:
MOV M_Pwm0Delta,a
L_CH1_ErrorProc:
RET
;=================================================================================
;-----------------------------------------------------------------------------
L_CH1_AAACalDelta:
SZ M_Ch2AdcBufH
JMP L_CH2_AAAErrorProc
CLR F_CH1_AAANegtive
MOV A,M_Ch2AdcBufL
SUB A,M_CH1mA_Buf ;C_CH1_500mA
SZ C
JMP L_CH1_AAASaveDelta
SET F_CH1_AAANegtive
CPL ACC
INC ACC
L_CH1_AAASaveDelta:
MOV M_Pwm0Delta,a
L_CH1_AAAErrorProc:
RET
;=================================================================================
;=================================================================================
L_CH2_CalDelta:
SZ M_Ch4AdcBufH
JMP L_CH2_ErrorProc
CLR F_CH2_Negtive
MOV A,M_Ch4AdcBufL
SUB A,M_CH2mA_Buf ;C_CH2_500mA
SZ C
JMP L_CH2_SaveDelta
SET F_CH2_Negtive
CPL ACC
INC ACC
L_CH2_SaveDelta:
MOV M_Pwm1Delta,a
L_CH2_ErrorProc:
RET
;=================================================================================
;=================================================================================
L_CH2_AAACalDelta:
SZ M_Ch5AdcBufH
JMP L_CH2_AAAErrorProc
CLR F_CH2_AAANegtive
MOV A,M_Ch5AdcBufL
SUB A,M_CH2mA_Buf ;C_CH2_500mA
SZ C
JMP L_CH2_AAASaveDelta
SET F_CH2_AAANegtive
CPL ACC
INC ACC
L_CH2_AAASaveDelta:
MOV M_Pwm1Delta,a
L_CH2_AAAErrorProc:
RET
;=================================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -