??? 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! |
Topic | Author | Date |
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 |