📄 useevt.asm
字号:
;#############################################################
; FILE NAME EVTSUB.ASM
; SUBROUTE: EVENTPROC - EVENT PROCESS
; CALL FUNCTION:
; PARMENTERS: A - THE EVENT CODE
; COMMON DATA USED: NONE
; PARAMTERS: R0 - THE PASSWORD INPUT PAGE CODE
; CHANGE REGISTER: A,
; RETURN: NONE
;------------------------------------------------------------
PROC PWDCHECK
PWDCHECK: MOV R1, #xSUMTIME+1 ; CHECK IS 240 HOURS AFTER
MOVX A, @R1 ;
CLR C
SUBB A, #0F0H
JC FstYear
INC R0 ; IT IS 240 HOURS AFTER
FstYear: MOV A, R0
ANL A, #0FH
MOV B, #8
MUL AB
MOV B, A
ADD A, #xPWDDATAS
MOV R1, A
MOV DPH, #cSCDRAM
MOV DPL, #xINPUTBUF
MOVX A, @R1
CJNE A, #eDATA_IN, IsUpKeyD
IsUpKeyD: Jmp ForRomD ;%%JNC 大于键值
CJNE A, #eKEY_DOWN, IsDnKeyD
IsDnKeyD: JC ForRomD ; 小于键值
MOV A, #6
CALL CMP_RAMTOEXT
RET
ForRomD: MOV dEXTPART, #cSCDRAM
MOV pPORT2, dEXTPART
MOV R1, #xPASSWORD
MOV DPTR, #PWDSET
MOV A, B
ADD A, DPL
MOV DPL, A
JNC MovROMRAM
INC DPH
MovROMRAM: MOV A, #8
CALL MOV_ROMTORAM
MOV DPH, #cSCDRAM
MOV DPL, #xINPUTBUF
MOV R1, #xPASSWORD
MOV A, #6
CALL CMP_RAMTOEXT
MOV dEXTPART, #0 ; RESTORE THE EXT POINTER TO BLOCK #0
MOV pPORT2, dEXTPART
RET
PWDSET: DB eKEY_INC, eKEY_INC, eKEY_INC, eKEY_INC, 0, 0, 0, 0
DB eKEY_INC, eKEY_DEC, eKEY_INC, eKEY_DEC, 0, 0, 0, 0
DB eKEY_DEC, eKEY_INC, eKEY_DEC, eKEY_INC, 0, 0, 0, 0
DB eKEY_DEC, eKEY_DEC, eKEY_OFF, eKEY_DEC, 0, 0, 0, 0
DB 0, 0, 0, 0, 0, 0, 0, 0
END
;#############################################################
; FILE NAME EVTSUB.ASM
; SUBROUTE: EVENTPROC - EVENT PROCESS
; CALL FUNCTION:
; PARMENTERS: A - THE EVENT CODE
; COMMON DATA USED: NONE
; CHANGE REGISTER: A,
; RETURN: NONE
;------------------------------------------------------------
PROC iEVTPROC
iEVTPROC: CJNE A, #eKEY_OFF, ForStaMenu
JB bREMOTE, EndEvtP ; 由上位机控制
MOV R0, dSYSPAGE
CJNE R0, #cSYSSTA, EndEvtP ; 不在主页
MOV A, #eSYS_OFF
MOV sSYSDELAY, #0
ForStaMenu: CJNE A, #eKEYMENU1, ForKeyEvt
MOV A, #ePAGMENU1 ; 回主状态
ForKeyEvt: CJNE A, #eDATA_IN, IsKeyEvent
IsKeyEvent: JNC SysEventIs
MOV R0, dSYSPAGE
CJNE R0, #cPWDPAGES, IsInPwd
IsInPwd: JNC IsInputE
JNB bKEYLOCK, ForKeyProc ;
JB BA_KEYUPBIT, EndEvtP ; 弹起键无效! ; KEY UP CODE NOTHING TO DO!
CALL sCLR_PWD ; 清空口令
MOV dSYSPAGE, #cPWD70 ; 任意键弹出开锁口令输入页
MOV A, #ePAG_DISP
AJMP SysEventIs
IsInputE: CJNE A, #eKEYRIGHT, KeyInput
CALL PWDCHECK
JNZ EndPwdChk
MOV A, dSYSPAGE
CJNE A, #cPWD70, Pwd71
CLR bKEYLOCK
MOV dSYSPAGE, #cSYSMENU1
EndPwdChk: CALL sCLR_PWD ; 清空口令
MOV A, #ePAG_DISP
JMP SysEventIs
KeyInput: JB BA_KEYUPBIT, EndEvtP ; NO ACTIVE FOR KEY UP CODE
JMP SysEventIs
Pwd71: CJNE A, #cPWD71, Pwd72
MOV dSYSPAGE, #cSYSMENU3
MOV B, #0
AJMP EndPwdChk
EndEvtP: RET
Pwd72: CJNE A, #cPWD72, PwdElse
MOV dSYSPAGE, #cSYSMENU1 ; 回主状态
MOV A, #ePAG_DISP
CALL sPUTEVENT
MOV DPTR, #aPSD2
MOV R6, #DO_ERROR ; FOR 沧州 停机报警
CALL sOFF_R6BIT
MOV A, #eSYS_ON
AJMP SysEventIs
PwdElse:
ForKeyProc: ORL A, #eDATA_IN
SysEventIs: CJNE A, #eSTARTUP, NtEvt3
MOV A, #0FFH
MOV R0, #xSYSMK_1
MOVX @R0, A ; RESET THE SYSTEM MARK1, 2 FLAG
INC R0
MOVX @R0, A
OverEvtP: RET
NtEvt3: CJNE A, #ePAGMENU1, NtEvt4
MOV R0, dSYSPAGE
CJNE R0, #cSYSMENU1, NtEvt4
CALL LCD_INIT
MOV A, #ePAG_DISP
MOV B, A
NtEvt4: CJNE A, #ePAGMENU5, NtEvt5
MOV A, #ePAGMENU2
NtEvt5: CJNE A, #ePAGMENU2, NtEvt9 ; FOR MENU PROC
MOV R0, #pMSGBUF ; INITIALIZE FOR MEESAGE DISPLAY PAGE
MOVX A, @R0
MOV dTAB_RCD_START, A
MOV A, #ePAGMENU2
NtEvt9: CJNE A, #ePAGMENU6, NtEvtA ; FOR MENU6 PROC
NtEvtA: CJNE A, #ePAGMENU3, NtEvtB ; FOR MENU3 PROC
CALL sCLR_PWD ; 清空口令
MOV dSYSPAGE, #cPWD71 ; 弹出设置口令输入页
MOV A, #ePAG_DISP
NtEvtB: CJNE A, #eLOC_ON, NtEvtC
JB bREMOTE, OverEvtP
MOV A, dSYSPAGE
CJNE A, #cSYSSTA, OverEvtP
CALL sCLR_PWD ; 清空口令
MOV dSYSPAGE, #cPWD72 ; 弹出开机口令输入页
MOV A, #ePAG_DISP
NtEvtC: CJNE A, #ePAG_DOWN, NtEvtD
MOV B, A ; FOR TURN OFF 12V POWER
MOV R7, dSYSPAGE
CJNE R7, #cSYSMENU2, DnPageDo
MOV A, dTAB_RCD_INDEX
JZ EvtEndT
MOV dTAB_RCD_START, A
MOV A, #ePAGMENU2
DnPageDo: CJNE R7, #cSYSSET2, NtEvtD ; FOR MANUAL OPERATE PAGE
MOV B, #0 ; FOR TURN 12V POWER ON
MOV A, #ePAG_DOWN
NtEvtD: CJNE A, #ePAG_UP, NtEvtE
NtEvtE: CJNE A, #eFLDRIGHT, NtEvtF
MOV R0, dSYSPAGE
CJNE R0, #cSYSSTA, NtEvtF
SETB bKEYLOCK ; SET INTER BIT
MOV A, #dSYSBITS1
CALL sFLDUPDATE
RET
NtEvtF: CJNE A, #eFLD_LEFT, NtEvtG
NtEvtG: CJNE A, #eFLD_INC, NtEvtH
MOV A, dSYSPAGE
CJNE A, #cSYSSTA, IncForSet
CALL TURN_UP ; TURN LCD RIGHT UP
RET
IncForSet: CJNE A, #cSYSSET, ForOutON
MOV A, dPAG_RCD_PNT
CJNE A, #cSET_RESET_FLD, ForIncEn
CALL sUSERDEF
MOV A, #ePAG_DISP
JMP NtEvtH
ForIncEn: CJNE A, #cSET_INCEN_F, TurnLV
JB bAUT_LOC, EvtEndT
CALL FORENINC
AJMP EvtEndT
TurnLV: CJNE A, #cSET_TURNLV_FLD, ForSysInc
JB bAUT_LOC, EvtEndT
MOV R6, #DO_LVCHNL
MOV DPTR, #aPSD1
CALL sON_R6BIT
EvtEndT: JMP EvtEnd
ForOutON: CJNE A, #cSYSSET4A, ForSysInc
MOV A, dPAG_RCD_PNT
CLR C
SUBB A, #cSET4_OUTOP_FLD
MOV R6, A
SUBB A, #8
MOV DPTR, #aPSD1 ;?????????
JC DoTurnSw
MOV DPTR, #aPSD2
DoTurnSw: CALL sON_R6BIT
JMP EvtEnd
ForSysInc: MOV A, #eFLD_INC
NtEvtH: CJNE A, #eFLD_DEC, NtEvt10
MOV A, dSYSPAGE
CJNE A, #cSYSSTA, DecForSet
CALL TURN_DOWN ; TURN LCD RIGHT DOWN
RET
DecForSet: CJNE A, #cSYSSET, ForOutOFF
MOV A, dPAG_RCD_PNT
CJNE A, #cSET_DECEN_FLD, TurnOffLV
JB bAUT_LOC, ForSysDec
CALL FORENDEC
AJMP EvtEndT
TurnOffLV: CJNE A, #cSET_TURNLV_FLD, ForSysDec
MOV R6, #DO_LVCHNL
MOV DPTR, #aPSD1
CALL sOFF_R6BIT
JMP EvtEnd
ForOutOFF: CJNE A, #cSYSSET4A, ForSysDec
MOV A, dPAG_RCD_PNT
CLR C
SUBB A, #cSET4_OUTOP_FLD
MOV R6, A
MOV DPTR, #aPSD1 ;???????????
SUBB A, #8
JC DoTurnOFF
MOV DPTR, #aPSD2
DoTurnOFF: CALL sOFF_R6BIT
JMP EvtEnd
ForSysDec: MOV A, #eFLD_DEC
NtEvt10: CJNE A, #eICAPACITY, NtEvt11
DoEnInc:
MOV dEXTPART, #0
MOV pPORT2, dEXTPART
TurnEn:
JMP EvtEnd
NtEvt11: CJNE A, #eDCAPACITY, NtEvt12
DoEnDec:
MOV dEXTPART, #0
MOV pPORT2, dEXTPART
AJMP TurnEn
;%%NtEvt12: CJNE A, #eINP2CHG, NtEvt13
;%% MOV A, B ; 'B' - current INPORT 2 status.
NtEvt12: CJNE A, #eMUPDATE, NtEvt20
MOV R0, dSYSMODE
CJNE R0, #cSTARTMODE, IsRunTime
IsRunTime: JC NtEvt20
MOV R0, #xSUMTIME
MOVX A, @R0
INC A
MOVX @R0, A
SUBB A, #60
JC MinUpdate
MOVX @R0, A
INC R0
MOVX A, @R0
INC A
MOVX @R0, A
JZ HouUpdate
INC R0
MOVX A, @R0
INC A
MOVX @R0, A
HouUpdate: MOV A, #xSUMTIME ; UPDATE MINUTE
INC A
CALL FLDUPDATE
MinUpdate: MOV A, #xSUMTIME ; UPDATE MINUTE
CALL FLDUPDATE
MOV A, #eMUPDATE
NtEvt20: ;????JB B_INMEAS, SysEvtp
CJNE A, #eERR1PROC, NtEvt21 ; ERROR 1 MUST TURN OFF
MOV A, #eSYS_OFF
CALL sPUTEVENT
MOV A, dSYSMODE
JZ IsElseErr
CJNE A, #cSTARTMODE+1, IsInRun
IsInRun: JC ForAlarm
MOV dSYSMODE, #cSTARTMODE+2
MOV R0, #xENERGY
MOV A, #50
MOVX @R0, A
ForAlarm: MOV DPTR, #aPSD2
MOV R6, #DO_ERROR ; FOR 停机报警
CALL sON_R6BIT
IsElseErr: MOV sSYSDELAY, #1
RET
; MOV A, #eMOTOROFF
; CALL sPUTEVENT
; MOV sLOADDELAY, #cUNLOADALLs
; MOV A, #eDCAPACITY
;Err1_2Proc: CALL sPUTEVENT
; MOV A, dSYSPAGE
; JZ PassUpPage
; MOV dSYSPAGE, #cSYSSTA
; MOV A, #eDISPAGE
; CALL sPUTEVENT
;PassUpPage: MOV A, #eALARMON
NtEvt21: CJNE A, #eERR2PROC, NtEvt22 ; ERROR 2 TURN IN LOCIGIC
MOV A, dSYSMODE
JZ IsElseErr
EvtEnd: RET
;NtEvt22: CJNE A, #eERR3PROC, NtEvt23 ; ERROR 3 RECORD THE ERROR
;
NtEvt22: CJNE A, #eERR_CHG, SysEvtP
RET
SysEvtP: CALL sSYSEVTP
; DO PROCESS AFTER SYSTEM PROCESS
CJNE A, #eFLD_DEC, IsLessDec
IsLessDec: JC EvtEnd
CJNE A, #eFLD_DISP, IsGreatOut
IsGreatOut: JNC EvtEnd ; DO D/A OUTPUT MENUALLY
MOV A, dSYSPAGE
CJNE A, #cSYSSET, EvtEnd
MOV A, dPAG_RCD_PNT
CLR C
SUBB A, #cSET_DAOUT1_FLD
JC EvtEnd
CJNE A, #4, OutFldDA
OutFldDA: JNC EvtEnd
SETB ACC.7
MOV R7, A
CLR ACC.7
ADD A, #xDADATA
MOV R0, A
MOVX A, @R0 ; GET D/A OUT DATA
CALL DA_OUT ; DO D/A OUT
RET
END
;#############################################################
; FILE NAME USEEVT.ASM
; INTERRUPT: iCOMPROC - FOR SEND DATA TO MAIN FOR USER COMMUNICATION
; FUNCTION: DEFUALT
; PARMENTERS:
; R1 - FUNCTION CODE
; R4 ~ R7 - THE DATA
;------------------------------------------------------------
PROC iCOMPROC
RetOut: MOV A, #cCOMMODE13 ; TO SEND OUT MODE
RET
EndOut: CLR A
RET
iCOMPROC: CJNE R1, #cCOM_SETFLOATS, IsMarkSt
MOV A, R6
MOV R4, A
MOV A, R7
;DEC A ; cFLTSETNUM
MOV DPTR, #xAD_SET
ADD A, DPL
MOV DPL,A
BlkMovTO:MOV R0, #xCOMMBUF
MOV dEXTPART, #cSCDRAM + 1
MOV pPORT2, #cSCDRAM + 1
SetNext: MOVX A, @R0
MOVX @DPTR, A
INC R0
INC DPTR
DJNZ R4, SetNext
CLR A
MOV dEXTPART, A
MOV pPORT2, A
JMP EndOut
IsMarkSt: CJNE R1, #cCOM_SETMARKS,IsFloats
MOV A, R6
MOV R4, A ; cFLTSETNUM
MOV A, R7
MOV DPTR, #hIN_1ERA
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -