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

📄 checkvolt2.asm

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




L_CH2_AAPwmProc:
;=================================================================================
;second part  pwm control....
;;-----------------------------------------------------------
        SNZ     F_ADC4_OK               ;current channel
        JMP     L_CH2_Endcheck
        CLR     F_ADC4_OK


;------------------------------------------ 
         SZ    M_Ch4AdcBufH
         JMP   L_CH2_ErrorProc

         CLR   F_CH2_Negtive
         MOV   A,M_Ch4AdcBufL
         SUB   A,M_CH2mA_Buf              ;C_CH2_500mA
         SZ    C
         JMP   L_CH2_SaveDelta
         SET   F_CH2_Negtive
         CPL   ACC
         INC   ACC
L_CH2_SaveDelta: 
         MOV   M_CH2_PWMDelta,a
L_CH2_ErrorProc:
;------------------------------------------ 



        MOV     A,M_CH2_PWMDelta
        SUB     A,C_CH2_500mADelta
        SNZ     C
        JMP     L_CH2_InDeltaRange       
        
        SNZ     F_CH2_Negtive
        JMP     L_CH2_DecPwm1Buf

        SZ      F_CH1_AA                  ;If is AA Not Check AAA...
        JMP     L_CH2_LIMIT_AA_TO_250MA
        SZ      F_CH1_AAA
        JMP     L_CH2_LIMIT_AA_TO_250MA
        
        MOV     A,M_CH2_PWM_BUF
        XOR     A,17H                      ;0FFH
        SNZ     Z    
        inc     M_CH2_PWM_BUF   
        JMP     L_CH2_InDeltaRange
               
L_CH2_LIMIT_AA_TO_250MA:

        MOV     A,M_CH2_PWM_BUF
        XOR     A,9H                      ;0FFH
        SNZ     Z    
        inc     M_CH2_PWM_BUF   
        JMP     L_CH2_InDeltaRange

               
               
L_CH2_DecPwm1Buf: 
        sz      M_CH2_PWM_BUF
        DEC     M_CH2_PWM_BUF
   
L_CH2_InDeltaRange:
        MOV     A,M_CH2_PWM_BUF
        MOV     PWM1,A 
L_CH2_Endcheck:
        RET
;=================================================================================





L_CH2_AAAPwmProc:
;=================================================================================
;second part   pwm  control...
;;-----------------------------------------------------------
        SNZ     F_ADC5_OK               ;current channel
        JMP     L_CH2_AAAEndcheck
        CLR     F_ADC5_OK
 
;------------------------------------------ 
         SZ    M_Ch5AdcBufH
         JMP   L_CH2_AAAErrorProc

         CLR   F_CH2_AAANegtive
         
         MOV   A,M_Ch5AdcBufL
         SUB   A,M_CH2mA_Buf              ;C_CH2_500mA
         SZ    C
         JMP   L_CH2_AAASaveDelta
         
         SET   F_CH2_AAANegtive
         CPL   ACC
         INC   ACC
L_CH2_AAASaveDelta: 
         MOV   M_CH2_PWMDelta,a
L_CH2_AAAErrorProc:
;------------------------------------------ 

 
        MOV     A,M_CH2_PWMDelta
        SUB     A,C_CH2_500mADelta
        SNZ     C
        JMP     L_CH2_AAAInDeltaRange       
        
        SNZ     F_CH2_AAANegtive
        JMP     L_CH2_AAADecPwm1Buf

        SZ      F_CH1_AA                  ;If is AA Not Check AAA...
        JMP     L_CH2_LIMIT_AAA_TO_250MA
        SZ      F_CH1_AAA
        JMP     L_CH2_LIMIT_AAA_TO_250MA
        
        MOV     A,M_CH2_PWM_BUF
        XOR     A,17H                      ;0FFH
        SNZ     Z    
        inc     M_CH2_PWM_BUF   
        JMP     L_CH2_AAAInDeltaRange
               
L_CH2_LIMIT_AAA_TO_250MA:

        MOV     A,M_CH2_PWM_BUF
        XOR     A,9H                      ;0FFH
        SNZ     Z    
        inc     M_CH2_PWM_BUF   
        JMP     L_CH2_AAAInDeltaRange


               
L_CH2_AAADecPwm1Buf: 
        sz      M_CH2_PWM_BUF
        DEC     M_CH2_PWM_BUF
   
L_CH2_AAAInDeltaRange:
        MOV     A,M_CH2_PWM_BUF
        MOV     PWM1,A 
L_CH2_AAAEndcheck:
        RET
;=================================================================================
 

;=================================================================================
;input :  
;          MP1   Point  Now Value.           
;          sample address     : M_CH2_Csample_L0
;          sample count       : M_CH2_Csample_Num
;output:  
;           4 times Average ok : F_CH2_ConeCircleOk
;          Average value in   : M_CH2_Cnow_H/M_CH2_Cnow_L 
;=================================================================================
L_CH2_ComSampleProc:
         MOV      A,M_CH2_Csample_Num             ;point
         MOV      M_TEMP,A
         RL       M_TEMP                         ;*2
         DEC      M_TEMP                         ;*2-1
                  
         MOV      A,OFFSET  M_CH2_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_CH2_Csample_Num               ;sample 6 times over...
         RET      


         CLR   M_CH2_Cnow_L
         CLR   M_CH2_Cnow_H
          
         MOV   A,OFFSET  M_CH2_CSample_L1
         MOV   MP0,A
         
;--------------------------------------------------         ;1
         MOV   A,R0
         ADDM  A,M_CH2_Cnow_L

         INC   MP0
         MOV   A,R0
         ADCM  A,M_CH2_Cnow_H
;--------------------------------------------------         ;2
         INC   MP0
         MOV   A,R0
         ADDM  A,M_CH2_Cnow_L

         INC   MP0
         MOV   A,R0
         ADCM  A,M_CH2_Cnow_H
;--------------------------------------------------         ;3
         INC   MP0
         MOV   A,R0
         ADDM  A,M_CH2_Cnow_L

         INC   MP0
         MOV   A,R0
         ADCM  A,M_CH2_Cnow_H
;--------------------------------------------------         ;4
         INC   MP0
         MOV   A,R0
         ADDM  A,M_CH2_Cnow_L

         INC   MP0
         MOV   A,R0
         ADCM  A,M_CH2_Cnow_H
;--------------------------------------------------         

         CLR    C
         RRC    M_CH2_Cnow_H
         RRC    M_CH2_Cnow_L
         CLR    C
         RRC    M_CH2_Cnow_H
         RRC    M_CH2_Cnow_L         			;/4

         SET    F_CH2_COneCircleOk
;--------------------------------------------------------------------------------
         RET 
;=================================================================================





;=================================================================================
;--------------------------------------------------------------------------------
L_CH2_SampleProc:
         MOV   A,M_CH2_Sample_Num             ;point
         MOV   M_TEMP,A
         RL    M_TEMP                        ;*2
         DEC   M_TEMP                        ;*2-1

         MOV   A,OFFSET  M_CH2_Sample_L1;0
         ADD   A,M_TEMP
         MOV   MP0,A
         
         MOV   A,M_Ch3AdcBufH
         MOV   R0,A

         DEC   MP0
         MOV   A,M_Ch3AdcBufL
         MOV   R0,A

         SDZ   M_CH2_Sample_Num
         RET

         SET   F_CH2_Sample8Ok
   
         MOV   A,4;6
         MOV   M_CH2_Sample_Num,A
         RET 
;--------------------------------------------------------------------------------


;--------------------------------------------------------------------------------
L_CH2_FilterAvgAndOverCheck:
         SNZ    F_CH2_Sample8Ok
         RET 
         CLR    F_CH2_Sample8Ok
;-------------------------------------------------
L_CH2_SortProc:
;-------------------------------------------------
L_CH2_AvgProc:
         CLR   M_CH2_NOW_L
         CLR   M_CH2_NOW_H
          
         MOV   A,OFFSET  M_CH2_Sample_L1
         MOV   MP0,A
;--------------------------------------------------         ;1
         MOV   A,R0
         ADDM  A,M_CH2_NOW_L

         INC   MP0
         MOV   A,R0
         ADCM  A,M_CH2_NOW_H
;--------------------------------------------------         ;2
         INC   MP0
         MOV   A,R0
         ADDM  A,M_CH2_NOW_L

         INC   MP0
         MOV   A,R0
         ADCM  A,M_CH2_NOW_H
;--------------------------------------------------         ;3
         INC   MP0
         MOV   A,R0
         ADDM  A,M_CH2_NOW_L

         INC   MP0
         MOV   A,R0
         ADCM  A,M_CH2_NOW_H
;--------------------------------------------------         ;4
         INC   MP0
         MOV   A,R0
         ADDM  A,M_CH2_NOW_L

         INC   MP0
         MOV   A,R0
         ADCM  A,M_CH2_NOW_H
;--------------------------------------------------         
         CLR    C
         RRC    M_CH2_NOW_H
         RRC    M_CH2_NOW_L
         CLR    C
         RRC    M_CH2_NOW_H
         RRC    M_CH2_NOW_L         			;/4
      


; wang         MOV    A,M_CH2_NOW_L
; wang         MOV    M_CH2_BatValueL,A
; wang
; wang         MOV    A,M_CH2_NOW_H
; wang         MOV    M_CH2_BatValueH,A
; wang
; wang         MOV     A,6 
; wangL_CH2_GoOnLeftMove:
; wang         CLR    C
; wang         RLC    M_CH2_BatValueL
; wang         RLC    M_CH2_BatValueH
; wang         SDZ    ACC
; wang         JMP    L_CH2_GoOnLeftMove 
         


         SET    F_CH2_OneCircleOk
         RET
;--------------------------------------------------------------------------------




;=================================================================================
L_CH2_MaxVoltageProc:
;second part   Max Voltage....
         MOV    A,M_CH2_NOW_L 
         SUB    A,C_CH2_MaxVL
        
         MOV    A,C_CH2_MaxVH 
         MOV    M_TEMP,A
         MOV    A,M_CH2_NOW_H  
         SBC    A,M_TEMP  
         SNZ    C  
         JMP    L_CH2_ResetMaxTimer
  
   
         INC     M_CH2_Max_Times 
         MOV     A,M_CH2_Max_Times
         SUB     A,C_CH2_Max_TData

         SNZ     C
         JMP     L_CH2_EndMaxCheckProc
         CLR     M_CH2_Max_Times
         NOP
         JMP     L_CH2_ChargeOver

L_CH2_ResetMaxTimer:
         CLR    M_CH2_Max_Times

L_CH2_EndMaxCheckProc:
          RET
;=================================================================================







;=================================================================================
L_CH2_BatFull_0Delta:
;second part  0 DeltaV....
;--------------------------------------------------------------------------------
;input      C_0DeltaL
;           C_0_DeltaTimeH/C_0_DeltaTimeL   
;           M_CH2_NOW_H/M_CH2_NOW_L
;--------------------------------------------------------------------------------
L_CH2_BatFullCheck:                   ;0  DeltaV Judge...
         MOV    A,M_CH2_NOW_L 
         SUB    A,M_CH2_Last0DeltaL 
         MOV    M_CH2_LastDeltaL,A

         MOV    A,M_CH2_NOW_H         			
         SBC    A,M_CH2_Last0DeltaH  
         MOV    M_CH2_LastDeltaH,A

         SZ     C
         JMP    L_CH2_0DeltaLargeProc     

         CPL     M_CH2_LastDeltaL     ;compl
         CPL     M_CH2_LastDeltaH 
         SET     C
         MOV     A,0
         ADCM    A,M_CH2_LastDeltaL           
         MOV     A,0
         ADCM    A,M_CH2_LastDeltaH           

L_CH2_0DeltaLargeProc:
         MOV    A,M_CH2_LastDeltaL 
         SUB    A,C_CH2_0DeltaVData     ;Constant
 
         CLR    M_TEMP
         MOV    A,M_CH2_LastDeltaH  
         SBC    A,M_TEMP  
         SZ     C  
         JMP    L_CH2_0DeltaLarge

L_CH2_CountTime:   
         inc     M_CH2_0Delta_Times
         mov     a,M_CH2_0Delta_Times
         SUB     A,C_CH2_0DeltaTData
         SNZ     C
         JMP     L_CH2_End0DeltaVProc 
         CLR     M_CH2_0Delta_Times
         NOP
         JMP     L_CH2_ChargeOver

L_CH2_0DeltaLarge:
         CLR    M_CH2_0Delta_Times

;-------------------------------------------------
         MOV    A,M_CH2_NOW_L   
         MOV    M_CH2_Last0DeltaL,A
         MOV    A,M_CH2_NOW_H   
         MOV    M_CH2_Last0DeltaH,A
;--------------------------------------------------------------------------------
L_CH2_End0DeltaVProc:
         RET
;=================================================================================




;=================================================================================
L_CH2_BatFull_NDelta:

;second part  -DeltaV
;--------------------------------------------------------------------------------
L_CH2_BatFullCheck2:                   ;-Delta V Judge...
         MOV    A,M_CH2_NOW_L 
         SUB    A,M_CH2_LastNDeltaL 
         MOV    M_CH2_LastDeltaL,A

         MOV    A,M_CH2_NOW_H         			
         SBC    A,M_CH2_LastNDeltaH  
         MOV    M_CH2_LastDeltaH,A

         SNZ    C
         JMP    L_CH2_SmallProc     

L_CH2_LargeProc:
         CLR    M_CH2_NDelta_Times

         MOV    A,M_CH2_NOW_L 
         MOV    M_CH2_LastNDeltaL,A 
         MOV    A,M_CH2_NOW_H 
         MOV    M_CH2_LastNDeltaH,A 
         RET
;----------------------------------------

L_CH2_SmallProc:
        CPL     M_CH2_LastDeltaL 
        CPL     M_CH2_LastDeltaH 
        SET     C
        MOV     A,0
        ADCM    A,M_CH2_LastDeltaL           
        MOV     A,0
        ADCM    A,M_CH2_LastDeltaH           

        MOV    A,M_CH2_LastDeltaL 
        SUB    A,C_CH2_NDeltaVData
        CLR    M_TEMP
        MOV    A,M_CH2_LastDeltaH  
        SBC    A,M_TEMP  
        SNZ    C  
        RET     

        INC     M_CH2_NDelta_Times
        MOV     A,M_CH2_NDelta_Times
        SUB     A,C_CH2_NDeltaTData
        SNZ     C
        RET                               
        CLR     M_CH2_NDelta_Times
        nop
L_CH2_ChargeOver:
        CH2_PWM_OFF

;26/01--2007        CLR       F_CH2_AAA 
;26/01--2007        CLR       F_CH2_AA                 ;If is AA Not Check AAA...

;6/02--2007CLR      F_CH2_DisChargeOk

        CLR      F_CH2StartCharge          ;Clear  time..
        CLR      M_CH2ChargeSec
        CLR      M_CH2ChargeMin
        CLR      M_CH2ChargeHour

        CLR      F_CH2_DisChargeing        ; 
        CLR      F_CH2_BatReverse          ;
        CLR      F_CH2_NoChargeBat         ;
        CLR      F_CH2_Chargeing           ;
        CLR      F_CH2_NoBat               ; 

        SET      F_CH2ChargeOver

        MOV      A,0
        MOV      CH2_TestMode,A
        RET        
;=================================================================================


;=================================================================================
L_CH2_LimitTimeProc:
        SNZ       F_CH2_MaxTimer_Ok
        RET
        
        CLR       F_CH2_MaxTimer_Ok
        JMP       L_CH2_ChargeOver
;=================================================================================



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -