ccs c de adc kontrolü(yardım)

nanit

Üye
Katılım
21 Ocak 2011
Mesajlar
159
Puanları
1
Yaş
33
arkadaşlar bi potansiyometre ile ledleri yakmaya çalışıyorum microdenetleyicimin türü P16F628A nerede hata oldugunu bulursanız sevinirim
HTML:
#include <16F628A.h>
#device ADC=8
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000) 
void main(void)
{ 
     int16 adc_value;
     setup_adc(ADC_CLOCK_DIV_2);
     setup_adc_ports(ALL_ANALOG); 
   while(TRUE)   {
     set_adc_channel(AN0);
      delay_us(10);
      adc_value = read_adc(); 
      output_bit(PIN_B0, (adc_value > 0));
      output_bit(PIN_B1, (adc_value > 32));
      output_bit(PIN_B2, (adc_value > 64));
      output_bit(PIN_B3, (adc_value > 96));
      output_bit(PIN_B4, (adc_value > 128));
      output_bit(PIN_B5, (adc_value > 160));
      output_bit(PIN_B6, (adc_value > 192));
      output_bit(PIN_B7, (adc_value > 224)); 
      }
}
 
Arkadaşım yanliş bilmiyormasam set_adc_kanal(0) yazman lazım,yanliş olmuş o. Olmadıysa ;

Ayrıca setup_adc_portsdan sonra ALL analog yapacağına sadece setup_adc_ports(ANO) dene zaten tek port kullanıyorsun hepsini analog nedne yapıyorsun.

Eğer olmazsa öyle ;
Bir kaç öneride bulunayım müsadenle. Trislerde hata olabilir , fonksiyondan önce #use fast_io(A) yaz. Sonra sadece 0. A portunu giris yapan set_tris_A(0X01) komutunu yaz. Nereye dersen , int16 adcnin hemen altına yaz. Sanırım bunlar sorunu çözer.
 
Eski 16F628 lerde ADC yoktu , yenilerde var mı ?
Yoksa comparator vardır , işini görür mü ?

Neyse , aşağıda bir kaç pic için Türkçe pdf var :
 

Ekli dosyalar

  • türkçe pic.rar
    2.7 MB · Görüntüleme: 9
tamam sorun KAZIMUGURunda dedigi gibi yanlış pic seçmişim ben var diye biliyordum herşey için teşekkürler
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…