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

📄 modbus.asm

📁 这是相当经典的MODBUS规约程序(电力系统报文),绝对自己写的,随产品销售到全国各地,犹豫了还是共享吧
💻 ASM
📖 第 1 页 / 共 3 页
字号:
		LDB     BUFREG,SBUFRX
	        CMPB    BUFREG,#02H
	        JNE     SENDGZX8          ;1231 RETURNXXX

	        SJMP    SP_RX00E1     ;031119
SENDGZX8:       
                LJMP    RETURN   ;031119
SP_RX00A2X:
	        LJMP    SP_RX00A2    ;030807	
SP_RX00E1:   	              
;031119
	      CLR     AX
	      ;031119
SP_RX00F:       
                INC   AX
                STB    AL,WDTADDR[0]  
                CMP    AX,#0FFFFH
                JE     SENDGZX8
                ;031119
                
		JBC     INT_PEND,6,SP_RX00F
		ANDB     INT_PEND,#0BFH
		LDB     BUFREG,SBUFRX
	        CMPB    BUFREG,SBADDR
	        JNE     SENDGZX8	
       
;031119
	      CLR     AX
	      ;031119
SP_RX00A1:       
                INC   AX
                STB    AL,WDTADDR[0]  
                CMP    AX,#0FFFFH
                JE     SENDGZX8
                ;031119
		JBC     INT_PEND,6,SP_RX00A1
		ANDB     INT_PEND,#0BFH
		LDB     BUFREG,SBUFRX
		CMPB    BUFREG,#06H
		JNE     SP_RX00A2X    ;030807
	                              ;ACK  清标志
;030807***************************
    ;031119
	      CLR     AX
	      ;031119
SP_RX00A11:       
                INC   AX
                STB    AL,WDTADDR[0]  
                CMP    AX,#0FFFFH
                JE     SENDGZX8
                ;031119
                  
		JBC     INT_PEND,6,SP_RX00A11
		ANDB    INT_PEND,#0BFH
		STB    AL,WDTADDR[0]  ;030417
		LDB     BUFREG,SBUFRX
	        CMPB    BUFREG,#02H
	        JNE     SENDGZX8	

      
 ;031119
	      CLR     AX
	      ;031119
SP_RX00A12:       
                INC   AX
                STB    AL,WDTADDR[0]  
                CMP    AX,#0FFFFH
                JE     SENDGZX8
                ;031119
                   
		JBC     INT_PEND,6,SP_RX00A12
		ANDB    INT_PEND,#0BFH
		CLRB    CRC1
		ADDB    CRC,SBADDR,#08H
		ADDCB	CRC1,#00H
		LDB     BUFREG,SBUFRX
		CMPB    BUFREG,CRC     ; 
		JNE     SENDGZX7
		

    
 ;031119
	      CLR     AX
	      ;031119
SP_RX00A13:       
                INC   AX
                STB    AL,WDTADDR[0]  
                CMP    AX,#0FFFFH
                JE     SENDGZX7
                ;031119
                    
		JBC     INT_PEND,6,SP_RX00A13
		ANDB    INT_PEND,#0BFH
		
		LDB     BUFREG,SBUFRX
		CMPB    BUFREG,CRC1     ; 
		JNE     SENDGZX7
    
 ;031119
	      CLR     AX
	      ;031119
SP_RX00A14:       
                INC   AX
                STB    AL,WDTADDR[0]  
                CMP    AX,#0FFFFH
                JE     SENDGZX7
                ;031119
                    
		JBC     INT_PEND,6,SP_RX00A14
		ANDB    INT_PEND,#0BFH
		LDB     BUFREG,SBUFRX
		CMPB    BUFREG,#03H     ; 
		JNE     SENDGZX7
		
;030807***************************	        		        	                              
                STB    AL,WDTADDR[0]  ;030417
SP_RX00A1X:
	        LD      I2CADDR,#FSFLAGADDR   ;1109
                LCALL   OUTPUT_SJ
                LDB     FSFLAG,ZYBUFAL
		JBC     FSFLAG,0,SENDGZX0
		ANDB    FSFLAG,#0FEH
		SJMP    SENDGZXX

SENDGZX7:
		LJMP    RETURN
			
SENDGZX0:
		JBC     FSFLAG,1,SENDGZX1
		ANDB    FSFLAG,#0FDH
		SJMP    SENDGZXX
		
SENDGZX1:
		JBC     FSFLAG,2,SENDGZX2
		ANDB    FSFLAG,#0FBH
		SJMP    SENDGZXX
SENDGZX2:
		JBC     FSFLAG,3,SENDGZX3
		ANDB    FSFLAG,#0F7H
		SJMP    SENDGZXX
SENDGZX3:
		JBC     FSFLAG,4,SENDGZX4
		ANDB    FSFLAG,#0EFH
		SJMP    SENDGZXX
SENDGZX4:
		JBC     FSFLAG,5,SENDGZX5
		ANDB    FSFLAG,#0DFH
		SJMP    SENDGZXX
SENDGZX5:
		JBC     FSFLAG,6,SENDGZX6
		ANDB    FSFLAG,#0BFH
		SJMP    SENDGZXX
SENDGZX6:
		JBC     FSFLAG,7,SENDGZX7
		ANDB    FSFLAG,#07FH
		SJMP    SENDGZXX

	        
SENDGZXX:
                STB    AL,WDTADDR[0]  ;030417
                STB    AL,WDTADDR[0]  ;030417
		LDB     ZYBUFAL,FSFLAG
		LD      I2CADDR,#FSFLAGADDR   ;1109
                LCALL   INPUT_SJ1
                
RETURNXXXX:
		LJMP  RETURN 
SP_RX00A2:
		CMPB    BUFREG,#15H	;NOACK  重发本次事件
		JNE     RETURNXXXX
		;030807***************************
     
                 ;031119
	      CLR     AX
	      ;031119
SP_RX00A21:       
                INC   AX
                STB    AL,WDTADDR[0]  
                CMP    AX,#0FFFFH
                JE     RETURNXXXX
                ;031119
                   
		JBC     INT_PEND,6,SP_RX00A21
		ANDB    INT_PEND,#0BFH
		LDB     BUFREG,SBUFRX
	        CMPB    BUFREG,#02H
	        JNE     RETURNXXXX	

     
 ;031119
	      CLR     AX
	      ;031119
SP_RX00A22:       
                INC   AX
                STB    AL,WDTADDR[0]  
                CMP    AX,#0FFFFH
                JE     RETURNXXXX
                ;031119
                    
		JBC     INT_PEND,6,SP_RX00A22
		ANDB    INT_PEND,#0BFH
		CLRB    CRC1
		ADDB    CRC,SBADDR,#017H
		ADDCB	CRC1,#00H
		LDB     BUFREG,SBUFRX
		CMPB    BUFREG,CRC     ; 
		JNE     RETURNXXXX
		

      
 ;031119
	      CLR     AX
	      ;031119
SP_RX00A23:       
                INC   AX
                STB    AL,WDTADDR[0]  
                CMP    AX,#0FFFFH
                JE     RETURNXXXX
                ;031119
                   
		JBC     INT_PEND,6,SP_RX00A23
		ANDB    INT_PEND,#0BFH
		
		LDB     BUFREG,SBUFRX
		CMPB    BUFREG,CRC1     ; 
		JNE     RETURNXXXX
     
 ;031119
	      CLR     AX
	      ;031119
SP_RX00A24:       
                INC   AX
                STB    AL,WDTADDR[0]  
                CMP    AX,#0FFFFH
                JE     RETURNXXXXX
                ;031119
                    
		JBC     INT_PEND,6,SP_RX00A24
		ANDB    INT_PEND,#0BFH
		LDB     BUFREG,SBUFRX
		CMPB    BUFREG,#03H     ; 
		JNE     RETURNXXXXX
		
;030807***************************	  
	        STB    AL,WDTADDR[0]  ;030417
		LJMP    SP_RX005X1
SP_RX007XX:
;030807*******************************************
                CLRB    CRC1
                LDB     CRC,SBADDR
		
;030807*******************************************	
		LJMP    SP_RX007X		
RETURNXXXXX:				;030807
		LJMP  RETURN 		;060807
SP_RX006:
		CMPB    BUFREG,#04FH
	        JNE     SP_RX007XX	
					;动作复归
		;030807 LDB     CRC,BUFREG
		CLRB    CRC1
		ADDB    BUFREG,SBADDR
		ADDCB   CRC1,#00H
		LDB     CRC,BUFREG   ;030807
       
		 ;031119
	      CLR     AX
	      ;031119
SP_RX0061:       
                INC   AX
                STB    AL,WDTADDR[0]  
                CMP    AX,#0FFFFH
                JE     RETURNXXXXX
                ;031119
                  
		JBC     INT_PEND,6,SP_RX0061
		ANDB     INT_PEND,#0BFH
		LDB     BUFREG,SBUFRX
	        CMPB    BUFREG,#002H
	        JNE     RETURNXXXXX	
		ADDB	  CRC,BUFREG
		ADDCB	  CRC1,#00H	  
      
 ;031119
	      CLR     AX
	      ;031119
SP_RX0062:       
                INC   AX
                STB    AL,WDTADDR[0]  
                CMP    AX,#0FFFFH
                JE     RETURNXXXXX
                ;031119
                   
		JBC     INT_PEND,6,SP_RX0062
		ANDB     INT_PEND,#0BFH
		LDB     BUFREG,SBUFRX
	        CMPB    BUFREG,CRC
	        JNE     RETURNXXXXX	
      
 ;031119
	      CLR     AX
	      ;031119
SP_RX0063:       
                INC   AX
                STB    AL,WDTADDR[0]  
                CMP    AX,#0FFFFH
                JE     RETURNXXXXX
                ;031119
                   
		JBC     INT_PEND,6,SP_RX0063
		ANDB     INT_PEND,#0BFH
		LDB     BUFREG,SBUFRX
	        CMPB    BUFREG,CRC1
	        JNE     RETURNXXXXX	
      
 ;031119
	      CLR     AX
	      ;031119
SP_RX0064:       
                INC   AX
                STB    AL,WDTADDR[0]  
                CMP    AX,#0FFFFH
                JE     RETURNXXXXX
                ;031119
                   
		JBC     INT_PEND,6,SP_RX0064
		ANDB     INT_PEND,#0BFH
		LDB     BUFREG,SBUFRX
	        CMPB    BUFREG,#03
	        JNE     RETURNXXXXXXXX  ;031119
	        SJMP    SP_RX00641 ;031119
RETURNXXXXXXXX:
	        LJMP    RETURN	        
SP_RX00641:				;动作复归
		;030506 CLRB    KGREG1
		
		ANDB    KGREG1,#0C0H    ;030611 E0H  ;030506
		ORB     KGREG1,#LEDHBYTE
		LD      ADDRBUF8155,#IO8155ADDR  ;1219
                STB     KGREG1,1H[ADDRBUF8155] ;1219 开A口继电器
                ;030930 SC ADD
             
                 STB    AL,WDTADDR[0]  ;030417
                 STB    AL,WDTADDR[0]  ;030417
                 CLRB    GZBH2L
             
               ;  LCALL   SC
                ; LCALL   SC
                 
            ;030930SC ADD
            
SP_ACK:	
		
		LDB    AH,P2
		LDB    AL,#10100000B   ;p2.7_input pin  /busy   P2.5=1 TXD ;AL,BL,CL
		ORB    AH,#10100000B
	        ANDB   AH,AL 
		LDB    P2,AH
		
		MULB   AX,AL,#00H   ;>5US
		MULB   AX,AL,#00H
		MULB   AX,AL,#00H
		MULB   AX,AL,#00H
		NOP
		NOP	
		LDB   SBUFTX,#0EBH     ; 发ACK 向上位机  
SP_RX0065:       
		JBC     INT_PEND,6,SP_RX0065
		ANDB     INT_PEND,#0BFH
		LDB   SBUFTX,#090H     ; 把数据从外部存储器A区发向上位机  
SP_RX0066:       
		JBC     INT_PEND,6,SP_RX0066
		ANDB     INT_PEND,#0BFH
		LDB   SBUFTX,#0EBH     ; 把数据从外部存储器A区发向上位机  
SP_RX0067:       
		JBC     INT_PEND,6,SP_RX0067
		ANDB     INT_PEND,#0BFH
		LDB   SBUFTX,#090H     ; 把数据从外部存储器A区发向上位机  
SP_RX0068:       
		JBC     INT_PEND,6,SP_RX0068
		ANDB     INT_PEND,#0BFH
		LDB   SBUFTX,#02H     ; 把数据从外部存储器A区发向上位机  
SP_RX0069:       
		JBC     INT_PEND,6,SP_RX0069
		ANDB     INT_PEND,#0BFH
		LDB   SBUFTX,SBADDR     ; 把数据从外部存储器A区发向上位机  
SP_RX006A:       
		JBC     INT_PEND,6,SP_RX006A
		ANDB     INT_PEND,#0BFH
		LDB     SBUFTX,#06H     ; 把数据从外部存储器A区发向上位机
		
SP_RX006A1:       
		JBC     INT_PEND,6,SP_RX006A1
		ANDB    INT_PEND,#0BFH
		LDB     SBUFTX,#02H     ; 把数据从外部存储器A区发向上位机
		
SP_RX006A2:       
		JBC     INT_PEND,6,SP_RX006A2
		ANDB    INT_PEND,#0BFH
		CLRB    CRC1
		ADDB    CRC,SBADDR,#08H
		ADDCB	CRC1,#00H
		
		LDB     SBUFTX,CRC     ; 把数据从外部存储器A区发向上位机

SP_RX006A3:       
		JBC     INT_PEND,6,SP_RX006A3
		ANDB    INT_PEND,#0BFH
		
		LDB     SBUFTX,CRC1     ; 把数据从外部存储器A区发向上位机

SP_RX006A4:       
		JBC     INT_PEND,6,SP_RX006A4
		ANDB    INT_PEND,#0BFH
		
		LDB     SBUFTX,#03H     ; 把数据从外部存储器A区发向上位机
						
SP_RX006B:       
		JBC     INT_PEND,6,SP_RX006B
		ANDB     INT_PEND,#0BFH  
		LJMP    RETURN
RETURNXX:
		LJMP	  RETURN

SP_RX007:
		CMPB    BUFREG,#04H
	        JNE     RETURNXX	
					;对时
;030807*******************************************
                ADDB    CRC,BUFREG    ;SBADDR
		ADDCB   CRC1,#00H
;030807*******************************************	
	        ;030807 LDB     CRC,BUFREG
		;030807 CLRB    CRC1
      
 ;031119
	      CLR     AX
	      ;031119
SP_RX0071:       
                INC   AX
                STB    AL,WDTADDR[0]  
                CMP    AX,#0FFFFH
                JE     RETURNXX
                ;031119
                   
		JBC     INT_PEND,6,SP_RX0071
		ANDB     INT_PEND,#0BFH
		LDB     BUFREG,SBUFRX
	        CMPB    BUFREG,#00BH
	        JNE     RETURNXX	
		ADDB	  CRC,BUFREG
		ADDCB	  CRC1,#00H	  
      
 ;031119
	      CLR     AX
	      ;031119
SP_RX0072:       
                INC   AX
                STB    AL,WDTADDR[0]  
                CMP    AX,#0FFFFH
                JE     RETURNXX
                ;031119
                    
		JBC     INT_PEND,6,SP_RX0072
		ANDB     INT_PEND,#0BFH
		LDB     BUFREG,SBUFRX
	        LDB	  YEAR,BUFREG		;年
		ADDB	  CRC,BUFREG
		ADDCB	  CRC1,#00H	 
      
 ;031119
	      CLR     AX
	      ;031119
SP_RX0073:       
                INC   AX
                STB    AL,WDTADDR[0]  
                CMP    AX,#0FFFFH
                JE     RETURNXX
                ;031119
                    
		JBC     INT_PEND,6,SP_RX0073
		ANDB     INT_PEND,#0BFH
		LDB     BUFREG,SBUFRX
	      ;LDB	  YEAR,BUFREG
		ADDB	  CRC,BUFREG
		ADDCB	  CRC1,#00H
      
 ;031119
	      CLR     AX
	      ;031119
SP_RX0074:       
                INC   AX
                STB    AL,WDTADDR[0]  
                CMP    AX,#0FFFFH
                JE     RETURNXX
                ;031119
                    
		JBC     INT_PEND,6,SP_RX0074
		ANDB     INT_PEND,#0BFH
		LDB     BUFREG,SBUFRX
	        LDB	  MONTH,BUFREG		;月

		ADDB	  CRC,BUFREG
		ADDCB	  CRC1,#00H
      
 ;031119
	      CLR     AX
	      ;031119
SP_RX0075:       
                INC   AX

⌨️ 快捷键说明

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