Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
12/22/09 15:42
Read: times


 
#171859 - RS485 - MAX3140
Dear 8052 Forum:

Anyone with experience using the MAX3140? I am using it with an 89C688 micro. I can successfully Tx/Rx data to the connected RS-485 sensor. However, I am confused as to why it is working! Yes, kinda weird post/question. Let me explain...

The following code will successfully Tx 'a' 'b' 'c' 'd' to the connected RS-485 device.

;*************************************************************************
; CNTRL H : Transmit/Recieve to RS-485 Sensor
;**************************************************************************

CMD8: 	;WRITE DATA Register to send Tx Character
	;
	MOV    MAX3140_WRITE_REGISTER,#80H       ;TE=0; RTS HIGH For Output
	MOV    MAX3140_WRITE_REGISTER+1,#61H     ;Data to Tx 'a'
	LCALL  WRITE_MAX3140_16BIT_REGISTER
	;
	;READ DATA Command (MAX3140) 
        ;
	MOV    MAX3140_WRITE_REGISTER,#00H
	MOV    MAX3140_WRITE_REGISTER+1,#00H
	LCALL  WRITE_MAX3140_16BIT_REGISTER
        ;
	;Return Value read from READ Data Command 
	;
	MOV    R0,#MAX3140_READ_REGISTER     
	LCALL  SEND_2BYTE
	LCALL  CRLF
        ;
        ;WRITE DATA Register to send Tx Character
	;
	MOV    MAX3140_WRITE_REGISTER,#80H       ;TE=0; RTS HIGH For Output
	MOV    MAX3140_WRITE_REGISTER+1,#62H     ;Data to Tx 'b'
	LCALL  WRITE_MAX3140_16BIT_REGISTER
	;
	;READ DATA Command (MAX3140) 
        ;
	MOV    MAX3140_WRITE_REGISTER,#00H
	MOV    MAX3140_WRITE_REGISTER+1,#00H
	LCALL  WRITE_MAX3140_16BIT_REGISTER
        ;
	;Display the HB/LB result to Serial Port 
	;
	MOV    R0,#MAX3140_READ_REGISTER     
	LCALL  SEND_2BYTE
	LCALL  CRLF
        ; 
        ;WRITE DATA Register to send Tx Character
	;
	MOV    MAX3140_WRITE_REGISTER,#80H       ;TE=0; RTS HIGH For Output
	MOV    MAX3140_WRITE_REGISTER+1,#63H     ;Data to Tx 'c'
	LCALL  WRITE_MAX3140_16BIT_REGISTER
	;
	;READ DATA Command (MAX3140) 
        ;
	MOV    MAX3140_WRITE_REGISTER,#00H
	MOV    MAX3140_WRITE_REGISTER+1,#00H
	LCALL  WRITE_MAX3140_16BIT_REGISTER
        ;
	;Display the HB/LB result to Serial Port 
	;
	MOV    R0,#MAX3140_READ_REGISTER     
	LCALL  SEND_2BYTE
	LCALL  CRLF
        ;
       ;WRITE DATA Register to send Tx Character
	;
	MOV    MAX3140_WRITE_REGISTER,#80H       ;TE=0; RTS HIGH For Output
	MOV    MAX3140_WRITE_REGISTER+1,#64H     ;Data to Tx 'd'
	LCALL  WRITE_MAX3140_16BIT_REGISTER
	;
	;READ DATA Command (MAX3140)
        ;
	MOV    MAX3140_WRITE_REGISTER,#00H
	MOV    MAX3140_WRITE_REGISTER+1,#00H
	LCALL  WRITE_MAX3140_16BIT_REGISTER
        ;
	;Display the HB/LB result to Serial Port 
	;
	MOV    R0,#MAX3140_READ_REGISTER     
	LCALL  SEND_2BYTE
	LCALL  CRLF
        END

 


Notice, that after each Tx of a character, I have to issue a READ DATA command (MAX3140 register) and then send the contents to the micro's RS-232 and display the contents of the READ DATA register.

I cannot simply perform Tx 'a,b,c,d' without performing a Read Data Register. If I do, it will only transmit 'a' 'd'.

Just this code will NOT work:

  
        ;WRITE DATA Register to send Tx Character
	;
	MOV    MAX3140_WRITE_REGISTER,#80H       ;TE=0; RTS HIGH For Output
	MOV    MAX3140_WRITE_REGISTER+1,#61H     ;Data to Tx 'a'
	LCALL  WRITE_MAX3140_16BIT_REGISTER
        .
        ... 

 


Basically, I MUST include the below code after transmitting (Tx) each character or it will not send the data.


        ;READ DATA Command (MAX3140)
        ;
	MOV    MAX3140_WRITE_REGISTER,#00H
	MOV    MAX3140_WRITE_REGISTER+1,#00H
	LCALL  WRITE_MAX3140_16BIT_REGISTER
        ;
	;Display the HB/LB result to Serial Port 
	;
	MOV    R0,#MAX3140_READ_REGISTER     
	LCALL  SEND_2BYTE
	LCALL  CRLF



 


Any and all comments are welcome.

Thanks in advance!





List of 5 messages in thread
TopicAuthorDate
RS485 - MAX3140            01/01/70 00:00      
   SPI SOP            01/01/70 00:00      
   MAX3140            01/01/70 00:00      
      I have:            01/01/70 00:00      
   MAX3140 - Solved            01/01/70 00:00      

Back to Subject List