📄 checkvolt2.asm
字号:
L_CH2_AAPwmProc:
;=================================================================================
;second part pwm control....
;;-----------------------------------------------------------
SNZ F_ADC4_OK ;current channel
JMP L_CH2_Endcheck
CLR F_ADC4_OK
;------------------------------------------
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_CH2_PWMDelta,a
L_CH2_ErrorProc:
;------------------------------------------
MOV A,M_CH2_PWMDelta
SUB A,C_CH2_500mADelta
SNZ C
JMP L_CH2_InDeltaRange
SNZ F_CH2_Negtive
JMP L_CH2_DecPwm1Buf
SZ F_CH1_AA ;If is AA Not Check AAA...
JMP L_CH2_LIMIT_AA_TO_250MA
SZ F_CH1_AAA
JMP L_CH2_LIMIT_AA_TO_250MA
MOV A,M_CH2_PWM_BUF
XOR A,17H ;0FFH
SNZ Z
inc M_CH2_PWM_BUF
JMP L_CH2_InDeltaRange
L_CH2_LIMIT_AA_TO_250MA:
MOV A,M_CH2_PWM_BUF
XOR A,9H ;0FFH
SNZ Z
inc M_CH2_PWM_BUF
JMP L_CH2_InDeltaRange
L_CH2_DecPwm1Buf:
sz M_CH2_PWM_BUF
DEC M_CH2_PWM_BUF
L_CH2_InDeltaRange:
MOV A,M_CH2_PWM_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_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_CH2_PWMDelta,a
L_CH2_AAAErrorProc:
;------------------------------------------
MOV A,M_CH2_PWMDelta
SUB A,C_CH2_500mADelta
SNZ C
JMP L_CH2_AAAInDeltaRange
SNZ F_CH2_AAANegtive
JMP L_CH2_AAADecPwm1Buf
SZ F_CH1_AA ;If is AA Not Check AAA...
JMP L_CH2_LIMIT_AAA_TO_250MA
SZ F_CH1_AAA
JMP L_CH2_LIMIT_AAA_TO_250MA
MOV A,M_CH2_PWM_BUF
XOR A,17H ;0FFH
SNZ Z
inc M_CH2_PWM_BUF
JMP L_CH2_AAAInDeltaRange
L_CH2_LIMIT_AAA_TO_250MA:
MOV A,M_CH2_PWM_BUF
XOR A,9H ;0FFH
SNZ Z
inc M_CH2_PWM_BUF
JMP L_CH2_AAAInDeltaRange
L_CH2_AAADecPwm1Buf:
sz M_CH2_PWM_BUF
DEC M_CH2_PWM_BUF
L_CH2_AAAInDeltaRange:
MOV A,M_CH2_PWM_BUF
MOV PWM1,A
L_CH2_AAAEndcheck:
RET
;=================================================================================
;=================================================================================
;input :
; MP1 Point Now Value.
; sample address : M_CH2_Csample_L0
; sample count : M_CH2_Csample_Num
;output:
; 4 times Average ok : F_CH2_ConeCircleOk
; Average value in : M_CH2_Cnow_H/M_CH2_Cnow_L
;=================================================================================
L_CH2_ComSampleProc:
MOV A,M_CH2_Csample_Num ;point
MOV M_TEMP,A
RL M_TEMP ;*2
DEC M_TEMP ;*2-1
MOV A,OFFSET M_CH2_Csample_L1;0
ADD A,M_TEMP
MOV MP0,A
MOV A,R1 ;M_Ch3AdcBufH
MOV R0,A
DEC MP1
DEC MP0
MOV A,R1 ;M_Ch3AdcBufL
MOV R0,A
INC MP1
SDZ M_CH2_Csample_Num ;sample 6 times over...
RET
CLR M_CH2_Cnow_L
CLR M_CH2_Cnow_H
MOV A,OFFSET M_CH2_CSample_L1
MOV MP0,A
;-------------------------------------------------- ;1
MOV A,R0
ADDM A,M_CH2_Cnow_L
INC MP0
MOV A,R0
ADCM A,M_CH2_Cnow_H
;-------------------------------------------------- ;2
INC MP0
MOV A,R0
ADDM A,M_CH2_Cnow_L
INC MP0
MOV A,R0
ADCM A,M_CH2_Cnow_H
;-------------------------------------------------- ;3
INC MP0
MOV A,R0
ADDM A,M_CH2_Cnow_L
INC MP0
MOV A,R0
ADCM A,M_CH2_Cnow_H
;-------------------------------------------------- ;4
INC MP0
MOV A,R0
ADDM A,M_CH2_Cnow_L
INC MP0
MOV A,R0
ADCM A,M_CH2_Cnow_H
;--------------------------------------------------
CLR C
RRC M_CH2_Cnow_H
RRC M_CH2_Cnow_L
CLR C
RRC M_CH2_Cnow_H
RRC M_CH2_Cnow_L ;/4
SET F_CH2_COneCircleOk
;--------------------------------------------------------------------------------
RET
;=================================================================================
;=================================================================================
;--------------------------------------------------------------------------------
L_CH2_SampleProc:
MOV A,M_CH2_Sample_Num ;point
MOV M_TEMP,A
RL M_TEMP ;*2
DEC M_TEMP ;*2-1
MOV A,OFFSET M_CH2_Sample_L1;0
ADD A,M_TEMP
MOV MP0,A
MOV A,M_Ch3AdcBufH
MOV R0,A
DEC MP0
MOV A,M_Ch3AdcBufL
MOV R0,A
SDZ M_CH2_Sample_Num
RET
SET F_CH2_Sample8Ok
MOV A,4;6
MOV M_CH2_Sample_Num,A
RET
;--------------------------------------------------------------------------------
;--------------------------------------------------------------------------------
L_CH2_FilterAvgAndOverCheck:
SNZ F_CH2_Sample8Ok
RET
CLR F_CH2_Sample8Ok
;-------------------------------------------------
L_CH2_SortProc:
;-------------------------------------------------
L_CH2_AvgProc:
CLR M_CH2_NOW_L
CLR M_CH2_NOW_H
MOV A,OFFSET M_CH2_Sample_L1
MOV MP0,A
;-------------------------------------------------- ;1
MOV A,R0
ADDM A,M_CH2_NOW_L
INC MP0
MOV A,R0
ADCM A,M_CH2_NOW_H
;-------------------------------------------------- ;2
INC MP0
MOV A,R0
ADDM A,M_CH2_NOW_L
INC MP0
MOV A,R0
ADCM A,M_CH2_NOW_H
;-------------------------------------------------- ;3
INC MP0
MOV A,R0
ADDM A,M_CH2_NOW_L
INC MP0
MOV A,R0
ADCM A,M_CH2_NOW_H
;-------------------------------------------------- ;4
INC MP0
MOV A,R0
ADDM A,M_CH2_NOW_L
INC MP0
MOV A,R0
ADCM A,M_CH2_NOW_H
;--------------------------------------------------
CLR C
RRC M_CH2_NOW_H
RRC M_CH2_NOW_L
CLR C
RRC M_CH2_NOW_H
RRC M_CH2_NOW_L ;/4
; wang MOV A,M_CH2_NOW_L
; wang MOV M_CH2_BatValueL,A
; wang
; wang MOV A,M_CH2_NOW_H
; wang MOV M_CH2_BatValueH,A
; wang
; wang MOV A,6
; wangL_CH2_GoOnLeftMove:
; wang CLR C
; wang RLC M_CH2_BatValueL
; wang RLC M_CH2_BatValueH
; wang SDZ ACC
; wang JMP L_CH2_GoOnLeftMove
SET F_CH2_OneCircleOk
RET
;--------------------------------------------------------------------------------
;=================================================================================
L_CH2_MaxVoltageProc:
;second part Max Voltage....
MOV A,M_CH2_NOW_L
SUB A,C_CH2_MaxVL
MOV A,C_CH2_MaxVH
MOV M_TEMP,A
MOV A,M_CH2_NOW_H
SBC A,M_TEMP
SNZ C
JMP L_CH2_ResetMaxTimer
INC M_CH2_Max_Times
MOV A,M_CH2_Max_Times
SUB A,C_CH2_Max_TData
SNZ C
JMP L_CH2_EndMaxCheckProc
CLR M_CH2_Max_Times
NOP
JMP L_CH2_ChargeOver
L_CH2_ResetMaxTimer:
CLR M_CH2_Max_Times
L_CH2_EndMaxCheckProc:
RET
;=================================================================================
;=================================================================================
L_CH2_BatFull_0Delta:
;second part 0 DeltaV....
;--------------------------------------------------------------------------------
;input C_0DeltaL
; C_0_DeltaTimeH/C_0_DeltaTimeL
; M_CH2_NOW_H/M_CH2_NOW_L
;--------------------------------------------------------------------------------
L_CH2_BatFullCheck: ;0 DeltaV Judge...
MOV A,M_CH2_NOW_L
SUB A,M_CH2_Last0DeltaL
MOV M_CH2_LastDeltaL,A
MOV A,M_CH2_NOW_H
SBC A,M_CH2_Last0DeltaH
MOV M_CH2_LastDeltaH,A
SZ C
JMP L_CH2_0DeltaLargeProc
CPL M_CH2_LastDeltaL ;compl
CPL M_CH2_LastDeltaH
SET C
MOV A,0
ADCM A,M_CH2_LastDeltaL
MOV A,0
ADCM A,M_CH2_LastDeltaH
L_CH2_0DeltaLargeProc:
MOV A,M_CH2_LastDeltaL
SUB A,C_CH2_0DeltaVData ;Constant
CLR M_TEMP
MOV A,M_CH2_LastDeltaH
SBC A,M_TEMP
SZ C
JMP L_CH2_0DeltaLarge
L_CH2_CountTime:
inc M_CH2_0Delta_Times
mov a,M_CH2_0Delta_Times
SUB A,C_CH2_0DeltaTData
SNZ C
JMP L_CH2_End0DeltaVProc
CLR M_CH2_0Delta_Times
NOP
JMP L_CH2_ChargeOver
L_CH2_0DeltaLarge:
CLR M_CH2_0Delta_Times
;-------------------------------------------------
MOV A,M_CH2_NOW_L
MOV M_CH2_Last0DeltaL,A
MOV A,M_CH2_NOW_H
MOV M_CH2_Last0DeltaH,A
;--------------------------------------------------------------------------------
L_CH2_End0DeltaVProc:
RET
;=================================================================================
;=================================================================================
L_CH2_BatFull_NDelta:
;second part -DeltaV
;--------------------------------------------------------------------------------
L_CH2_BatFullCheck2: ;-Delta V Judge...
MOV A,M_CH2_NOW_L
SUB A,M_CH2_LastNDeltaL
MOV M_CH2_LastDeltaL,A
MOV A,M_CH2_NOW_H
SBC A,M_CH2_LastNDeltaH
MOV M_CH2_LastDeltaH,A
SNZ C
JMP L_CH2_SmallProc
L_CH2_LargeProc:
CLR M_CH2_NDelta_Times
MOV A,M_CH2_NOW_L
MOV M_CH2_LastNDeltaL,A
MOV A,M_CH2_NOW_H
MOV M_CH2_LastNDeltaH,A
RET
;----------------------------------------
L_CH2_SmallProc:
CPL M_CH2_LastDeltaL
CPL M_CH2_LastDeltaH
SET C
MOV A,0
ADCM A,M_CH2_LastDeltaL
MOV A,0
ADCM A,M_CH2_LastDeltaH
MOV A,M_CH2_LastDeltaL
SUB A,C_CH2_NDeltaVData
CLR M_TEMP
MOV A,M_CH2_LastDeltaH
SBC A,M_TEMP
SNZ C
RET
INC M_CH2_NDelta_Times
MOV A,M_CH2_NDelta_Times
SUB A,C_CH2_NDeltaTData
SNZ C
RET
CLR M_CH2_NDelta_Times
nop
L_CH2_ChargeOver:
CH2_PWM_OFF
;26/01--2007 CLR F_CH2_AAA
;26/01--2007 CLR F_CH2_AA ;If is AA Not Check AAA...
;6/02--2007CLR F_CH2_DisChargeOk
CLR F_CH2StartCharge ;Clear time..
CLR M_CH2ChargeSec
CLR M_CH2ChargeMin
CLR M_CH2ChargeHour
CLR F_CH2_DisChargeing ;
CLR F_CH2_BatReverse ;
CLR F_CH2_NoChargeBat ;
CLR F_CH2_Chargeing ;
CLR F_CH2_NoBat ;
SET F_CH2ChargeOver
MOV A,0
MOV CH2_TestMode,A
RET
;=================================================================================
;=================================================================================
L_CH2_LimitTimeProc:
SNZ F_CH2_MaxTimer_Ok
RET
CLR F_CH2_MaxTimer_Ok
JMP L_CH2_ChargeOver
;=================================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -