📄 jrdmdytx.asm
字号:
RecvFarCpuDat10:MOV R6,#200
RecvFarCpuDat11:MOV R7,#200
RecvFarCpuDat12:JNB RI,RecvFarCpuDat13
CLR RI
MOV A,SBUF
MOVX @R1,A
INC R1
SJMP RecvFarCpuDat14
RecvFarCpuDat13:DJNZ R7,RecvFarCpuDat12
DJNZ R6,RecvFarCpuDat11
MOV A,SBUF
POP B
POP ACC
POP PSW
RETI
RecvFarCpuDat14:DJNZ R2,RecvFarCpuDat10
MOV R1,#RecvBuf
MOV R2,#RecvNum-4 ; 28个字节的累加和
MOV B,#54H ; 0AAH+0AAH+00H = 54H
RecvFarCpuDat15:MOVX A,@R1
ADD A,B
XCH A,B
INC R1
DJNZ R2,RecvFarCpuDat15
MOVX A,@R1
XRL A,B
JZ RecvFarCpuDat16
MOV A,SBUF
POP B
POP ACC
POP PSW
RETI
RecvFarCpuDat16:MOV R1,#RecvBuf
MOVX A,@R1
MOV HjjAddr,A ; 呼叫机的地址
INC R1
MOVX A,@R1 ; 取功能码
INC R1
CJNE A,#RecvCpu1Func01,RecvFarCpuDat17
LJMP RecvFarCpuEnd
RecvFarCpuDat17:CJNE A,#RecvCpu1Func02,RecvFarCpuDat18
NOP
LJMP RecvFarCpuEnd
RecvFarCpuDat18:CJNE A,#RecvCpu1Func03,RecvFarCpuDat19
NOP
LJMP RecvFarCpuEnd
RecvFarCpuDat19:CJNE A,#RecvCpu1Func04,RecvFarCpuDat20
NOP
LJMP RecvFarCpuEnd
RecvFarCpuDat20:CJNE A,#RecvCpu1Func05,RecvFarCpuDat21
NOP
LJMP RecvFarCpuEnd
RecvFarCpuDat21:CJNE A,#RecvCpu1Func06,RecvFarCpuDat22
NOP
LJMP RecvFarCpuEnd
RecvFarCpuDat22:CJNE A,#RecvCpu1Func07,RecvFarCpuDat23
NOP
LJMP RecvFarCpuEnd
RecvFarCpuDat23:CJNE A,#RecvCpu1Func08,RecvFarCpuDat24
NOP
LJMP RecvFarCpuEnd
RecvFarCpuDat24:CJNE A,#RecvCpu1Func09,RecvFarCpuDat25 ; 接收远程键值
LCALL GetFarKeyNum
LJMP RecvFarCpuEnd
RecvFarCpuDat25:CJNE A,#RecvCpu1Func10,RecvFarCpuDat26 ;
LCALL GetFarFucCode ; 获得远程功能码
LJMP RecvFarCpuEnd
RecvFarCpuDat26:CJNE A,#RecvCpu1Func11,RecvFarCpuDat27
NOP
LJMP RecvFarCpuEnd
RecvFarCpuDat27:CJNE A,#RecvCpu1Func12,RecvFarCpuDat28
NOP
LJMP RecvFarCpuEnd
RecvFarCpuDat28:CJNE A,#RecvCpu1Func13,RecvFarCpuDat29
NOP
LJMP RecvFarCpuEnd
RecvFarCpuDat29:CJNE A,#RecvCpu1Func14,RecvFarCpuDat30
NOP
LJMP RecvFarCpuEnd
RecvFarCpuDat30:CJNE A,#RecvCpu1Func15,RecvFarCpuDat31
NOP
LJMP RecvFarCpuEnd
RecvFarCpuDat31:CJNE A,#RecvCpu1Func16,RecvFarCpuDat32
NOP
LJMP RecvFarCpuEnd
RecvFarCpuDat32:CJNE A,#RecvCpu1Func17,RecvFarCpuDat33
LCALL GetAdData ; 将接收下位机采集的 A/D 值装入 A/D 缓冲区
LJMP RecvFarCpuEnd
RecvFarCpuDat33:CJNE A,#RecvCpu1Func18,RecvFarCpuDat34 ;
LJMP RecvFarCpuEnd
RecvFarCpuDat34:CJNE A,#RecvCpu1Func19,RecvFarCpuDat35
NOP
LJMP RecvFarCpuEnd
RecvFarCpuDat35:CJNE A,#RecvCpu1Func20,RecvFarCpuDat36
NOP
LJMP RecvFarCpuEnd
RecvFarCpuDat36:CJNE A,#RecvCpu1Func21,RecvFarCpuDat37
NOP
LJMP RecvFarCpuEnd
RecvFarCpuDat37:CJNE A,#RecvCpu1Func22,RecvFarCpuDat38
NOP
LJMP RecvFarCpuEnd
RecvFarCpuDat38:CJNE A,#RecvCpu1Func23,RecvFarCpuDat39
NOP
LJMP RecvFarCpuEnd
RecvFarCpuDat39:CJNE A,#RecvCpu1Func24,RecvFarCpuDat40
NOP
LJMP RecvFarCpuEnd
RecvFarCpuDat40:CJNE A,#RecvCpu1Func25,RecvFarCpuDat41
LCALL JsYcXsbSzSz ; 接收远程显示板时钟设置
LJMP RecvFarCpuEnd
RecvFarCpuDat41:CJNE A,#RecvCpu1Func26,RecvFarCpuDat42
LCALL YzYcSrdMa ; 验证远程显示板输入的密码
LJMP RecvFarCpuEnd
RecvFarCpuDat42:CJNE A,#RecvCpu1Func27,RecvFarCpuDat43
NOP
LJMP RecvFarCpuEnd
RecvFarCpuDat43:CJNE A,#RecvCpu1Func28,RecvFarCpuEnd
NOP
LJMP RecvFarCpuEnd
RecvFarCpuEnd: MOV A,SBUF
POP B
POP ACC
POP PSW
RETI
;
; ****** 接收远程显示板时钟设置 ******
;
JsYcXsbSzSz: MOVX A,@R1 ; 取"年"
MOV Year,A
INC R1
MOVX A,@R1
MOV Month,A
INC R1
MOVX A,@R1
MOV Day,A
INC R1
MOVX A,@R1
MOV Hour,A
INC R1
MOVX A,@R1
MOV Min,A
INC R1
MOVX A,@R1
MOV Sec,A
INC R1
LCALL HtWriteClock
LCALL HtWriteDate
RET
;
; ****** 验证远程显示板输入的密码 ******
;
YzYcSrdMa: MOV R0,#TempBuf ; 超级密码:9313
MOVX A,@R1
MOV @R0,A
INC R0
INC R1
MOVX A,@R1
MOV @R0,A
INC R0
INC R1
MOVX A,@R1
MOV @R0,A
INC R0
INC R1
MOVX A,@R1
MOV @R0,A
INC R0
INC R1
MOVX A,@R1
SWAP A
MOV B,A
INC R1
MOVX A,@R1
ORL A,B
MOV R0,#CxCzRyH ; 操作人员高8位
MOVX @R0,A
INC R1
MOVX A,@R1
MOV B,A
INC R1
MOVX A,@R1
ORL A,B
; MOV R0,#CxCzRyL ; 操作人员低8位
MOVX @R0,A
INC R1
MOVX A,@R1
SWAP A
MOV B,A
INC R1
MOVX A,@R1
ORL A,B
MOV R0,#CxBcCcH ; 本次车次高8位
MOVX @R0,A
INC R1
MOVX A,@R1
MOV B,A
INC R1
MOVX A,@R1
ORL A,B
MOV R0,#CxBcCcL ; 本次车次低8位
MOVX @R0,A
INC R1
MOV BNUM,#PassNum
MOV BADR,#TempBuf+4
MOV DPTR,#UserPassAdr
LCALL RD_BLK
MOV R0,#TempBuf
MOV R1,#TempBuf+4
MOV R2,#PassNum
YzYcSrdMa1: MOV A,@R0
MOV B,@R1
CJNE A,B,YzYcSrdMa2
INC R0
INC R1
DJNZ R2,YzYcSrdMa1
SJMP YzYcSrdMa4
YzYcSrdMa2: MOV R0,#TempBuf ; 超级密码:9313
MOV A,@R0
CJNE A,#9,YzYcSrdMa3 ; 9
INC R0
MOV A,@R0
CJNE A,#3,YzYcSrdMa3 ; 3
INC R0
MOV A,@R0
CJNE A,#1,YzYcSrdMa3 ; 1
INC R0
MOV A,@R0
XRL A,#3 ; 3
JZ YzYcSrdMa4
YzYcSrdMa3: LCALL SendFarXsMaCw ; 远程显示板密码错误确认信息
RET
YzYcSrdMa4: LCALL SendFarXsMaZq ; 远程显示板密码正确确认信息
MOV InterFace,#12
MOV AutoTimer,#5
SETB AutoRunF
RET
;
; ****** 获得远程键值 ******
;
GetFarKeyNum: MOV A,@R1 ; 取远程键值
MOV KeyNumber,A
SETB FarKeyF
RET
;
; ****** 获得远程功能码 ******
;
GetFarFucCode: MOVX A,@R1 ; 取远程功能码
INC R1
CJNE A,#RecvFarFucCd01,GetFarFucCode1
LCALL ReadClock ; 发送时钟到远程终端
LJMP GetFarEnd
GetFarFucCode1: CJNE A,#RecvFarFucCd02,GetFarFucCode2
LCALL WriteClock ; 接收远程终端时钟设置
LJMP GetFarEnd
GetFarFucCode2: CJNE A,#RecvFarFucCd03,GetFarFucCode3
LCALL ReadSysPass ; 发送系统密码到远程终端
LJMP GetFarEnd
GetFarFucCode3: CJNE A,#RecvFarFucCd04,GetFarFucCode4
LCALL WriteSysPass ; 接收远程终端系统密码设置
LJMP GetFarEnd
GetFarFucCode4: CJNE A,#RecvFarFucCd05,GetFarFucCode5
LCALL ReadUserPass ; 发送用户密码到远程终端
LJMP GetFarEnd
GetFarFucCode5: CJNE A,#RecvFarFucCd06,GetFarFucCode6
LCALL WriteUserPass ; 接收远程终端用户密码设置
LJMP GetFarEnd
GetFarFucCode6: CJNE A,#RecvFarFucCd07,GetFarFucCode7
LJMP GetFarEnd
GetFarFucCode7: CJNE A,#RecvFarFucCd08,GetFarFucCode8
LJMP GetFarEnd
GetFarFucCode8: CJNE A,#RecvFarFucCd09,GetFarFucCode9
LJMP GetFarEnd
GetFarFucCode9: CJNE A,#RecvFarFucCd10,GetFarFucCode10
LJMP GetFarEnd
GetFarFucCode10:CJNE A,#RecvFarFucCd11,GetFarFucCode11
LJMP GetFarEnd
GetFarFucCode11:CJNE A,#RecvFarFucCd12,GetFarFucCode12
LJMP GetFarEnd
GetFarFucCode12:CJNE A,#RecvFarFucCd13,GetFarFucCode13
LJMP GetFarEnd
GetFarFucCode13:CJNE A,#RecvFarFucCd14,GetFarFucCode14
LJMP GetFarEnd
GetFarFucCode14:CJNE A,#RecvFarFucCd15,GetFarFucCode15
LJMP GetFarEnd
GetFarFucCode15:CJNE A,#RecvFarFucCd16,GetFarFucCode16
LJMP GetFarEnd
GetFarFucCode16:CJNE A,#RecvFarFucCd17,GetFarFucCode17
NOP
LJMP GetFarEnd
GetFarFucCode17:CJNE A,#RecvFarFucCd18,GetFarFucCode18
NOP
LJMP GetFarEnd
GetFarFucCode18:CJNE A,#RecvFarFucCd19,GetFarFucCode19
NOP
LJMP GetFarEnd
GetFarFucCode19:CJNE A,#RecvFarFucCd20,GetFarFucCode20
NOP
LJMP GetFarEnd
GetFarFucCode20:CJNE A,#RecvFarFucCd21,GetFarFucCode21
NOP
LJMP GetFarEnd
GetFarFucCode21:CJNE A,#RecvFarFucCd22,GetFarFucCode22
NOP
LJMP GetFarEnd
GetFarFucCode22:CJNE A,#RecvFarFucCd23,GetFarFucCode23
NOP
LJMP GetFarEnd
GetFarFucCode23:CJNE A,#RecvFarFucCd24,GetFarFucCode24
NOP
LJMP GetFarEnd
GetFarFucCode24:CJNE A,#RecvFarFucCd25,GetFarFucCode25
LJMP GetFarEnd
GetFarFucCode25:CJNE A,#RecvFarFucCd26,GetFarFucCode26
LJMP GetFarEnd
GetFarFucCode26:CJNE A,#RecvFarFucCd27,GetFarFucCode27
LJMP GetFarEnd
GetFarFucCode27:CJNE A,#RecvFarFucCd28,GetFarFucCode28
LJMP GetFarEnd
GetFarFucCode28:CJNE A,#RecvFarFucCd29,GetFarFucCode29
LJMP GetFarEnd
GetFarFucCode29:CJNE A,#RecvFarFucCd30,GetFarFucCode30
NOP
LJMP GetFarEnd
GetFarFucCode30:CJNE A,#RecvFarFucCd31,GetFarFucCode31
NOP
LJMP GetFarEnd
GetFarFucCode31:CJNE A,#RecvFarFucCd32,GetFarEnd
LCALL ReadSysReset ; 接收远程终端的复位设置
NOP
GetFarEnd: RET
;
; ****** 发送时钟到远程终端 ******
;
ReadClock: MOV R1,#SendBuf
MOVX @R1,A
INC R1
MOV A,SEC
MOVX @R1,A
INC R1
MOV A,MIN
MOVX @R1,A
INC R1
MOV A,HOUR
MOVX @R1,A
INC R1
MOV A,DAY
MOVX @R1,A
INC R1
MOV A,MONTH
MOVX @R1,A
INC R1
MOV A,WEEK
MOVX @R1,A
INC R1
MOV A,YEAR
MOVX @R1,A
INC R1
PUSH PSW
CLR PSW.3 ; RX : PAGE 2
SETB PSW.4
MOV CallAddr,#FarPcAdr ; 远程控制PC地址
MOV FuncCode,#SendCpu1Func17; 发送数据到远程终端功能码
LCALL DataToFarPC ; 发送一条记录到远程(PC)终端
POP PSW
RET
;
; ****** 接收远程终端时钟设置 ******
;
WriteClock: MOVX A,@R1 ; 取"秒"
MOV SEC,A
INC R1
MOVX A,@R1
MOV MIN,A
INC R1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -