IR transmission problem .....anybody please help..

when i send multiple values using IR transmission…its not receiving properly…the values are toggling…please help…to solve this problem…

the code is like this

Code 1:

#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);


const int buttonPin = 8; 


int buttonState = 0;  
char num1='0';
char op='+';

//dirt cheap wireless RX
void setup()
{
  // set up the LCD's number of rows and columns: 
  lcd.begin(16, 2);
  // Print a message to the LCD.
  //lcd.print("hello, world!");
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);

  // Clear Timer on Compare Match (CTC) Mode
  bitWrite(TCCR1A, WGM10, 0);
  bitWrite(TCCR1A, WGM11, 0);
  bitWrite(TCCR1B, WGM12, 1);
  bitWrite(TCCR1B, WGM13, 0);

  // Toggle OC1A and OC1B on Compare Match.
  bitWrite(TCCR1A, COM1A0, 1);
  bitWrite(TCCR1A, COM1A1, 0);
  bitWrite(TCCR1A, COM1B0, 1);
  bitWrite(TCCR1A, COM1B1, 0);

  // No prescaling
  bitWrite(TCCR1B, CS10, 1);
  bitWrite(TCCR1B, CS11, 0);
  bitWrite(TCCR1B, CS12, 0);

  OCR1A = 210;
  OCR1B = 210;
  
  Serial.begin(2400);
  pinMode(13, OUTPUT);
  lcd.print("2nd Module");
}

void loop()
{
  // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin);
  
  
  if(buttonState==HIGH)
  {
    switch(op)
    {
      case '+':op='-';break;
      case '-':op='*';break;
      case '*':op='/';break;
      case '/':op='+';break;
    }
  }
  // if incoming serial
  if (Serial.available()) 
  {
    //readSerial();
    num1=Serial.read();
    digitalWrite(13, HIGH);
    
  }
  else
  {
    digitalWrite(13, LOW);
  }
   lcd.setCursor(8,1);
  lcd.print(num1);
  lcd.setCursor(0,1);
  lcd.print(op);
  Serial.print(num1,BYTE);
  delay(100);
  Serial.print(op,BYTE);
  delay(100);
  //Serial.flush();
  //delay(10);
}

Code 2:

#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);


const int buttonPin = 8; 


int buttonState = 0;  
char num1='0';
char op='+';
char num2='0',charsum='0';
int intnum1=0,intnum2=0,sum=0;
int atoi(char);


//dirt cheap wireless RX
void setup()
{
  // set up the LCD's number of rows and columns: 
  lcd.begin(16, 2);
  // Print a message to the LCD.
  //lcd.print("hello, world!");
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);

  // Clear Timer on Compare Match (CTC) Mode
  bitWrite(TCCR1A, WGM10, 0);
  bitWrite(TCCR1A, WGM11, 0);
  bitWrite(TCCR1B, WGM12, 1);
  bitWrite(TCCR1B, WGM13, 0);

  // Toggle OC1A and OC1B on Compare Match.
  bitWrite(TCCR1A, COM1A0, 1);
  bitWrite(TCCR1A, COM1A1, 0);
  bitWrite(TCCR1A, COM1B0, 1);
  bitWrite(TCCR1A, COM1B1, 0);

  // No prescaling
  bitWrite(TCCR1B, CS10, 1);
  bitWrite(TCCR1B, CS11, 0);
  bitWrite(TCCR1B, CS12, 0);

  OCR1A = 210;
  OCR1B = 210;
  
  Serial.begin(2400);
  pinMode(13, OUTPUT);
  lcd.print("3rd Module");
}

void loop()
{
  // read the state of the pushbutton value:
  
  // if incoming serial
  if (Serial.available()) 
  {
    //readSerial();
    num1=Serial.read();
    delay(100);
    op=Serial.read();
    delay(100);
    //digitalWrite(13, HIGH);
    intnum1=atoi(num1);
  }
  buttonState = digitalRead(buttonPin);
  
  
  if(buttonState==HIGH)
  {
    switch(num2)
    {
     case '0':num2='1';break;
     case '1':num2='2';break;
     case '2':num2='3';break;
     case '3':num2='4';break;
     case '4':num2='5';break;
     case '5':num2='6';break;
     case '6':num2='7';break;
     case '7':num2='8';break;
     case '8':num2='9';break;
     case '9':num2='0';break;
    }
    intnum2=atoi(num2);
  }
  
  /*else
  {
    digitalWrite(13, LOW);
  }*/
  switch(op)
  {
    case '+':sum=intnum1+intnum2;break;
    case '-':sum=intnum1-intnum2;break;
    case '*':sum=intnum1*intnum2;break;
    case '/':sum=intnum1/intnum2;break;
  }
  
  lcd.setCursor(12,1);
  lcd.print(num1);
  
  lcd.setCursor(8,1);
  lcd.print(num2);
 
  lcd.setCursor(0,1);
  lcd.print(op);
  
  //charsum=itoa(sum);
  Serial.print(sum,BYTE);
  delay(100);
  lcd.setCursor(12,0);
  lcd.print(sum);
  
  
  //Serial.flush();
  //delay(10);
}

int atoi(char x)
{
  int y;
  switch(x)
  {
  case '0':y=0;break;
  case '1':y=1;break;
  case '2':y=2;break;
  case '3':y=3;break;
  case '4':y=4;break;
  case '5':y=5;break;
  case '6':y=6;break;
  case '7':y=7;break;
  case '8':y=8;break;
  case '9':y=9;break;
  }
  return y;
}

these 2 codes are given in 2 arduino duemilanoves.....n while sending multiple values from one arduino to another....its not displaying properly.....n also the values gets interchanged ............some problem in receiving the values which is sent from one arduino duemilanove to the next , it is receiving out of order........

....its not displaying properly.....n also the values gets interchanged ............some problem

What is it displaying? What is "properly"? What is "n"?

Please, we're not psychic - you need to explain what is happening, and how this differs from what you expect to happen.