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

📄 jrmaincpu.asm.bak

📁 用增强型单片机51RD2做的控制器
💻 BAK
📖 第 1 页 / 共 3 页
字号:

Watchdog:       ret
;
;       ******  清通信接收缓冲区(32Byte)  ******
;
ClrRecvBuf:     MOV     R1,#RecvBuf
                MOV     R2,#32
ClrRecvBuf1:    MOV     A,#00H
                MOVX    @R1,A
                INC     R1
                DJNZ    R2,ClrRecvBuf1
                RET

;
;       ******  清运行报告缓冲区(32Byte)  ******
;
ClrReportBuf:   MOV     R1,#ReportBuf
                MOV     R2,#32
ClrReportBuf1:  MOV     A,#00H
                MOVX    @R1,A
                INC     R1
                DJNZ    R2,ClrReportBuf1
                RET

;
;   ******  返回远程显示板密码正确信息  ******
;
SendFarXsbMaZq: CLR     PSW.3                   ; RX : PAGE 2
                SETB    PSW.4
                MOV     CallAddr,#FarShowAdr    ; 远程显示板地址
                MOV     FuncCode,#SendCpu1Func32; 显示板密码正确确认信息
                LCALL   DataToFarCpu            ; 发送一条记录到远程CPU
                CLR     PSW.3                   ; RX : PAGE 0
                CLR     PSW.4
                RET

;
;   ******  返回远程显示板密码错误信息  ******
;
SendFarXsbMaCw: CLR     PSW.3                   ; RX : PAGE 2
                SETB    PSW.4
                MOV     CallAddr,#FarShowAdr    ; 远程显示板地址
                MOV     FuncCode,#SendCpu1Func33; 显示板密码错误确认信息
                LCALL   DataToFarCpu            ; 发送一条记录到远程CPU
                CLR     PSW.3                   ; RX : PAGE 0
                CLR     PSW.4
                RET


;
;       ******  写多字节 SEEPROM  ******
;
WR_BLK:         PUSH    PSW
                SETB    PSW.3                   ; RX : PAGE 3
                SETB    PSW.4
                CLR     SROM_CLK
                NOP
                NOP
                NOP
                NOP
                SETB    SROM_DAT
                NOP
                NOP
                NOP
                NOP
                SETB    SROM_CLK
                NOP
                NOP
                NOP
                NOP
                CLR     SROM_DAT
                NOP
                NOP
                NOP
                NOP
                CLR     SROM_CLK        ; StarT
                MOV     A,#WCT0
                LCALL   WRITE
                MOV     A,DPH           ; SROM HIGHT BYTE
                LCALL   WRITE
                MOV     A,DPL           ; SROM LOW BYTE
                LCALL   WRITE
                MOV     R1,BADR
                MOV     R2,BNUM
LWB:            MOV     A,@R1
                LCALL   WRITE
                INC     R1
                DJNZ    R2,LWB
                NOP
                CLR     SROM_DAT
                NOP
                NOP
                NOP
                NOP
                SETB    SROM_CLK
                NOP
                NOP
                NOP
                NOP
                SETB    SROM_DAT        ; STOP
                LCALL   DL10MS
                POP     PSW
                RET
;
;       ******  读多字节 SEEPROM  ******
;
RD_BLK:         PUSH    PSW
                SETB    PSW.3           ; RX : PAGE 2
                SETB    PSW.4
                CLR     SROM_CLK
                NOP
                NOP
                NOP
                NOP
                SETB    SROM_DAT
                NOP
                NOP
                NOP
                NOP
                SETB    SROM_CLK
                NOP
                NOP
                NOP
                NOP
                CLR     SROM_DAT
                NOP
                NOP
                NOP
                NOP
                CLR     SROM_CLK        ; StarT
                NOP
                MOV     A,#WCT0
                LCALL   WRITE
                MOV     A,DPH           ; SROM HIGHT BYTE
                LCALL   WRITE
                MOV     A,DPL           ; SROM LOW BYTE
                LCALL   WRITE
                SETB    SROM_DAT
                NOP
                NOP
                NOP
                NOP
                SETB    SROM_CLK
                NOP
                NOP
                NOP
                NOP
                CLR     SROM_DAT
                NOP
                NOP
                NOP
                NOP
                CLR     SROM_CLK        ; StarT AGAIN
                MOV     A,#RCT0
                LCALL   WRITE
                MOV     R1,BADR
                MOV     R2,BNUM
LRB:            LCALL   READ
                MOV     @R1,A
                INC     R1
                DJNZ    R2,LRB1
                SETB    SROM_DAT
                NOP
                NOP
                NOP
                NOP
                SETB    SROM_CLK
                NOP
                NOP
                NOP
                NOP
                CLR     SROM_CLK            ; NO ACKNOWLEDGE
                NOP
                NOP
                NOP
                NOP
                CLR     SROM_DAT
                NOP
                NOP
                NOP
                NOP
                SETB    SROM_CLK
                NOP
                NOP
                NOP
                NOP
                SETB    SROM_DAT            ; STOP
                POP     PSW
                RET
LRB1:           CLR     SROM_DAT
                NOP
                NOP
                NOP
                NOP
                SETB    SROM_CLK
                NOP
                NOP
                NOP
                NOP
                CLR     SROM_CLK            ; ACKNOWLEDGE
                NOP
                NOP
                NOP
                NOP
                SJMP    LRB
WRITE:          MOV     R7,#08H
LPW:            RLC     A
                MOV     SROM_DAT,C
                SETB    SROM_CLK
                NOP
                NOP
                NOP
                NOP
                CLR     SROM_CLK
                NOP
                NOP
                NOP
                NOP
                DJNZ    R7,LPW
                SETB    SROM_DAT
                NOP
                NOP
                NOP
                NOP
                SETB    SROM_CLK
                MOV     R6,#100
Err:            MOV     R7,#100
Err1:           JB      SROM_DAT,Err2
                NOP
                CLR     SROM_CLK
                RET
Err2:           DJNZ    R7,Err1
                DJNZ    R6,Err
                CLR     SROM_CLK
                RET
READ:           MOV     R7,#08H
                NOP
                SETB    SROM_DAT
                NOP
                NOP
LPR:            SETB    SROM_CLK
                NOP
                MOV     C,SROM_DAT
                NOP
                CLR     SROM_CLK
                NOP
                RLC     A
                NOP
                DJNZ    R7,LPR
                RET

;
;       ******  远程模块地址设置 ******
;
FarModuleDzSz:  MOV     R1,#SendBuf

                MOV     A,#00H
                MOVX    @R1,A
                INC     R1

                MOV     A,#00H
                MOVX    @R1,A
                INC     R1

                MOV     A,#00H
                MOVX    @R1,A
                INC     R1

                MOV     CallAddr,#CurrentAdr    ; 通用广播地址
                MOV     FuncCode,SendCpu1Func01 ; 地址设置
                LCALL   DataToFarCpu            ; 发送一条记录到远程CPU
                RET
;
;       ******  远程模块时间设置 ******
;
FarModuleTime:  MOV     R1,#SendBuf
                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

                MOV     CallAddr,#CurrentAdr    ; 通用广播地址
                MOV     FuncCode,#SendCpu1Func02; 时间设置
                LCALL   DataToFarCpu            ; 发送一条记录到远程CPU
                RET

;
;       ******  远程模块继电器位控 ******
;
FarModuleJdqWk: MOV     R1,#SendBuf
                MOV     A,RelayStatus1
                MOVX    @R1,A
                INC     R1
                MOV     A,RelayStatus2
                MOVX    @R1,A
                INC     R1
                MOV     A,RelayStatus3
                MOVX    @R1,A
                INC     R1
                LCALL   DataToFarCpu            ; 发送一条记录到远程CPU
                RET

;
;       ******  System Init ******
;
SystemInit:     SETB    TimeRst
                CLR     TimeClk
                MOV     AUXR,#00H               ; 使用内部扩展存储器
SystemInit1:    CLR     EA
                LCALL   Watchdog
                LCALL   DL500MS
                LCALL   DL500MS
                LCALL   UserPassInit            ; 用户密码初始化
                LCALL   DL100MS
                LCALL   SysPassInit             ; 系统密码初始化
                LCALL   DL100MS

                LCALL   OscEnable               ; 时钟允许位操作
                LCALL   DL100MS
                LCALL   ReadMulClock            ; 读HT1380时钟日期
                LCALL   DL100MS
                LCALL   LcdInit                 ; 液晶显示初始化
                LCALL   DL100MS
                LCALL   Openlight
                LCALL   DL100MS


                MOV     TMOD,#21H
                MOV     TH0,#4CH
                MOV     TL0,#01H
                SETB    TR0
                MOV     TH1,#Baud
                MOV     TL1,#Baud
                SETB    TR1
                MOV     SCON,#50H
                MOV     PCON,#00H
                SETB    IT0
                SETB    EX0                     ; 容许外部中断
                SETB    IT1
                SETB    EX1
                SETB    ET0
                CLR     ET1
                SETB    ES
                SETB    EA

                SETB    LcdCs
                SETB    LcdRead
                SETB    LcdWrite
                SETB    DisplayF
                SETB    ComCtrl

                CLR     CommandBF               ; 近程键标志
                CLR     CommandAF               ; 近程速度CPU
                CLR     FarKeyF                 ; 远程键标志
                CLR     KeyF

                clr flag


                LCALL   VariableInit            ; 变量初始化


                LCALL   MainInterFace1

                LCALL   ClrReportBuf            ; 清运行报告缓冲区(32Byte)

                LCALL   ReadNearDat             ; 读 CPU2 数据

                MOV     RelayStatus1,#00000000B
                MOV     RelayStatus2,#00000000B
                MOV     RelayStatus3,#00000000B
;                MOV     RelayStatus1,#0FFH
;                MOV     RelayStatus2,#0FFH
;                MOV     RelayStatus3,#0FFH
                MOV     CallAddr,#01H
                MOV     FuncCode,#SendCpu1Func15; 继电器位控
                LCALL   FarModuleJdqWk          ; 远程模块继电器位控


                LCALL   DL100MS
                LCALL   FarShowData             ; 发送到远程显示板数据

                MOV     InterFace,#24           ; 无自动操作状态
                CLR     AutoRunF


                CLR     CommandBF               ; 近程键标志
                CLR     CommandAF               ; 近程速度CPU
                CLR     FarKeyF                 ; 远程键标志
                CLR     KeyF
                RET



include        "JrDmDySjCl.ASM"                  ; 数据处理
include        "JrDmDyHx.ASM"                    ; 汉字显示
include        "JrDmDySf.ASM"                    ; 通用算法
include        "JrDmDyCx.ASM"                    ; 报告查询
include        "JrDmDyDy.ASM"                    ; 报告打印
include        "JrDmDyTx.ASM"                    ; 通讯程序
include        "JrDmDySz.ASM"                    ; 时钟程序
include        "JrDmDyQt.ASM"                    ; 其它程序
include        "JrDmDyCsh.ASM"                   ; 初 始 化
include        "JrDmDyLcd.ASM"                   ; 液显驱动
include        "JrDmDyXtSz.ASM"                  ; 系统设置
include        "JrDmDyFace.ASM"                  ; 显示界面
include        "JrDmDyHzk.ASM"                   ; 汉 字 库
include        "JrDmDyYwk.ASM"                   ; 英文动态库
include        "JrDmDyTsk.ASM"                   ; 特 殊 库
include        "JrDmDyXwk.ASM"                   ; 西文固定库
include        "JrDmDySm.ASM"                    ; 使用说明
include        "LinkGnd.ASM"

;
;       ******  Program end flag  ******
;
               END

⌨️ 快捷键说明

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