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

📄 pwm_proc.asm

📁 以&#1049307 &#1049319 &#1049287 &#1049289 &#1049317 &#1049301 &#1049288 &#1049283 为核心设计的&#1049320 &#1
💻 ASM
字号:
L_CH1_AAPwmProc:
;Input 
;      ch1  ADC Value...
;      ch4  ADC Value...
;      M_CH1mA_Buf    
;      M_CH2mA_Buf    
;=================================================================================
;first part   pwm control....
;;-----------------------------------------------------------
        SNZ     F_ADC1_OK                 ;current channel 
        JMP     L_CH1_Endcheck
        CLR     F_ADC1_OK



;-----------------------------------------------------------
         SZ     M_CH1_Delay20ms
         JMP    L_CH1_ADC1_pwm1

; check if baterry off lone
         SZ     M_Ch1AdcBufH
         JMP    L_CH1_ADC1_pwm1

         MOV    A,M_Ch1AdcBufL
         SUB    A,5
         SZ     C
         JMP    L_CH1_ADC1_pwm1

         MOV     A,CH1_TestMode
         XOR     A,1
         SNZ     Z
         JMP     L_CH1_ADC1_pwm1

         ;SET    F_Ch1_EnDelay05s 
         ;mov    A,50
         ;MOV    M_Ch1Delay05s,a     

         CALL   L_CH1_RESET 
         RET

L_CH1_ADC1_pwm1:
;-----------------------------------------------------------

        CALL    L_CH1_CalDelta  ;0
        
        MOV     A,M_Pwm0Delta
        SUB     A,C_CH1_500mADelta
        SNZ     C
        JMP     L_CH1_InDeltaRange       
        
        SNZ     F_CH1_Negtive
        JMP     L_CH1_DecPwm0Buf
        
        MOV     A,M_PWM0_BUF
        XOR     A,0FFH
        SNZ     Z    
        inc     M_PWM0_BUF   
         
        JMP     L_CH1_InDeltaRange       
L_CH1_DecPwm0Buf: 
        sz      M_PWM0_BUF
        DEC     M_PWM0_BUF
   
L_CH1_InDeltaRange:
        MOV     A,M_PWM0_BUF
        MOV     PWM0,A 
L_CH1_Endcheck:
        RET 
;=================================================================================



L_CH1_AAAPwmProc:
;Input 
;      ch1  ADC Value...
;      ch4  ADC Value...
;      M_CH1mA_Buf    
;      M_CH2mA_Buf    
;=================================================================================
;first part   pwm control....
;;-----------------------------------------------------------
        SNZ     F_ADC2_OK                 ;current channel 
        JMP     L_CH1_AAAEndcheck
        CLR     F_ADC2_OK


;-----------------------------------------------------------
         SZ     M_CH1_Delay20ms
         JMP    L_CH1_ADC2_pwm1

; check if baterry off line
         SZ    M_Ch2AdcBufH
         JMP   L_CH1_ADC2_pwm1


         MOV    A,M_Ch2AdcBufL
         SUB    A,5
         SZ     C
         JMP   L_CH1_ADC2_pwm1


         MOV    A,CH1_TestMode
         XOR    A,1
         SNZ    Z
         JMP    L_CH1_ADC2_pwm1

         ;SET    F_Ch1_EnDelay05s 
         ;mov    A,50
         ;MOV    M_Ch1Delay05s,a     

         CALL   L_CH1_RESET 
         RET

L_CH1_ADC2_pwm1:
;-----------------------------------------------------------




        CALL    L_CH1_AAACalDelta
        
        MOV     A,M_Pwm0Delta
        SUB     A,C_CH1_500mADelta
        SNZ     C
        JMP     L_CH1_AAAInDeltaRange       
        
        SNZ     F_CH1_AAANegtive
        JMP     L_CH1_AAADecPwm0Buf
        
        MOV     A,M_PWM0_BUF
        XOR     A,0FFH
        SNZ     Z    
        inc     M_PWM0_BUF   
        JMP     L_CH1_AAAInDeltaRange       

L_CH1_AAADecPwm0Buf: 
        sz      M_PWM0_BUF
        DEC     M_PWM0_BUF
   
L_CH1_AAAInDeltaRange:
        MOV     A,M_PWM0_BUF
        MOV     PWM0,A 
L_CH1_AAAEndcheck:
        RET 
;=================================================================================











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


;-----------------------------------------------------------

         SZ     M_CH2_Delay20ms
         JMP    L_CH2_ADC4_pwm1
         
; check if baterry off line
         SZ    M_Ch4AdcBufH
         JMP   L_CH2_ADC4_pwm1

         MOV    A,M_Ch4AdcBufL
         SUB    A,5
         SZ     C
         JMP   L_CH2_ADC4_pwm1

         ;SET    F_Ch2_EnDelay05s 
         ;mov    A,50
         ;MOV    M_Ch2Delay05s,a     


         MOV    A,CH2_TestMode
         XOR    A,1
         SNZ    Z
         JMP    L_CH2_ADC4_pwm1

         CALL   L_CH2_RESET 
         RET

L_CH2_ADC4_pwm1:
;-----------------------------------------------------------


        CALL    L_CH2_CalDelta

        MOV     A,M_Pwm1Delta
        SUB     A,C_CH2_500mADelta
        SNZ     C
        JMP     L_CH2_InDeltaRange       
        
        SNZ     F_CH2_Negtive
        JMP     L_CH2_DecPwm1Buf
        
        MOV     A,M_PWM1_BUF
        XOR     A,0FFH
        SNZ     Z    
        inc     M_PWM1_BUF   
        JMP     L_CH2_InDeltaRange
               
L_CH2_DecPwm1Buf: 
        sz      M_PWM1_BUF
        DEC     M_PWM1_BUF
   
L_CH2_InDeltaRange:
        MOV     A,M_PWM1_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_CH2_Delay20ms
         JMP    L_CH2_ADC5_pwm1

; check if baterry off line
         SZ     M_Ch5AdcBufH
         JMP    L_CH2_ADC5_pwm1

         MOV    A,M_Ch5AdcBufL
         SUB    A,5
         SZ     C
         JMP    L_CH2_ADC5_pwm1

        ; SET    F_Ch2_EnDelay05s 
        ; mov    A,50
        ; MOV    M_Ch2Delay05s,a     

         MOV    A,CH2_TestMode         ;5s charge state...
         XOR    A,1
         SNZ    Z
         JMP    L_CH2_ADC5_pwm1
         CALL   L_CH2_RESET 
         RET

         
L_CH2_ADC5_pwm1:
;-----------------------------------------------------------
        CALL    L_CH2_AAACalDelta

        MOV     A,M_Pwm1Delta
        SUB     A,C_CH2_500mADelta
        SNZ     C
        JMP     L_CH2_AAAInDeltaRange       
        
        SNZ     F_CH2_AAANegtive
        JMP     L_CH2_AAADecPwm1Buf
        
        MOV     A,M_PWM1_BUF
        XOR     A,0FFH
        SNZ     Z    
        inc     M_PWM1_BUF   
        JMP     L_CH2_AAAInDeltaRange
               
L_CH2_AAADecPwm1Buf: 
        sz      M_PWM1_BUF
        DEC     M_PWM1_BUF
   
L_CH2_AAAInDeltaRange:
        MOV     A,M_PWM1_BUF
        MOV     PWM1,A 
L_CH2_AAAEndcheck:
        RET
;=================================================================================












;=================================================================================
L_CH1_CalDelta:
         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_Pwm0Delta,a
L_CH1_ErrorProc:
         RET  
;=================================================================================



;-----------------------------------------------------------------------------
L_CH1_AAACalDelta:
         SZ    M_Ch2AdcBufH
         JMP   L_CH2_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_Pwm0Delta,a
L_CH1_AAAErrorProc:
         RET  
;=================================================================================




;=================================================================================
L_CH2_CalDelta:
         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_Pwm1Delta,a
L_CH2_ErrorProc:
        RET  
;=================================================================================


;=================================================================================
L_CH2_AAACalDelta:
         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_Pwm1Delta,a
L_CH2_AAAErrorProc:
        RET  
;=================================================================================

⌨️ 快捷键说明

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