⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.asm

📁 以&#1049307 &#1049319 &#1049287 &#1049289 &#1049317 &#1049301 &#1049288 &#1049283 为核心设计的&#1049320 &#1
💻 ASM
📖 第 1 页 / 共 5 页
字号:
        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 + -