⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jrdmdycx.asm

📁 用增强型单片机51RD2做的控制器
💻 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 + -