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

📄 充电器.asm

📁 充电器的相关程序及原理图,调试成功,希望对大家有用
💻 ASM
📖 第 1 页 / 共 3 页
字号:
    AT:     MOV    A,@0B00001110
            IOW    IOCA0
            MOV    A,@2
            MOV    ADCON,A      ;选择AD转换通道,采集温度电压
            CLRA
            IOW   IOC90      ;不增益
            
            CALL   DELAY1MS
            BS     ADCON,ADPD   ;取样充电
            CALL   DELAY1MS
            BS     ADCON,ADRUN
            JBC    ADCON,ADRUN
            JMP    $-1
            BC     RF,ADIF
            BC     ADCON,ADPD   ;停止采样
            MOV    A,T_AD3
            MOV    T_AD4,A
            MOV    A,T_AD2
            MOV    T_AD3,A
            MOV    A,T_AD1
            MOV    T_AD2,A
            MOV    A,ADDATA
            MOV    T_AD1,A
            DJZ    R7
            JMP    AT
            
            MOV    A,@T_AD1
            MOV    R4,A
            CALL   AVERAGE
            MOV    A,R_ADL
            MOV    T_AD,A
            
            RET


;-------------------------------
INIT:       MOV    A,@217;255;217
            MOV    TCC,A
            CLRA   
            MOV    R3,A    ;第0页程式
            BC     R4,6    ;bank0:20~2F
            MOV    R9,A    ;SENGMENT0,通道0
            
            MOV    A,@0B00000111;允许中断,预分频给TCC,1:256
            CONTW
            MOV    A,@0B00001001
            IOW    IOC50     ;P50,只输入,P53为Vref输入,其他设为输出
            MOV    A,@0x0F      ;P60,1,2,3为输入,其他输出
            IOW    IOC60
            MOV    A,@0XFF
            IOW    IOCB0     ;禁止内部下拉
            IOW    IOCC0
            IOW    IOCD0
            MOV    A,@0B10000000  ;使能看门狗,P50作输入
            IOW    IOCE0
            MOV    A,@0b00000001;TCC
            IOW    IOCF0
            MOV    A,@0B00000000;禁止放大~~
            IOW    IOC90  
            MOV    A,@0B00001110;1:16  10 ;P53/Vref为参考电压,P60,1,2,3,4为AD输入,倍频1:64
            IOW    IOCA0          
            
            BS     R9,5  ;	选择SEGMENT1
            MOV    A,@0B00000000  ;选择	PWM1,2分频,PWM1在防入电池的时候再使能 
            IOW    IOC51
            CLRA 
            IOW    IOC71    ;禁止矫正
            BC     R9,5
            
            mov    a,@48       ;清RAM
            mov    r8,a
            mov    a,@0x10
            mov    r4,a
            clr    r0
            inc    r4
            djz    r8
            jmp    $-3
            clr    r4         ;清BIT5
            
            CLR    P5
            CLR    FLAG
            
            MOV    A,@50
            MOV    C250,A
            MOV    A,@240
            MOV    C240,A
            
            ENI                 ; 使能中断
            RET


;================================================================
;娟流子程序,
;程序结束表示快充好,或电池拿走,置标志无电池标志F_NOBATT

FULL_CHARGE:
           JBC    FLAG,FNOBATT
           RET   
           
REPEAD_FULL:BS     P5,CTRL           ;控制高电平,电池恒流调整
          
  RE_FC:    MOV    A,CNT           ;3个轮流采样
            XOR    A,@0         
            JBS    R3,Z
            JMP    FC_1
            
            MOV    A,@0B00001110
            IOW    IOCA0
            MOV    A,@0         ;采集0.5上的电压
            MOV    ADCON,A      ;选择AD转换通道,采集电源电压
            CLRA
            IOW   IOC90      ;不增益
            
            CALL   DELAY1MS
            BS     ADCON,ADPD   ;取样充电
            CALL   DELAY2MS
            BS     ADCON,ADRUN
            JBC    ADCON,ADRUN
            JMP    $-1
            BC     RF,ADIF
            BC     ADCON,ADPD   ;停止采样
            
            
            MOV    A,I_AD3        ;保存4个FIFO
            MOV    I_AD4,A			
	        MOV    A,I_AD2
            MOV    I_AD3,A
            MOV    A,I_AD1
            MOV    I_AD2,A
            MOV    A,ADDATA
            MOV    I_AD1,A
      
            MOV    A,ADDATA
            MOV    I_AD,A
            MOV    A,@1
            MOV    CNT,A
            JMP    FC_ISLOW   
           
                      
    FC_1:   MOV    A,CNT           ;3个轮流采样
            XOR    A,@1
            JBS    R3,Z
            JMP    FC_2
            
            MOV    A,@0B00001110
            IOW    IOCA0
            MOV    A,@2         ;采集温度
            MOV    ADCON,A      ;选择AD转换通道,采集电源电压
            CLRA
            IOW   IOC90      ;不增益
            
            CALL   DELAY1MS
            BS     ADCON,ADPD   ;取样充电
            CALL   DELAY2MS
            BS     ADCON,ADRUN
            JBC    ADCON,ADRUN
            JMP    $-1
            BC     RF,ADIF
            BC     ADCON,ADPD   ;停止采样
            MOV    A,T_AD3
            MOV    T_AD4,A
            MOV    A,T_AD2
            MOV    T_AD3,A
            MOV    A,T_AD1
            MOV    T_AD2,A
            MOV    A,ADDATA
            MOV    T_AD1,A
            MOV    A,@2
            MOV    CNT,A
            JMP    FC_ISLOW
           
    FC_2:   MOV    A,@0B00001110
            IOW    IOCA0
            MOV    A,@3         ;第3个通道,采集电源电压
            MOV    ADCON,A      ;选择AD转换通道,采集电源电压
            CLRA
            IOW   IOC90      ;不增益
            
            CALL   DELAY1MS
            BS     ADCON,ADPD   ;取样充电
            CALL   DELAY2MS
            BS     ADCON,ADRUN
            JBC    ADCON,ADRUN
            JMP    $-1
            BC     RF,ADIF
            BC     ADCON,ADPD   ;停止采样
            MOV    A,P_AD3
            MOV    P_AD4,A
            MOV    A,P_AD2
            MOV    P_AD3,A
            MOV    A,P_AD1
            MOV    P_AD2,A
            MOV    A,ADDATA
            MOV    P_AD1,A
            MOV    A,@0
            MOV    CNT,A
                  
 FC_ISLOW: BC     P5,CTRL         ;给底电平
           MOV    A,I_AD          ;送数,查表
           CALL   FULL_TABLE
           MOV    D_CNT,A
           
     FCI:  CALL   DELAY1MS        ;底电平时间
           DJZ    D_CNT
           JMP    FCI 
           
           MOV    A,@0B00001110   ;取电池电压
           IOW    IOCA0
           MOV    A,@1
           MOV    ADCON,A      ;选择AD转换通道,采集电源电压
           CLRA
           IOW   IOC90      ;不增益
           ;CALL   DELAY1MS
           BS     ADCON,ADPD   ;取样充电
           ;CALL   DELAY2MS
           BS     ADCON,ADRUN
           JBC    ADCON,ADRUN
           JMP    $-1
           BC     RF,ADIF
           BC     ADCON,ADPD   ;停止采样
           MOV    A,U_AD3
           MOV    U_AD4,A
           MOV    A,U_AD2
           MOV    U_AD3,A
           MOV    A,U_AD1
           MOV    U_AD2,A
           MOV    A,ADDATA
           MOV    U_AD1,A
           
           MOV     A,@P_AD1
           MOV     R4,A
           CALL    AVERAGE
           MOV     A,R_ADL
           MOV     P_AD,A
           
           SUB     A,@_5V4
           JBC     R3,C
           JMP     FULL_NORMAL                    
F_ABNORMALT:
           BS      FLAG,FABNORMALT
           JMP     RE_FC       ;
F_ABNORMALP:
           BS      FLAG,FABNORMALP
           JMP     RE_FC       ;
F_ABNORMALB:
           BS      FLAG,FABNORMALB
           JMP     RE_FC       ;
             
    
FULL_NORMAL:BC     FLAG,FABNORMALP
            MOV     A,@T_AD1 ;电压正常
           MOV     R4,A
           CALL    AVERAGE
           MOV     A,R_ADL
           MOV     T_AD,A
           
           SUB     A,@_43C                    ; 87(_43c)<t<186(_0c)
           JBC     R3,C
           JMP     F_ABNORMALT                  ;温度高于43度
           MOV     A,T_AD
           SUB     A,@_0C
           JBS     R3,C
           JMP     F_ABNORMALT                                 ;小于186,即大于0度则返回
                        
           BC      FLAG,FABNORMALT
           MOV     A,@U_AD1
           MOV     R4,A
           CALL    AVERAGE
           MOV     A,R_ADL
           MOV     U_AD,A    
           
           SUB     A,@_4V4
           JBS     R3,C
           JMP     F_ABNORMALB                         ;大于4.4则异常
           
           
           
 FULL_SHOW:BC      FLAG,FABNORMALB         ;清标志
           BS      P5,GREEN             ;指示
           BC      P5,RED
           MOV     A,U_AD
           SUB     A,@_2V0
           JBS     R3,C
           JMP     REPEAD_FULL    
           BS      FLAG,FNOBATT    ;无电池
           BC      P5,RED          ;清除指示
           BC      P5,GREEN
           RET  
           
  



;=======================================================================================
;================================================================
;预充电子程序,
;程序结束表示快充好,或电池拿走,置标志无电池标志F_NOBATT

PRE_CHARGE:
           JBC    FLAG,FNOBATT
           RET   
           
REPEAD_PRE:BS     P5,CTRL           ;控制高电平,电池恒流调整
          
  RE_PC:    MOV    A,CNT           ;3个轮流采样
            XOR    A,@0         
            JBS    R3,Z
            JMP    PC_1
            
            MOV    A,@0B00001110
            IOW    IOCA0
            MOV    A,@0         ;采集0.5上的电压
            MOV    ADCON,A      ;选择AD转换通道,采集电源电压
            CLRA
            IOW   IOC90      ;不增益
            
            CALL   DELAY1MS
            BS     ADCON,ADPD   ;取样充电
            CALL   DELAY2MS
            BS     ADCON,ADRUN
            JBC    ADCON,ADRUN
            JMP    $-1
            BC     RF,ADIF
            BC     ADCON,ADPD   ;停止采样
            
            
            MOV    A,I_AD3        ;保存4个FIFO
            MOV    I_AD4,A			
	        MOV    A,I_AD2
            MOV    I_AD3,A
            MOV    A,I_AD1
            MOV    I_AD2,A
            MOV    A,ADDATA
            MOV    I_AD1,A
      
            MOV    A,ADDATA
            MOV    I_AD,A
            MOV    A,@1
            MOV    CNT,A
            JMP    PC_ISLOW   
           
                      
    PC_1:   MOV    A,CNT           ;3个轮流采样
            XOR    A,@1
            JBS    R3,Z
            JMP    PC_2
            
            MOV    A,@0B00001110
            IOW    IOCA0
            MOV    A,@2         ;采集温度
            MOV    ADCON,A      ;选择AD转换通道,采集电源电压
            CLRA
            IOW   IOC90      ;不增益
            
            CALL   DELAY1MS
            BS     ADCON,ADPD   ;取样充电
            CALL   DELAY2MS
            BS     ADCON,ADRUN
            JBC    ADCON,ADRUN
            JMP    $-1
            BC     RF,ADIF
            BC     ADCON,ADPD   ;停止采样
            MOV    A,T_AD3
            MOV    T_AD4,A
            MOV    A,T_AD2
            MOV    T_AD3,A
            MOV    A,T_AD1
            MOV    T_AD2,A
            MOV    A,ADDATA
            MOV    T_AD1,A
            MOV    A,@2
            MOV    CNT,A
            JMP    PC_ISLOW
           
    PC_2:   MOV    A,@0B00001110
            IOW    IOCA0
            MOV    A,@3         ;第3个通道,采集电源电压
            MOV    ADCON,A      ;选择AD转换通道,采集电源电压
            CLRA
            IOW   IOC90      ;不增益
            
            CALL   DELAY1MS
            BS     ADCON,ADPD   ;取样充电
            CALL   DELAY2MS
            BS     ADCON,ADRUN
            JBC    ADCON,ADRUN
            JMP    $-1
            BC     RF,ADIF
            BC     ADCON,ADPD   ;停止采样
            MOV    A,P_AD3
            MOV    P_AD4,A
            MOV    A,P_AD2
            MOV    P_AD3,A
            MOV    A,P_AD1
            MOV    P_AD2,A
            MOV    A,ADDATA
            MOV    P_AD1,A
            MOV    A,@0
            MOV    CNT,A
                  
 PC_ISLOW: BC     P5,CTRL         ;给底电平

⌨️ 快捷键说明

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