📄 test_485.asm
字号:
;call JG4_RD_EEPROM ;读出在线机组温度状况给文本显示
call JJ_CHKCRC_DSP03 ;求CRC码
mov A,RMB_CRCH ;
mov TTx_CRC_Low,A ;CRC效验码低位
mov A,RMB_CRCL ;
mov TTx_CRC_High,A ;CRC效验码高位
jmp JJ_Tx_25bytes ;
;***********************************************************************;
; ;
; 中转站更新在线机组运行状况 ;
; ;
;***********************************************************************;
JJ_ONWORK_Looks: ;在线机组运行状况0a,0b,0c,0d
CALL JJ_Header_Set ;
mov A,0ah ;
mov TTx_Start_AddrL,A ;起始地址低位
mov A,04h ;
mov TTx_DtLength_L,A ;数组长度低位
mov A,08h ;08h
mov TTx_DtLength,A ;数组字节数
mov A,00h ;
mov TTx_Data1_H,A ;数组1高位
mov A,01h ;从机号
mov TTx_Data1_L,A ;数组1低位
mov A,00h ;
mov TTx_Data2_H,A ;数组2高位
mov A,00h ;
mov TTx_Data2_L,A ;数组2低位
mov A,00h ;
mov TTx_Data3_H,A ;数组3高位
mov A,00h ;
mov TTx_Data3_L,A ;数组3低位
mov A,00h ;
mov TTx_Data4_H,A ;数组4高位
mov A,00h ;
mov TTx_Data4_L,A ;数组4低位
;call JG5_RD_EEPROM ;读出在线机组运行状况给文本显示
call JJ_CHKCRC_DSP02 ;求CRC码
mov A,RMB_CRCL ;
mov TTx_Data5_L,A ;CRC效验码低位
mov A,RMB_CRCH ;
mov TTx_Data5_H,A ;CRC效验码高位
jmp JJ_Tx_17bytes ;
;--------------------------------------------------------------;
JJ_Header_Set:
mov A,1 ;
mov TTx_Slave_No,A ;从机号(00~15)
mov A,10H ;
mov TTx_Func_code,A ;功能码(10h)
mov A,00h ;
mov TTx_Start_AddrH,A ;起始地址高位
mov A,00h ;
mov TTx_DtLength_H,A ;数组长度高位
RET
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++;
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;
;----------> PD7 应用Modbus通信协议的RTU模式发送数据给文本 <----------;
; 设备地址,功能代码,数据数量,数据1~7,校验高,校验低。 ;
;------------------------------------------------------------------------;
;************************************************************************;
JJ_Tx_8bytes: ;设置参数,发送请求8个数据(42h~49H)
set PD.3 ;
set PD.3 ;
mov A,42h ;
mov mp0,A ;42h,43h,44H,45H,46h,47h,48h,49h
JJ_Tx_8B:
mov A,r0 ;
call TRANSMIT ;发送
inc mp0 ;
mov A,4ah ;check 4ah
xor A,mp0 ;
snz z ;
jmp JJ_Tx_8B ;
clr PD.3 ;
call JJ_Delay ;
ret ;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++;
JJ_Tx_17bytes: ;在线机组运行状况,中转站发17个数字 (59h~69h)
set PD.3 ;
set PD.3 ;
mov A,59h ;
mov mp0,A ;59h,5ah,5bh,5ch,5dh,5eh,5fh,60h,61h,62h,63h,64h,65h,66h,67h,68h,69h
JJ_Tx_17B:
mov A,r0 ;
call TRANSMIT ;发送
inc mp0 ;
mov A,6ah ;check 6ah
xor A,mp0 ;
snz z ;
jmp JJ_Tx_17B ;
clr PD.3 ;
call JJ_Delay ;
ret ;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++;
JJ_Tx_25bytes: ;温度选择查看,中转站发25个数字(59h~71h)
set PD.3 ;
set PD.3 ;
mov A,59h ;
mov mp0,A ;59h,5ah,5bh,5ch,5dh,5eh,5fh,60h,61h,62h,63h,64h,65h
JJ_Tx_25B: ;66h,67h,68h,69h,6ah,6bh,6ch,6dh,6eh,6fh,70h,71h
mov A,r0 ;
call TRANSMIT ;发送
inc mp0 ;
mov A,72h ;check 72h
xor A,mp0 ;
snz z ;
jmp JJ_Tx_25B ;
clr PD.3 ;
call JJ_Delay ;
ret ;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++;
JJ_Tx_13bytes: ;故障描述/设备状态 查看,中转站发13个数字(59h~65h)
set PD.3 ;
set PD.3 ;
mov A,59h ;
mov mp0,A ;59h,5ah,5bh,5ch,5dh,5eh,5fh,60h,61h,62h,63h,64h,65h
JJ_Tx_13B: ;
mov A,r0 ;
call TRANSMIT ;发送
inc mp0 ;
mov A,66h ;check 66h
xor A,mp0 ;
snz z ;
jmp JJ_Tx_13B ;
clr PD.3 ;
call JJ_Delay ;
ret ;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++;
JJ_Tx_11bytes: ;机组运行状况查看,中转站发11个数字(59h~63h)
set PD.3 ;
set PD.3 ;
mov A,59h ;
mov mp0,A ;59h,5ah,5bh,5ch,5dh,5eh,5fh,60h,61h,62h,63h
JJ_Tx_11B: ;
mov A,r0 ;
call TRANSMIT ;发送
inc mp0 ;
mov A,64h ;check 64h
xor A,mp0 ;
snz z ;
jmp JJ_Tx_11B ;
clr PD.3 ;
call JJ_Delay ;
ret ;
;------------------------------------------------------------------------;
;------------------------------------------------------------------------;
;------------------------------------------------------------------------;
;----------> Modbus协议通信的RTU模式CRC校验,求CRC校验码 <----------;
; 设备地址,功能代码,数据数量,数据1~7,校验高,校验低。 ;
;------------------------------------------------------------------------;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++;
JJ_CHKCRC_MW10:
mov A,50h ;MW10选择(5个)
mov mp0,A ;4ah~50h
mov A,0ffh ;
mov RMB_CRCH,A ;1.预置 16 位寄存器为十六进制 FFFF(即全为 1),低字节
mov RMB_CRCL,A ; 预置 16 位寄存器为十六进制 FFFF(即全为 1),高字节
mov A,5 ;
mov Rx_Leng,A ;待校验的数据串长度
jmp JJ_CRC_Set ;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++;
JJ_CHKCRC_SET02:
mov A,52h ;开/关主机选择参数(7个)
mov mp0,A ;4ah~52h
mov A,0ffh ;
mov RMB_CRCH,A ;1.预置 16 位寄存器为十六进制 FFFF(即全为 1),低字节
mov RMB_CRCL,A ; 预置 16 位寄存器为十六进制 FFFF(即全为 1),高字节
mov A,7 ;
mov Rx_Leng,A ;待校验的数据串长度
jmp JJ_CRC_Set ;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++;
JJ_CHKCRC_SET03:
mov A,54h ;主机参数设定(9个)
mov mp0,A ;4ah~54h
mov A,0ffh ;
mov RMB_CRCH,A ;1.预置 16 位寄存器为十六进制 FFFF(即全为 1),低字节
mov RMB_CRCL,A ; 预置 16 位寄存器为十六进制 FFFF(即全为 1),高字节
mov A,9 ;
mov Rx_Leng,A ;待校验的数据串长度
jmp JJ_CRC_Set ;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++;
JJ_CHKCRC_SET04:
mov A,58h ;定时开关机参数设定(13个)
mov mp0,A ;4ah~58h
mov A,0ffh ;
mov RMB_CRCH,A ;1.预置 16 位寄存器为十六进制 FFFF(即全为 1),低字节
mov RMB_CRCL,A ; 预置 16 位寄存器为十六进制 FFFF(即全为 1),高字节
mov A,13 ;
mov Rx_Leng,A ;待校验的数据串长度
;------------------------------------------------------------------------;
JJ_CRC_Set:
mov A,r0 ;2.把第一个 8 位数据与 16 位 CRC 寄存器的低位相异或,
xor A,RMB_CRCH ; 并把结果放于CRC 寄存器
mov RMB_CRCH,A ;
mov A,8 ;
mov Rx_count,A ;
JJ_CRC_W2:
mov A,RMB_CRCL ;3.把寄存器的内容右移一位(朝低位),先移动高字节
clr C ;
RRC ACC ;
mov RMB_CRCL,A ;
mov A,RMB_CRCH ;再移动低字节
RRC ACC ;
mov RMB_CRCH,A ;
snz C ;4.检查最低位(移出位),如果最低位为 0 ,重复第 3 步(再次移位)
JMP JJ_CRC_W3 ;
mov A,RMB_CRCH ;如果最低位为 1,CRC 寄存器与多项式 A001 进行异或
xor A,01h ;01h
mov RMB_CRCH,A ;
mov A,RMB_CRCL ;
xor A,0a0h ;0a0h
mov RMB_CRCL,A ;
JJ_CRC_W3:
sdz Rx_count ;5.重复步骤 3 和 4,直到右移 8 次,这样整个 8 位数据全部进行了处理
JMP JJ_CRC_W2 ;
DEC MP0 ;
sdz Rx_Leng ;6.重复步骤2 到步骤 5,进行下一个 8 位数据的处理
JMP JJ_CRC_Set ;
ret ;
;------------------------------------------------------------------------;
;------------------------------------------------------------------------;
JJ_CHKCRC_SET01: ;发请求
mov A,42h ;设置参数(6个)
mov mp0,A ;42h~47h
mov A,0ffh ;
mov RMB_CRCH,A ;1.预置 16 位寄存器为十六进制 FFFF(即全为 1),低字节
mov RMB_CRCL,A ; 预置 16 位寄存器为十六进制 FFFF(即全为 1),高字节
mov A,6 ;
mov Rx_Leng,A ;待校验的数据串长度
jmp JJ_CRC_1 ;
;---
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -