fotodiyot sinyalini iki kanal ile algılama

Başlatan ican43, 11 Nisan 2012, 17:22:30

ican43

Allah razı olsun, yardımlarınızdan dolayı. Uygulamamda PİC16f877 RA1,RA2 girişlerine bağlanan LDR veya fotodiyot değişimlerini algılayıp(gerilim değişimlerini) karşılaştırarak çıkışlarındaki ledlerin yakılmasını istiyorum. Girişlerden birisinin algılanıp değişimini yaptık ama ikinci girisin algılanmasını yapamdım.Yazdığım programı aşağıdaki gibi düzenledim ama set_adc_channel(kanal);  ifadesinde hata veriyor. Biraz daha yardımcı olabilirmisiniz ,acaba analog girişlerin 16f877 dosyasında değişiklikmi olması gerekiyor...sağolun
#include <16f877.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT
#use delay(clock=4000000)
#byte port_a=5
#byte port_b=6
int a,b;
int kanal;
float sonuc;
void main()
{
   setup_adc_ports(AN0_AN1_AN3);
   setup_adc(ADC_CLOCK_INTERNAL);
   set_tris_a(0xff);
   set_tris_b(0x00);
   while(1)
   {
   kanal=0
   set_adc_channel(kanal);
   delay_us(20);
   a=read_adc();
      sonuc=a*(5.0/256);
      sonuc=(pin_a0);
      sonuc=(pin_a1);
      port_b=read_adc();
   kanal=1
   set_adc_channel(kanal);
   delay_us(20);
   b=read_adc();
   sonuc=b*(5.0/256);
   sonuc=(pin_a0);
   sonuc=(pin_a1);
   port_b=read_adc();
   if((input(pin_a0))>=(input(pin_a1)))
   {
   output_b(0x01);
   delay_ms(100);
   }
   else if((input(pin_a0))<=(input(pin_a1)))
   {
   output_b(0x02);
   delay_ms(100);
   }
   else
   {
   output_b(0x00);
   delay_ms(100);
   }
   }
}

bilginer

kanal=0 <-- noktali virgul eksik gorunuyor.

taso

   if((input(pin_a0))>=(input(pin_a1)))
   {
   output_b(0x01);
   delay_ms(100);
   }
   else if((input(pin_a0))<=(input(pin_a1)))
   {
   output_b(0x02);
   delay_ms(100);
   }
yerine

int kanal1,kanal2;
set_adc_channel(0);
delay_us(10);
kanal1=read_adc()
set_adc_channel(1);
delay_us(10);
kanal1=read_adc();

if(kanal1>=kanal2){

  output_b(0x01);
   delay_ms(100);

}else{

  output_b(0x01);
   delay_ms(100);

}