?? 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 + -