📄 jrmaincpu.asm
字号:
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:
MOV LedStatus,#00000011B
MOV A,LedStatus
LCALL LedDrive
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 BgJlPointInit ; 报告记录数据区地址指针初始化
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
mov flag,#02H ;清零设置接地电阻值1:0K完全接地,2:100K可调电阻,3:100K固定电阻
clr SaveFlag
LCALL VariableInit ; 变量初始化
LCALL MainInterFace1
LCALL ClrReportBuf ; 清运行报告缓冲区(32Byte)
LCALL ReadNearDat ; 读 CPU2 数据
LCALL ClrLinkGR_buf ;清零接地电阻缓冲区
LCALL ClrActiveFlagBuf ;清零动作标志缓冲区
LCALL ClrVoltBuf
LCALL ClearTempBuf
LCALL ClearExtTempBuf
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
SETB RelayIn
MOV CallAddr,#01H
MOV FuncCode,#SendCpu2Func01; 读开关量状态
LCALL SendToSpdCpu
MOV DataH,#02H
MOV DataL,#90H ;输出110V
LCALL WriteFarData ; 写 A/D D/A 打印板数据
; lcall ChangeSpdStepMotor
RET
;***********************************************
ChangeSpdStepMotor:
MOV R1,#SendBuf
mov R6,#0DCH;#0EDH
MOV A,R6
MOVx @R1,A
INC R1
mov R7,#00H;#0FFH
MOV A,R7
MOVx @R1,A
MOV CallAddr,#01H
MOV FuncCode,#SendCpu2Func05
LCALL SendToSpdCpu ;调步进电机速度
ret
;************************************************
ClrLinkGR_buf: MOV R6,#10 ;将接地电阻清零
MOV R1, #LinkG_R_buf+0
CLR0: MOV A, #00H
MOVX @R1,A
INC R1
DJNZ R6,CLR0
ret
;************************************************
ClrActiveFlagBuf:
MOV R6,#5 ;将动作标志缓冲区清零
MOV R1, #ActiveFlagBuf+0
CLR1: MOV A, #00H
MOVX @R1,A
INC R1
DJNZ R6,CLR1
ret
;************************************************
ClrVoltBuf: MOV R6,#12 ;
MOV R1, #VoltBuf+0
CLR2: MOV A, #00H
MOVX @R1,A
INC R1
DJNZ R6,CLR2
ret
;************************************************
ClearExtTempBuf:
MOV DPTR,#ExtTempBuf ; 临时数据缓冲区(32Byte)
MOV R2,#60
MOV A,#0
ClearExtTempBuf1:
MOVX @DPTR,A
INC DPTR
DJNZ R2,ClearExtTempBuf1
ret
;************************************************
ClearTempBuf:
MOV DPTR,#TempBuf ; 临时数据缓冲区(32Byte)
MOV R2,#64
MOV A,#0
ClearTempBuf1:
MOVX @DPTR,A
INC DPTR
DJNZ R2,ClearTempBuf1
ret
;************************************************
SaveDateTime: MOV DPTR,#ExtTempBuf+4 ;存取年月日和时分秒到TempBuf
MOV A,Year
MOVX @DPTR,A
INC DPTR
MOV A,Month
MOVX @DPTR,A
INC DPTR
MOV A,Day
MOVX @DPTR,A
INC DPTR
MOV A,Hour
MOVX @DPTR,A
INC DPTR
MOV A,Min
MOVX @DPTR,A
INC DPTR
MOV A,Sec
MOVX @DPTR,A
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"
include "TEST_RESLT.ASM"
include "CURRENTTESTRESLT.ASM"
;
; ****** Program end flag ******
;
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -