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

📄 usesub.asm

📁 一个功能完善的大型制冷设备控制程序
💻 ASM
📖 第 1 页 / 共 2 页
字号:
	   ORG   8000H
IN_INT0:   POP   ACC
	   RETI
	   ORG   8008H
IN_INT1:   POP   ACC
	   RETI
	   ORG   8010H
uEVTPROC:  LJMP  iEVTPROC   
	   ORG   8014H
uCOMPROC:  LJMP  iCOMPROC   
	   ORG   8018H
uADLMTCHK: LJMP  iADLMTCHK
	   ORG   801CH
uSYSINIT:  LJMP  iSYSINIT
	   ORG   8020H
uCVTR_AD:  LJMP  iCVTR_AD
	   ORG   8024H
uSTATCHK:  LJMP  iSTATCHK
	   ORG   8028H
uREADYDOT: LJMP  iREADYDOT

	   ORG   8040H
;#############################################################
; FILE NAME USESUB.ASM
; SUBROUTE: STATCHK - CHECK THE DI PORT FOR ERROR DETECTION 
; FUNCTION: 
; PARMENTERS:
; USEING REGISTER: A, B, R0(IN SDISPLAY CALL), R7
; RETURN: NONE
;------------------------------------------------------------
            PROC  iSTATCHK, TURNSYS, CTRLENERGY, FORENDEC, FORENINC
iSTATCHK:   MOV   A, tMKDELAY
            CJNE  A, #cDLYCHK, ClrMark
            DEC   tMKDELAY          ; 复位显示屏亮度
            ACALL RSTLIGHT
            AJMP  SysRunChk
ClrMark:    CJNE  A, #1, SysRunChk
            DEC   tMKDELAY
	    MOV   R0, #xSYSMK_1     ; 恢复用户设定屏蔽码
	    MOV   A, #0FFH
	    MOVX  @R0, A
	    INC   R0                    ; HAVE problam FOR SYSMK_2
	    MOVX  @R0, A
SysRunChk:  CALL  TURNSYS
	    RET
;////       LOCAL SUBROUTNE FOR LCD LIGHT RESET 
RSTLIGHT:   CLR   B_LCDCTL        ; RESET LCD RIGHT CONTROL 
            NOP
            SETB  B_LCDADJ
            NOP
            NOP
            SETB  B_LCDCTL
            SETB  B_LCDADJ        ; ...\\ 
            MOV   DPTR, #xLCDRIGHT
            MOVX  A, @DPTR
  NtPluse:  JNZ   PlusOut
            RET
  PlusOut:  SETB  B_LCDCTL
            CLR   B_LCDADJ        ; ...\\ 
            NOP
            NOP
            SETB  B_LCDADJ
            DEC   A
            JMP   NtPluse
;#############################################################
; FILE NAME USESUB.ASM
; SUBROUTE: TURNSYS - TURN THE SYSTEM ON OR OFF, AS NEED
; FUNCTION: 
; PARMENTERS:
; USEING REGISTER: A, B, R0(IN SDISPLAY CALL), R7
; RETURN: NONE
;------------------------------------------------------------
TURNSYS:    JB   bSYSON, Wtr_On 
	    JMP  TurnOffIn
Wtr_On:     MOV   A, dSYSMODE          
            CJNE  A, #cSYSSTART, SysStart
            MOV   R6, #DO_CHLPUMP       ; 10  开冷冻、冷却水泵
	    MOV   DPTR, #aPSD2          ; 
	    CALL  sON_R6BIT
            MOV   R6, #DO_COLPUMP       ; 9
	    MOV   DPTR, #aPSD2          ; 
	    CALL  sON_R6BIT
            MOV   R6, #DO_ENY11         ; 调能调阀至25%
	    MOV   DPTR, #aPSD1          ; 3
	    CALL  sON_R6BIT
            MOV   R6, #DO_ENY12         ; 2
	    MOV   DPTR, #aPSD1          ; 
	    CALL  sOFF_R6BIT
            MOV   R6, #DO_ENY13         ; 1
	    MOV   DPTR, #aPSD1          ; 
	    CALL  sOFF_R6BIT
	    INC   dSYSMODE              ; WAITING FOR TURN MAIN MOTOR ON
	    MOV   sSYSDELAY, #cMOTORONs
            MOV   A, tMKDELAY
            JNZ   SysStart
            MOV   tMKDELAY, #cMKDELAYt
 SysStart:  MOV   A, sSYSDELAY
	    JNZ   NoAction
            MOV   R6, #DO_STARTCHNL
	    MOV   R0, #dOUT1SET     ; REVERSE THE OIL PUMP RETURN STATUS
	    CALL  dTOC_R6BIT
	    JC    SysTemRun
            MOV   dEXTPART, #cADSEG    ; SET A/D DATA ADDRESS HIGH BYTE
	    MOV   pPORT2, dEXTPART
            MOV   R0, #xWTRODTT
	    CALL  MOVPR0_RS
	    MOV   R0, #xWTROMDT        ; GET THE MIDDLE TEMP. + 2*(delta)
	    CALL  F3_ADD               ; \\....
	    MOV   R0, #xWTRORDT
	    CALL  F3_SUB
            MOV   dEXTPART, #0         ; %%%%%
	    MOV   pPORT2, dEXTPART
	    JZ    NoAction
	    JC    NoAction
	    MOV   R6, #DO_STARTDELT   ; DO_STARTDELT = 6
	    MOV   DPTR, #aPSD1          ; the i/o port
	    CALL  sON_R6BIT
	    MOV   R6, #DO_STARTCHNL   ; DO_STARTCHNL = 7 
	    MOV   DPTR, #aPSD1          ; the i/o port
	    CALL  sON_R6BIT           ; TURN ON THE START RUN...
	    MOV   R6, #DO_SYSON       ; DO_SYSON = 11,  GAVE SYSTEM START FLAG
	    MOV   DPTR, #aPSD2        ; the i/o port
	    CALL  sON_R6BIT
            SETB  bSYSONB
	    MOV   R6, #IN_STARTRET
	    MOV   R0, #xIN_2SOC       ; REVERSE THE MAIN MOTOR RETURN STATUS
	    CALL  xSET_R6BIT
	    MOV   R0, #xSYSMK_2       ; MARK 高低压开关量
	    MOV   R6, #MK_PSHERR
	    CALL  xCLR_R6BIT
	    MOV   R0, #xSYSMK_2
	    MOV   R6, #MK_PSLERR
	    CALL  xCLR_R6BIT
	    MOV   tMKDELAY, #cMKDELAYt
;%%         CLR   B_LOCKMEAS
	    MOV   A, #cTURNON               ; SYSTEM INTO TURN ON
	    MOV   B, #eSTACHG
	    CALL  SAVEMSG
            MOV   tCLOCK_01, #19            ; DELAY 0.9S
	    MOV   sSYSDELAY, #cSTART_Ds     ; THE DELAY TIME FOR TURN TO RUN
            MOV   dSYSMODE, #cSTARTMODE
            MOV   dEXTPART, #0              ; INC THE RUN TIME COUNTER
            MOV   pPORT2, dEXTPART
            MOV   R0, #xSUMCOUNT
            MOVX  A, @R0
            INC   A
            MOVX  @R0, A
	    RET
NoAction:   MOV   dEXTPART, #0
            MOV   pPORT2, dEXTPART   ; RESET THE HIGH BYTE FOR RAM ADDRESS
            RET
SystemRun:  MOV   R6, #DO_STARTDELT    ; DO_STARTDELT = 2
	    MOV   R0, #dOUT1SET        ; CHECK THAT SYSTEM IS IN DELT STATUS
	    CALL  dTOC_R6BIT
	    JNC   SetEnTo50
	    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  sON_R6BIT
	    MOV   tMKDELAY, #cMKDELAYt
            INC   dSYSMODE
	    MOV   sSYSDELAY, #cFSTENCHKs
            MOV   dEXTPART, #0            ; %%%%%
	    MOV   pPORT2, dEXTPART
	    RET
SetEnTo50:  MOV   A, dSYSMODE
            CJNE  A, #cDELTAMODE, AdjustEn
            CALL  FORENINC
            MOV   sSYSDELAY, #cCHENERGYs ; RESET ENERGY CHECK delay 60sec
            RET
  AdjustEn: JNB   bAUT_LOC, NoAction
	    CALL  CTRLENERGY
            MOV   dEXTPART, #cADSEG    ; SET A/D DATA ADDRESS HIGH BYTE
	    MOV   pPORT2, dEXTPART
	    MOV   R0, #xWTRORDT        ; R0 is point to T1(out water of chiller)
	    CALL  sMOVPR0_RS           ; GET THE T1 TEMPERTURE TO R7R4R5
	    MOV   A, R7
	    CLR   C
	    SUBB  A, #cF3_ERR          ; NoErr IS
	    JZ    NoAction
	    MOV   R0, #xWTROODT        ; R0 is point to old T1 buffer
	    CALL  sMOVRS_PR0           ; SAVE IT 
            AJMP  NoAction
TurnOffIn:  MOV   A, dSYSMODE
	    JZ    NoAction
            MOV   A, sSYSDELAY
	    JNZ   TurnOver
            CALL  FORENDEC
            MOV   A, sSYSDELAY
	    JNZ   TurnOver
            MOV   A, dSYSMODE
TurnSysOff: CJNE  A, #cSYSSTART, MotorOff
            MOV   R6, #DO_CHLPUMP       ; 10  关冷冻、冷却水泵
	    MOV   DPTR, #aPSD2          ; 
	    CALL  sOFF_R6BIT
            MOV   R6, #DO_COLPUMP       ; 9
	    MOV   DPTR, #aPSD2          ; 
	    CALL  sOFF_R6BIT
            MOV   R6, #DO_ENY11         ; Turn off 能调阀25%
	    MOV   DPTR, #aPSD1          ; 3
	    CALL  sOFF_R6BIT
            CALL  sPOWEROFF           ; TURN OFF THE 12V POWER OFF
            JNB   bSYSONB, ResetMode
	    MOV   sSYSDELAY, #cRESTARTs
            CLR   bSYSONB
ResetMode:  MOV   dSYSMODE, #cSYSOFF
	    MOV   A, #cTURNOFF        ; SYSTEM HAS TURN OFF
	    MOV   B, #eSTACHG
	    CALL  SAVEMSG
	    MOV   R0, #xSYSMK_2
            MOV   pPORT2, #0
            MOV   A, #0FFH
            MOVX  @R0, A
            MOV   A, #dSYSBITS2
            CALL  sFLDUPDATE
            MOV   A, tMKDELAY
            JNZ   TurnOver
            MOV   tMKDELAY, #cMKDELAYt
TurnOver:   MOV   dEXTPART, #0            ; %%%%%
	    MOV   pPORT2, dEXTPART
            RET
MotorOff:   CJNE  A, #cSTARTMODE+1, StartOff
            DEC   A
  StartOff: CJNE  A, #cSTARTMODE, TurnOver
            MOV   R6, #DO_STARTCHNL
	    MOV   R0, #dOUT1SET    
	    CALL  dTOC_R6BIT
	    JNC   TurnOver
	    MOV   DPTR, #aPSD1          ; the i/o port
	    CALL  sOFF_R6BIT
	    MOV   R6, #DO_STARTDELT   ; DO_STARTCHNL = 6
	    MOV   DPTR, #aPSD1          ; the i/o port
	    CALL  sOFF_R6BIT
	    MOV   R6, #DO_LVCHNL      ; DO_LVCHNL = 5
	    MOV   DPTR, #aPSD1          ; the i/o port
	    CALL  sOFF_R6BIT
	    MOV   R0, #xSYSMK_2
	    MOV   R6, #MK_PSLERR
	    CALL  xCLR_R6BIT
	    MOV   R0, #xSYSMK_2
	    MOV   R6, #MK_PSHERR
	    CALL  xCLR_R6BIT
	    MOV   tMKDELAY, #cMKDELAYt
	    MOV   R0, #xIN_2SOC       ; REVERSE THE MAIN MOTOR RETURN STATUS
	    MOV   R6, #IN_STARTRET
	    CALL  xCLR_R6BIT
	    MOV   R6, #DO_SYSON       ; DO_SYSON = 11
	    MOV   DPTR, #aPSD2        ; the i/o port
	    CALL  sOFF_R6BIT
            MOV   dSYSMODE, #cSYSSTART 
	    MOV   sSYSDELAY, #cSTART_Ds ; FOR WATER PUMP OFF DELAY
            JMP   TurnOver
;#############################################################
; FILE NAME TURNSYS.ASM
; SUBROUTE: CTRLENERGY - CONTROL FOR CHANGE ENERGY
; FUNCTION: 
; PARMENTERS:
; USEING REGISTER: A, B, R0(IN SDISPLAY CALL), R7
; RETURN: NONE
;------------------------------------------------------------
CTRLENERGY: MOV   sSYSDELAY, #cCHENERGYs ; RESET ENERGY CHECK delay 60sec
            MOV   dEXTPART, #cADSEG    ; SET A/D DATA ADDRESS HIGH BYTE
	    MOV   pPORT2, dEXTPART
            MOV   R0, #xWTRORDT
	    CALL  sMOVPR0_RS
	    CJNE  R7, #cF3_ERR, SubMidt
            MOV   dEXTPART, #0            ; RESET EXTERN RAM HIGH BYTE
	    MOV   pPORT2, dEXTPART

⌨️ 快捷键说明

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