ccs c yardımm seri iletişim???

mesut_06

Üye
Katılım
24 Nis 2008
Mesajlar
19
Puanları
1
Yaş
40
Arkadaşlar merhaba rs232 iletişim türünü kullanarak kızılotesi uzaktan kumandalı sayıcı projesi üzerinde çalışıyorum sayıcı uzaktan kumanda kontrolü ile 0-99 aşağı-yukarı sayma işlemi yapacak buraya kadar sıkıntı yok yaptım ama data=getc(); komutunu girdikten sonra kumandadan sadece sayıyı yükseltiğim yada düşürdüğüm zaman displayda rakamlar görünüyor diğer zamanlar görünmüyor bu konuda bana yardımcı olursanız sevinirm saygılar...

.c dosyası ve isis simülasyonu ektedir.
 

Ekli dosyalar

  • 0-99.rar
    15.8 KB · Görüntüleme: 10
bu kızıl ötesinde rs232 interrupt kullanılıp yapılamazmı
 
Son düzenleme:
olabilir ama rs232 kesmesi hakkında fazla bi bilgim yok sizin varsa tavsiyelerinizi alabilirim.....yardımcı olabilecek kimse yokmu acaba ??
 
veri geldimi diye bakabiliriz veya rs232 kesmesi ilede olabilir diye düşünüyorum rs232 kesmelide yapabilirim

alıcı ;

Kod:
#include <16F877A.h>#fuses XT,nowdt
#use delay (clock=4000000)


#use rs232 (baud=1200, uart, parity=N, stop=1)


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


#define  display_1  pin_c1
#define  display_2  pin_c2




char birler=0, onlar=0, sayi=0;


const int digit[10]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7C, 0x07, 0x7F, 0x6F};


int data;


int veri_al(){
if(kbhit())
return(getc());
else {       
return(0);
}
}



void main ()
{


set_tris_c(0b10000000);
set_tris_b(0x00);
output_b(0x00);


output_low(display_1);
output_low(display_2);


while(1)
   { 
       birler=sayi%10;  
       onlar=sayi/10;   
       output_high(display_2);  
       output_b(digit[birler]);   
       delay_ms(5);   
       output_low(display_2);  
       output_high(display_1);
       output_b(digit[onlar]); 
       delay_ms(5);   
       output_low(display_1); 
       data=veri_al();
       switch(data){
       case 0b01100001:if(!(sayi==99))sayi++;break;
       case 0b01100110:if(sayi>0)sayi--;break;
       }  
   }
   }

verici :

Kod:
#include <16F628A.h>#fuses XT
#use delay (clock=4000000)


#use rs232 (baud=1200, uart, parity=N, stop=1)


int arttir=0b01100001;
int azalt=0b01100110;




void main()
{
   
   while(1){  
     setup_timer_1(T1_DISABLED);      // T1 zamanlayıcısı devre dışı
     setup_timer_2(T2_DIV_BY_1,25,1); // Timer2 ayarları yapılıyor, PWM sinyali frekansı=~38Khz olacak şekilde
     set_pwm1_duty(12);               // PWM sinyalinin görev saykıl oranı belirleniyor
     setup_CCP1(CCP_PWM);             // CCP modülü PWM çıkışı için ayarlanıyor
      
      if(input(pin_a0)==0){
         putc(arttir);
         delay_ms(300);
      }
      if(input(pin_a1)==0){
         putc(azalt);
         delay_ms(300);
      
      }
   }
   
}
 
Son düzenleme:
Bu yazdığın kod hangi dil?

Tamam "C" olsa gerek.

Sent from my GT-I9100 using KontrolKalemi.Com Forumu mobile app
 
Moderatör tarafında düzenlendi:
C ile programlanabildiğini bilmiyordum.

device_name Cihazımdan your_app_name ile gönderildi
 
aboo67 kardeşim şimdi deneme fırsatım oldu evet devre istediğim gibi çalıştı ilgin ve yardımınından dolayı teşekkür ederim :)
 

Forum istatistikleri

Konular
130,108
Mesajlar
933,184
Kullanıcılar
453,163
Son üye
gurkangunc

Yeni konular

Çevrimiçi üyeler

Geri
Üst