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

📄 jrdmdytx.asm

📁 用增强型单片机51RD2做的控制器
💻 ASM
📖 第 1 页 / 共 3 页
字号:
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 + -