Pic Basic 12 bit Paralel Binary değer Nasıl okuyabilirim

Başlatan tolganor, 24 Mayıs 2018, 21:45:33

tolganor

ETE hocam ve üye arkadaşlarım iyi akşamlar. Uğraş verdiğim bir projede CD4040 12 Bit sayıcı entegresindeki paralel binary değerini Pic Basic dilinde nasıl okuma yaptırabilirim. (16F877 kullanıyorum). Cevabınız için şimdiden teşekkür ederim.

onurinci

Ete hocamla şöyle bir şey yapmıştık,belki işine yarar..

tolganor

Cevabın için teşekkür ederim Onur ;) İnceleyeceğim. Başka yöntemi var mı?

ete

Nasıl okurum diye sorunca acaba fiziksel bağlantı şeklinimi soruyorsun yoksa CD4040 çıkışlarını nasıl bir değişkene aktarırım bunumu soruyorsun. Her iki sinide açıklamaya çalışayım.

Malum elimizde 12 adet pin var okunacak. Bunu ya pic de araya bir başka entegre kullanarak (4067 gibi) tek bir pine bağlayıp okumak yada direk 12 adet pini picin pinlerine bağlayarak okumak mümkün.Önce kolaydan başlayalım istersen yani 12 adet pini 12 adet pic pinine bağlamış olalım.Bu durumda 40 bacaklı bir Pic kullanarak, PORTC ve PORTD yi ortak kullanmak gerekecektir. Sırası ile 0-7 arası pinler PORTC de PortC.0-7 pinlerine ve kalan 8-11 arası pinler de PortD de PORTD.0-3 arası pinlere bağlanırsa işin kolaylaşmış olacaktır.Geriye bunları okumak kalıyor. Bunuda ,Oku değişkeni word cinsinden olmak kaydı ile,
OKU=PORTD << 8    'önce D portunu alıyoruz ve 8 bit sola kaydırıyoruz.
OKU=OKU+PORTC  'Sonra buna PORTC yi ekliyoruz.Böylece bitler yerlerine oturmuş oluyor.
OKU=OKU & %0000111111111111)  'her ihtimale karşın yalnızca 12 biti dikkate alıyoruz.
Aynı işi tek satırda şöylede yapabiliriz
OKU=((PORTD & %00001111)<<8+PORTC

Böylece okuma işlemi tamamlanmış oluyor.

Şimdi diğer metoda bakacak olursak. 4067 nin ilk 12 biti 4040 pinlerine bağlı diyelim.
Malum bu entegrenin ABDC adresleme bacakları var. ve birde X çıkış ucu vardır.
Adres bacaklarına 0-11 arası bir sayı verdiğiniz aman o sayıya denk gelen çıkış pini X pinine bağlanmış olur.
Böylece bizde 12 adet biti sırası ile okuyup bir değişkene yerleştirebiliriz.
Bu yöntemde bit bazında okuma yapılacaktır.
ABDC bacakları Pic PORTC.0-3 pinlerine bağlı X pini de PORTC.4 pininde bağlı.

OKU=0 

FOR INDEX=0 TO 11
PORTC=PORTC & (%11110000)+INDEX
OKU.0[INDEX]=PORTC.4
NEXT

Böylece 12 bit okunup OKU değişkenine aktarılmış olacaktır.Aklıma başka bir yöntem gelmiyor.

Ete

tolganor

ETE Hocam cevabınız haftalarca uğraşın birkaç cümleyle özeti . Bunun için çok minnettarım .

Bununla yine bağıntılı bir şey daha sormak istiyorum .

CD4040 entegresini 16 Volt ile çalıştırmak istesem ve 16F877 mikroişlemcim ise 5 Volt ile çalıştırarak okutma yaptırabilirmiyim ?

veri okumada high ve low olarak uçları Voltaj farkından dolayı sorun çıkarırmı?  Bunun çözümü nedir ? 78L05 gerilim regülatörü kullansam örneğin bu defa da LOW sinyalim ile HIGH sinyalim arasında çok fazla voltaj farkı oluşacak bu sorunu nasıl halledebilirim ? (optocupler kullanmadan )

Tekrar teşekkür ederim hocam

furkan41

Alıntı yapılan: tolganor - 25 Mayıs 2018, 11:32:07
ETE Hocam cevabınız haftalarca uğraşın birkaç cümleyle özeti . Bunun için çok minnettarım .

Bununla yine bağıntılı bir şey daha sormak istiyorum .

CD4040 entegresini 16 Volt ile çalıştırmak istesem ve 16F877 mikroişlemcim ise 5 Volt ile çalıştırarak okutma yaptırabilirmiyim ?

veri okumada high ve low olarak uçları Voltaj farkından dolayı sorun çıkarırmı?  Bunun çözümü nedir ? 78L05 gerilim regülatörü kullansam örneğin bu defa da LOW sinyalim ile HIGH sinyalim arasında çok fazla voltaj farkı oluşacak bu sorunu nasıl halledebilirim ? (optocupler kullanmadan )

Tekrar teşekkür ederim hocam

CMOS Cıkışlara zener 5.1 votluk zener diyot bağlayabilirsin , böylelikle pic in pinlerine 5 voltu regüle eder.

ete

4040 entegresi 5 v ile çalışabilir max voltajıda 15 v diye biliyorum 16 olmaz sanırım. High ve low seviyeleri besleme voltajına bağlıdır. Biri 15 volt diğeri 5 v ile çalışırsa anlaşamazlar.  Sen en iyisi 4040 için bir regülatör kullan.
4040 'ı 15 volt ile besleyip çıkışlarına zener bağlamak doğru çözümmüdür bilemiyorum ama bana kalırsa 15 voltluk bir high seviyesinin low tarafıda 0,8v olan standart seviyenin biraz üzeridir ve birinin low defiğini diğeri high olarak algılayabilir. Zira zener voltajın üstünü traşlar yinede denenebilir.
Ete

mehmet

Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
http://www.mehmetbilgi.net.tr
CC BY

ete


Powered by EzPortal