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

📄 main.asm

📁 以&#1049307 &#1049319 &#1049287 &#1049289 &#1049317 &#1049301 &#1049288 &#1049283 为核心设计的&#1049320 &#1
💻 ASM
📖 第 1 页 / 共 5 页
字号:

        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 + -