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

📄 pagsub.asm

📁 一个功能完善的大型制冷设备控制程序
💻 ASM
📖 第 1 页 / 共 4 页
字号:
; FILE NAME PAGSUB.ASM
; SUBROUTE: FLD_INCH - THE DATA IN CURRENT FIELD INC TEN 
; CALL FUNCTION: DELAY
; USING PARMENTERS:  NONE
;
; COMMON DATA USED: 
; CHANGE REGISTER: 
; RETURN: NONE
;------------------------------------------------------------
FLD_INCH:  CALL  GETRCDPNT
	   CALL  GET_RECORD
	   DEC   dPAG_RCD_PNT  
	   MOV   A, dFLD_R7
           RLC   A
           JC    IncErrH
           RLC   A
           ORL   C, bFLD_ACTIVE
           JNC   IncErrH
	   MOV   A, dFLD_R6
	   RLC   A
	   RLC   A
	   JC    IntegerI10
	   RLC   A
	   JC    FloatI_1
	   RLC   A
	   JC    IncErrH             ; ASCII IN RAM
	   RLC   A
IncErrH:   RET
FloatI_1:  MOV   A, dFLD_R2
           MOV   dEXTPART, A
	   MOV   pPORT2, A
	   MOV   A, dFLD_R1   ;  R0 - THE POINTER TO THE 3BYTE FLOAT
           MOV   DPTR, #uF3SETUP
           CALL  FLD_F3LMT
           JNC   EndNo_IH      
           MOV   R0, dFLD_R1  ;     R0 - THE POINTER TO THE 3BYTE FLOAT
	   MOV   R7, #1H      ;   + (1.0)
	   MOV   R4, #80H
	   MOV   R5, #0H
	   LCALL F3_ADD
	   LCALL MOVRS_PR0
           JMP   EndI_H 
  EndNo_IH:RET   
IntegerI10:RLC   A
	   RLC   A
	   MOV   bUSE1, C
	   RLC   A
	   MOV   bUSE2, C
           MOV   R1, dFLD_R1
           MOV   A,  dFLD_R2
	   INC   A
	   JNZ   ExtRAMI10
	   MOV   A, #10
	   ADD   A,  @R1
	   MOV   @R1, A
	   JNB   bUSE1, IsDbI10
	   ADD   A, #06           ; BCD CODE 
	   MOV   @R1, A 
	   AJMP  EndI_H
  IsDbI10: JNB   bUSE2, EndI_H
           JNC   EndI_H           ; FOR DOUBLE BYTE 
           INC   R1
           INC   @R1
           JNC   EndI_H  
ExtRAMI10: DEC   A
           MOV   dEXTPART, A
	   MOV   pPORT2, A        ; INIT. EXT. RAM SEGMENT ADDR THAT DATA IN 
	   MOV   A, R1       ; R0 - THE POINTER TO THE INTEGER
           MOV   DPTR, #uINTSETUP
           CALL  FLD_INTLMT
           JNC   EndNo_IH
	   MOVX  A,  @R1          ; PARMETER  R0 - THE INTEGER WILL BE CONVERTED
	   ADD   A, #10
	   MOVX  @R1, A
	   JNB   bUSE1, IsDbI10E
	   ADD   A, #6            ; BCD CODE
	   MOVX  @R1, A
	   AJMP  EndI_H
  IsDbI10E:JNB   bUSE2, EndI_H
           JNC   EndI_H
           INC   R1
           MOVX  A, @R1
           INC   A
           MOVX  @R1, A
  EndI_H:  MOV   A,   dFLD_R5
           CLR   BA_REVERSE
           MOV   dFLD_R5, A
           CALL  DIS_FIELD
	   CLR   C
	   RET
	   END
;#############################################################
; FILE NAME PAGSUB.ASM
; SUBROUTE: FLD_DEC - THE DATA IN CURRENT FIELD DEC ONE 
; CALL FUNCTION: 
; USING PARMENTERS:  NONE
;
; COMMON DATA USED: 
; CHANGE REGISTER: 
; RETURN: NONE
;------------------------------------------------------------
	   PROC  FLD_DEC, FLD_DECH
FLD_DEC:   CALL  GETRCDPNT
	   CALL  GET_RECORD
	   DEC   dPAG_RCD_PNT
	   MOV   A, dFLD_R7
           RLC   A
           JC    IncErrT
           RLC   A
           ORL   C, bFLD_ACTIVE
           JNC   IncErrT
	   MOV   A, dFLD_R6
	   RLC   A
	   RLC   A
	   JC    IntegerDec
	   RLC   A
	   JC    FloatD01
	   RLC   A
	   JC    IncErrT             ; ASCII IN RAM
	   RLC   A
IncErrT:   RET
FloatD01:  MOV   A, dFLD_R2
           MOV   dEXTPART, A
	   MOV   pPORT2, A     ; INIT. EXT. RAM SEGMENT ADDR THAT DATA IN
	   MOV   A, dFLD_R1   ;  R0 - THE POINTER TO THE 3BYTE FLOAT
           MOV   DPTR, #uF3SETDN
           CALL  FLD_F3LMT
           JC    EndNo_D
           MOV   A, R4
           ORL   A, R5
           JZ    EndNO_D
           MOV   R0, dFLD_R1   ; R0 - THE POINTER TO THE 3BYTE FLOAT
	   MOV   R7, #0FDH     ;   + (-0.1)
	   MOV   R4, #0CCH
	   MOV   R5, #0CCH
	   CALL  F3_ADD
	   CALL  MOVRS_PR0
           JMP   DecEnd   
EndNo_D:   RET
IntegerDec:RLC   A
	   RLC   A
	   MOV   bUSE1, C
           RLC   A
           MOV   bUSE2, C
           MOV   R1, dFLD_R1
	   MOV   A,  dFLD_R2
	   INC   A
	   JNZ   ExtRAMDec
	   DEC   @R1
	   JNB   bUSE1, IsDbDec
	   MOV   A, @R1
	   ANL   A, #0FH
	   CJNE  A, #0FH, DecEnd
	   MOV   A, @R1
	   SUBB  A, #06H
	   CJNE  A, #0FAH, SaveRst 
           SUBB  A, #60H
  SaveRst: MOV   @R1, A
	   JMP   DecEnd
  IsDbDec: JNB   bUSE2, DecEnd
           MOV   A, @R1
           INC   A
           JNZ   DecEnd
           INC   R1
           DEC   @R1
           JMP   DecEnd   
ExtRAMDec: DEC   A
           MOV   dEXTPART, A
	   MOV   pPORT2, A       ; INIT. EXT. RAM SEGMENT ADDR THAT DATA IN
	   MOV   A, R1           ; R0 - THE POINTER TO THE INTEGER
           MOV   DPTR, #uINTSETDN
           CALL  FLD_INTLMT
           JC    EndNo_D
           ORL   A, R7
           JZ    EndNo_D
	   MOVX  A, @R1          ; PARMETER  R0 - THE INTEGER WILL BE CONVERTED
	   DEC   A
	   MOVX  @R1, A
	   JNB   bUSE1, IsDbDecE
	   ANL   A, #0FH
	   CJNE  A, #0FH, DecEnd
	   MOVX  A, @R1
	   SUBB  A, #06H
	   CJNE  A, #0FAH, SaveRstE 
           SUBB  A, #60H
  SaveRstE:MOVX  @R1, A
	   JMP   DecEnd
  IsDbDecE:JNB   bUSE2, DecEnd
           MOVX  A,  @R1
           INC   A
           JNZ   DecEnd
           INC   R1
           MOVX  A,  @R1
           DEC   A
           MOVX  @R1, A
DecEnd:    MOV   A, dFLD_R5
           CLR   BA_REVERSE
           MOV   dFLD_R5, A
           CALL  DIS_FIELD
	   CLR   C
	   RET
;#############################################################
; FILE NAME PAGSUB.ASM
; SUBROUTE: FLD_DECH - THE DATA IN CURRENT FIELD DEC TEN 
; CALL FUNCTION: 
; USING PARMENTERS:  NONE
;
; COMMON DATA USED: 
; CHANGE REGISTER: 
; RETURN: NONE
;------------------------------------------------------------
FLD_DECH:  CALL  GETRCDPNT
	   CALL  GET_RECORD
	   DEC   dPAG_RCD_PNT  
	   MOV   A, dFLD_R7
           RLC   A
           JC    IncErrH
           RLC   A
           ORL   C, bFLD_ACTIVE   ; IS PRESSWORD ON?
           JNC   IncErrH
	   MOV   A, dFLD_R6
	   RLC   A
	   RLC   A
	   JC    IntegerD10
	   RLC   A
	   JC    FloatD_1
	   RLC   A
	   JC    IncErrH             ; ASCII IN RAM
	   RLC   A
IncErrH:   RET
FloatD_1:  MOV   A, dFLD_R2
           MOV   dEXTPART, A
	   MOV   pPORT2, A     ; INIT EXT. RAM SEGMANT ADDR THAT DATA IN 
	   MOV   A, dFLD_R1   ;  R0 - THE POINTER TO THE 3BYTE FLOAT
           MOV   DPTR, #uF3SETDN
           CALL  FLD_F3LMT
           JC    EndNo_DH
           MOV   A, R4
           ORL   A, R5
           JZ    EndNO_DH
           MOV   R0, dFLD_R1   ; R0 - THE POINTER TO THE 3BYTE FLOAT
	   MOV   R7, #081H     ;   + (-1.0)
	   MOV   R4, #080H
	   MOV   R5, #0H
	   LCALL F3_ADD
	   LCALL MOVRS_PR0
           JMP   EndD_H 
  EndNo_DH:RET
IntegerD10:RLC   A
	   RLC   A
	   MOV   bUSE1, C
	   RLC   A
	   MOV   bUSE2, C
           MOV   R1, dFLD_R1
           MOV   A,  dFLD_R2
	   INC   A
	   JNZ   ExtRAMD10
	   MOV   A, @R1
	   CLR   C
	   SUBB  A, #10
	   MOV   @R1, A
	   JNB   bUSE1, IsDbD10
	   SUBB  A, #6
	   MOV   @R1, A
	   JMP   EndD_H
  IsDbD10: JNB   bUSE2, EndD_H
           JNC   EndD_H
           INC   R1
           DEC   @R1
           JNC   EndD_H  
ExtRAMD10: DEC   A
           MOV   dEXTPART, A
	   MOV   pPORT2, A       ; INIT EXT. RAM SEGMANT ADDR THAT DATA IN 
	   MOV   A, R1           ; R0 - THE POINTER TO THE INTEGER
           MOV   DPTR, #uINTSETDN
           CALL  FLD_INTLMT
           JC    EndNo_DH
           ORL   A, R7
           JZ    EndNo_DH
	   MOVX  A, @R1          ;PARMETER  R0 - THE INTEGER WILL BE CONVERTED
	   CLR   C
	   SUBB  A, #10
	   MOVX  @R1, A
	   JNB   bUSE1, IsDbD10E
	   SUBB  A, #06H
	   MOVX  @R1, A
	   JMP   EndD_H
  IsDbD10E:JNB   bUSE2, EndD_H
           JNC   EndD_H
           INC   R1
           MOVX  A, @R1
           DEC   A
           MOVX  @R1, A
  EndD_H:  MOV   A,   dFLD_R5
           CLR   BA_REVERSE
           MOV   dFLD_R5, A
           CALL  DIS_FIELD
	   CLR   C
	   RET
	   END
;#############################################################
; FILE NAME PAGSUB.ASM
; SUBROUTE: GET_FIELDL - GET THE LONGTH OF CURRENT FIELD TO R3
; CALL FUNCTION: GET_FIELDL
; USING PARMENTERS:  NONE
; COMMON DATA USED:  GROUP 3 REGISTERS
; CHANGE REGISTER: A
; RETURN: R2
;------------------------------------------------------------
FLD_GETLNG:CALL  GETRCDPNT
	   MOVC  A, @A+DPTR
	   ANL   A, #3FH
	   RET
;#############################################################
; FILE NAME PAGSUB.ASM
; SUBROUTE: FLD_F3LMT - CHECK THE FLOAT DATA IS OUT RAINGE.
; CALL FUNCTION: FLD_F3LMT
; USING PARMENTERS:  NONE
; COMMON DATA USED:  GROUP 3 REGISTERS
; CHANGE REGISTER: A, ALL REGISTERS
; RETURN:  C   R7, R4, R5
;------------------------------------------------------------
FLD_F3LMT:  MOV   R0,  A           ; SAVE THE POINTER
            CLR   C
            SUBB  A, #xAD_SET
            MOV   DPL,   A
            CLR   A
            MOVC  A, @A+DPTR
            MOV   R7, A
            MOV   A, #1
            MOVC  A, @A+DPTR
            MOV   R4, A
            MOV   A, #2
            MOVC  A, @A+DPTR
            MOV   R5, A
            CALL  F3_SUB
            RET
;#############################################################
; FILE NAME PAGSUB.ASM
; SUBROUTE: FLD_INTLMT - CHECK THE ONE & TWO BYTES INTEGER DATA IS OUT RAINGE.
; CALL FUNCTION: FLD_INTLMT
; USING PARMENTERS:  NONE
; COMMON DATA USED: B_USE2, GROUP 3 REGISTERS
; CHANGE REGISTER: A, ALL REGISTERS
; RETURN:  C , R7, A
;------------------------------------------------------------
FLD_INTLMT: MOV   R0,  A           ; SAVE THE POINTER
            CLR   C
            SUBB  A, #xINT_SET
            ADD   A, DPL
            MOV   DPL,   A
            CLR   A
            MOVC  A, @A+DPTR
            MOV   R7, A
            MOV   A, #1
            MOVC  A, @A+DPTR
            MOV   R4, A  
            MOVX  A, @R0
            CLR   C
            SUBB  A,  R7
            MOV   R7,  A
            JNB   bUSE2, LmtChkE
            INC   R0
            MOVX  A, @R0
            SUBB  A,  R4
LmtChkE:    RET
;#############################################################
; FILE NAME PAGSUB.ASM
; SUBROUTE: CLR_PWD - CLEAN PASSWORD OLD DATA
; FUNCTION: 
; PARMENTERS: NONE
; CHANGE REGISTERS: DPTR, R5, A
; RETURN: None
;------------------------------------------------------------
CLR_PWD:     MOV  DPTR, #xPASSWORD
             MOV  R5,#8
             CLR  A
NextPwdB:    MOVX @DPTR, A
	     INC  DPTR
	     DJNZ R5, NextpwdB
	     RET

⌨️ 快捷键说明

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