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

📄 jrdmdysjcl.asm

📁 用增强型单片机51RD2做的控制器
💻 ASM
📖 第 1 页 / 共 3 页
字号:



;
;       ******  读 A/D D/A 打印板数据  ******
;
ReadFarData:    MOV     CallAddr,#33            ; A/D D/A 转换板地址
                MOV     FuncCode,#SendCpu1Func25;
                LCALL   DataToFarCpu            ; 发送一条记录到远程CPU
                LCALL   DL100MS
                RET

;
;       ******  写 A/D D/A 打印板数据  ******
;
WriteFarData:   MOV     R1,#SendBuf
                MOV     A,DataH
                MOVX    @R1,A
                INC     R1
                MOV     A,DataL
                MOVX    @R1,A
                MOV     CallAddr,#33            ; A/D D/A 转换板地址
                MOV     FuncCode,#SendCpu1Func26;
                LCALL   DataToFarCpu            ; 发送一条记录到远程CPU
                LCALL   DL100MS
                RET
;
;       ******  显示电流自动换量程与单位  ******
;
XsDlZdHlcYdw:  
                RET
XsDlZdHlcYdw2:  SETB    XlDlDwF                 ; 泄漏电流单位: XlDlDwF = 0 电流为 mA , XlDlDwF = 1 电流为 uA
              
                RET
;
;       ******  施加电压输出增量  ******
;
SjDyScZl:      
                RET
SjDyScZl1:    
                RET
SjDyScZl2:     
                RET
SjDyScZl3:     
                RET
SjDyScZl4:    
                RET
SjDyScZl5:     
                RET
SjDyScZl6:    
                RET
SjDyScZl7:    
                RET
SjDyScZl8:    
                RET
SjDyScZl9:    
                RET
SjDyScZl10:    
                RET
SjDyScZl11:    
SjDyScZl12:     RET

;
;       ******  获得输出电压值  ******
;
GetScDyz:     
                RET

;
;       ******  获得输出电流值  ******
;
GetScDlz:       MOV     R1,#AdHexBuf+2          ; A/D 数据缓冲区(16Byte) 以HEX码形式存放
                MOVX    A,@R1
                MOV     ScDlH,A                 ; 输出电流高8位
                INC     R1
                MOVX    A,@R1
                MOV     ScDlL,A                 ; 输出电流低8位

                MOV     A,ScDlL
                CLR     C
                SUBB    A,#33H                  ; 对应电压一伏:0333H = 819D
                MOV     ScDlL,A
                MOV     A,ScDlH
                SUBB    A,#03H
                MOV     ScDlH,A
                JNC     GetScDlz1
                MOV     ScDlL,#0
                MOV     ScDlH,#0
GetScDlz1:      MOV     R2,ScDlH
                MOV     R3,ScDlL
                MOV     R6,#03H                 ; 0320H = 800D 安
                MOV     R7,#20H
                LCALL   TowByteNMUL             ; 双字节无符号乘法
                MOV     A,R4
                MOV     R2,A
                MOV     A,R5
                MOV     R3,A
                MOV     A,R6
                MOV     R4,A
                MOV     A,R7
                MOV     R5,A
                MOV     R6,#0CH                 ; 0CCCH = 3276D = (4095 - 819)
                MOV     R7,#0CCH
                LCALL   TowByteNDIV             ; 双字节无符号除法
                MOV     A,R4
                MOV     ScDlH,A                 ; 输出电流高8位
                MOV     A,R5
                MOV     ScDlL,A                 ; 输出电流低8位
                RET


;
;       ******  获得输出泄流值  ******
;
GetScXlz:       MOV     R1,#AdHexBuf+4          ; A/D 数据缓冲区(16Byte) 以HEX码形式存放
                MOVX    A,@R1
                MOV     ScXlH,A                 ; 输出泄流高8位
                INC     R1
                MOVX    A,@R1
                MOV     ScXlL,A                 ; 输出泄流低8位

                MOV     A,ScXlL
                CLR     C
                SUBB    A,#33H                  ; 对应电压一伏:0333H = 819D
                MOV     ScXlL,A
                MOV     A,ScXlH
                SUBB    A,#03H
                MOV     ScXlH,A
                JNC     GetScXlz1
                MOV     ScXlL,#0
                MOV     ScXlH,#0
GetScXlz1:      MOV     R2,ScXlH
                MOV     R3,ScXlL
                MOV     R6,#01H                 ; 01F4H = 500D mA
                MOV     R7,#0F4H

                LCALL   TowByteNMUL             ; 双字节无符号乘法
                MOV     A,R4
                MOV     R2,A
                MOV     A,R5
                MOV     R3,A
                MOV     A,R6
                MOV     R4,A
                MOV     A,R7
                MOV     R5,A
                MOV     R6,#0CH                 ; 0CCCH = 3276D = (4095 - 819)
                MOV     R7,#0CCH
                LCALL   TowByteNDIV             ; 双字节无符号除法
                MOV     A,R4
                MOV     ScXlH,A                 ; 输出泄流高8位
                MOV     A,R5
                MOV     ScXlL,A                 ; 输出泄流低8位
                RET

;
;       ******  获得施加电压值  ******
;
GetSjDyz:       MOV     R1,#AdHexBuf+6          ; A/D 数据缓冲区(16Byte) 以HEX码形式存放
                MOVX    A,@R1
                MOV     SjDyH,A                 ; 施加电压高8位
                INC     R1
                MOVX    A,@R1
                MOV     SjDyL,A                 ; 施加电压低8位

                MOV     A,SjDyL
                CLR     C
                SUBB    A,#33H                  ; 对应电压一伏:0333H = 819D
                MOV     SjDyL,A
                MOV     A,SjDyH
                SUBB    A,#03H
                MOV     SjDyH,A
                JNC     GetSjDyz1
                MOV     SjDyL,#0
                MOV     SjDyH,#0
GetSjDyz1:      MOV     R2,SjDyH
                MOV     R3,SjDyL
                MOV     R6,#03H                 ; 03E8H = 1000D 伏
                MOV     R7,#0E8H
                LCALL   TowByteNMUL             ; 双字节无符号乘法
                MOV     A,R4
                MOV     R2,A
                MOV     A,R5
                MOV     R3,A
                MOV     A,R6
                MOV     R4,A
                MOV     A,R7
                MOV     R5,A
                MOV     R6,#0CH                 ; 0CCCH = 3276D = (4095 - 819)
                MOV     R7,#0CCH
                LCALL   TowByteNDIV             ; 双字节无符号除法
                MOV     A,R4
                MOV     SjDyH,A                 ; 施加电压高8位
                MOV     A,R5
                MOV     SjDyL,A                 ; 施加电压低8位

;                MOV     SjDyH,#03H              ; 施加电压650V 调试
;                MOV     SjDyL,#52H

                RET

;
;       ******  获得绝缘泄流值  ******
;
GetJyXlz:       JB      XlDlDwF,GetJyXlz2       ; 泄漏电流单位: XlDlDwF = 0 电流为 mA , XlDlDwF = 1 电流为 uA
                MOV     R1,#AdHexBuf+8          ; 使用大量程电流传感器 ( 500 mA )
                MOVX    A,@R1
                MOV     JyXlH,A
                INC     R1
                MOVX    A,@R1
                MOV     JyXlL,A

                MOV     A,JyXlL
                CLR     C
                SUBB    A,#33H                  ; 对应电压一伏:0333H = 819D
                MOV     JyXlL,A
                MOV     A,JyXlH
                SUBB    A,#03H
                MOV     JyXlH,A
                JNC     GetJyXlz1
                MOV     JyXlL,#0
                MOV     JyXlH,#0
GetJyXlz1:      MOV     R2,JyXlH
                MOV     R3,JyXlL
                MOV     R6,#01H                 ; 01F4H = 500D mA
                MOV     R7,#0F4H

                LCALL   TowByteNMUL             ; 双字节无符号乘法
                MOV     A,R4
                MOV     R2,A
                MOV     A,R5
                MOV     R3,A
                MOV     A,R6
                MOV     R4,A
                MOV     A,R7
                MOV     R5,A
                MOV     R6,#0CH                 ; 0CCCH = 3276D = (4095 - 819)
                MOV     R7,#0CCH
                LCALL   TowByteNDIV             ; 双字节无符号除法
                MOV     A,R4
                MOV     JyXlH,A                 ; 绝缘泄流高8位
                MOV     A,R5
                MOV     JyXlL,A                 ; 绝缘泄流低8位
                RET

GetJyXlz2:      MOV     R1,#AdHexBuf+10
                MOVX    A,@R1                ; 使用小量程电流传感器 ( 50 mA )
                MOV     JyXlH,A
                INC     R1
                MOVX    A,@R1
                MOV     JyXlL,A

                MOV     A,JyXlL
                CLR     C
                SUBB    A,#33H                  ; 对应电压一伏:0333H = 819D
                MOV     JyXlL,A
                MOV     A,JyXlH
                SUBB    A,#03H
                MOV     JyXlH,A
                JNC     GetJyXlz3
                MOV     JyXlL,#0
                MOV     JyXlH,#0
GetJyXlz3:      MOV     R2,JyXlH
                MOV     R3,JyXlL
                MOV     R6,#0C3H                ; 0C350H = 50000D uA
                MOV     R7,#50H
                LCALL   TowByteNMUL             ; 双字节无符号乘法
                MOV     A,R4
                MOV     R2,A
                MOV     A,R5
                MOV     R3,A
                MOV     A,R6
                MOV     R4,A
                MOV     A,R7
                MOV     R5,A
                MOV     R6,#0CH                 ; 0CCCH = 3276D = (4095 - 819)
                MOV     R7,#0CCH
                LCALL   TowByteNDIV             ; 双字节无符号除法
                MOV     A,R4
                MOV     JyXlH,A                 ; 绝缘泄流高8位
                MOV     A,R5
                MOV     JyXlL,A                 ; 绝缘泄流低8位

;                MOV     JyXlH,#03h               ; 绝缘泄流 6500 uA 调试
;                MOV     JyXlL,#0e8h

                RET

;
;       ******  获得最高输出电压、电流  ******
;
GetMaxVI:       MOV     R1,#CxZgDyL             ; 最高电压低8位
                MOVX    A,@R1
                MOV     B,ScDyL                 ; 输出电压低8位
                CLR     C
                SUBB    A,B
                MOV     R1,#CxZgDyH             ; 最高电压高8位
                MOVX    A,@R1
                MOV     B,ScDyH                 ; 输出电压高8位
                SUBB    A,B
                JNC     GetMaxVI1

                MOV     R1,#CxZgDyL
                MOV     A,ScDyL
                MOVX    @R1,A
                MOV     R1,#CxZgDyH
                MOV     A,ScDyH

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -