rs232 haberlesme

Başlatan selvi, 02 Ocak 2014, 21:08:55

selvi

  pbp ve proton ile bir islemcide 2 farkli haberlesme yapmak icin programlar yazdim.calismadi. "ccs c"  programi hem donanimsal hem de yazilimsal rs232 seri iletisimi destekledigi icin tx ve rx programlari yazdim.yazilimsal olani calisti.donanimsal olani calismadi.

tx:
#include <16f628.h>
#fuses INTRC,NOWDT,PUT,NOPROTECT,NOLVP,NOBROWNOUT
#use delay(clock=4000000)

#use fast_io(a)
#use fast_io(b)

#define ac    pin_a0
#define but   pin_b4
#define kapat pin_a6

int8 ver=0,ver1=0;

#use rs232 (baud=9600, xmit=pin_a3, parity=N, stop=1, STREAM=iletisim_1) 

#use rs232 (baud=9600, xmit=pin_b2, parity=N, stop=1, STREAM=iletisim_2) 

void main()
{

   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);

   set_tris_a(0b11100111);
   set_tris_b(0b00010000);   

   output_a(0x00);
   output_b(0x00); 
   
   while(TRUE)
   {
     if(!input(ac))
     {
       ver1=100;
       fputc(ver1,iletisim_2); 
       delay_ms(500);
       ver=73;
        fputc(ver,iletisim_1); 
       while(!input(ac));
     }
     
     if(!input(but))
     {
       ver=142;
        fputc(ver,iletisim_1);
     } 
     

     if(!input(kapat))
     {
      ver1=200;
      fputc(ver1,iletisim_2);
      delay_ms(500);
      ver=4;
      fputc(ver,iletisim_1); 
      while(!input(kapat));
     }
     
   } 
   
}


rx:
#include <16f628a.h>     

#fuses INTRC,NOWDT,PUT,NOPROTECT,NOLVP,NOBROWNOUT

#use delay (clock=4000000) 

#use fast_io(a)
#use fast_io(b) 

#define led1   pin_b4
#define led     pin_a0

#use rs232 (baud=9600, rcv=pin_b5, parity=N, stop=1, stream=iletisim_1) 

#use rs232 (baud=9600, rcv=pin_b1, parity=N,stop=1, stream=iletisim_2) 
  
int8 k=0,m=0;
int1 us=0;                                              

#int_rda
void serihaberlesme_kesmesi ()
{
  disable_interrupts(int_rda);
  k=fgetc(iletisim_2);
}

void main()
{

   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   setup_oscillator(False);
  
   set_tris_a(0b00100000);
   set_tris_b(0b10100010);
 
   output_a(0x00);
   output_b(0x00);
   
   enable_interrupts(GLOBAL);
   enable_interrupts(int_rda);
  
   while(TRUE)
   {
     // m=fgetc(iletisim_1);
      
      if(k==100)
      {
        output_high(led1);delay_ms(100);output_low(led1);
      }
      
      if(k==200)
      {
        output_high(led1);delay_ms(100);output_low(led1);
      }
      
       m=fgetc(iletisim_1);
      
      if(m==73)
      {
        us=1;
        output_high(led);delay_ms(300);output_low(led);
      }
      
      if(us==1)
      {
      if(m==142)
      {
         output_high(led);delay_ms(300);output_low(led);
         
      }
      
       if(m==4)
       {
         us=0;
         output_high(led);delay_ms(300);output_low(led);
       }
      }
   }
}
Yaşam anlamlandırıldıkça kutsaldır....

yldzelektronik

Çalışmadı ne demek hocam?

Biraz daha açıklasaydın?
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

skara1214

rx ve tx i birlikte  tanımlamanız gerekli  şu anda ilk gördüğüm yanlış bu.16f628a yı bilmiyorumda pratiklik olarak ben 886 da #use rs232 ( baud = 9600 , UART , stream = iletisim_1)  ı kullanıyorum
Herkes ölür ama herkes gerçekten yaşamaz

selvi

  haberlesmeyi  tek yonlu kullaniyorum.onun icin hem txmit hemde rcv tanimlamasini yapmadim.onceden her iki tanimlamayi yapiyordum.forumu incelerken her ikisini kullanmadigini gordum.
   devreyi simulasyonda denedim.zaten tx programinda pin_a3 ve pin_b2 uclarini kullaniyorum.rx programinda pin_b5 ve pin_b1 uclarini kullaniyorum.normalde ac butonuna basildiginda rx de led1 ve led in yanmasi gerekiyor.fakat sadece led yaniyor.yani led1 yanmiyor.
Yaşam anlamlandırıldıkça kutsaldır....