Wednesday, 1 April 2015

Micro controller Program Uart

UART Micro-controller Program (VISHNU KIRAN MARAGANI)


  #include <REGX51.H>
  sbit motor1_1=P1^0;
  sbit motor1_2=P1^1;
  sbit motor2_1=P1^4;
  sbit motor2_2=P1^5;
  sbit led1=P1^2;
  sbit led2=P1^3;
  sbit wave=P1^7;
void uartx(unsigned char*);
void delay(int);
//void select(unsigned char);
void main()
{
char c;
 unsigned int a[50], i=0;
     motor1_1=0;
motor1_2=0;
motor2_1=0;
motor2_2=0;
led1=0;
led2=0;

   
TMOD=0X20;                                    //timer1 mode2
TH1=0XFD;                              //baud rate 9600
SCON=0X50;                              //mode 1 and set REN (Receive enable) bit
TR1=1;                              //start the timer
 while (1)
{
wave=~wave;
uartx("menu\n");
uartx("1.right\n");
uartx("2.left\n");
uartx("3.forward\n");
uartx("4.backward\n");
while (RI==0);                        //monitoring RI bit until rise the bit
                                   //transmit characters 'a' through SBUF register
a[i]=SBUF;     //moving Data from SBUF to array
RI=0;                 //clear the RI bit
SBUF=a[i];                 //array assigned to SBUF register
while (TI==0);                 //monitoring TI bit until rise the bit
TI=0;
c=a[i];                 //clear the RI bit
/*SBUF=a[i];                 //array assigned to SBUF register
while (TI==0);                 //monitoring TI bit until rise the bit
TI=0;*/           //clear the TI bit
 if(c==0x31)
 {
uartx("1.right\n");
motor1_1=1;
motor1_2=0;
motor2_1=0;
motor2_2=0;
led1=1;
led2=0;
delay(10);
 }
 else if(c==0x32)
 {
uartx("2.left\n");
motor1_1=0;
motor1_2=0;
motor2_1=1;
motor2_2=0;
led1=0;
led2=1;
delay(10);
 }
 else if(c==0x33)
 {
uartx("3.forward\n");
motor1_1=1;
motor1_2=0;
motor2_1=1;
motor2_2=0;
led1=1;
led2=1;
delay(10);
 }
 else if(c==0x34)
 {
   uartx("4.backward\n");
     motor1_1=0;
motor1_2=1;
motor2_1=0;
motor2_2=1;
led1=0;
led2=0;
delay(10);
 }
 else
 {
uartx("wrong selection. select 1/2/3/4\n");
 }

}
}
void uartx(unsigned char*p)
{
char mydata;
 while(*p!='\0')
 {
  mydata=*p;
  SBUF=mydata;
  while(TI==0);
  TI=0;
  p++;
 }
}
void delay(int k)
{
int l,j,i;
 for(l=0;l<=k;l++)
 {
  for(j=0;j<=1275;j++)
  {
   i++;
   i--;
  }
 }
}