📄 jrdmdycx.asm
字号:
;
; ****** 运行报告查询、打印、上传 ******
;
RepChkPrtCom:
MOV InterFace,#24
LCALL LcdClear
LCALL ShowBGCXDYSC ; 显示"运行报告查询、打印、上传"
LCALL ShowCxKjRq ; 显示"开机日期:"
LCALL ShowCxKjSj ; 显示"开机时间:"
LCALL ShowCxGjRq ; 显示"关机日期:"
LCALL ShowCxGjSj ; 显示"关机时间:"
LCALL ShowCxScDy ; 显示"输出电压:"
LCALL ShowCxScDl ; 显示"输出电流:"
LCALL ShowCxScXl ; 显示"泄漏电流:"
LCALL ShowCxXjJy ; 显示"线间绝缘:"
LCALL ShowCxZdJy ; 显示"正地绝缘:"
LCALL ShowCxFdJy ; 显示"负地绝缘:"
LCALL ShowCxZgDy ; 显示"最高电压:"
LCALL ShowCxZgDl ; 显示"最高电流:"
LCALL ShowCxBcCc ; 显示"本次车次:"
LCALL ShowCxCzRy ; 显示"操作人员:"
LCALL ShowSXYBG ; 显示"按↑键上一个报告,按↓键下一个报告"
LCALL ShowSXSBG ; 显示"按←键上十个报告,按→键下十个报告"
LCALL ReadAdrPoint ; 读报告记录地址指针
LCALL DisplayRep ; 显示查询试验报告记录数据
RepChkPrtCom1: LCALL ScanKey
JNB KeyF,RepChkPrtCom1
CLR KeyF
MOV A,KeyNumber ;
CJNE A,#0AH,RepChkPrtCom2
LCALL MainInterFace1
RET
RepChkPrtCom2: CJNE A,#0CH,RepChkPrtCom3 ; ↑
LCALL AdrPointInc ; 记录地址指针加一
LCALL DisplayRep
SJMP RepChkPrtCom1
RepChkPrtCom3: CJNE A,#0EH,RepChkPrtCom4 ; ↓
LCALL AdrPointDec ; 记录地址指针减一
LCALL DisplayRep
SJMP RepChkPrtCom1
RepChkPrtCom4: CJNE A,#0DH,RepChkPrtCom5 ; ←
LCALL AdrPointAdd ; 记录地址指针加十
LCALL DisplayRep
SJMP RepChkPrtCom1
RepChkPrtCom5: CJNE A,#0FH,RepChkPrtCom6 ; →
LCALL AdrPointSub ; 记录地址指针减十
LCALL DisplayRep
SJMP RepChkPrtCom1
RepChkPrtCom6: CJNE A,#14H,RepChkPrtCom7
; LCALL DataToCenter ; 将数据发送到检测中心
SJMP RepChkPrtCom1
RepChkPrtCom7: CJNE A,#10H,RepChkPrtCom1
LCALL PrintReport ; 打印试验报告
SJMP RepChkPrtCom1
;
; ****** 读报告记录地址指针 ******
;
ReadAdrPoint: MOV BNUM,#2
MOV BADR,#TempBuf
MOV DPTR,#YxBgAdrPoint ; 运行报告数据区地址指针
LCALL RD_BLK
MOV R0,#TempBuf
MOV A,@R0
MOV RecordNumH,A
INC R0
MOV A,@R0
MOV RecordNumL,A
RET
;
; ****** 显示查询试验报告记录数据 ******
;
DisplayRep: MOV A,RecordNumH
MOV R2,A
MOV A,RecordNumL
MOV R3,A
MOV R6,#0
MOV R7,#32
; 将 (高R2,R3)和(高R6,R7)中双字节无符号整数相乘,
; 乘积送(高)R4,R5,R6,R7(低) 中
; ****** 双字节无符号乘法 ******
LCALL TowByteNMUL ; 地址指针*32
MOV DPTR,#ReportDatArea
MOV A,R7
ADD A,DPL
MOV DPL,A
MOV A,R6
ADDC A,DPH
MOV DPH,A
DisplayRep1: MOV BNUM,#32 ; 读一条记录( 32 Byte )
MOV BADR,#TempBuf
RET
;
; ****** 记录地址指针加一 ******
;
AdrPointInc: MOV A,RecordNumL
ADD A,#1
MOV RecordNumL,A
MOV A,RecordNumH
ADDC A,#0
MOV RecordNumH,A
MOV A,RecordNumL
CLR C
SUBB A,#0F5H
MOV A,RecordNumH
SUBB A,#01H ; 最大记录不能超过 01F5H = 501D
JNC AdrPointInc1
RET
AdrPointInc1: MOV RecordNumL,#0
MOV RecordNumH,#0
RET
;
; ****** 记录地址指针加十 ******
;
AdrPointAdd: MOV A,RecordNumL
ADD A,#10
MOV RecordNumL,A
MOV A,RecordNumH
ADDC A,#0
MOV RecordNumH,A
MOV A,RecordNumL
CLR C
SUBB A,#0F5H
MOV A,RecordNumH
SUBB A,#01H ; 最大记录不能超过 0200H = 512D
JNC AdrPointAdd1
RET
AdrPointAdd1: MOV RecordNumL,#0
MOV RecordNumH,#0
RET
;
; ****** 记录地址指针减一 ******
;
AdrPointDec:
MOV A,RecordNumL
JNZ AdrPointDec1
MOV A,RecordNumH
JNZ AdrPointDec1
MOV RecordNumL,#0F4H
MOV RecordNumH,#01H
RET
AdrPointDec1: MOV A,RecordNumL
CLR C
SUBB A,#1
MOV RecordNumL,A
MOV A,RecordNumH
SUBB A,#0
MOV RecordNumH,A
RET
;
; ****** 记录地址指针减十 ******
;
AdrPointSub: MOV A,RecordNumL
CLR C
SUBB A,#10
MOV RecordNumL,A
MOV A,RecordNumH
SUBB A,#0
MOV RecordNumH,A
JC AdrPointSub1
RET
AdrPointSub1: MOV RecordNumL,#0F4H
MOV RecordNumH,#01H
RET
;
; ****** 显示:报告序号数据 ******
;
ShowBgXhSj: MOV R2,RecordNumH
MOV R3,RecordNumL
; 调用BinToBcd子程序时,16位二进制整数存放于R2(高8位)R3(低8位)
; 从BinToBcd返回时,三字节压缩BCD码结果在R4,R5,R6其中高位R4,低位R6
; ****** 双字节二进制数转换为BCD数子程序 ******
LCALL BinToBcd ; 将一双字节数转换为五位LCD显示的数据
MOV Variable1,R5
MOV Variable2,R6
MOV R1,#ShowBuf
MOV A,#TSK
MOVX @R1,A
INC R1
MOV A,#091
MOVX @R1,A ; 显示 " R "
INC R1
MOV A,#XWK
MOVX @R1,A
INC R1
MOV A,#066
MOVX @R1,A
INC R1
MOV A,Variable1
ANL A,#0F0H
SWAP A
MOV A,#XWK
MOVX @R1,A
INC R1
MOV A,Variable1
ANL A,#0FH
MOVX @R1,A
INC R1
MOV A,#XWK
MOVX @R1,A
INC R1
MOV A,Variable2
ANL A,#0F0H
SWAP A
MOVX @R1,A
INC R1
MOV A,#XWK
MOVX @R1,A
INC R1
MOV A,Variable2
ANL A,#0FH
MOVX @R1,A
INC R1
MOV A,#76
MOVX @R1,A
MOV LcdShowX,#0
MOV LcdShowY,#0
MOV LcdShowC,#5
LCALL DdShowString2
RET
;
; ****** 显示:开机日期数据 ******
;
ShowKjRqSj: MOV R1,#TempBuf+39
MOV A,@R1
MOV Variable1,A ; 取“年”字节
INC R1
MOV A,@R1
MOV Variable2,A ; 取“月”字节
INC R1
MOV A,@R1
MOV Variable3,A ; 取“日”字节
INC R1
MOV R1,#ShowBuf
MOV A,#XWK
MOVX @R1,A
INC R1
MOV A,#002
MOVX @R1,A ; 2
INC R1
MOV A,#XWK
MOVX @R1,A
INC R1
MOV A,#000
MOVX @R1,A ; 0
INC R1
MOV A,#XWK
MOVX @R1,A
INC R1
MOV A,Variable1
ANL A,#0F0H
SWAP A
MOVX @R1,A ; X 年
INC R1
MOV A,#XWK
MOVX @R1,A
INC R1
MOV A,Variable1
ANL A,#0FH
MOVX @R1,A ; X 年
INC R1
MOV A,#XWK
MOVX @R1,A
INC R1
MOV A,#066 ; .
MOVX @R1,A ; .
INC R1
MOV A,#XWK
MOVX @R1,A
INC R1
MOV A,Variable2
ANL A,#0F0H
SWAP A
MOVX @R1,A ; X 月
INC R1
MOV A,#XWK
MOVX @R1,A
INC R1
MOV A,Variable2
ANL A,#0FH
MOVX @R1,A ; X 月
INC R1
MOV A,#XWK
MOVX @R1,A
INC R1
MOV A,#066
MOVX @R1,A ; .
INC R1
MOV A,#XWK
MOVX @R1,A
INC R1
MOV A,Variable3
ANL A,#0F0H
SWAP A
MOVX @R1,A ; X 日
INC R1
MOV A,#XWK
MOVX @R1,A
INC R1
MOV A,Variable3
ANL A,#0FH
MOVX @R1,A ; X 日
INC R1
MOV A,#XWK
MOVX @R1,A
INC R1
MOV A,#066 ; .
MOVX @R1,A
INC R1
MOV A,#XWK
MOVX @R1,A
INC R1
MOV LcdShowC,#10
MOV LcdShowX,#10
MOV LcdShowY,#200
LCALL DdShowString2
RET
;
; ****** 显示:开机时间数据 ******
;
ShowKjSjSj: MOV R1,#TempBuf+42
MOV A,@R1
MOV Variable1,A ; 取“时”字节
INC R1
MOV A,@R1
MOV Variable2,A ; 取“时”字节
INC R1
MOV A,@R1
MOV Variable3,A ; 取“秒”字节
MOV R1,#ShowBuf
MOV A,#XWK
MOVX @R1,A
INC R1
MOV A,Variable1
ANL A,#0F0H
SWAP A
MOVX @R1,A
INC R1
MOV A,#XWK
MOVX @R1,A
INC R1
MOV A,Variable1
ANL A,#0FH
MOVX @R1,A
INC R1
MOV A,#XWK
MOVX @R1,A
INC R1
MOV A,#066
MOVX @R1,A
INC R1
MOV A,#XWK
MOVX @R1,A
INC R1
MOV A,Variable2
ANL A,#0F0H
SWAP A
MOVX @R1,A
INC R1
MOV A,#XWK
MOVX @R1,A
INC R1
MOV A,Variable2
ANL A,#0FH
MOVX @R1,A
INC R1
MOV A,#XWK
MOVX @R1,A
INC R1
MOV A,#066
MOVX @R1,A
INC R1
MOV A,#XWK
MOVX @R1,A
INC R1
MOV A,Variable3
ANL A,#0F0H
SWAP A
MOVX @R1,A
INC R1
MOV A,#XWK
MOVX @R1,A
INC R1
MOV A,Variable3
ANL A,#0FH
MOVX @R1,A
INC R1
MOV LcdShowC,#8
MOV LcdShowX,#30
MOV LcdShowY,#200
LCALL DdShowString2
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -