📄 jrmaincpu.asm.bak
字号:
HjjAddr EQU 53H ; 呼叫机的地址
FarModuleAdr EQU 52H ; 远程模块地址
DataH equ 51H ; 地址指针寄存器高位
DataL equ 50H ; 地址指针寄存器低位
SeleTab EQU 4FH ; 选择汉字库字模表
KeyNumber EQU 4EH
CallAddr EQU 4DH ; 被呼的主机地址
RelayStatus3 EQU 4CH ; 继电器状态字
RelayStatus2 EQU 4BH ; 继电器状态字
RelayStatus1 EQU 4AH ; 继电器状态字
;
;**************工艺参数变量******************************************
;
;
;**************物理量检测控制****************************************
;
JcSjH EQU 49H ; 检测时间高8位
JcSjL EQU 48H ; 检测时间低8位
JyDzH EQU 47H ; 绝缘电阻高8位
JyDzL EQU 46H ; 绝缘电阻低8位
JyXlH EQU 45H ; 绝缘泄流高8位
JyXlL EQU 44H ; 绝缘泄流低8位
SjDyH EQU 43H ; 施加电压高8位
SjDyL EQU 42H ; 施加电压低8位
ScXlH EQU 41H ; 输出泄流高8位
ScXlL EQU 40H ; 输出泄流低8位
ScDlH EQU 3FH ; 输出电流高8位
ScDlL EQU 3EH ; 输出电流低8位
ScDyH EQU 3DH ; 输出电压高8位
ScDyL EQU 3CH ; 输出电压低8位
;
;***************COM1,COM2,COM3***************************************
;
SendDatH EQU 3BH ; 发送数据地址高位
SendDatL EQU 3AH ; 发送数据地址低位
FuncCode EQU 39H ; 发送/接收功能码
TxdBuf EQU 38H ; 发送数据
BitCntB EQU 37H ; 接收/发送计数器B
RxdBufB EQU 36H ; 接收数据B
BitCntA EQU 35H ; 接收/发送计数器A
RxdBufA EQU 34H ; 接收数据A
;
;**************I/O Port State****************************************
;
KglStatus EQU 33H ; 开关量状态寄存器
LedStatus EQU 32H ; LED 状态寄存器
;
;*******************LCD**********************************************
;
LcdShowC EQU 31H
LcdShowY EQU 30H
LcdShowX EQU 2FH
EditShowY EQU 2EH
EditShowX EQU 2DH
LcdCount2 EQU 2CH
LcdCount1 EQU 2BH
CCCODE EQU 2AH
OY EQU 29H
OXH EQU 28H
OXL EQU 27H
;********************************************************************
;
AP EQU 30H
;
;******************FLAGS*********************************************
;
Cold2 EQU 26H
Cold1 EQU 25H
Flags5 EQU 24H
Flags4 EQU 23H
Flags3 EQU 22H
Flags2 EQU 21H ;
Flags1 EQU 20H ;
;
;*******************BIT**********************************************
;
MinSaveF BIT Flags4.3 ; 分存储标志,保持原存储地址不变
XlDlDwF BIT Flags4.2 ; 泄漏电流单位: XlDlDwF = 0 电流为 mA , XlDlDwF = 1 电流为 uA
JyDzDwF BIT Flags4.1 ; 绝缘电阻单位: JyDzDwF = 0 电阻为 K , JyDzDwF = 1 电阻为 M
TestDataF BIT Flags4.0 ; 检测数据允许标志
AutoRunF BIT Flags3.7 ; 自动运行方式
SsTsXsF BIT Flags3.6 ; 闪烁提示显示
SecTimerF BIT Flags3.5
FarKeyF BIT Flags3.4 ; 远程键标志
WorkPassF BIT Flags3.3 ; LCD 显示刷新标志
UserPassF BIT Flags3.2 ;
DisplayF BIT Flags3.1 ; LCD 显示刷新标志
GlintF BIT Flags3.0 ; 闪烁标志
GdXtKjGjSjF BIT Flags2.7 ; 开机时间检测允许标志
ClockEditF BIT Flags2.6 ;
ShowDtSjF BIT Flags2.5 ; 显示动态数据标志
ShowF BIT Flags2.4 ;
BreakF BIT Flags2.3 ;
CommandBF BIT Flags2.2 ; 远程模块命令有效标志
CommandAF BIT Flags2.1 ; 远程模块命令有效标志
KeyF BIT Flags2.0 ;
;
ReciveF BIT Flags1.7 ;
LedDirF BIT Flags1.6 ;
RxdErrB BIT Flags1.5 ; 接收贞错误标志
RxdFlagB BIT Flags1.4 ; 正在处理发送标志
TxdFlagB BIT Flags1.3 ; 正在处理接收标志
RxdErrA BIT Flags1.2 ; 接收贞错误标志
RxdFlagA BIT Flags1.1 ; 正在处理发送标志
TxdFlagA BIT Flags1.0 ; 正在处理接收标志
;********************************************************************
XlDlAdrPoint EQU 4F30H ; 泄漏电流数据区地址指针
YxBgAdrPoint EQU 4F20H ; 运行报告数据区地址指针
UserPassAdr EQU 4F10H ; 用户密码首地址
SysPassAdr EQU 4F00H ; 系统密码首地址
XtCsDatArea EQU 4F00H ; 系统参数数据区
XlDlDatArea EQU 4000H ; 泄漏电流数据区
ReportDatArea EQU 0000H ; 记录报告数据区
StartDatArea EQU 0000H ; 存储数据开始区
;
;
;
;************ 程序源代码区 ****************************************
;
ORG 0000H
SJMP Start
ORG 0003H ;
LJMP Int0RecvCom ; 中断接收数据串行口一
; 资源使用:PAGE=2 R0 , R2 , R6 , R7 , ACC , B
ORG 000BH ;
LJMP Clk ; 系统时钟中断
; 资源使用:PAGE=3 R0 , ACC , B , DPTR
ORG 0013H ;
LJMP Int1RecvCom ; 中断接收数据串行口二
; 资源使用:PAGE=2 R1 , R3 , R4 , R5 , ACC , B
ORG 0023H
LJMP RecvFarCpuDat
; 资源使用:PAGE=3 R1 , R6 , R7 , ACC , B
ORG 002BH
RETI
;
; ****** Program Start *******
;
Start: MOV SP,#SpStart
MOV A,COLD1
CJNE A,#5AH,COLD
MOV A,COLD2
CJNE A,#5AH,COLD
LCALL SystemInit
SJMP Main
COLD: NOP
LCALL SystemInit
;
; ****** Main Program *******
;
MAIN: CLR PSW.3 ; RX : PAGE 0
CLR PSW.4
MOV Cold1,#5AH
MOV Cold2,#5AH
MOV LedStatus,#00000001B
; CLR AutoRunF
; MOV InterFace,#12
; MOV AutoTimer,#5
; LCALL JcXtYbXh ; 检测地面电源系统预备信号
LCALL WorkStateInit ; 工作状态初始化
main0: LCALL Watchdog
LCALL Closelight ; 十五分钟无键按下自动关闭LCD背光
LCALL MainInterFace
LCALL ShowDateTime
LCALL ReadNearDat
LCALL ScanKey
; setb KeyF
JNB KeyF,Main ; scan key
CLR KeyF
; mov KeyNumber,#0bH
MOV A,KeyNumber ;
CJNE A,#0BH,Main1
LCALL face_test_sele ; 进入测试选择界面
SJMP Main
Main1: CJNE A,#0CH,Main2
SJMP Main
Main2: CJNE A,#0EH,Main3
SJMP Main
Main3: CJNE A,#0FH,Main4
SJMP Main
Main4: CJNE A,#0DH,Main5
SJMP Main
Main5: CJNE A,#10H,Main6
SJMP Main
Main6: CJNE A,#11H,Main7
NOP
LJMP Main
Main7: CJNE A,#12H,Main8
LCALL RepChkPrtCom ; 运行报告查询、打印、上传
LJMP Main
Main8: CJNE A,#13H,Main9
LCALL ClockSetup ; 时钟日期设置
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.0,JcXtYbXh2 ; KglStatus.0 = 0 预备开 , KglStatus.0 = 1 预备关
CLR AutoRunF
; SETB AutoRunF
RET
JcXtYbXh2: SETB AutoRunF
LCALL ClrReportBuf ; 清运行报告缓冲区(32Byte)
RET
;
; ****** 自动运行方式 ******
;
AutoRun: JB AutoRunF,AutoRun1
RET
AutoRun1: MOV A,SecTimerA
MOV B,AutoTimer
CLR C
SUBB A,B
JNC AutoRun2
RET
AutoRun2: MOV A,InterFace
CJNE A,#1,AutoRun3
MOV KeyNumber,#1 ; “1”键
SETB CommandBF
MOV SecTimerA,#00H
RET
AutoRun3: CJNE A,#2,AutoRun4
MOV KeyNumber,#2 ; “2”键
SETB CommandBF
MOV SecTimerA,#00H
RET
AutoRun4: CJNE A,#3,AutoRun5
MOV KeyNumber,#3 ; “3”键
SETB CommandBF
MOV SecTimerA,#00H
RET
AutoRun5: CJNE A,#4,AutoRun6
MOV KeyNumber,#4 ; “4”键
SETB CommandBF
MOV SecTimerA,#00H
RET
AutoRun6: CJNE A,#5,AutoRun7
MOV KeyNumber,#5 ; “5”键
SETB CommandBF
MOV SecTimerA,#00H
RET
AutoRun7: CJNE A,#6,AutoRun8
MOV KeyNumber,#6 ; “6”键
SETB CommandBF
MOV SecTimerA,#00H
RET
AutoRun8: CJNE A,#7,AutoRun9
MOV KeyNumber,#7 ; “7”键
SETB CommandBF
MOV SecTimerA,#00H
RET
AutoRun9: CJNE A,#8,AutoRun10
MOV KeyNumber,#8 ; “8”键
SETB CommandBF
MOV SecTimerA,#00H
RET
AutoRun10: CJNE A,#9,AutoRun11
MOV KeyNumber,#9 ; “9”键
SETB CommandBF
MOV SecTimerA,#00H
RET
AutoRun11: CJNE A,#0,AutoRun12
MOV KeyNumber,#0 ; “0”键
SETB CommandBF
MOV SecTimerA,#00H
RET
AutoRun12: CJNE A,#11,AutoRun13
MOV KeyNumber,#10 ; “取消”键
SETB CommandBF
MOV SecTimerA,#00H
RET
AutoRun13: CJNE A,#12,AutoRun14
MOV KeyNumber,#11 ; “确认”键
SETB CommandBF
MOV SecTimerA,#00H
RET
AutoRun14: CJNE A,#13,AutoRun15
RET
AutoRun15: CJNE A,#14,AutoRun16
RET
AutoRun16: CJNE A,#15,AutoRun17
RET
AutoRun17: CJNE A,#16,AutoRun18
RET
AutoRun18: CJNE A,#17,AutoRun19
RET
AutoRun19: CJNE A,#18,AutoRun20
RET
AutoRun20: CJNE A,#19,AutoRun21
RET
AutoRun21: CJNE A,#20,AutoRun22
AutoRun22: RET
AutoUserPass: JB AutoRunF,AutoUserPass1
RET
AutoUserPass1: NOP
;
; ****** 读近程 CPU2 数据 ******
;
ReadNearDat: MOV CallAddr,#01H
MOV FuncCode,#SendCpu2Func02; 读开关量状态
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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -