Rf haberleşme Sorunu

Başlatan bymerag, 09 Mayıs 2015, 12:46:06

bymerag

Arkadaşlar kolay Gelsin
Rf'nin alıcı taraf kodları
char az,i=0, msg[6];
void main()
{
 UART1_Init(2400);
 trisb.rb4=0;
 trisb.rb5=0;
 trisb.rb6=0;
portb.rb4=0;
portb.rb5=0;
portb.rb6=1;
 PCON.OSCF = 1;
 delay_ms(100);

 while(1)
         {
          if(UART1_Data_Ready())
          {
           msg[i]=UART1_Read();
           if(msg[0]=='y' || msg[0] == 's')//Eğer msg[0] 'y' veya 's' ise i değişkeninin 1 arttır.
                                           {i++;}
          }
          if(i==3)
                  {
                   if(msg[0]=='y' && msg[1]=='a' && msg[2]=='1' )
                   {
                   portb.rb4=1;
                   }
                   if(msg[0]=='y' && msg[1]=='a' && msg[2]=='2' )
                   {
                   portb.rb5=1;
                   }
                   if(msg[0]=='s' && msg[1]=='o' && msg[2]=='1' )
                   {
                   portb.rb4=0;
                   }
                   if(msg[0]=='s' && msg[1]=='o' && msg[2]=='2' )
                   {
                   portb.rb5=0;
                   }
                   i=0;
                   msg[0]=0;

                  }
         }
}


Rf Verici Kodları

char pre[10]={0xAA,0xAA,0xAA,0xAA,0xAA,255,255,255,255,255};
char kontak1A[3]={'y','a','1'};  //Senkron için en az bir byte sıfır gönder kesinlikle.....
char kontak1K[3]={'s','o','1'};
char kontak2A[3]={'y','a','2'};  //Senkron için en az bir byte sıfır gönder kesinlikle.....
char kontak2K[3]={'s','o','2'};
char i=0,j=0;

void kurulum()
{
 UART1_Init(2400);
 trisb.b0=1;
 trisb.b7=1;
  trisb.b6=0;
  portb.rb6=1;
 PCON.OSCF = 1;
 Delay_100ms();
 CMCON=7;
}

void main()
{
 kurulum();
 while(1)
       {
         if(portb.b0)
         {
          for(i=0;i<10;i++) {UART1_Write(pre[i]);}
          for(j=0;j<10;j++){for(i=0;i<3;i++){while(!UART1_Tx_Idle());UART1_Write(kontak1A[i]);}}
          }
          else
          {
          for(i=0;i<10;i++) {UART1_Write(pre[i]);}
          for(j=0;j<10;j++){for(i=0;i<3;i++){while(!UART1_Tx_Idle());UART1_Write(kontak1K[i]);}}
          }
///////////////////////////////////////////////////////////////////////////////////////////////////
         if(portb.b7)
         {
          for(i=0;i<10;i++) {UART1_Write(pre[i]);}
          for(j=0;j<10;j++){for(i=0;i<3;i++){while(!UART1_Tx_Idle());UART1_Write(kontak2A[i]);}}
          }
          else
          {
          for(i=0;i<10;i++) {UART1_Write(pre[i]);}
          for(j=0;j<10;j++){for(i=0;i<3;i++){while(!UART1_Tx_Idle());UART1_Write(kontak2K[i]);}}
          }
       }
}


benim haberleşme ile ilgili bir sıkıntım yok.
Sıkıntım şu
1-) vericiden tuşa basmadığımız zaman alıcıya sürekli kapat komutlarını gönderiyor.bunu tek sefere mahsus nasıl yaparım.
2-) vericinin elektriği kesildiğinde alıcı bazen kafasına göre çıkışları aktif ediyor bu nedendir.acaba bunun sebebi alıcımıdır yoksa vericimidir.

kodlarda bi terslik varmıdır?

Yardımlarınızı bekliyorum.