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

📄 test_485.asm

📁 一个485通信测试程序
💻 ASM
📖 第 1 页 / 共 5 页
字号:
                  mov     A,9              ;
                  mov     Rd_Count,A       ;9个数据,主机参数设定  
                  jmp     Exit_Int         ;
JR_is_Msel:                                ;
                  mov     A,7              ;
                  mov     Rd_Count,A       ;7个数据,开/关主机选择 
                  jmp     Exit_Int         ;
JR_is_MM10_13:
                  mov     A,5              ;
                  mov     Rd_Count,A       ;11个数据,MW10 
                  jmp     Exit_Int         ;
;----------------------------------------------------;        
;----->    检查从机回应文本的哪个显示数据?    <-----; 
;----------------------------------------------------;        
JR_is_DspDt:                  
                  set     bt_dsp           ;
                  mov     A,6              ;回应6个数据
                  mov     Rd_Count,A       ;  
                  jmp     Exit_Int         ;

;----------------------------------------------------;        
;----------->      检查接收到的数据      <-----------; 
;----------------------------------------------------;        
JR_rx_Data:
                  sz      bt_set           ;
                  jmp     JR_set_Dat       ;set data   
                  sz      bt_dsp           ;
                  jmp     JR_Dsp_Dat       ;display data   
                  jmp     Exit_Int         ;退出中断服务程序
;----------------------------------------------------;           
JR_set_Dat:                                ;4a~58
                  mov     A,49h            ;
                  add     A,Rd_Count       ;
                  mov     MP0,A            ;
                  mov     A,rcreg          ;  
                  mov     r0,A             ;  
                  inc     MP0              ; 
                  sdz     Rd_Count         ;
                  jmp     Exit_Int         ;数据码没接完,再收
                  clr     Rd_Count         ; 
                  clr     FLAG_RX          ; 
                  set     bb_setdt
                  clr     bb_dspdt
                  jmp     Exit_Int         ;数据码没接完,再收
;----------------------------------------------------;           
JR_Dsp_Dat:
                  mov     A,71h            ;72~79
                  add     A,Rd_Count
                  mov     MP0,A            ;
                  mov     A,rcreg          ;  
                  mov     r0,A             ;  
                  inc     MP0              ; 
                  sdz     Rd_Count         ;
                  jmp     Exit_Int         ;数据码没接完,再收
                  clr     Rd_Count         ; 
                  clr     FLAG_RX          ; 
                  set     bb_dspdt         ;
                  clr     bb_setdt         ; 
                  jmp     Exit_Int         ;数据码没接完,再收
            

;*******************************************************************;
;*******************************************************************;
;--------->          ( 8ms ) Timer0 中断服务子程序        <---------;
;*******************************************************************;
Timer0_Int:                                  
                  mov     Tempr_ACC,a      ;保存ACC入栈     
                  mov     a,status         ;  
                  mov     Tempr_STA,a      ;保存status入栈  
                  clr     wdt              ; 
;------------------------------------------------;
Timer_100ms:               
                  sz      bt_100ms         ;80ms 点名读取个从机的参数到TD220显示
                  jmp     Timer_24ms       ; 
                  inc     R_100ms          ;
                  mov     A,R_100ms        ;
                  sub     A,12;10             ;10*8=80ms
                  snz     c                ;
                  jmp     Timer_24ms       ; 
                  clr     R_100ms          ;
                  set     bt_100ms         ;
;------------------------------------------------;
Timer_24ms:               
                  sz      bt_24ms          ;24ms 
                  jmp     Exit_Int         ; 
                  inc     R_24ms           ;
                  mov     A,R_24ms         ;
                  sub     A,3              ;3*8=24ms
                  snz     c                ;
                  jmp     Exit_Int         ; 
                  clr     R_24ms           ;
                  set     bt_24ms          ;
                  
;----------------------------------------------------------------; 
;---------------->       退出中断服务程序       <----------------;       
;----------------------------------------------------------------;  
Exit_Int:                                
                  mov     A,Tempr_STA      ;
                  mov     status,A         ;恢复status
                  mov     A,Tempr_ACC      ;恢复ACC
                  RETI
                  
                  
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;  
;=======================================================================;
;***********************************************************************;                  
;***********************************************************************;
;                            PROGRAM START                              ;
;***********************************************************************;       
MAIN_Start:
                  clr     intc0            ;
                  clr     intc1            ; 
                  clr     tmr0             ;  
                  clr     tmr0c   	   ;
;----------------------------------------------------------;
;                       SET IO PORT                        ;
;----------------------------------------------------------;
INI_IO:
	          mov	  A,00110000b      ;PD.567
	          mov     PDC,A            ;PD.45 input,PD.012367 output
	          mov     PD,A             ;PD.432
	
;----------------------------------------------------------;
;                    timer initial set                     ;
;----------------------------------------------------------;
JI_Timer_set:                              ;256-6=250
                  mov     A,6              ;250*32us=8000us=8ms
                  mov     tmr0,A           ;               
                  mov     A,10000111b      ;设定为定时模式,时钟来源为Fsys/128
                  mov     tmr0c,A          ;Fint=Fsys/128=4MHz/128=(1/32)Mhz=32us      

;----------------------------------------------------------;
;--------->>         检查是不是正常复位         <<---------;
;----------------------------------------------------------;
JI_chk_reset:                 
                 ;mov      A,[7eh]         ;
                 ;xor      A,0aah          ;    
                 ;snz      Z               ;
                  jmp      JI_initial_CLR  ;
                  mov      A,[7fh]         ;
                  xor      A,55h           ; 
                  snz      z               ;
                  jmp      JI_initial_CLR  ;             
Re_start:
                 ;jmp      Main_pro_go     ;         
;----------------------------------------------------------;
;                Data RAM initial clear 0                  ;
;----------------------------------------------------------;
JI_initial_CLR:
 	          clr     bp
 	          mov     A,0ffh           ;清内存(28h ~ 7fh) 
                  mov     mp0,A            ; 
RAM_clr_Loop:                              
                  CLR     WDT              ;
                  mov     A,0              ;
                  mov     r0,A             ;  
                  dec     mp0              ;
        
                  mov     A,039h           ;check 39h
                  xor     A,mp0            ;
                  snz     z                ;
                  jmp     RAM_clr_Loop     ;
;----------------------------------------------------------;
RAM_clr_end:   
                  mov     A,0aah           ;
                  mov     [07eh],A         ;
                  mov     A,55h            ;    
                  mov     [07fh],A         ;        
             
               
;----------------------------------------------------------;
;----------------------------------------------------------;
            
;----------------------------------------------------------;
;----------------------------------------------------------;
Pro_start:                  
                  clr     PD.3            ;允许485接收 
                  clr     PD.6            ;允许485接收 
                 
                  mov     a,00001011B     ;开总中断,开定时器中断,外部中断
                  mov     intc0,a         ;    
                  set     tmr0c.4         ;定时器开始记时 
;----------------------------------------------------------;
                  call    JJ_CLR_MW00_01  ;clear MW00,MW01
                  call    Delayy
                  call    JJ_CLR_MW02_09  ;clear MW02 ~ MW09
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;  
;***********************************************************************;                  
;***********************************************************************;
;                                                                       ;
;                        Main program Loop area                         ;
;                                                                       ;
;***********************************************************************;  
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@; 

Main_Pro_RUN:         
            nop 
;---------------------------------------------------------;            
;             文本选择的要查看的机组号(MW11)              ;
;---------------------------------------------------------;
Main_1001:
            call    Delayy
            call    JJ_Read_MW10         ;文本选择的要查看的机组(MW11)
JJ_wait_01:          
            snz     bb_setdt             ;
            jmp     Main_1001            ;是中转站给从机设置的参数
Main_Slave_sel:     
            clr     bb_setdt             ;
           
            mov     A,01h                ;从机号(01)
            mov     Rx_data06,A          ;
            mov     A,03h                ; 
            mov     Rx_data07,A          ;功能码 (03h) 
            call    JJ_CHKCRC_MW10       ;中转站读取 文本设置的 MW10 取的CRC码
            mov     A,RMB_CRCH           ;检查CRC码是否正确 
            xor     A,Rx_data11          ; 
            snz     z                    ;
            JMP     JVM_MW10_Err         ;
            mov     A,RMB_CRCL           ;
            xor     A,Rx_data12          ;
            snz     z                    ;
            JMP     JVM_MW10_Err         ;
JVM_MW10_OK:
            mov     A,Rs_old_sel         ;一样?
            xor     A,Rx_data07          ; 
            sz      z                    ;
            jmp     Main_1002            ;一样,退出
            mov     A,Rx_data07          ;文本选择查看的从机号
            mov     TTx_Data1_L,A        ;
            mov     Rs_old_sel,A         ;           
            jmp     Main_Dsp_NewSlave    ;
            
JVM_MW10_Err:
            clr     bb_setdt             ;
            jmp     Main_1001            ;错误,再发,再收           
           
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++;            
;--------->    把文本设置的参数读入并存储在EEPROM中    <---------;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++;            
;*********************************************************;           
;---------------------------------------------------------;            
;               开/关主机选择(MW01,02)设置                ;
;---------------------------------------------------------;
Main_1002:
            call    Delayy
            call    JJ_Read_MW00_01      ;开/关主机选择(MW01,02)
JJ_wait_02:          

⌨️ 快捷键说明

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