This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Matlab to 8051 communication

Hai...i tried to send the letter 'L','S','R' from matlab just opening in command line and typing...

se=serial('COM7');
set(se,'BaudRate',9600);
fopen(se);
fprintf(se,'%c','L','async');
fclose(se)

in matlab uc(at89c51)...and in response it should change its port settings accordingly...
Here is my code...

#include<reg51.h>
sbit mlp=P1^0;
sbit mln=P1^1;
sbit mrp=P1^2;
sbit mrn=P1^3;
void main(void)
{
  char i;
  SCON=0x50;  // to receive and transmitt serially
  TMOD=0x20;   // timer in mode 2 8 bit auto reload mode
   TH1=-3;   // baud rate 9600
   TR1 = 1;
   while(1)
     {
           if(TI==1)
                        TI=0;

                else if(RI ==1)
                        {
                                i=SBUF;
                                RI=0;
                        }
                if(i=='S')
                {
                mlp=mrp=1;
                mrn=mln=0;
                }
                else if(i=='L')
                {
                mlp=mrn=1;
                mrp=mln=0;
                }
                else if(i=='R')
                {
                mlp=mrn=0;
                mrp=mln=1;
                }
                else
                {
                mlp=mrn=0;
                mrp=mln=0;
                }
           }


}


I have my uc connections on bread board...and i dnt knw wat is the Tx,Rx pin in my connector...
So what i did was put a 2k Resistor in between so that not to fry the ckt accidentatally in case i changed the pins...the character is not at all being sent...the four pins are in 0 condition...see the ELSE part...in abv prgm... Please help... re soon...please....

Parents Reply Children
  • thank u for replying...now is this program okay???

    #include<reg51.h>
    sbit mlp=P1^0;
    sbit mln=P1^1;
    sbit mrp=P1^2;
    sbit mrn=P1^3;
    void main(void)
    {
      char i='\0';
      SCON=0x50;  // to receive and transmitt serially
      TMOD=0x20;   // timer in mode 2 8 bit auto reload mode
       TH1=-3;   // baud rate 9600
       TR1 = 1;
       while(1)
         {
    
               if(TI==1)
                    {       TI=0;
    
    
                            }
                    else if(RI ==1)
                            {
                                    i=SBUF;
    
                    if(i=='S')
                    {
                    mlp=mrp=1;
                    mrn=mln=0;
                    }
                    else if(i=='L')
                    {
                    mlp=mrn=1;
                    mrp=mln=0;
                    }
                    else if(i=='R')
                    {
                    mlp=mrn=0;
                    mrp=mln=1;
                    }
                    else
                    {
                    mlp=mrn=0;
                    mrp=mln=0;
                    }
                    RI=0;
    
                            }
    
    
    
    
               }
    }
    


    i still dint get the o/p...i have a cheap usb to serial converter along with transreceiver and my friend said he even did interrupts with this cable....so i dnt tink that wd be a problem....
    and i didnt chk o/p of serial com still to do....tel me f dis prog is okay??? also for serial communication do we have to mess with dat ale and psen pins...or anything out of ordinary u wd do for normal line follower???

  • also please note that all the above program...simulated prefectly in keil....

  • dnt tink wd chk tel f dis prog dat u wd

    I will copy your idea saving on typing and type 'no' instead of 'yes'

    Erik