📄 jrmaincpu.asm
字号:
LJMP Main
Main9: CJNE A,#14H,Main10
LCALL InToSysSetup ; 进入系统设置
LJMP Main
Main10: CJNE A,#15H,Main11
; LCALL YhSySm ; 用户使用说明页面显示控制程序
LJMP Main
Main11: CJNE A,#16H,Main12
NOP
Main12: LJMP Main
;
; ****** 检测地面电源系统预备信号 ******
;
JcXtYbXh: JB ShowDtSjF,JcXtYbXh1
RET
JcXtYbXh1: CLR ShowDtSjF
LCALL ReadNearDat ; 读 CPU2 数据
MOV A,KglStatus ; 开关量状态寄存器
JNB ACC.3,JcXtYbXh2 ; KglStatus.0 = 0 预备开 , KglStatus.0 = 1 预备关
CLR AutoRunF
; SETB AutoRunF
RET
JcXtYbXh2: SETB AutoRunF
LCALL ClrReportBuf ; 清运行报告缓冲区(32Byte)
RET
AutoUserPass: JB AutoRunF,AutoUserPass1
RET
AutoUserPass1: NOP
;
; ****** 读近程 CPU2 数据 ******
;
ReadNearDat: MOV CallAddr,#01H
MOV FuncCode,#SendCpu2Func08; 读开关量状态
LCALL SendToSpdCpu
RET
;
; ****** 工作状态初始化 ******
;
WorkStateInit: MOV RunMode,#0
RET
;
; ****** 接收键盘数据 ******
;
ScanKey:
JB CommandBF,ScanKey1 ; 近程键标志
JB CommandAF,ScanKey2 ; 近程速度CPU
JB FarKeyF,ScanKey3 ; 远程键标志
RET
ScanKey1: LCALL KeyBp
SETB KeyF
CLR CommandBF
RET
ScanKey2:
LCALL KeyBp
SETB KeyF
CLR CommandAF
RET
ScanKey3: LCALL KeyBp
SETB KeyF
CLR FarKeyF
LCALL ReturnKeyNum ; 返回键值
RET
;
; ****** 有键按下蜂鸣器“滴”一声 ********
;
KeyBp: CLR FmqCtrl
LCALL DL100MS
SETB FmqCtrl
LCALL Openlight
RET
;
; ****** 返回键值 ********
;
ReturnKeyNum: CLR PSW.3 ; RX : PAGE 2
SETB PSW.4
MOV R1,#SendBuf
MOV A,KeyNumber
MOVX @R1,A
INC R1
MOV A,InterFace ; 界面记录
MOVX @R1,A
INC R1
MOV CallAddr,#FarPcAdr ; 远程控制PC地址
MOV FuncCode,#SendCpu1Func16; 接收键盘确认码
LCALL DataToFarPC ; 发送一条记录到远程(PC)终端
CLR PSW.3 ; RX : PAGE 2
CLR PSW.4
RET
;
; ****** 面板 LED 驱动 ******
;
LedDrive: MOV R7,#08H
NOP
LedDrive1: RLC A
MOV SerialDat,C
NOP
CLR SerialClk
NOP
NOP
SETB SerialClk
NOP
NOP
DJNZ R7,LedDrive1
RRC A
SETB SerialDat
RET
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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -