📄 jrmaincpu.asm
字号:
;************** Timer ***********************************************
MinTimerB EQU 77H ;
MinTimerA EQU 76H ;
SecTimerB EQU 75H ;
SecTimerA EQU 74H ;
StopTimer EQU 73H ; 关闭定时器
RunTimer EQU 72H ; 开启定时器
Timer3 EQU 71H ;
Timer2 EQU 70H ;
Timer1 EQU 6FH ;
;************** Counter *********************************************
Counter2 EQU 6EH ; 通用计数器2
Counter1 EQU 6DH ; 通用计数器1
KeyCount EQU 6CH ; 键盘计数器
TimeBitCnt EQU 6BH ; 数据位记数器
TimeByteCnt EQU 6AH ; 数据字节记数器
TimeCommand EQU 69H ; 命令字节地址
;************** Variable ********************************************
Variable8 EQU 68H
Variable7 EQU 67H
Variable6 EQU 66H
Variable5 EQU 65H
Variable4 EQU 64H
Variable3 EQU 63H
Variable2 EQU 62H
Variable1 EQU 61H
;
;
;************* Other One ****************************************
;
count1 equ 5DH
count equ 5CH
AdCounter EQU 5BH
RecordNumH EQU 5AH ; 试验报告记录号高位
RecordNumL EQU 59H ; 试验报告记录号低位
InterFace EQU 58H ; 界面记录
AutoTimer EQU 57H ; 自动运行等待时间
RunMode EQU 56H ; RunMode=1正与负,RunMode=2正与地,RunMode=3负与地
Badr EQU 55H ; 数据块首地址
Bnum EQU 54H ; 数据个数
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 0FCH ; 检测时间高8位
JcSjL EQU 0FCH ; 检测时间低8位
JyDzH EQU 47H ; 绝缘电阻高8位
JyDzL EQU 46H ; 绝缘电阻低8位
flag equ 48h
type_test equ 47H ;测试类型:1正端接地2负端接地3电感接地4交流1接地5交流2接地测试
VoltCs EQU 46H ; 自动测试时要比较的电压参数
VoltCs1 EQU 45H ; 自动测试时要比较的电压参数
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**********************************************
;
SaveFlag BIT Flags4.4 ; 存储标志,在TestFinish:中置位,为1存,为0不存
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 7E00H ; 运行报告数据区地址指针
UserPassAdr EQU 4F10H ; 用户密码首地址
SysPassAdr EQU 4F00H ; 系统密码首地址
XtCsDatArea EQU 4F00H ; 系统参数数据区
XlDlDatArea EQU 4000H ; 泄漏电流数据区
ReportDatArea EQU 0000H ; 记录报告数据区
StartDatArea EQU 0000H ; 存储数据开始区
;
;
;************** Expand Memory(use 'movx' and 'dtpr' to seek address) *****************************************
Int0Buf EQU 0200H ; 通信接收缓冲区(16Byte)
ExtTempBuf EQU 0100H; ; 高端内存,临时缓冲区
CxCzRyH EQU 0FfH ; 操作人员高8位
CxBcCcL EQU 0FBH ; 本次车次低8位
CxBcCcH EQU 0FAH ; 本次车次高8位
CxFdDzL EQU 0F9H ; 负地电阻低8位
CxFdDzH EQU 0F8H ; 负地电阻高8位
CxZdDzL EQU 0F7H ; 正地电阻低8位
CxZdDzH EQU 0F6H ; 正地电阻高8位
CxXjDzL EQU 0F5H ; 线间电阻低8位
CxXjDzH EQU 0F4H ; 线间电阻高8位
CxZgDlL EQU 0F3H ; 最高电流低8位
CxZgDlH EQU 0F2H ; 最高电流高8位
CxZgDyL EQU 0F1H ; 最高电压低8位
CxZgDyH EQU 0F0H ; 最高电压高8位
CxZgXlL EQU 0EFH ; 最高泄流低8位
CxZgXlH EQU 0EEH ; 最高泄流高8位
CxScDlL EQU 0EDH ; 输出电流低8位
CxScDlH EQU 0ECH ; 输出电流高8位
CxScDyL EQU 0EBH ; 输出电压低8位
CxScDyH EQU 0EAH ; 输出电压高8位
CxGjFz EQU 0E9H ; 关机时间:分
CxGjXs EQU 0E8H ; 关机时间:时
CxGjRq EQU 0E7H ; 关机时间:日
CxGjYf EQU 0E6H ; 关机时间:月
CxGjNf EQU 0E5H ; 关机时间:年
CxKjFz EQU 0E4H ; 开机时间:分
CxKjXs EQU 0E3H ; 开机时间:时
CxKjRq EQU 0E2H ; 开机时间:日
CxKjYf EQU 0E1H ; 开机时间:月
CxKjNf EQU 0E0H ; 开机时间:年
; 系统监控报告数据格式:
; 记录号(2)+开机时间(5)+关机时间(5)+输出电压(2)+输出电流(2)+泄漏电流(2)+最高电压(2)+最高电流(2)+最低电压(2)
;+最低电流(2)+线间电阻(2)+正地电阻(2)+负地电阻(2)
; Record++Year+Month+KDay+KHour+kMin+GDay+GHour+GMin+ScDy+ScDl+ScXl+ZgDy+ZgDl+XjDz+ZdDz+FdDz
ReportBuf EQU 0E0H ; 运行报告缓冲区(32Byte)
NoUse4 EQU 0D0H
NoUse3 EQU 0C0H
;NoUse2 EQU 0B0H
;NoUse1 EQU 0A0H
VoltBuf equ 0C0H ;接地检测时正对地和负对地电压的缓冲区,两个字节表示一个电压
;共12字节
ActiveFlag equ 0B0H ;被测装置动作标志 ;HHHHHHHHHHHHHHHHHHHHHHHHHHHHH
LinkGR_H equ 0B1H ;接地电阻高位,用来存放接地电阻千欧值 ;HHHHHHHHHHHHHHHHHHHHHH
LinkGR_L equ 0B2H ;接地电阻低位,用来存放接地电阻欧姆值
LinkG_R_buf equ 0A0H ;接地电阻缓冲区,共10个字节
ActiveFlagBuf equ 0AAH ;被测装置动作标志缓冲区,5个字节
AdHexBuf EQU 090H ; A/D 数据缓冲区(16Byte) 以HEX码形式存放
AdBcdBuf EQU 080H ; A/D 数据缓冲区(16Byte) 以CBD码形式存放
ShowBuf EQU 040H ; 汉字显示缓冲区(64Byte)
SendBuf EQU 020H ; 通信发送缓冲区(32Byte)
RecvBuf EQU 000H ; 通信接收缓冲区(32Byte)
;
;
;
;************ 程序源代码区 ****************************************
;
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
; LCALL SaveDateTime
; ****** Main Program *******
;
MAIN: CLR PSW.3 ; RX : PAGE 0
CLR PSW.4
MOV Cold1,#5AH
MOV Cold2,#5AH
MOV LedStatus,#00000001B
LCALL WorkStateInit ; 工作状态初始化
main0: LCALL Watchdog
LCALL Closelight ; 十五分钟无键按下自动关闭LCD背光
LCALL MainInterFace
LCALL ShowDateTime
; LCALL SaveDateTime
LCALL ScanKey
JNB KeyF,Main ; scan key
CLR KeyF
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 TestResult ; 运行报告查询、打印、上传
LJMP Main
Main8: CJNE A,#13H,Main9
LCALL ClockSetup ; 时钟日期设置
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -