Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

pic12f675 ve adc?

Başlatan mech, 18 Ocak 2007, 10:57:05

mech

12f675 ile adc yapamıyorum. Sitedeki aramalarım neticesinde elde ettiğim adcon0 ve ansel register bitlerini de denedim datasheetteki uyarlamaları da yaptım ancak yine de olmuyor.

gpio.0 'dan okuduğum voltaj 8 bit(256)  için mesela 40'dan fazla ise high gpio.5 şeklinde çalışan bir örnek verebilirseniz çok memnun olurum.Saygılar...
Bilginin Efendisi Olmak İçin Çalışmanın Kölesi Olmak Şarttır

uzaylivolkan

Include "modedefs.bas"        ' Seri mod kullanmazsan burayı kaldır
@ device INTRC_OSC_NOCLKOUT
TRISIO=%000011
DEFINE       OSC 4
okunandeger var word 
ANSEL = %00110001
ADCON0 =%11000001 
SO VAR   GPIO.2 '     0                       ' seri çıkış pini istersen kullanma
basla:
    ADCON0.1=1
notdone:
  IF ADCON0.1=1 Then notdone
okunandeger.highbyte =  ADRESH
okunandeger.lowbyte = ADRESL
pause 100
Serout SO,N2400,["DEGER: ", #okunandeger,13,10]  'seri çıkış i
if okunandeger > 800 then ' burdaki 800 değerini istediğin değere ayarla
GPIO.5 = 1
else
GPIO.5 = 0
endif
  goto basla
    

mech

çok sağol arkadaşım. Ama çalışmadı.Sanırım sorun adcin komutunun olmaması. Çalışan bir kodu nihayet bulup düzenledim.:
DEFINE ADC_BITS 10 
DEFINE ADC_CLOCK 3 
DEFINE ADC_SAMPLEUS 50 
number VAR word

CMCON = 7          ' Comparators off
ANSEL = %00000001  ' GPIO.0 A/D in, rest digital
ADCON0.7 = 1       ' Right justify for 10-bit
GPIO = %00000000 ' Initialize outputs
TRISIO = %00000001 ' GPIO.0 = input, rest outputs

    PAUSE 100

Loop:
    ADCIN 0, number ' (0-1023)
    IF (number > 400) AND (number <800) Then
      GPIO = %00000010
      
     EndIF
       GoTo loop
Bilginin Efendisi Olmak İçin Çalışmanın Kölesi Olmak Şarttır