📄 main.asm
字号:
MOV A,LOW 3600 ;1Hour=60min*60s=3600s
MOV B_CAL_0,A
MOV A,HIGH 3600
MOV B_CAL_1,A
CALL L_Cal_DIV3d2 ;OUT: A_Cal_1(high 8BIT),A_Cal_0(low 8BIT)
;-----------------------------------------------------
MOV A,C_CH1_SEC ;<0.9V use MaxTime...
MOV M_CH1ChargeSec,A
MOV A,A_Cal_0
MOV M_CH1ChargeHour,A
;cal Minute...
;---------------------------------------
MOV A,DIV_BUF_L
MOV A_CAL_0,A
MOV A,DIV_BUF_H
MOV A_CAL_1,A
CLR A_CAL_2
MOV A,LOW 60
MOV B_CAL_0,A
MOV A,HIGH 60
MOV B_CAL_1,A
CALL L_Cal_DIV3d2 ;OUT: A_Cal_1(high 8BIT),A_Cal_0(low 8BIT)
MOV A,A_Cal_0
MOV M_CH1ChargeMin,A
;--------------------------------------
MOV A,M_CH1_MaxTimeBuf_L
SUB A,M_CH1ChargeMin
SZ C
JMP L_CH1_CAL_HOUR
MOV A,M_CH1_MaxTimeBuf_L ;borow 60min..
ADD A,60
SUB A,M_CH1ChargeMin
MOV M_CH1ChargeMin,A
DEC M_CH1_MaxTimeBuf_H
JMP L_CH1_CAL_Time_C1
L_CH1_CAL_HOUR:
MOV M_CH1ChargeMin,A
L_CH1_CAL_Time_C1:
MOV A,M_CH1_MaxTimeBuf_H ;borow 60min..
SUB A,M_CH1ChargeHour
MOV M_CH1ChargeHour,A
L_CH1_CAL_Time_Com:
;--------------------------------------
;-----------------------------------------------------
L_CH1_AA_AAA_CurrengtNotChange:
;-----------------------------------------------------
;Judge If bat reverse....
;-----------------------------------------------------
SZ M_CH1_NOW_H
JMP L_CH1_NoReverse
MOV A,M_CH1_NOW_L
SUB A,10
SZ C
JMP L_CH1_NoReverse
L_CH1_AA_AAA_Reverse:
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 ;
SET F_CH1_BatReverse ;
CLR F_CH1_NoChargeBat ;
CLR F_CH1_Chargeing ;
CLR F_CH1_NoBat ;
CH1_PWM_OFF ;PWM0_OFF
MOV A,00
MOV CH1_TestMode,A
JMP L_CH1_EndTestMode
;------------------------------------------------------
L_CH1_NoReverse:
;Judge If Bad Battery....
;-----------------------------------------------------
SZ M_CH1_NOW_H
JMP L_CH1_NoBadBattery
MOV A,M_CH1_NOW_L
SUB A,62 ;0.3v/5.0v*1024=62
SZ C
JMP L_CH1_NoBadBattery
L_CH1_AA_AAA_IsBadBattery:
SET F_CH1_BadBattery
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 ;
CLR F_CH1_NoBat ;
CH1_PWM_OFF ;PWM0_OFF
MOV A,00
MOV CH1_TestMode,A
JMP L_CH1_EndTestMode
;------------------------------------------------------
L_CH1_NoBadBattery:
;Judge If No Charge Battery....
;-----------------------------------------------------
MOV A,M_CH1_NoChargeBatTime ;
SUB A,C_CH1_NoChargeBatTime
SZ C
JMP L_CH1_IsChargeBaterry
INC M_CH1_NoChargeBatTime ;
MOV A,M_CH1_NOW_L
SUB A,C_CH1_NoChargeBatL
MOV A,C_CH1_NoChargeBatH
MOV M_TEMP,A
MOV A,M_CH1_NOW_H
SBC A,M_TEMP
SNZ C
JMP L_CH1_IsChargeBaterry1
INC M_CH1_NoChargeBatCount
MOV A,M_CH1_NoChargeBatCount
SUB A,3
SNZ C
JMP L_CH1_IsChargeBaterry
CLR M_CH1_NoChargeBatCount
MOV A,M_CH1_NoChargeBatTime ;
SUB A,C_CH1_NoChargeBatTime
SNZ C
JMP L_CH1_NotChargeBattery
JMP L_CH1_IsChargeBaterry
L_CH1_NotChargeBattery:
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 ;
SET F_CH1_NoChargeBat ;
CLR F_CH1_Chargeing ;
CLR F_CH1_NoBat ;
CLR F_CH1ChargeOver ;
MOV A,0
MOV CH1_TestMode,A
JMP L_CH1_EndTestMode
L_CH1_IsChargeBaterry1:
CLR M_CH1_NoChargeBatCount
L_CH1_IsChargeBaterry:
;-----------------------------------------------------
; 29/1-2007;Battery Volume Check....
; 29/1-2007;-----------------------------------------------------
; 29/1-2007 MOV A,M_CH1_NOW_L
; 29/1-2007 MOV M_CH1_NOW_L_BAK,A
; 29/1-2007 MOV A,M_CH1_NOW_H
; 29/1-2007 MOV M_CH1_NOW_H_BAK,A
; 29/1-2007
; 29/1-2007 clr F_CH1_Sample8Ok
; 29/1-2007 clr F_CH1_OneCircleOk
; 29/1-2007 MOV A,4 ;6
; 29/1-2007 MOV M_CH1_Sample_Num,A
; 29/1-2007
; 29/1-2007 CH1_DechargeOn ;connect to load...
; 29/1-2007
; 29/1-2007;----------------------------------------------
; 29/1-2007 MOV A,30
; 29/1-2007L_CH1_DELAY_nUS:
; 29/1-2007 NOP
; 29/1-2007 SDZ ACC
; 29/1-2007 JMP L_CH1_DELAY_nUS
; 29/1-2007;----------------------------------------------
MOV A,10
MOV CH1_TestMode,A
JMP L_CH1_EndTestMode
;----------------------------------------------
;----------------------------------------------
L_CH1_TestMode_10:
;29/1-2007 SNZ F_ADC0_OK
;29/1-2007 JMP L_CH1_EndTestMode
;29/1-2007 CLR F_ADC0_OK
;29/1-2007
;29/1-2007 CALL L_CH1_SampleProc
;29/1-2007 CALL L_CH1_FilterAvgAndOverCheck
;29/1-2007
;29/1-2007 SNZ F_CH1_OneCircleOk
;29/1-2007 JMP L_CH1_EndTestMode
;29/1-2007 CLR F_CH1_OneCircleOk
;29/1-2007;-----------------------------------------------------
;29/1-2007
;29/1-2007 CH1_DechargeOff
;29/1-2007
;29/1-2007 ;begin add load to tet voltage...
;29/1-2007
;29/1-2007 MOV A,M_CH1_NOW_L
;29/1-2007 MOV A_CAL_L,A
;29/1-2007 MOV A,M_CH1_NOW_H
;29/1-2007 MOV A_CAL_M,A
;29/1-2007 CLR A_CAL_H
;29/1-2007
;29/1-2007 MOV A,100 ;*100
;29/1-2007 MOV B_CAL_L,A
;29/1-2007 CLR B_CAL_M
;29/1-2007
;29/1-2007 CALL L_Cal_MUL2x2 ;Output in ;Output in B_CAL_H/B_CAL_M/B_CAL_L/A_CAL_H/A_CAL_M/A_CAL_L
;29/1-2007;----------------------------------------------------
;29/1-2007;A/B=96%....
;29/1-2007 MOV A,A_CAL_L
;29/1-2007 MOV A_CAL_0,A
;29/1-2007
;29/1-2007 MOV A,A_CAL_M
;29/1-2007 MOV A_CAL_1,A
;29/1-2007
;29/1-2007 MOV A,A_CAL_H
;29/1-2007 MOV A_CAL_2,A
;29/1-2007
;29/1-2007 MOV A,M_CH1_NOW_H_BAK
;29/1-2007 MOV B_CAL_1,A
;29/1-2007 MOV A,M_CH1_NOW_L_BAK
;29/1-2007 MOV B_CAL_0,A
;29/1-2007 CALL L_Cal_DIV3d2 ;OUT: A_Cal_1(high 8BIT),A_Cal_0(low 8BIT)
;29/1-2007;-----------------------------------------------------
;29/1-2007
;29/1-2007
;29/1-2007;-----------------------------------------------------
;29/1-2007;/06..... 16 volume level....
;29/1-2007;-----------------------------------------------------
;29/1-2007 CLR A_Cal_2
;29/1-2007 ;CLR A_Cal_1
;29/1-2007 ;CLR A_Cal_0
;29/1-2007
;29/1-2007
;29/1-2007 MOV A,06
;29/1-2007 MOV B_CAL_0,A
;29/1-2007 CLR B_CAL_1
;29/1-2007 CALL L_Cal_DIV3d2 ;OUT: A_Cal_1(high 8BIT),A_Cal_0(low 8BIT)
;29/1-2007;-----------------------------------------------------
;29/1-2007 MOV A,A_CAL_0
;29/1-2007 MOV M_CH1_Volume,a
;29/1-2007
;29/1-2007
;29/1-2007;-----------------------------------------------------
;29/1-2007 MOV A,M_CH1_Volume
;29/1-2007 ADD A,2
;29/1-2007 MOV M_CH1_Volume,A
;29/1-2007
;29/1-2007 SUB A,0FH
;29/1-2007 SNZ C
;29/1-2007 JMP L_CH1_NOT_LargeVolume
;29/1-2007 MOV A,0FH
;29/1-2007 MOV M_CH1_Volume,A
;29/1-2007L_CH1_NOT_LargeVolume:
;29/1-2007;-----------------------------------------------------
;29/1-2007
;29/1-2007
;29/1-2007
;29/1-2007;-----------------------------------------------------
;29/1-2007 CLR C
;29/1-2007 RLC M_CH1_Volume
;29/1-2007 CLR C
;29/1-2007 RLC M_CH1_Volume
;29/1-2007 CLR C
;29/1-2007 RLC M_CH1_Volume
;29/1-2007 CLR C
;29/1-2007 RLC M_CH1_Volume
;29/1-2007;-----------------------------------------------------
;29/1-2007;-----------------------------------------------------
;29/1-2007 MOV A,M_CH1_NOW_L_BAK
;29/1-2007 MOV M_CH1_NOW_L,A
;29/1-2007 MOV A,M_CH1_NOW_H_BAK
;29/1-2007 MOV M_CH1_NOW_H,A
;29/1-2007;-----------------------------------------------------
MOV A,0F0H
ORM A,M_CH1_Volume
;-----------------------------------------------------
MOV A,M_CH1_NOW_L
MOV M_CH1_BatValueL,A
MOV A,M_CH1_NOW_H
MOV M_CH1_BatValueH,A
MOV A,6
L_CH1_GoOnLeftMove:
CLR C
RLC M_CH1_BatValueL
RLC M_CH1_BatValueH
SDZ ACC
JMP L_CH1_GoOnLeftMove
;-----------------------------------------------------
;-----------------------------------------------------
CALL L_CH1_BatFull_0Delta
CALL L_CH1_BatFull_NDelta
CALL L_CH1_MaxVoltageProc
CALL L_CH1_LimitTimeProc
;;-----------------------------------------------------------
MOV A,0
MOV CH1_TestMode,A
JMP L_CH1_EndTestMode
;=================================================================================
; Discharge part...
;=================================================================================
L_CH1_TestMode_11:
CH1_PWM_OFF ;PWM0_OFF
CH1_DechargeOn
MOV A,12 ;set stop time 2s...
MOV M_CH1_DechargeSec,A
MOV A,12
MOV CH1_TestMode,A
JMP L_CH1_EndTestMode
;----------------------------------------------------------------------
;----------------------------------------------------------------------
L_CH1_TestMode_12: ;Initial DeCharge State....
SNZ F_CH1_Decharge1s
JMP L_CH1_DechargeCom
CLR F_CH1_Decharge1s
SDZ M_CH1_DechargeSec
JMP L_CH1_DechargeCom
CH1_DechargeOff
clr F_CH1_Sample8Ok
clr F_CH1_OneCircleOk
MOV A,4 ;6
MOV M_CH1_Sample_Num,A
MOV A,1 ;2 ;set stop time 2s...
MOV M_CH1_DechargeSec,A
MOV A,13
MOV CH1_TestMode,A
JMP L_CH1_EndTestMode
;----------------------------------------------------------------------
;----------------------------------------------------------------------
L_CH1_TestMode_13:
SNZ F_CH1_Decharge1s
JMP L_CH1_DechargeCom
CLR F_CH1_Decharge1s
SDZ M_CH1_DechargeSec
JMP L_CH1_DechargeCom
MOV A,14
MOV CH1_TestMode,A
JMP L_CH1_EndTestMode
;----------------------------------------------------------------------
;----------------------------------------------------------------------
L_CH1_TestMode_14:
CALL L_CH1_SampleProc
CALL L_CH1_FilterAvgAndOverCheck
SNZ F_CH1_OneCircleOk
JMP L_CH1_EndTestMode
clr F_CH1_OneCircleOk
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -