📄 io_sub.asm
字号:
;##########################################################
; 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 + -