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

📄 new_dc18v.asm

📁 18v直流充电器控制程序源代码
💻 ASM
字号:
INCLUDE     HT48R06A-1.INC
            DATA .SECTION  'DATA' 
                              
         TRH_FLAG         EQU     [60H].0
         TRL_FLAG         EQU     [60H].1
         TRX_FLAG         EQU     [60H].2
         NO_INT_FLAG      EQU     [60H].3

         CHUANSHU_COUNT   EQU     [61H]
         ;COPY_TR          EQU     [62H]   ;--------临时单元
         TIMEH            EQU     [63H]    ;--------临时单元
         TIMEL            EQU     [64H]    ;--------临时单元
         SECOND           EQU     [65H]    ;--------临时单元
         MIUNE            EQU     [66H]    ;--------临时单元
         ;PD_COUNT         EQU     [67H]   ;--------临时单元
         W_TIME           EQU     [68H]    ;--------临时单元
         CAIJI_COUNT      EQU     [69H]    ;--------临时单元
         COUNTH           EQU     [6AH]    ;--------临时单元
         COUNTL           EQU     [6BH]    ;--------临时单元
         DELAYH           EQU     [6CH]    ;--------临时单元
         DELAYL           EQU     [6DH]    ;--------临时单元
         RETURN           EQU     [6EH]    ;--------解码临时单元
         ;SUMH             EQU     [6FH]   ;--------解码临时单元

         TRH_COUNT_H      EQU     [70H]
         TRH_COUNT_L      EQU     [71H]
         TRX_COUNT_H      EQU     [72H]
         TRX_COUNT_L      EQU     [73H]
         TRL_COUNT_H      EQU     [74H]
         TRL_COUNT_L      EQU     [75H]

         TEMP_TIMEL       EQU     [78H]
         TEMP_TIMEH       EQU     [79H]
         TEMP_SECOND      EQU     [7AH]
         ;TR2              EQU     [7BH]       
         INT_COUNT1       EQU     [7CH]
         INT_COUNT        EQU     [7DH]  
         PUSHA            EQU     [7EH]    ;--------保存ACC单元
         PUSHST           EQU     [7FH]    ;--------保存STATUS单元    
    
         PACFG            EQU     0FH;       00001111B
         PBCFG            EQU     0
         PCCFG            EQU     03H

         CONTR            EQU     PA.3
         CONTRC           EQU     PAC.3
         TRH              EQU     PA.2
         TRL              EQU     PA.1
         TRX              EQU     PA.0
         VBAT             EQU     PC.0
         NO_INT           EQU     PC.1
         GRNLED           EQU     PA.4
         REDLED           EQU     PA.5
         POWER_OUT        EQU     PB.2
         SDA              EQU     PA.6
         SCL              EQU     PA.7
        
;//////////////////////////////////////////
        

         CODE  .SECTION   AT  0 'CODE'
;*************************************************
;        VECTOR  START
;*************************************************
         ORG     00H
         JMP     START
         ORG     04H
         JMP     INT_EXT
         ORG     08H
         JMP     INT_TIME

;################################################
;***********  定时中断入口 ************************  
;################################################ 
         CODE1  .SECTION   AT  10H 'CODE'         
INT_TIME:
         CLR     WDT2
         MOV     PUSHA,A
         MOV     A,STATUS         
         MOV     PUSHST,A
         SZ      TRH_FLAG
         JMP     TRLKK
         INC     TRH_COUNT_L
         SZ      Z
         INC     TRH_COUNT_H

TRLKK:
         SZ      TRL_FLAG
         JMP     TRXKK
         INC     TRL_COUNT_L
         SZ      Z
         INC     TRL_COUNT_H

TRXKK:   
         SZ      TRX_FLAG
         JMP     TREND
         INC     TRX_COUNT_L
         SZ      Z
         INC     TRX_COUNT_H

TREND:
         MOV     A,01H
         ADDM    A,TIMEL
         MOV     A,0
         ADCM    A,TIMEH
         CLR     C
         MOV     A,3H
         MOV     RETURN,A
         MOV     A,TIMEL
         SUB     A,0E8H
         MOV     A,TIMEH
         SBC     A,RETURN
         SNZ     C
         JMP     INT_TIME_A
         INC     SECOND
         CLR     TIMEH
         CLR     TIMEL
         MOV     A,SECOND
         SUB     A,60
         SZ      ACC
         JMP     INT_TIME_A
         INC     MIUNE
         CLR     SECOND
         CLR     TIMEH
         CLR     TIMEL

INT_TIME_A:
         MOV     A,01H
         ADDM    A,TEMP_TIMEL
         MOV     A,0
         ADCM    A,TEMP_TIMEH
         CLR     C
         MOV     A,3H
         MOV     RETURN,A
         MOV     A,TEMP_TIMEL
         SUB     A,0E8H
         MOV     A,TEMP_TIMEH
         SBC     A,RETURN
         SNZ     C
         JMP     INT_TIME_B
         INC     TEMP_SECOND
         CLR     TEMP_TIMEH
         CLR     TEMP_TIMEL

INT_TIME_B:
         INC     W_TIME
         MOV     A,INT_COUNT
         SUB     A,200
         SNZ     C
         INC     INT_COUNT
         MOV     A,PUSHST
         MOV     STATUS,A         
         MOV     A,PUSHA   
         RETI

INT_EXT:
         MOV     PUSHA,A
         MOV     A,STATUS         
         MOV     PUSHST,A
         SZ      W_TIME
         JMP     INT_EXT_A
         JMP     INT_EXT_B

INT_EXT_A:
         INC     INT_COUNT1
      
INT_EXT_B:             
         MOV     A,PUSHST
         MOV     STATUS,A         
         MOV     A,PUSHA   
         RETI
;****************************************************
;		MAIN PROCESS
;  BUF1 AS HIGH BYTE FOR EEPROM WRITE
;****************************************************

START:
         CLR     INTC.0                  ;禁止所有中断
         MOV     A,       PACFG 
         MOV     PAC,     A               
         MOV     PA,      A   
         CLR     PBC
         CLR     PB
         SET     POWER_OUT
         MOV     A,       03H            ;初始化,PA,PB,PC,PG端口
         MOV     PCC,     A
         MOV     PC,      A  
         SET     SDA;===================================================
        
         
;****************************************************
         MOV     A,       40H      ;CLEAR RAM区
         MOV     MP0,     A
SETRAM:;----------------------------断点1
         MOV     A,       0
         MOV     R0,      A      
         INC     MP0
         MOV     A,       MP0
         SUB     A,       0FFH
         SZ      ACC
         JMP     SETRAM  
         MOV     A,6
         MOV     INTC,A
         MOV     A,6
         MOV     TMR,A
         MOV     A,83H;81H
         MOV     TMRC,A
         SET     TMRC.4
         MOV     A,07
         MOV     WDTS,A
         CLR     PB
         CLR     PC
         SET     INTC.0
         SET     POWER_OUT
         CLR     REDLED
         CLR     GRNLED

AD_ST:
         CLR     WDT1
         CALL    TAD
         CALL    CHUANSHU
         CALL    PAN_INT
         SUB     A,0AAH
         SZ      ACC
         JMP     BEGINST  ;AD_ST_A
         JMP     START  

AD_ST_A:     
         ;CALL    TAD
         ;CLR     WDT1
         ;CLR     C
         ;MOV     A,TRX_COUNT_L
         ;SUB     A,TRL_COUNT_L
         ;MOV     A,TRX_COUNT_H
         ;SBC     A,TRL_COUNT_H
         ;SZ      C
         ;JMP     BEGINST
         ;SET     REDLED
         ;SET     GRNLED
         ;JMP     AD_ST

BEGINST:
         CALL    PAN_INT
         SUB     A,0AAH
         SZ      ACC
         JMP     BEGINST_A
         JMP     START 

BEGINST_A: 
         CLR     MIUNE
         SZ      VBAT
         JMP     BEGIN
         CLR     WDT1
         SET     POWER_OUT
         SET     REDLED
         SET     GRNLED
         JMP     BEGINST


BEGIN:        
         CLR     WDT1
         MOV     A,MIUNE
         SUB     A,100
         SZ      C
         JMP     BEGIN_D
         CALL    PAN_INT
         SUB     A,0AAH
         SZ      ACC
         JMP     BEGIN_A
         JMP     START 

BEGIN_A:
         CLR     POWER_OUT
         CLR     GRNLED
         SET     REDLED
         CALL    TAD
         CALL    CHUANSHU
         MOV     A,TRX_COUNT_L
         SUB     A,TRL_COUNT_L
         MOV     A,TRX_COUNT_H
         SBC     A,TRL_COUNT_H
         SZ      C
         JMP     BEGIN_C

         CALL    PAN_INT
         SUB     A,0AAH
         SZ      ACC
         JMP     BEGIN_B
         JMP     START 

BEGIN_B:
         CLR     WDT1
         SET     REDLED
         SET     GRNLED
         SET     POWER_OUT

         CALL    PAN_INT
         SUB     A,0AAH
         SZ      ACC
         JMP     BEGIN_B_A
         JMP     START 

BEGIN_B_A:
         CALL    TAD
         MOV     A,TRX_COUNT_L
         SUB     A,TRL_COUNT_L
         MOV     A,TRX_COUNT_H
         SBC     A,TRL_COUNT_H
         SZ      C
         JMP     BEGIN
         JMP     BEGIN_B

BEGIN_C:
         CLR     C
         MOV     A,TRX_COUNT_L
         SUB     A,TRH_COUNT_L
         MOV     A,TRX_COUNT_H
         SBC     A,TRH_COUNT_H
         SZ      C
         JMP     BEGIN_D
         JMP     BEGIN

BEGIN_D:
         CLR     WDT1
         SET     GRNLED
         CLR     REDLED
         CALL    TAD
         CALL    CHUANSHU
         SET     POWER_OUT   
         CALL    PAN_INT
         SUB     A,0AAH
         SZ      ACC
         JMP     BEGIN_D
         JMP     START 
         

TAD:
         CLR     WDT1
         CLR     TRH_FLAG
         CLR     TRL_FLAG
         CLR     TRX_FLAG
         CLR     TRH_COUNT_H
         CLR     TRH_COUNT_L
         CLR     TRL_COUNT_H
         CLR     TRL_COUNT_L
         CLR     TRX_COUNT_H
         CLR     TRX_COUNT_L
         CLR     TEMP_SECOND
         CLR     CONTR
         CLR     CONTRC
         CLR     CONTR

         MOV     A,80H
         MOV     COUNTH,A

TAD0:
         MOV     A,0FFH
         MOV     COUNTL,A

TAD1:
         NOP                  
         SDZ     COUNTL
         JMP     TAD1
         SDZ     COUNTH
         JMP     TAD0
         CLR     TEMP_SECOND
         CLR     TEMP_TIMEH
         CLR     TEMP_TIMEL
         SET     CONTR
         SET     CONTRC
         SET     CONTR

TAD2:
         MOV     A,TEMP_SECOND
         SUB     A,1
         SZ      C
         JMP     ADRETURN
         SZ      TRH
         SET     TRH_FLAG
         SZ      TRL
         SET     TRL_FLAG
         SZ      TRX
         SET     TRX_FLAG
         JMP     TAD2

ADRETURN:
         CLR     CONTR
         CLR     CONTRC
         CLR     CONTR
         RET


PAN_INT:
         CLR     WDT1
         CLR     INT_COUNT
         CLR     INT_COUNT1
         CLR     W_TIME
         CLR     CAIJI_COUNT

PAN_INT_A:
         MOV     A,INT_COUNT
         SUB     A,200
         SZ      C
         JMP     PAN_INT_C
         SZ      NO_INT
         JMP     PAN_INT_B
         SET     NO_INT_FLAG
         JMP     PAN_INT_A

PAN_INT_B:
         SNZ     NO_INT_FLAG
         JMP     PAN_INT_A
         INC     CAIJI_COUNT
         CLR     NO_INT_FLAG
         JMP     PAN_INT_A

PAN_INT_C:
         CLR     NO_INT_FLAG
         MOV     A,INT_COUNT1
         SUB     A,10
         SNZ     C
         JMP     PAN_INT_D
         RET     A,0AAH

PAN_INT_D:
         MOV     A,CAIJI_COUNT
         SUB     A,10
         SNZ     C
         RET     A,55H
         RET     A,0AAH

;==========================================================  
;**********************************************************
CHUANSHU:
         CLR     INTC.0
         MOV     A,48
         MOV     CHUANSHU_COUNT,A

CHUANSHU_ST:
         RLC     TRH_COUNT_H      
         RLC     TRH_COUNT_L      
         RLC     TRX_COUNT_H      
         RLC     TRX_COUNT_L      
         RLC     TRL_COUNT_H      
         RLC     TRL_COUNT_L  
         SZ      C
         JMP     CHUANSHU_A
         CLR     SDA
         JMP     CHUANSHU_B

CHUANSHU_A:
         SET     SDA

CHUANSHU_B:
         MOV     A,10
         MOV     DELAYH,A

CHUANSHU_C:
         MOV     A,0FFH
         MOV     DELAYL,A

CHUANSHU_D:
         NOP
         SDZ     DELAYL
         JMP     CHUANSHU_D
         SDZ     DELAYH
         JMP     CHUANSHU_C
         CLR     SCL

         MOV     A,5
         MOV     DELAYH,A

CHUANSHU_E:
         MOV     A,0FFH
         MOV     DELAYL,A

CHUANSHU_F:
         NOP
         SDZ     DELAYL
         JMP     CHUANSHU_F
         SDZ     DELAYH
         JMP     CHUANSHU_E
         SET     SCL
         SDZ     CHUANSHU_COUNT
         JMP     CHUANSHU_ST 
         RLC     TRH_COUNT_H      
         RLC     TRH_COUNT_L      
         RLC     TRX_COUNT_H      
         RLC     TRX_COUNT_L      
         RLC     TRL_COUNT_H      
         RLC     TRL_COUNT_L   
         SET     SDA  
         SET     SCL  
         SET     INTC.0
         RET
;**********************************************************
;==========================================================

⌨️ 快捷键说明

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