📄 checkvolt1.asm
字号:
;=============================================================================
L_CH1_AAPwmProc:
;=================================================================================
;;-----------------------------------------------------------
SNZ F_ADC1_OK ;current channel
JMP L_CH1_Endcheck
CLR F_ADC1_OK
;------------------------------------------
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_CH1_PWMDelta,a
L_CH1_ErrorProc:
;------------------------------------------
MOV A,M_CH1_PWMDelta
SUB A,C_CH1_500mADelta
SNZ C
JMP L_CH1_InDeltaRange
SNZ F_CH1_Negtive
JMP L_CH1_DecPwm1Buf
SZ F_CH2_AA ;If is AA Not Check AAA...
JMP L_CH1_LIMIT_AA_TO_250MA
SZ F_CH2_AAA
JMP L_CH1_LIMIT_AA_TO_250MA
MOV A,M_CH1_PWM_BUF
XOR A,17H ;0FFH
SNZ Z
inc M_CH1_PWM_BUF
JMP L_CH1_InDeltaRange
L_CH1_LIMIT_AA_TO_250MA:
MOV A,M_CH1_PWM_BUF
XOR A,9H ;0FFH
SNZ Z
inc M_CH1_PWM_BUF
JMP L_CH1_InDeltaRange
L_CH1_DecPwm1Buf:
sz M_CH1_PWM_BUF
DEC M_CH1_PWM_BUF
L_CH1_InDeltaRange:
MOV A,M_CH1_PWM_BUF
MOV PWM0,A
L_CH1_Endcheck:
RET
;=================================================================================
L_CH1_AAAPwmProc:
;=================================================================================
;;-----------------------------------------------------------
SNZ F_ADC2_OK ;current channel
JMP L_CH1_AAAEndcheck
CLR F_ADC2_OK
;------------------------------------------
SZ M_Ch2AdcBufH
JMP L_CH1_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_CH1_PWMDelta,a
L_CH1_AAAErrorProc:
;------------------------------------------
MOV A,M_CH1_PWMDelta
SUB A,C_CH1_500mADelta
SNZ C
JMP L_CH1_AAAInDeltaRange
SNZ F_CH1_AAANegtive
JMP L_CH1_AAADecPwm1Buf
SZ F_CH2_AA ;If is AA Not Check AAA...
JMP L_CH1_LIMIT_AAA_TO_250MA
SZ F_CH2_AAA
JMP L_CH1_LIMIT_AAA_TO_250MA
MOV A,M_CH1_PWM_BUF
XOR A,17H ;0FFH
SNZ Z
inc M_CH1_PWM_BUF
JMP L_CH1_AAAInDeltaRange
L_CH1_LIMIT_AAA_TO_250MA:
MOV A,M_CH1_PWM_BUF
XOR A,9H ;0FFH
SNZ Z
inc M_CH1_PWM_BUF
JMP L_CH1_AAAInDeltaRange
L_CH1_AAADecPwm1Buf:
sz M_CH1_PWM_BUF
DEC M_CH1_PWM_BUF
L_CH1_AAAInDeltaRange:
MOV A,M_CH1_PWM_BUF
MOV PWM0,A
L_CH1_AAAEndcheck:
RET
;=================================================================================
;=================================================================================
;input :
; MP1 Point Now Value.
; sample address : M_CH1_Csample_L0
; sample count : M_CH1_Csample_Num
;output:
; 4 times Average ok : F_CH1ConeCircleOk
; Average value in : M_CH1_Cnow_H/M_CH1_Cnow_L
;=================================================================================
L_CH1_ComSampleProc: ;Current Sample.....
MOV A,M_CH1_Csample_Num ;point
MOV M_TEMP,A
RL M_TEMP ;*2
DEC M_TEMP ;*2-1
MOV A,OFFSET M_CH1_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_CH1_Csample_Num ;sample 6 times over...
RET
;-------------------------------------------------- ;1
CLR M_CH1_Cnow_L
CLR M_CH1_Cnow_H
MOV A,OFFSET M_CH1_Csample_L1
MOV MP0,A
;-------------------------------------------------- ;1
MOV A,R0
ADDM A,M_CH1_Cnow_L
INC MP0
MOV A,R0
ADCM A,M_CH1_Cnow_H
;-------------------------------------------------- ;2
INC MP0
MOV A,R0
ADDM A,M_CH1_Cnow_L
INC MP0
MOV A,R0
ADCM A,M_CH1_Cnow_H
;-------------------------------------------------- ;3
INC MP0
MOV A,R0
ADDM A,M_CH1_Cnow_L
INC MP0
MOV A,R0
ADCM A,M_CH1_Cnow_H
;-------------------------------------------------- ;4
INC MP0
MOV A,R0
ADDM A,M_CH1_Cnow_L
INC MP0
MOV A,R0
ADCM A,M_CH1_Cnow_H
;--------------------------------------------------
CLR C
RRC M_CH1_Cnow_H
RRC M_CH1_Cnow_L
CLR C
RRC M_CH1_Cnow_H
RRC M_CH1_Cnow_L ;/4
SET F_CH1_ConeCircleOk
;--------------------------------------------------------------------------------
RET
;=================================================================================
;=================================================================================
;--------------------------------------------------------------------------------
L_CH1_SampleProc: ;Voltage sample...
MOV A,M_CH1_Sample_Num ;point
MOV M_TEMP,A
RL M_TEMP ;*2
DEC M_TEMP ;*2-1
MOV A,OFFSET M_CH1_Sample_L1;0
ADD A,M_TEMP
MOV MP0,A
MOV A,M_Ch0AdcBufH
MOV R0,A
DEC MP0
MOV A,M_Ch0AdcBufL
MOV R0,A
SDZ M_CH1_Sample_Num
RET
SET F_CH1_Sample8Ok
MOV A,4;6
MOV M_CH1_Sample_Num,A
RET
;--------------------------------------------------------------------------------
;--------------------------------------------------------------------------------
L_CH1_FilterAvgAndOverCheck:
SNZ F_CH1_Sample8Ok
RET
CLR F_CH1_Sample8Ok
;-------------------------------------------------
L_CH1_SortProc:
;-------------------------------------------------
L_CH1_AvgProc:
CLR M_CH1_NOW_L
CLR M_CH1_NOW_H
MOV A,OFFSET M_CH1_Sample_L1
MOV MP0,A
;-------------------------------------------------- ;1
MOV A,R0
ADDM A,M_CH1_NOW_L
INC MP0
MOV A,R0
ADCM A,M_CH1_NOW_H
;-------------------------------------------------- ;2
INC MP0
MOV A,R0
ADDM A,M_CH1_NOW_L
INC MP0
MOV A,R0
ADCM A,M_CH1_NOW_H
;-------------------------------------------------- ;3
INC MP0
MOV A,R0
ADDM A,M_CH1_NOW_L
INC MP0
MOV A,R0
ADCM A,M_CH1_NOW_H
;-------------------------------------------------- ;4
INC MP0
MOV A,R0
ADDM A,M_CH1_NOW_L
INC MP0
MOV A,R0
ADCM A,M_CH1_NOW_H
;--------------------------------------------------
CLR C
RRC M_CH1_NOW_H
RRC M_CH1_NOW_L
CLR C
RRC M_CH1_NOW_H
RRC M_CH1_NOW_L ;/4
; wang MOV A,M_CH1_NOW_L
; wang MOV M_CH1_BatValueL,A
; wang
; wang MOV A,M_CH1_NOW_H
; wang MOV M_CH1_BatValueH,A
; wang
; wang MOV A,6
; wangL_CH1_GoOnLeftMove:
; wang CLR C
; wang RLC M_CH1_BatValueL
; wang RLC M_CH1_BatValueH
; wang SDZ ACC
; wang JMP L_CH1_GoOnLeftMove
SET F_CH1_OneCircleOk
RET
;=================================================================================
;=================================================================================
L_CH1_MaxVoltageProc:
;second Max Voltage....
MOV A,M_CH1_NOW_L
SUB A,C_CH1_MaxVL
MOV A,C_CH1_MaxVH
MOV M_TEMP,A
MOV A,M_CH1_NOW_H
SBC A,M_TEMP
SNZ C
JMP L_CH1_ResetMaxTimer
INC M_CH1_Max_Times
MOV A,M_CH1_Max_Times
SUB A,C_CH1_Max_TData
SNZ C
JMP L_CH1_EndMaxCheckProc
CLR M_CH1_Max_Times
NOP
JMP L_CH1_ChargeOver
L_CH1_ResetMaxTimer:
CLR M_CH1_Max_Times
L_CH1_EndMaxCheckProc:
RET
;=================================================================================
;=================================================================================
L_CH1_BatFull_0Delta: ;0 DeltaV Judge...
;first part 0 DeltaV....
;--------------------------------------------------------------------------------
;input C_0DeltaL
; C_0_DeltaTimeH/C_0_DeltaTimeL
; M_CH1_NOW_H/M_CH1_NOW_L
;--------------------------------------------------------------------------------
MOV A,M_CH1_NOW_L
SUB A,M_CH1_Last0DeltaL
MOV M_CH1_LastDeltaL,A
MOV A,M_CH1_NOW_H
SBC A,M_CH1_Last0DeltaH
MOV M_CH1_LastDeltaH,A
SZ C
JMP L_CH1_0DeltaLargeProc
CPL M_CH1_LastDeltaL ;compl
CPL M_CH1_LastDeltaH
SET C
MOV A,0
ADCM A,M_CH1_LastDeltaL
MOV A,0
ADCM A,M_CH1_LastDeltaH
L_CH1_0DeltaLargeProc:
MOV A,M_CH1_LastDeltaL
SUB A,C_CH1_0DeltaVData ;Constant
CLR M_TEMP
MOV A,M_CH1_LastDeltaH
SBC A,M_TEMP
SZ C
JMP L_CH1_0DeltaLarge
L_CH1_CountTime:
inc M_CH1_0Delta_Times
mov a,M_CH1_0Delta_Times
SUB A,C_CH1_0DeltaTData
SNZ C
JMP L_CH1_End0DeltaVProc
CLR M_CH1_0Delta_Times
NOP
JMP L_CH1_ChargeOver
L_CH1_0DeltaLarge:
CLR M_CH1_0Delta_Times
;-------------------------------------------------
MOV A,M_CH1_NOW_L
MOV M_CH1_Last0DeltaL,A
MOV A,M_CH1_NOW_H
MOV M_CH1_Last0DeltaH,A
;--------------------------------------------------------------------------------
L_CH1_End0DeltaVProc:
RET
;=================================================================================
;=================================================================================
L_CH1_BatFull_NDelta: ;-Delta V Judge...
;--------------------------------------------------------------------------------
;first part -DeltaV
;--------------------------------------------------------------------------------
MOV A,M_CH1_NOW_L
SUB A,M_CH1_LastNDeltaL
MOV M_CH1_LastDeltaL,A
MOV A,M_CH1_NOW_H
SBC A,M_CH1_LastNDeltaH
MOV M_CH1_LastDeltaH,A
SNZ C
JMP L_CH1_SmallProc
L_CH1_LargeProc:
CLR M_CH1_NDelta_Times
MOV A,M_CH1_NOW_L
MOV M_CH1_LastNDeltaL,A
MOV A,M_CH1_NOW_H
MOV M_CH1_LastNDeltaH,A
RET
;----------------------------------------
L_CH1_SmallProc:
CPL M_CH1_LastDeltaL
CPL M_CH1_LastDeltaH
SET C
MOV A,0
ADCM A,M_CH1_LastDeltaL
MOV A,0
ADCM A,M_CH1_LastDeltaH
MOV A,M_CH1_LastDeltaL
SUB A,C_CH1_NDeltaVData
CLR M_TEMP
MOV A,M_CH1_LastDeltaH
SBC A,M_TEMP
SNZ C
RET
INC M_CH1_NDelta_Times
MOV A,M_CH1_NDelta_Times
SUB A,C_CH1_NDeltaTData
SNZ C
RET
CLR M_CH1_NDelta_Times
NOP
L_CH1_ChargeOver:
;26/01--2007 CLR F_CH1_AAA
;26/01--2007 CLR F_CH1_AA ;If is AA Not Check AAA...
;6/02--2007 CLR F_CH1_DisChargeOk
CLR M_CH1_NoChargeBatTime ;
CLR F_CH1StartCharge ;Clear time..
CLR M_CH1ChargeSec
CLR M_CH1ChargeMin
CLR M_CH1ChargeHour
CLR F_CH1_DisChargeing ;decharge
CLR F_CH1_BatReverse ;baterry reverse
CLR F_CH1_NoChargeBat ;no charge battery
CLR F_CH1_Chargeing ;now is charging
CLR F_CH1_NoBat ;no charge battery
set F_CH1ChargeOver
CH1_PWM_OFF
MOV A,0
MOV CH1_TestMode,A
RET
;=================================================================================
;=================================================================================
L_CH1_LimitTimeProc:
SNZ F_CH1_MaxTimer_Ok
RET
CLR F_CH1_MaxTimer_Ok
JMP L_CH1_ChargeOver
;=================================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -