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

📄 io_sub.asm

📁 一个功能完善的大型制冷设备控制程序
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;##########################################################
; FILE:IO_SUB.ASM 
; NAME: POWERON - TURN ON THE OUT DRIVE POWER V12
; PARMENTERS:  NONE
; CHANGED REGISTER: 
; RETURN:      NONE
;###########################################################
POWERON:    CLR   B_CTLLCK    ; SYSTEM DRIVE LOCK BIT (12V POWER ON/OFF ...)
	    RET
;###########################################################         
; FILE:IO_SUB.ASM 
; NAME: POWEROFF - TURN OFF THE OUT DRIVE POWER V12
; PARMENTERS:  NONE
; CHANGED REGISTER: 
; RETURN:      NONE
;###########################################################
POWEROFF:   SETB  B_CTLLCK    ; SYSTEM DRIVE LOCK BIT (12V POWER ON/OFF ...)
	    RET
;###########################################################         
; FILE:IO_SUB.ASM 
; NAME: TURN_ON - TURN ON THE LAMP AFTER TURN ON THE SYSTEM
; PARMENTERS:  NONE
; CHANGED REGISTER: 
; RETURN:      NONE
;###########################################################
TURN_ON:    CLR   B_TURNON    ; SYSTEM TURN ON BIT (TURN THE LAMP ON)
	    RET
;###########################################################         
; FILE:IO_SUB.ASM 
; NAME: TURN_OFF - TURN OFF THE LAMP AFTER TURN OFF THE SYSTEM
; PARMENTERS:  NONE
; CHANGED REGISTER: 
; RETURN:      NONE
;###########################################################
TURN_OFF:   SETB  B_TURNON    ; SYSTEM TURN ON BIT (TURN THE LAMP OFF)
	    RET
;###########################################################         
; FILE:IO_SUB.ASM 
; NAME: TURN_UP - TURN THE LCD DISPLAY TO LIGHT
; PARMENTERS:  NONE
; CHANGED REGISTER: 
; RETURN:      NONE
;###########################################################
TURN_UP:    SETB  B_LCDCTL    ; SYSTEM TURN ON BIT 
            SETB  B_LCDADJ
            MOV   DPTR, #xLCDRIGHT
            MOVX  A, @DPTR
            INC   A
            ANL   A, #3FH
            MOVX  @DPTR, A
            CLR   B_LCDADJ
	    RET
;###########################################################         
; FILE:IO_SUB.ASM 
; NAME: TURN_DOWN - TURN THE LCD DISPLAY LIGHT TO DOWM 
; PARMENTERS:  NONE
; CHANGED REGISTER: 
; RETURN:      NONE
;###########################################################
TURN_DOWN:  MOV   R2, #63
            SETB  B_LCDCTL    ; SYSTEM TURN ON BIT 
            MOV   DPTR, #xLCDRIGHT
            MOVX  A, @DPTR
            ADD   A, R2
            ANL   A, R2
            MOVX  @DPTR, A
  NextPus:  NOP
            SETB  B_LCDADJ
            NOP
            NOP
            CLR   B_LCDADJ
            DJNZ  R2, NextPus
	    RET

;###########################################################         
; FILE:IO_SUB.ASM 
; NAME: ERRBELL - SET THE BELL TO RINGING AS THE GAVING DATA.
; PARMENTERS:   A  - THE SOUND TYPE
;               R2 - THE TIME WILL DELAY
; RETURN:      NONE
;###########################################################
ERRBELL:   CJNE  A, #cER1SOUND, ForSound2
	   MOV   rPWM1, #0D0H  ;  MEMORY TEST ERROR ACTIVE
	   MOV   tFMQTIME, #0D0H
	   RET
ForSound2: CJNE  A, #cER2SOUND, ForSound3
	   MOV   rPWM1, #80H   ;  ERROR ACTIVE
	   MOV   tFMQTIME, #0D0H
	   RET
ForSound3: CJNE  A, #cKEYSOUND, ForSound4
	   MOV   rPWM1, #0FFH  ;  KEY PROCRSS
	   MOV   tFMQTIME, #10H
ForSound4:
	   RET
;#############################################################
; FILE NAME IO_SUB.ASM
; SUBROUTE: INPORTREAD - GET THE INPUT PORTS DATA 
; CALL FUNCTION:  
; PARMENTERS:
;        A - PORT NUMBER 0, 1, 2, 3, ...)
; COMMON DATA USED: 
; CHANGE REGISTER: A, DPTR
; RETURN: NONE
;------------------------------------------------------------
INPORTREAD:CLR   B_OUT_IN
	   MOV   DPTR, #aPSD1
           RL    A
           RL    A
           RL    A
           ADD   A, DPH
           MOV   DPH, A
	   INC   DPTR          ; GET THE INPUT PORT DATA else OUTPUT DATA 
	   MOVX  A, @DPTR
           RET
;#############################################################
; FILE NAME IO_SUB.ASM
; SUBROUTE: ON_R6BIT - CLEAR [R6] BIT IN OUT_PORT 
; CALL FUNCTION:  TOC_R6BIT, CLR_R6BIT
; PARMENTERS:
;        R6 - THE INDEX OF BIT THAT WILL BE SET [0 - 0F]
; COMMON DATA USED: OUT_PORT, SDELAYDO, DISLAMP1, DISLAMP2
; CHANGE REGISTER: A, B, R7
; RETURN: NONE
;------------------------------------------------------------
	     PROC  ON_R6BIT, OFF_R6BIT
ON_R6BIT:    MOV   R7, #cTRYTIMES
	     MOV   R0, #dOUT1SET         ; SAVE ERROR DATA
	     MOV   A,  R6
	     CLR   C
 ForNtPort:  SUBB  A, #8
	     JC    DoSetOn
	     INC   R0
             INC   R0
	     JMP   ForNtPort   
  DoSetOn:   JNB   bOUTRET, ForSetOn ; %%USE THIS VER ONLY  
	     SETB  B_OUT_IN           ; %%SET THE IN PORT TO OUTPUT STATUS
ForSetOn:    DJNZ  R7, GoForOn
	     SETB  C
	     CALL  OUTERRSAV
	     RET
GoForOn:     PUSH  DPL
	     JNB   bOUTRET, ReadOnSta  
	     INC   DPTR         ; GET THE INPUT PORT DATA else OUTPUT DATA 
ReadOnSta:   MOVX  A, @DPTR
	     POP   DPL 
	     CALL  TOC_R6BIT
	     JNC   ForOnBit
	     MOV   R7,  A
	     XCH   A, @R0 
	     XRL   A, R7
	     JNZ   ReDispFld1   
	     CLR   C
	     RET
ReDispFld1:  MOV   A, R0         ; the i/o on/off status  
	     CALL  FLDUPDATE
	     CLR   C
	     RET
ForOnBit:    PUSH  DPL          ; FOR 'PSD' CHIP ONLY 
	     PUSH  ACC          ; ..
	     MOV   A, #4        ; ..  
	     ADD   A, DPL       ; ..
	     MOV   DPL, A       ; .. 
	     POP   ACC          ; ..//
	     CALL  SET_R6BIT
	     MOVX  @DPTR, A
	     POP   DPL          ; //..//
	     JMP   ForSetOn
;#############################################################
; FILE NAME IO_SUB.ASM
; SUBROUTE: OFF_R6BIT - SET [R6] BIT IN DO_PORT (P2 )
; CALL FUNCTION:  TOC_R6BIT, FIX_R6BIT
; COMMON DATA USED: DO_PORT, SDELAYDO, DISLAMP1, DISLAMP2
; PARMENTERS:
;        R6 - THE INDEX OF BIT THAT WILL BE SET
; CHANGE REGISTER: A, B, R7
; RETURN: NONE
;------------------------------------------------------------
OFF_R6BIT:   MOV   R7, #cTRYTIMES
	     MOV   R0, #dOUT1SET         ; SAVE ERROR DATA
	     MOV   A,  R6
	     CLR   C
 ForNextP:   SUBB  A, #8
	     JC    DoSetOff
	     INC   R0
	     INC   R0
             JMP   ForNextP   
  DoSetOff:  JNB   bOUTRET, ForSetOff ; %%USE THIS VER ONLY 
	     SETB  B_OUT_IN            ; %%SET THE IN PORT TO OUTPUT STATUS
ForSetOff:   DJNZ  R7, GoForOff
	     SETB  C
	     CALL  OUTERRSAV
	     RET
GoForOff:    PUSH  DPL
	     JNB   bOUTRET, ReadOffSta  
	     INC   DPTR         ; GET THE INPUT PORT DATA else OUTPUT DATA 
ReadOffSta:  MOVX  A, @DPTR
	     POP   DPL 
	     CALL  TOC_R6BIT
	     JC    ForOffBit
	     MOV   R7,  A
	     XCH   A, @R0 
	     XRL   A, R7
	     JNZ   ReDispFld2
	     CLR   C
	     RET
ReDispFld2:  MOV   A, R0         ; the i/o on/off status  
	     CALL  FLDUPDATE
	     CLR   C
	     RET
ForOffBit:   PUSH  DPL          ; FOR 'PSD' CHIP ONLY 
	     PUSH  ACC          ; ..
	     MOV   A, #4        ; ..  
	     ADD   A, DPL       ; ..
	     MOV   DPL, A       ; .. 
	     POP   ACC          ; ..//
	     CALL  CLR_R6BIT
	     MOVX  @DPTR, A
	     POP   DPL
	     JMP   ForSetOff
	     END
;###########################################################         
; FILE:IO_SUB.ASM 
; NAME: SET_CONVT - SET THE CONVERT CHANNEL & CONVERT START BIT,
;                       IF THE AD PORT IS READY FOR CONVERTION.
; PARMENTERS:  bINCONVT
;              A - THE NUMBER OF AD CHANNEL
; CHANGED REGISTER: A, B
; RETURN:      bINCONVT
;###########################################################
SET_CONVT:RRC   A
	  JNB   ACC.3, NormAD    ; < 16 
T2GetAD:  ANL   A, #07H          ; FOR GET SET BIT
	  PUSH  ACC 
	  RL    A
	  INC   A
	  MOV   R6, A
	  CLR   A
	  CALL  SET_R6BIT
	  MOV   rGETCON, A       ; ENABLE ONE T2 GET LEVEL
	  POP   ACC
	  MOV   R6, A
	  SETB  bISCONVT
	  CLR   A  
	  CALL  SET_R6BIT
	  MOV   rINTEN1, A       ; ENABLE ONE T2 INTERRUPT
	  SETB  B_EN_INT         ; ENABLE ALL INTERRUPT 
	  RET
NormAD:   ANL   A, #07H
	  MOV   B, A
	  MOV   A, rADCTRL
	  JB    BA_ADCS, PassSet  ;  CHECK ADCS BIT THAT'S READY FOR CONVERT.
	  JB    BA_ADCI, PassSet  ;  CHECK ADCI BIT THAT'S READY FOR CONVERT.
	  MOV   A, B
	  SETB  BA_ADCS           ;    SET ADCS TO START CONVERT.
	  MOV   rADCTRL, A        
	  SETB  B_EN_INT
	  SETB  bISCONVT
	  SETB  B_EADINT
PassSet:  RET
;###########################################################         
; FILE:IO_SUB.ASM 
; NAME: GET_CONVT - GET THE A/D CONVERT DATA & FORMAT TO 3 - FLOAT DATA,
;                       IF THE A/D PORT CONVERTION IS OVER.
; PARMENTERS:  bINCONVT
; RETURN:      bISCONVT  and R7,R4,R5 - THE FLOAT DATA
;###########################################################
GET_CONVT:CLR   C
	  JB    bISCONVT, PassGet
	  JNB   bINCONVT, PassGet
	  JB    ACC.4, ForScdAD        ; >= 16 
	  MOV   A, rADCTRL
	  ANL   A, #0C0H
	  MOV   B, A           ; AD  LOW 2 BIT TO B.7 & B.6 BITS
	  MOV   A, rADHDATA    ; AD HIGH 8 BIT TO  A
	  MOV   R7, #0AH 
FormatD:  LCALL F3_FORMAT
	  MOV   R4, A
	  MOV   R5, B
	  CLR   bINCONVT
	  SETB  C
PassGet:  RET
ForScdAD: MOV   A, dT2GETH
	  MOV   B, dT2GETL
	  MOV   R7, #10H
	  JMP   FormatD 

;###########################################################         
; FILE:IO_SUB.ASM 
; NAME: ADMEASURE - SET TO CONVERT AND GET THE DATA TO IT'S BUFFER,
; PARMENTERS:  bINCONVT, A
; RETURN:      NONE
;###########################################################
	    PROC  ADMEASURE 
ADMEASURE:  JB    bISCONVT, ToAD_Get
	    JB    bINCONVT, ToAD_Get
	    MOV   A, tMEASURE       ; IS IT TIME FOR START A/D MEASURE? 
	    JNZ   PassMeas
	    DEC   iMEASNUM
	    MOV   A, iMEASNUM
	    JNZ   ForAD_Set
	    MOV   A,  nAD_CHNL      ; FOR DELTA CHECK ALL
	    MOV   B, #3
	    MUL   AB
	    ADD   A, #xAD_BUF
	    MOV   R0, A
	    MOV   dEXTPART, #cADSEG
	    MOV   pPORT2, #cADSEG
	    MOV   A, #cF3_ERR
	    MOVX  @R0, A           ;   XCHANGE @R0 <=> R7.R4.R5
	    CLR    A
	    MOV    dEXTPART, A
	    MOV    pPORT2, A  ; RESTORE THE EXT RAM SEGMENT TO '0'
	    SETB  C
	    RET
ForAD_Set:  MOV   A, nAD_CHNL
	    MOV   C, ACC.0
	    CPL   C
	    MOV   B_HALFAD, C
	    CALL  SET_CONVT 
	    MOV   tMEASURE, #cMEASDLYt  ; RESET THE CHECK DELAY TIME  
ToAD_Get:   MOV   A, tMEASURE       ; IS TIME OUT FOR LAST CONVERTION? 
	    JNZ   ForAD_GET
MeasErrP:   CLR   bINCONVT
	    CLR   bISCONVT
	    MOV   tMEASURE, #0
PassMeas:   CLR   C
	    RET
ForAD_GET:  MOV   A, nAD_CHNL
	    CALL  GET_CONVT
	    JNC   PassMeas
	    MOV   A, nAD_CHNL
	    CALL  uCVTR_AD           ; RETURN MEASURE DATA R7,R4,R5 
	    JC    MeasErrP          ;   and A/D SERIAL NO. IN dTMPBUF
DeltaChk:   MOV   A,  nAD_CHNL      ; FOR DELTA CHECK ALL

⌨️ 快捷键说明

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