Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

Rs232 haberleşme problemi

Başlatan avisenna, 29 Kasım 2012, 23:27:18

avisenna

Merhaba arkadaşlar. Rs232 haberleşmeyi öğrenmek için küçük bi uygulama yaptım ama çalışmıyor, sıkıntı nerde anlamadım.

Aşağıda yazdığım örnek kod mevcut. Pic başladığı zaman 1er saniye ara ile b6 pinine bağlı led yanıp sönüyor. Sonra rs232 kesmesi sürekli aktif.
Rs232 kesmesi tarafında ise Pic'in rx(Pin_c7) ucundan alınan bilgi port b ye aktarılıyor. port b ye bağlı 8 led var. Ayrıca Pic'in tx(pin_c6) ucuna hexadesimal  0x82 göndermek istiyorum.
Pic'e bağlı Rs232 haberleşmesi yaptığım bir modül var, modül 3.3 volt çıkış veriyor, ben pic 3.3 volt'u lojik1 diye algılar diye direk bağladım.

Sizce sıkıntı nerde, nerde hata yapıyorum.

#include "D:\BİLGİ BELGE\CCS denemeler\yeniproje\main.h"

#use rs232 (baud=9600, xmit=pin_c6, rcv=pin_c7, parity=N, stop=1, bits=8)

int8 gelen;
int8 giden;

#int_rda
void modul_kesmesi ()
{
   disable_interrupts(int_rda);
  
   gelen=getc();
   output_b(gelen);
   giden=0x82;
   putc(giden);
   delay_ms(3000);
  

}

void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   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);

   // TODO: USER CODE!!
   
   set_tris_b(0x00);
   output_b(0x00);
  
   
   
   
   output_high(pin_b6);
   delay_ms(1000);
   output_low(pin_b6);
   delay_ms(1000);
   output_high(pin_b6);
   delay_ms(1000);
   output_low(pin_b6);
   delay_ms(1000);
   output_high(pin_b6);
   delay_ms(1000);
   output_low(pin_b6);
   
   enable_interrupts(GLOBAL);
   
   while(1)
   {
      enable_interrupts(int_rda);
   }

}

semih

#1
#int_timer0
void timer0kesmesi()
{
      giden=0x82;
      putc(giden);
}

void main()
{
setup_timer_0(RTCC_INTERNAL | RTCC_DIV_256);
set_timer0(1);
enable_interrupts(INT_timer0);
enable_interrupts(int_rda);
enable_interrupts(GLOBAL);
while(1)
   {
      gelen=getc();
      output_b(gelen);
      delay_ms(3000);
   }
}


Sorun tam olarak nerede söylememişsin.Ama kodlarını yukarıdaki gibi değiştir. rda kesmesi ile timer0 kesmesini değiştir. Belki düzelir.