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

📄 usesub.asm

📁 一个功能完善的大型制冷设备控制程序
💻 ASM
📖 第 1 页 / 共 2 页
字号:
	    RET
SubMidt:    MOV   R0, #xWTROMDT ;R0 is pointer of Tsp(setpoint of T0)
	    LCALL sF3_SUB      ;Tsp - T1
	    JC    CalcEn
	    MOV   R0, #xWTRODTT
	    LCALL sF3_SUB      ;dltT - (Tsp - T1)
            MOV   dEXTPART, #0          ; RESET EXTERN RAM HIGH BYTE
	    MOV   pPORT2, dEXTPART
	    JC    ForEnProc
            RET
 ForEnProc: MOV   R0, #xENERGY        ; 50      
            MOVX  A, @R0
            CJNE  A, #50, DecEnIs     ; CHECK THE 50% FLAG INPUT
;   自动停机         RET
AutOff:     MOV   R6, #DO_STARTCHNL   ; DO_STARTCHNL = 0
	    MOV   DPTR, #aPSD1        ; the i/o port
	    CALL  sOFF_R6BIT
	    MOV   R6, #DO_STARTDELT   ; DO_STARTCHNL = 1
	    MOV   DPTR, #aPSD1          ; the i/o port
	    CALL  sOFF_R6BIT
	    MOV   R6, #DO_LVCHNL      ; DO_LVCHNL = 3
	    MOV   DPTR, #aPSD1          ; the i/o port
	    CALL  sOFF_R6BIT
	    MOV   R0, #xSYSMK_2
	    MOV   R6, #MK_PSHERR
	    CALL  xCLR_R6BIT 
	    MOV   R0, #xSYSMK_2
	    MOV   R6, #MK_PSLERR
	    CALL  xCLR_R6BIT 
	    MOV   tMKDELAY, #cMKDELAYt
	    MOV   R0, #xIN_2SOC       ; REVERSE THE MAIN MOTOR RETURN STATUS
	    MOV   R6, #IN_STARTRET
	    CALL  xCLR_R6BIT
	    MOV   sSYSDELAY, #cRESTARTs  ; DELAY TIME FOR restart
  DecEnIs:  CALL  FORENDEC
	    SETB  C
	    RET
CalcEn:     MOV   A, R7
            MOV   dEXTPART, #cSCDRAM  ; SET TMPBUF ADDRESS HIGH BYTE
	    MOV   pPORT2, dEXTPART
	    MOV   R0, #xTMPBUF1       ; GET THE TEMPERARY BUFFER1
	    CALL  sMOVRS_PR0
            MOV   dEXTPART, #cADSEG    ; SET A/D DATA ADDRESS HIGH BYTE
	    MOV   pPORT2, dEXTPART
	    MOV   R0, #xWTRODTT
	    CALL  sMOVPR0_RS
            MOV   dEXTPART, #cSCDRAM    ; SET TMPBUF ADDRESS HIGH BYTE
	    MOV   pPORT2, dEXTPART
	    MOV   R0, #xTMPBUF1
	    CALL  sF3_DIV     ; (Tsp-T1)/dTsp
	    CALL  sF3_INT     ; Integer of 2*(Tsp-T1)/dTsp
	    MOV   R1, B
            MOV   dEXTPART, #0            ; RESET RAM ADDRESS HIGH BYTE
	    MOV   pPORT2, dEXTPART
	    CJNE  R1, #0, G_Energy
	    RET
G_Energy:   MOV   dEXTPART, #0
            MOV   pPORT2, dEXTPART
            CJNE  R1, #8, IsGread
IsGread:    JNC   IncEnergy     ;   SetDelay            
            MOV   dEXTPART, #cADSEG    ; SET A/D DATA ADDRESS HIGH BYTE
	    MOV   pPORT2, dEXTPART
	    MOV   R0, #xWTROODT
	    CALL  sMOVPR0_RS
	    MOV   R0, #xWTRORDT ;R0 is pointer of T1 (out water of chiller) 
GetDrop:    CALL  sF3_SUB       ; T1 - oT1
	    JNZ   DoDrop
	    JNC   DoDrop 
            MOV   dEXTPART, #0           ; RESET RAM ADDRESS HIGH BYTE
	    MOV   pPORT2, dEXTPART
	    RET
DoDrop:     MOV   dEXTPART, #cSCDRAM     ; SET TMPBUF ADDRESS HIGH BYTE
	    MOV   pPORT2, dEXTPART
            MOV   R0, #xTMPBUF1
	    CALL  sMOVRS_PR0
	    MOV   R7, #7FH
	    MOV   R4, #0C0H
	    MOV   R5, #0
	    CALL  sF3_ADD       ; (T1 - OT1) - (-0.375)
	    JNC   IncEnergy     ; >= 0
	    MOV   R7, #02H
	    MOV   R4, #0C0H
	    CALL  sF3_ADD      ; (T1 - OT1) - (-3.00)
            MOV   dEXTPART, #0        ; RESET RAM ADDRESS HIGH BYTE
	    MOV   pPORT2, dEXTPART
            JNC   UnDoEn
            JMP   DecEnIs
UnDoEn:     CLR   C
	    RET
IncEnergy:  CALL  FORENINC
	    SETB  C
	    RET
;#############################################################
; FILE NAME USESUB.ASM
; SUBROUTE: FORENDEC - FOR DEC SYSTEM ENERGY
; FUNCTION: 
; PARMENTERS:
; USEING REGISTER: A, B, R0(IN DISPLAY CALL), R6
; RETURN: NONE
;------------------------------------------------------------
FORENDEC:   MOV   dEXTPART, #0        ; RESET RAM ADDRESS HIGH BYTE
	    MOV   pPORT2, dEXTPART
            MOV   R0, #xENERGY
            MOVX  A, @R0
            CJNE  A, #50, IsEn75Dec
;            JB    bSYSON, IsEn75Dec
            MOV   B, #DO_ENY11
            AJMP  IsEnDec 
 IsEn75Dec: CJNE  A, #75, IsEn100Dec
            MOV   B, #DO_ENY12
            AJMP  IsEnDec 
 IsEn100Dec:CJNE  A, #100, ChgEnd
            MOV   B, #DO_ENY13
  IsEnDec:  SUBB  A, #25
            MOVX  @R0, A
            DEC   dSYSMODE
            JB    bSYSON, DoEnChg
            MOV   sSYSDELAY, #cFSTENCHKs
            CJNE  A, #25, DoEnChg
            MOV   sSYSDELAY, #cFSTENCHKs-10
  DoEnChg:  PUSH  B
            MOV   R6, #DO_ENY11
            MOV   DPTR, #aPSD1          ; the i/o port
            CALL  sOFF_R6BIT
            MOV   R6, #DO_ENY12
            MOV   DPTR, #aPSD1
            CALL  sOFF_R6BIT
            MOV   R6, #DO_ENY13
            MOV   DPTR, #aPSD1
            CALL  sOFF_R6BIT
            POP   ACC
            JZ    OverChg
            MOV   R6, A
            MOV   DPTR, #aPSD1
            CALL  sON_R6BIT
  OverChg:  MOV   A, #xENERGY
            CALL  sFLDUPDATE
            MOV   A, tMKDELAY
            JNZ   ChgEnd
            MOV   tMKDELAY, #cMKDELAYt
    ChgEnd: RET
;#############################################################
; FILE NAME USESUB.ASM
; SUBROUTE: FORENINC - FOR INC SYSTEM ENERGY
; FUNCTION: 
; PARMENTERS:
; USEING REGISTER: A, B, R0(IN DISPLAY CALL), R6
; RETURN: NONE
;------------------------------------------------------------
FORENINC:   MOV   dEXTPART, #0        ; RESET RAM ADDRESS HIGH BYTE
	    MOV   pPORT2, dEXTPART
            MOV   R0, #xENERGY
            MOVX  A, @R0
            CJNE  A, #25, IsEn50Inc
            MOV   B, #DO_ENY12
            AJMP  IsEnInc 
 IsEn50Inc: CJNE  A, #50, IsEn75Inc
            MOV   B, #DO_ENY13
            AJMP  IsEnInc 
 IsEn75Inc: CJNE  A, #75, ChgEnd
            MOV   B, #0
  IsEnInc:  ADD   A, #25
            MOVX  @R0, A
            INC   dSYSMODE
            AJMP  DoEnChg
            END
;#############################################################
; FILE NAME USESUB.ASM
; SUBROUTE: ADLMTCHK - A/D DATA LIMIT CHECK FOR ERROR DETECTION 
; FUNCTION: 
; PARMENTERS:
; USEING REGISTER: A, B, R0(IN DISPLAY CALL), R7
; RETURN: NONE
;------------------------------------------------------------
          PROC  iADLMTCHK
iADLMTCHK:MOV   dEXTPART, #cADSEG    ; SET A/D DATA ADDRESS HIGH BYTE
          MOV   pPORT2, dEXTPART
          CJNE  R7, #cWTRORDT, In_wtrC 
	  MOV   R1, #xWTROSTT
	  JMP   DnChkAD
In_WtrC:  CJNE  R7, #cWTRIRDT, NoChkAD
	  MOV   R1, #xWTRISTT
	  JMP   DnChkAD
;OutGas:   CJNE  R7, #cAIRORDT, In_Gas
;          MOV   R1, #xAIROSTT
;          JMP   UpChkAD
;In_Gas:   CJNE  R7, #cAIRIRDT, NoChkAD
;	  MOV   R1, #xAIRISTT
;	  JMP   DnChkAD
NoChkAD:  RET
DnChkAD:  CALL  sMOVPR1_RS
	  CALL  sF3_SUB
	  JNC   OverChkAD
SaveADErr:MOV   dEXTPART, #0        ; RESET RAM ADDRESS HIGH BYTE
          MOV   pPORT2, dEXTPART
          CLR   A
	  MOV   R6, nAD_CHNL
	  CALL  sADERRSAV       ; IF THE COOL WATER LOW SET LIMIT TEMP.
OverChkAD:MOV   dEXTPART, #0        ; RESET RAM ADDRESS HIGH BYTE
          MOV   pPORT2, dEXTPART
          RET
UpChkAD:  CALL  sMOVPR1_RS
	  CALL  sF3_SUB
	  JC    OverChkAD
          JMP   SaveADErr
          END 
;#############################################################
; FILE NAME USESUB.ASM
; SUBROUTE: SYSINIT - DO INIALIZE FOR APPLICATION
; FUNCTION: 
; PARMENTERS:
; USEING REGISTER: A, B, R0(IN SDISPLAY CALL), R7
; RETURN: NONE
;------------------------------------------------------------
iSYSINIT: MOV   DPTR, #xSCHEDULE   ; INITIALIZE SCHEDULE TABLE
          MOV   R2,   #7
  NextDay:MOV   A,    #8
          MOVX  @DPTR, A
          INC   DPTR
          CLR   A
          MOVX  @DPTR, A
          INC   DPTR
          MOV   A,    #18
          MOVX  @DPTR, A
          CLR   A
          INC   DPTR
          MOVX  @DPTR, A
          INC   DPTR
          DJNZ  R2, NextDay
          MOV   dEXTPART, #0
          MOV   pPORT2, dEXTPART
	  MOV   R1, #xSUMTIME      ; CLEAR THE SUM OF RUN TIME 清累计运行时间
	  CLR   A
	  MOVX  @R1, A
	  INC   R1 
	  MOVX  @R1, A
	  INC   R1 
	  MOVX  @R1, A
          INC   R1
	  MOVX  @R1, A
          INC   R1
	  MOVX  @R1, A
          mov   R1, #xDATEBUF
          dec   R1
          mov   A, #10H
          movx  @R1, A
          inc   R1
	  mov   A, #24H
	  movx  @R1, A
	  inc   R1
	  mov   A, #10H
          movx  @R1, A
          MOV   A, #25            ; INITIALIZE ENERGY AS 25%
          MOV   R1, #xENERGY
          MOVX  @R1, A
          RET

;#############################################################
; FILE NAME USESUB.ASM
; SUBROUTE: READYDOT - READY FOR NEXT DOT OUTPUT
; FUNCTION: 
; PARMENTERS:
; USEING REGISTER: A, B, R0(IN SDISPLAY CALL), R7
; RETURN: NONE
;------------------------------------------------------------
iREADYDOT: RET
	 

⌨️ 快捷键说明

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