📄 main.asm
字号:
JMP L_CH1AAA_Current250maStateCom
;---------------------------------------
;---------------------------------------
L_CH1AAA_Current250maStateCom:
MOV A,C_CH1_250mA
MOV M_CH1mA_Buf,A
; MOV A,7
; MOV PWM0,A
; SNZ F_CH2_DisChargeing
; MOV PWM1,A
MOV A,C_CH2_250mA
MOV M_CH2mA_Buf,A
;==========================================================================
;==========================================================================
L_CH1_AAA_CHECK_2_BAT:
L_CH1_AAASkipSetTime:
CLR F_CH1_DisChargeing ;decharge..
CLR F_CH1_BatReverse ;bat reverse..
CLR F_CH1_NoChargeBat ;no charge bat..
SET F_CH1_Chargeing ;now is charging..
CLR F_CH1_NoBat ;no bat..
MOV A,06
MOV CH1_TestMode,A
JMP L_CH1_EndTestMode
L_CH1_AAANowNoChargeBat:
L_CH1_AAANowChargeOver:
L_CH1_AAANowBatReverseCharge:
MOV A,00
MOV CH1_TestMode,A
JMP L_CH1_EndTestMode
;------------------------------------------------------
;------------------------------------------------------
L_CH1_AA_AAA_NoBat:
CH1_PWM_OFF ;PWM0_OFF
CLR M_CH1_AA_BATMoveCount ;M_CH2_BATCHECK_AAA_TIMES
CLR M_CH1_AAA_BATMoveCount ;M_CH2_BATCHECK_AAA_TIMES
CLR M_CH1_DisChargeTimes
CLR M_CH1_AA_NoBatTimes
CLR M_CH1_AAA_NoBatTimes
CLR M_CH1_BATCHECK_AA_TIMES
CLR M_CH1_BATCHECK_AAA_TIMES
CLR M_CH1_NoChargeBatCount
CLR M_CH1_NoChargeBatTime ;
clr M_CH1_CurrentState
MOV A,6 ;
MOV M_CH1_5SecTime,A
CLR F_CH1_AAA
CLR F_CH1_AA ;If is AA Not Check AAA...
clr F_CH1_DisChargeOk
CLR M_CH1_BatValueH ;Clear voltage..
CLR M_CH1_BatValueL
CLR F_CH1StartCharge ;Clear time..
CLR M_CH1ChargeSec
CLR M_CH1ChargeMin
CLR M_CH1ChargeHour
CLR F_CH1_DisChargeing ;
CLR F_CH1_BatReverse ;
CLR F_CH1_NoChargeBat ;
CLR F_CH1_Chargeing ;
SET F_CH1_NoBat ;
CLR F_CH1ChargeOver ;
MOV A,0
MOV CH1_TestMode,A
JMP L_CH1_EndTestMode
;=================================================================================
; Check Ok Start Charge...
;=================================================================================
L_CH1_TestMode_6: ;CH1 start charge....
;SET Start Patameter.....
CLR M_CH1_BATCHECK_AA_TIMES
CLR M_CH1_BATCHECK_AAA_TIMES
SET F_CH1_5sEnFg
;CH1_Charge1_On
CH1_DechargeOFF
CH1_PWM_ON ;PWM0_ON
MOV A,3 ;10 ;0FFH;075H
MOV PWM0,A
MOV M_CH1_PWM_BUF,A
;;----------------------------
; SET F_CH1_100msFg ;SET Delay 5ms Time...
; mov a,1 ;1
; MOV M_CH1_100msTime,a
;L_CH1_TestMode6_LP:
; SZ M_CH1_100msTime
; JMP L_CH1_TestMode6_LP
;;----------------------------
MOV A,7
MOV CH1_TestMode,A
JMP L_CH1_EndTestMode
;----------------------------------------------------------------------
;----------------------------------------------------------------------
L_CH1_TestMode_7:
SnZ F_CH1_AA ;If is AA Not Check AAA...
JMP L_CH1_AA_NotLeave
;;----------------------------
; SET F_CH1_100msFg ;SET Delay 5ms Time...
; mov a,1 ;1
; MOV M_CH1_100msTime,a
;L_CH1_TestMode7_AA_LP:
; CALL L_CH1_AAPwmProc
; SZ M_CH1_100msTime
; JMP L_CH1_TestMode7_AA_LP
;;----------------------------
CALL L_CH1_AAPwmProc
;Check if AA-battery leave..
;-----------------------------------------
SZ M_Ch1AdcBufH
JMP L_CH1_AA_NotLeave
MOV A,M_Ch1AdcBufL
SUB A,C_AA_Data ;5
SZ C
JMP L_CH1_AA_NotLeave
INC M_CH1_BATCHECK_AA_TIMES
MOV A,M_CH1_BATCHECK_AA_TIMES
SUB A,200
SZ C
JMP L_CH1_AA_AAA_NoBat
JMP L_CH1_AA_SKIP
L_CH1_AA_NotLeave:
;-----------------------------------------
CLR M_CH1_BATCHECK_AA_TIMES
L_CH1_AA_SKIP:
SNZ F_CH1_AAA ;If is AA Not Check AAA...
JMP L_CH1_AAA_NotLeave
;;----------------------------
; SET F_CH1_100msFg ;SET Delay 5ms Time...
; mov a,1 ;1
; MOV M_CH1_100msTime,a
;L_CH1_TestMode7_AAA_LP:
; CALL L_CH1_AAAPwmProc
; SZ M_CH1_100msTime
; JMP L_CH1_TestMode7_AAA_LP
;;----------------------------
CALL L_CH1_AAAPwmProc
;Check if aAA-battery leave..
;-----------------------------------------
SZ M_Ch2AdcBufH
JMP L_CH1_AAA_NotLeave
MOV A,M_Ch2AdcBufL
SUB A,C_AA_Data ;5
SZ C
JMP L_CH1_AAA_NotLeave
INC M_CH1_BATCHECK_AAA_TIMES
MOV A,M_CH1_BATCHECK_AAA_TIMES
SUB A,50
SZ C
JMP L_CH1_AA_AAA_NoBat
JMP L_CH1_AAA_SKIP
L_CH1_AAA_NotLeave:
;-----------------------------------------
CLR M_CH1_BATCHECK_AAA_TIMES
L_CH1_AAA_SKIP:
SNZ F_CH1_5sOkFg
JMP L_CH1_EndTestMode
CLR F_CH1_5sOkFg
CH1_PWM_OFF ;
SET F_CH1_100msFg ;SET Delay Time...
mov a,C_CH1_StopCheckTimeData ;22ms * M_CH1_100msTime=22ms *100=2200=2.2s
MOV M_CH1_100msTime,a
MOV A,8
MOV CH1_TestMode,A
JMP L_CH1_EndTestMode
;----------------------------------------------------------------------
;----------------------------------------------------------------------
L_CH1_TestMode_8:
SZ M_CH1_100msTime
JMP L_CH1_EndTestMode
clr F_CH1_Sample8Ok
clr F_CH1_OneCircleOk
MOV A,4;6
MOV M_CH1_Sample_Num,A
MOV A,9
MOV CH1_TestMode,A
JMP L_CH1_EndTestMode
;----------------------------------------------------------------------
;----------------------------------------------------------------------
L_CH1_TestMode_9:
SNZ F_ADC0_OK
JMP L_CH1_EndTestMode
CLR F_ADC0_OK
;;-----------------------------------------------------------
;first part -Delta V /0 Delta V/Timer Limit/ Max Voltage....
;;-----------------------------------------------------------
CALL L_CH1_SampleProc
CALL L_CH1_FilterAvgAndOverCheck
SNZ F_CH1_OneCircleOk
JMP L_CH1_EndTestMode
CLR F_CH1_OneCircleOk
;-----------------------------------------------------
;-----------------------------------------------------
;Calculate Charge Times....
;-----------------------------------------------------
SNZ F_CH1_CurrentTo250mA
JMP L_CH1_AA_IF_500MA
CLR F_CH1_CurrentTo250mA
;now is 250ma charge, then cal time..
SET F_CH1StartCharge
MOV A,C_CH1_SEC
MOV M_CH1ChargeSec,A
;first judge is 250ma or 500ma.. then judge AA OR AAA...
;-----------------------------------------------------
SZ F_CH1_AA ;If is AA Not Check AAA...
JMP L_CH1_250mA_AA_SetTime
SZ F_CH1_AAA ;If is AAA Not Check AA...
JMP L_CH1_250mA_AAA_SetTime
JMP L_CH1_AA_AAA_CurrengtNotChange
;--------------------------------
L_CH1_250mA_AA_SetTime:
MOV A,00 ;AAA MAX 10 Hour...
MOV M_CH1_MaxTimeBuf_L,A
MOV A,10
MOV M_CH1_MaxTimeBuf_H,A
MOV A,LOW 117 ;(10h*60m*60s)/(1.5v-0.0v)=36000/(307-0)=36000/307=117
MOV M_CH1_XiShuBuf_L,A
MOV A,HIGH 117 ;(10h*60m*60s)/(1.5v-0.0v)=36000/(307-0)=36000/307=117
MOV M_CH1_XiShuBuf_H,A
JMP L_CH1_ToCalTimeCom
;--------------------------------
;--------------------------------
L_CH1_250mA_AAA_SetTime: ;AAA MAX 8 Hour...
MOV A,00
MOV M_CH1_MaxTimeBuf_L,A
MOV A,6
MOV M_CH1_MaxTimeBuf_H,A
MOV A,LOW 70 ;(6h*60m*60s)/(1.5v-0.0v)=21600/(307-0)=21600/307=70
MOV M_CH1_XiShuBuf_L,A
MOV A,HIGH 70 ;(6h*60m*60s)/(1.5v-0.0v)=21600/(307-0)=21600/307=70
MOV M_CH1_XiShuBuf_H,A
JMP L_CH1_ToCalTimeCom
;--------------------------------
;---------------------------------
L_CH1_AA_IF_500MA:
;now is 500ma charge, then cal time..
SNZ F_CH1_CurrentTo500mA
JMP L_CH1_AA_AAA_CurrengtNotChange
CLR F_CH1_CurrentTo500mA
SET F_CH1StartCharge
MOV A,C_CH1_SEC
MOV M_CH1ChargeSec,A
;first judge is 250ma or 500ma.. then judge AA OR AAA...
;-----------------------------------------------------
SZ F_CH1_AA ;If is AA Not Check AAA...
JMP L_CH1_500mA_AA_SetTime
SZ F_CH1_AAA ;If is AAA Not Check AA...
JMP L_CH1_500mA_AAA_SetTime
JMP L_CH1_AA_AAA_CurrengtNotChange
;---------------------------------
L_CH1_500mA_AA_SetTime:
MOV A,30
MOV M_CH1_MaxTimeBuf_L,A
MOV A,5 ;5hour 30minute...
MOV M_CH1_MaxTimeBuf_H,A
MOV A,LOW 64 ;((5h*60m+30min)*60s)/(1.5v-0.0v)=19800/(307-0)=19800/307=64
MOV M_CH1_XiShuBuf_L,A
MOV A,HIGH 64 ;((5h*60m+30min)*60s)/(1.5v-0.0v)=19800/(307-0)=19800/307=64
MOV M_CH1_XiShuBuf_H,A
JMP L_CH1_ToCalTimeCom
;---------------------------------
;---------------------------------
L_CH1_500mA_AAA_SetTime:
MOV A,0
MOV M_CH1_MaxTimeBuf_L,A
MOV A,3
MOV M_CH1_MaxTimeBuf_H,A
MOV A,LOW 35 ;(3h*60m*60s)/(1.5v-0.0v)=10800/(307-0)=10800/307=35
MOV M_CH1_XiShuBuf_L,A
MOV A,HIGH 35 ;(3h*60m*60s)/(1.5v-0.0v)=10800/(307-0)=10800/307=35
MOV M_CH1_XiShuBuf_H,A
JMP L_CH1_ToCalTimeCom
;---------------------------------
;---------------------------------
L_CH1_ToCalTimeCom:
; SZ M_CH1_NOW_H
; JMP L_CH1_AA500ma_TO_CALTime
; MOV A,M_CH1_NOW_L
; SUB A,0 ;184 ;0.9V
; SZ C
; JMP L_CH1_AA500ma_TO_CALTime
;
;
; MOV A,M_CH1_MaxTimeBuf_L
; MOV M_CH1ChargeMin,A
; MOV A,M_CH1_MaxTimeBuf_H
; MOV M_CH1ChargeHour,A
; JMP L_CH1_AA_AAA_CurrengtNotChange
;-----------------------------
;-----------------------------
L_CH1_AA500ma_TO_CALTime:
MOV A,M_CH1_NOW_L
SUB A,0 ;184 ;0.9V
MOV A_CAL_L,A
CLR M_TEMP
MOV A,M_CH1_NOW_H
SBC A,M_TEMP
MOV A_CAL_M,A
MOV A,M_CH1_XiShuBuf_L ;(10h*60m*60s)/(1.5v-0.9v)=36000/(307-184)=293s
MOV B_CAL_L,A
MOV A,M_CH1_XiShuBuf_H ;(10h*60m*60s)/(1.5v-0.9v)=36000/(307-184)=293s
MOV B_CAL_M,A
CALL L_Cal_MUL2x2 ;Output in B_CAL_H/B_CAL_M/B_CAL_L/A_CAL_H/A_CAL_M/A_CAL_L
;cal Hour...
;----------------------------------------------------------------------------------
MOV A,A_CAL_L
MOV A_CAL_0,A
MOV A,A_CAL_M
MOV A_CAL_1,A
MOV A,A_CAL_H
MOV A_CAL_2,A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -