📄 test_485.asm
字号:
;======================================================================================;
; 一, 设 置 参 数 ;
; 1,开/关主机选择:中转站发 01 03 00 00 00 02 CRCL CRCH 8个数字 ;
; 文本回发 01 03 04 00 XX 00 YY CRCL CRCH 9个数字 ;
; 2,主机参数设定 :中转站发 01 03 00 02 00 03 CRCL CRCH 8个数字 ;
; 文本回发 01 03 06 00 XX 00 YY 00 ZZ CRCL CRCH 11个数字 ;
; 3,定时开关机 :中转站发 01 03 00 05 00 05 CRCL CRCH 8个数字 ;
; 文本回发 01 03 0A 00 XX 00 YY 00 ZZ 00 MM 00 NN CRCL CRCH 15个数字 ;
;--------------------------------------------------------------------------------------;
; 二, 显 示 主 板 状 况 ;
; 1, 在线机组运行状况,中转站发 01 10 00 0A 00 04 08 00 0X 00 0Y 00 0Z 00 0M CRCL CRCH ;
; 17个数字,给文本的MW11,MW12,MW13,MW14写数 ;
; 2, 温度选择查看,中转站发01 10 00 12 00 08 10 00 0X 00 0Y 00 0Z 00 0M 00 0N 00 0P 00 ;
; 0K 00 0T CRCL CRCH 25个数字,给文本的MW19,MW20,MW21,MW22,MW23,MW24,MW25,MW26写数 ;
; 3, 故障描述,中转站发01 10 00 10 00 02 04 00 0X 00 0Y CRCL CRCH 13个数字,给文本的 ;
; MW17,MW18写数 ;
; 4, 设备状态,中转站发01 10 00 0E 00 02 04 00 0X 00 0Y CRCL CRCH 13个数字,给文本的 ;
; MW15,MW16写数 ;
; 5, 机组运行状况,中转站发01 10 00 1A 00 01 02 XX YY CRCL CRCH 11个数字,给文本的 MW27 ;
; 写数 ;
;======================================================================================;
#include ht46r64.inc
;;===============================================================;
data .section 'data' ;40h ~ 0ffh ( 192 )
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++;
;-------------------------------------------------------;
Tempr_ACC db ? ;40h;ACC暂存器
Tempr_STA db ? ;41h;status暂存器
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++;
;-------------------------------------------------------;
;----------> 设置参数 485 Tx Data register <----------;
;-------------------------------------------------------;
Tx_Slave_No db ? ;42h;从机号(00~15)
Tx_Func_code db ? ;43h;功能码 (03h)
Tx_Start_AddrH db ? ;44h;起始地址高位
Tx_Start_AddrL db ? ;45h;起始地址低位
Tx_DtLength_H db ? ;46h;数据长度高位
Tx_DtLength_L db ? ;47h;数据长度低位
Tx_CRC_Low db ? ;48h;CRC效验码低位
Tx_CRC_High db ? ;49h;CRC效验码高位
;-------------------------------------------------------;
;----------> 设置参数 485 Rx Data register <----------;
;-------------------------------------------------------;
Rx_data12 db ? ;4a
Rx_data11 db ? ;4b
Rx_data10 db ? ;4c
Rx_data09 db ? ;4d
Rx_data08 db ? ;4e / CRCL
Rx_data07 db ? ;4f / CRCH
Rx_data06 db ? ;50 / CRCL
Rx_data05 db ? ;51 / CRCH
Rx_data04 db ? ;52
Rx_data03 db ? ;53
Rx_data02 db ? ;54 / CRCH
Rx_data01 db ? ;55 / CRCL
Rx_DtLength db ? ;56h;数据长度高位
Rx_Func_code db ? ;57h;功能码 (03h)
Rx_Slave_No db ? ;58h;从机号(00~15)
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++;
;-------------------------------------------------------;
;--------> 显示主板状况 485 Tx Data register <--------;
;-------------------------------------------------------;
TTx_Slave_No db ? ;59h;从机号(00~15)
TTx_Func_code db ? ;5Ah;功能码(10h)
TTx_Start_AddrH db ? ;5Bh;起始地址高位
TTx_Start_AddrL db ? ;5Ch;起始地址低位
TTx_DtLength_H db ? ;5Dh;数组长度高位
TTx_DtLength_L db ? ;5Eh;数组长度低位
TTx_DtLength db ? ;5FH;数组字节数
TTx_Data1_H db ? ;60H;数组1高位
TTx_Data1_L db ? ;61H;数组1低位
TTx_Data2_H db ? ;62H;数组2高位 /CRCL
TTx_Data2_L db ? ;63H;数组2低位 /CRCH
TTx_Data3_H db ? ;64H;数组3高位 /CRCL
TTx_Data3_L db ? ;65H;数组3低位 /CRCH
TTx_Data4_H db ? ;66H;数组4高位
TTx_Data4_L db ? ;67H;数组4低位
TTx_Data5_H db ? ;68H;数组5高位 /CRCL
TTx_Data5_L db ? ;69H;数组5低位 /CRCH
TTx_Data6_H db ? ;6AH;数组6高位
TTx_Data6_L db ? ;6BH;数组6低位
TTx_Data7_H db ? ;6CH;数组7高位
TTx_Data7_L db ? ;6DH;数组7低位
TTx_Data8_H db ? ;6EH;数组8高位
TTx_Data8_L db ? ;6FH;数组8低位
TTx_CRC_Low db ? ;70h;CRC效验码低位 /CRCL
TTx_CRC_High db ? ;71h;CRC效验码高位 /CRCH
;-------------------------------------------------------;
;--------> 显示主板状况 485 Rx Data register <--------;
;-------------------------------------------------------;
RRx_CRC_High db ? ;72h;CRC效验码高位
RRx_CRC_Low db ? ;73h;CRC效验码低位
RRx_DtLength_L db ? ;74h;数组长度低位
RRx_DtLength_H db ? ;75h;数组长度高位
RRx_Start_AddrL db ? ;76h;起始地址低位
RRx_Start_AddrH db ? ;77h;起始地址高位
RRx_Func_code db ? ;78h;功能码(10h)
RRx_Slave_No db ? ;79h;从机号(00~15)
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++;
;-------------------------------------------------------;
; UART接收/发送数据RAM定义 ;
;-------------------------------------------------------;
RCREG db ? ;(7Ah)接收代码暂存器
TXREG db ? ;(7Bh)发送代码暂存器
COUNT db ? ;(7C)
DELAY db ? ;(7D)
Rx0_Count db ? ;(7E)
Rx1_Count db ? ;(7F)
;-----------------------------------------------;
baudrate equ 31 ;波特率 = 9600
tx0 equ PD.2 ;PD.1用于UART发送
rx0 equ PD.4 ;PD.4用于UART接收
trxen0 equ PD.3 ;PD.2控制485发送/接收
;tx1 equ PD.7 ;PD.0用于UART发送 |
;rx1 equ PD.5 ;PD.5用于UART接收 |没用到
;trxen1 equ PD.6 ;PD.6控制485发送/接收|
;-------------------------------------------------------;
;-------------------------------------------------------;
Rx_Leng db ? ;80
Rx_count db ? ;81
RMB_CRCH db ? ;82;CRC高字节
RMB_CRCL db ? ;83;CRC低字节
time_count db ? ;84;
R_100ms db ? ;85
Rx_No db ? ;86
Rd_count db ? ;87
Rs_old_sel db ? ;88
R_24ms db ? ;85
count0 db ? ;
count1 db ? ;
;-------------------------------------------------------;
FLAG db ? ;89
;----------------------------------------------;
bt_100ms equ FLAG.0 ;
bt_head equ FLAG.1 ;
bb_setdt equ FLAG.2 ;
bb_dspdt equ FLAG.3 ;
bt_24ms equ FLAG.4 ;
bt_New equ FLAG.5
;-------------------------------------------------------;
FLAG_RX db ? ;8a
;----------------------------------------------;
bt_set equ FLAG_RX.0 ;
bt_dsp equ FLAG_RX.1 ;
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;
;***********************************************************************;
;***********************************************************************;
code .section at 0'CODE' ;0000h ~ 0fffh
;***********************************************************************;
ORG 00h ;
JMP MAIN_Start ;RESET
ORG 04H ;
JMP Ext_Int0_RXD ;External-0 INT (PD4)
ORG 08H ;
reti ;External-1 INT (PD5)
ORG 0cH ;
JMP Timer0_Int ;TIMER0 INT
ORG 10H ;
reti
ORG 14H ;
reti
ORG 18H ;
reti
NOP ;
NOP ;
JMP MAIN_Start ;
;*******************************************************************;
;*******************************************************************; PD4 - Rx
;------> 外部中断0 (PD4) 用于接收从机发送来的数据子程序 <------; PD3 - RT_EN
;*******************************************************************; PD2 - Tx
;-------------------------------------------------------------------;
Ext_Int0_RXD:
MOV Tempr_ACC,A ;
MOV A,STATUS ;
MOV Tempr_STA,A ;PUSH
;------------------------------------------------------------;
mov A,PD ;
sz ACC.4 ;PD.4=0 ?
jmp Exit_Int ;PD.4=1,退出中断服务程序
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++;
; 从机回应中转站数据为:01 03 ,是文本给从机设置的参数 ;
; 从机回应中转站数据为:01 10 ,是文本收到中转站数据的回应 ;
;------------------------------------------------------------;
JR_485_CODE:
call RECEIVE ;接收一字节代码数
xor A,01h ;是头码?
snz z ;
jmp JR_Hearer_No2 ;不是01H头码,是2号头码
JR_Header_01:
sz bt_head ;01头码接收OK吗 ?
jmp JR_Hearer_No2 ;是,收到的是2号头码 ?
set bt_head ;NO,设标记=1
jmp Exit_Int ;退出中断服务程序
;----------------------------------------------------;
JR_Hearer_No2:
SZ FLAG_RX ;
jmp JR_rx_Data ;
mov A,rcreg ;
xor A,03h ;01 03
sz z ;
jmp JR_is_SetDt ;
mov A,rcreg ;
xor A,10h ;01 10
sz z ;
jmp JR_is_DspDt ;
SZ FLAG_RX ;
jmp JR_rx_Data ;
jmp Exit_Int ;Err
;----------------------------------------------------;
;-----> 检查文本给从机设置的哪个参数? <-----;
;----------------------------------------------------;
JR_is_SetDt:
set bt_set ;
JR_set_sel:
mov A,Tx_DtLength_L ;
sub A,2 ;
sz z ;
jmp JR_is_Msel ;开/关主机选择
mov A,Tx_DtLength_L ;
sub A,3 ;
sz z ;
jmp JR_is_Pset ;主机参数设定
mov A,Tx_DtLength_L ;
sub A,1 ;
sz z ;
jmp JR_is_MM10_13 ;MW10~13选择
JR_is_Tset: ;
mov A,13 ;
mov Rd_Count,A ;13个数据,定时开关机设定
jmp Exit_Int ;
JR_is_Pset: ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -