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

📄 test_485.asm

📁 一个485通信测试程序
💻 ASM
📖 第 1 页 / 共 5 页
字号:
;======================================================================================;
;             一, 设 置 参 数                                                          ;
; 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 + -