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

📄 checkvolt1.asm

📁 以&#1049307 &#1049319 &#1049287 &#1049289 &#1049317 &#1049301 &#1049288 &#1049283 为核心设计的&#1049320 &#1
💻 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 + -