Hi, I am trying to perform serial communication with two AT89S52 MCs. Now the problem is that sometime everything works fine, but sometimes not. ------ Hardware Config-------- ---> RC reset circuit ---> 11.0592 MHz crystal ---> Mode 1 for serial communication with 9600 baudrate ---> Port 2 as output port at receiver side
Hardware is working fine with simple programs like LED blinking, but when it comes to serial communication, nah ..........behaves randomly.... Any suggestion will be valuable for me.
Ok Mr. Per Westermark, here my codes are, ; Written in assembly using keil ; Codes for transmitter org 00h mov tmod,#20h ; timer 1 in auto reload mode mov th1,#0fdh ; for baudrate 9600 mov scon,#50h ; for selection of mode 1 with REN set to 1 setb tr1 start: mov sbuf,#0fh ; as leds are connected at port 2 with pins 0,2,4,6 next: jnb ti,next clr ti sjmp start end
;For receiver ; UART initialization is similar to previous one ;uart is initialized ; timer 1 is started mov p2,#00h start: jnb ri,next mov a,sbuf mov p2,a clr ri sjmp start end And for your kind information as i am transmitting the data continuously, and i am using UART mode for serial communication then why does synchronization matters between Rx and Tx. Let me give you some more information --> Using wired communication in simplex mode...
Now i hope that this information is sufficient about my project, if you wanna know something else then no problem, i will try to share as much as i can....
many threads have gone astray because the code was retyped into the post use cut-and-paste and read the instructions for posting code
if that is not the case, then look at this one start: jnb ri,next
my mistake... extremely sorry about that
; Written in assembly using keil ; Codes for transmitter org 00h mov tmod,#20h ; timer 1 in auto reload mode mov th1,#0fdh ; for baudrate 9600 mov scon,#50h ; for selection of mode 1 with REN set to 1 setb tr1 start: mov sbuf,#0fh ; as leds are connected at port 2 with pins 0,2,4,6 next: jnb ti,next clr ti sjmp start end ; Codes for transmitter org 00h mov tmod,#20h ; timer 1 in auto reload mode mov th1,#0fdh ; for baudrate 9600 mov scon,#50h ; for selection of mode 1 with REN set to 1 setb tr1 mov p2,#00h start: jnb ri,start mov a,sbuf mov p2,a clr ri sjmp start end
The second block of code is for receiver not for transmitter.... and yes that line is commented so i think that is not affecting my hardware right......
you DO have a MAX232(equivalent) between your chip and the PC I hope
Erik
Thanks for your help, but as i mentioned earlier i am trying to perform serial communication in wired mode between two MCs, so MAX232 is still required..??
Yes, if you have some distance between your two processors then you should use MAX232 or similar on both sides. Logic-level communication isn't robust for longer distances - it is intended for use within a PCB or for shorter cable distances to a neighbour PCB.
Well lets see, i will try that too.. and once again thanks to all of you for your valuable time and comments.