📄 jrmaincpu.asm.bak
字号:
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 + -