kızılötesi ve seri iletişim yardım ??

Başlatan mstbzr, 07 Ekim 2013, 23:50:16

mstbzr

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...

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

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

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

#define  display_1  pin_e1
#define  display_2  pin_e2


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

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

char data;


void main ()
{

set_tris_c(0b10000000);
set_tris_b(0x00);
set_tris_e(0x00);
output_b(0x00);
output_c(0x00);
output_low(display_1);
output_low(display_2);


while(1)
   {
     
     
         birler=sayi%10;  
         onlar=sayi/10;   
 
data=getc();

         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); 
         
if (data==0b01100001)   
       {
          sayi++;    

          birler=sayi%10;;       
          onlar=sayi/10;         
          delay_ms(500);
             
        
          {
              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);  
             
             }
        }

      else if (data==0b01100110&&(sayi!=0))  
       {
          sayi--;    

         birler=sayi%10;;        
         onlar=sayi/10;         
         delay_ms(500);
         
          {
               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);   

              }
       }
       if (sayi==100)   
          sayi=0;


   }
   }

Salih

getc() Komutu seri data gelinceye kadar bekler.
Kbhit() komutunu incele, onu kullanarak bu problemi aşarsın.

mstbzr

evet o komutu denedim ve bir arkadaşın yardımıyla halletim teşekkür ederim...