nerde hata yapıyorum =(

Başlatan BALDIRCAN, 20 Temmuz 2006, 17:48:02

BALDIRCAN

Selamlar
Aşağıda yazdığım programda porta.1 ya verdiğim voltaja göre istediğim bazı portların output vermesini istiyorum. Daha önce analog bilgiye göre programlama yapmadığımdan çok fazla bilgim yok bu konuda. Programı çalıştırdığımda ve 1.5 veya 2.1 volt verdiğim zaman bile portb.0=1 oluyo 5sn sonra sıfırlanıyo tekrar. Hangi voltu versem dahi sadece portb.0=1 oluyo. Nerede yanlış yapıyorum birisi bana söyleyebilir mi?
Şimdiden teşekkürler
(Ayrıca programda mantık hatası olabilir, dedim ya pek bilmiyorum)

   DEFINE OSC 20            DEFINE  ADC_BITS        8        ' Set number of bits in result
   DEFINE  ADC_CLOCK       3        ' Set clock source (3=rc)
   DEFINE  ADC_SAMPLEUS    50       ' Set sampling time in uS
'-------------------------------------------------------------------   
   TRISB.4=0      
   TRISB.6=1      
   TRISA=%11111111
   ADCON1 =%10000010
'-------------------------------------------------------------------
   LED1 var PORTB.4
   I var byte
   total var word
   value var byte
'-------------------------------------------------------------------

MAIN:
   low portb.4
   low portb.0
   low portc.0
   low portc.3
   low portc.4
   low portc.5
   if portb.6=1 then MAIN
   high portb.4
   total = 0
   pause 2000
   For I=1 to 10
      ADCIN 1, value
      total = total + value         
   next I
   value = total / 10
   goto LOOK

LOOK:
   if ADCON0.2=1 then LOOK   
   if (value>0) and (value<=51) then high portb.0   '<1 volt
   if (value>51) and (value<=102) then high portc.0   '<2 volt
   if (value>102) and (value<=153) then high portc.3   '<3 volt
   if (value>153) and (value<=204) then high portc.4   '<4 volt
   if (value>204) and (value<=255) then high portc.5   '<5 volt
   pause 5000
   GoTo MAIN
End

Logan

BALDIRCAN kardeş, sen bu ADC meselesine iyice taktın. :D Şaka yapıyorum sakın alınma.Programını inceledim, düzgün çalışıyor.Fakat bir yerde hata yapıyorsun.ADC çevrimi 8 bit yaparken sağa yaslamalı olarak kullanamazsın.ADCON1 registerine %10000010 değil, %00000010 yükle.Sorun çözülsün.Kolay gelsin.Sonuçtan haberdar edersen sevinirim. :)
İmza.

BALDIRCAN

Çalıştı. Çok sağol valla beni büyük bir dertten kurtardın.