avatar_elektro77

12F1822 de Adc kullanımı

Başlatan elektro77, 17 Haziran 2023, 15:07:56

elektro77

Hocam Başarmadım. Bu şekilde çalışmıyor.
IF (HAM>ESKI-5) AND (HAM<ESKI+5) THEN RETURN
"Return" nereye gidecek burada.
'-------------------------ANA DONGU---------------------------------------------
Basla:

ADCIN 0, HAM             ; Read the FVR channel

IF HAM>974 AND HAM<1023  THEN '4.2V  ve 4.00V arasında ise 
LED1=1:LED2=1:LED3=1
ENDIF

IF HAM>949 AND HAM<974  THEN  '4.00V ve 3.90V arasında ise
LED1=0:LED2=1:LED3=1
ENDIF 

IF HAM>901 AND HAM<949  THEN  '3.90V ve 3.70V arasında ise
LED1=0:LED2=0:LED3=1
ENDIF

IF HAM<901  THEN              '3.70V den düşükse
LED1=0:LED2=0:LED3=0
ENDIF

'IF HAM>1000  THEN '4.2V DEN BÜYÜKSE ŞARJA TAKILDI DEMEKTİR 'BURADA ŞARJ DEVRESİNİN 5 VOLT ÇIKIŞI GERİLİM BÖLÜCÜNÜN BOĞUMUNA GİRİLİR.
'GOSUB ARTIS_VAR
'ENDIF


IF (HAM>ESKI-5) AND (HAM<ESKI+5) THEN RETURN '5 Birimlik+- histerisiz vermiş olduk. Gerekirse 5 yerine 2-3 birim denenebilir.
IF  HAM>ESKI THEN ARTIS_VAR                  'Otomatikman bu komut histerisizden büyük artış olursa çalışacaktır.

goto basla
'------------------------ALT_PROGRAMLAR----------------------------------------
ARTIS_VAR:
PAUSE 100
LED3=1
pause 100
LED2=1
pause 100
LED1=1
pause 100
LED3=0:LED2=0:LED1=0
return
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

ete

Önceki mesajında kodlar çalıştı demiştin.
Orada yazdığın kodları alıp değiştirdim sadece çalışan kod varsa bu soruyu sormaman gerekirdi.

ADCIN 0,HAM        'Adc kanalı oku
	IF HAM=ESKI THEN RETURN  'önceki okunan ile yeni okunan aynı ise bir şeye bakmaya gerek yok geri dön 
	IF HAM>ESKI THEN GOSUB ARTIS_VARA_GIT' farklı ise ve yani okunan eski okunandan büyük ise artışvar'a git

Program içinde ADC okuma kısmını bir Altprogram haline getirirsen ve orayada ana program kısmından GOSUB ADC_BAK komutu ile gidersen RETURN komutu programı geldiği yere geri döndürür.
ALt program kullanmıyor isen o zaman Return yerine GOTO BASLA yazman gerekir. Temel mantık şu ADC okuma aralığı isteğin gibi değil ise tekrar geri başa dön ve program yeniden ADC okuması yaptırsın taaki uygun okuma değeri elde edinceye kadar. Olay budur.

Ete

Powered by EzPortal