B Portunu Binary Olarak Nasıl Okurum?

Başlatan hesap19, 30 Mart 2017, 09:53:06

hesap19

Merhaba
B portunu yukarıdan aşağı doğru binary olarak okumam lazım.Sonra duruma göre misal 10110 ise a0 1 olsun,Birde a portunun durumunu konum değiştirdikçe kaydetmem lazım.Bunu hangi kodlarla yapabilirim?Basit bir dtmf devresi yapmaya çalışıyorum.İf komutu içine b0=1 ve b1=0 ve b2=1 ve b3=1 ve b4=0 bu şekilde yapabilirim diye düşündüm ama B portunu binary olarak okursam direk 10110 olarak şartlandırırsam daha iyi olur diye düşündüm.Pic olarak 16F628A kullanıcam.Cevap yazan herkese şimdiden çok teşekkür ederim.

yldzelektronik

İlgili portun giriş registerini okursanız byte olarak bütün bir değer elinizde olur.
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

vitruvius

CCS C'nin kılavuzu'nu okudunuz mu? input_x() fonksiyonuna bakın.

hesap19

O kumutla portu oduk.Sonra if şartının içine bu binary sayıyı nasıl yazıcam?

mehmet

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

Salih


Örnek:

if (input_B() == 0b01000110)
{
....
...
}

hesap19

A portunun pinlerinin son durumlarını nasıl kaydederim?

RaMu

Portu okuduktan sonra,
karşılaştırmadan önce,
okuduğun port değerinin istemediğin bitlerini 
"&"  yani "AND" işlemi ile sıfırlarsan dahada güzel olur.


if (  (input_a() & 0b00011111) ) == 0b00010110){.......}
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

omereliusuk

B portunu input yazarak tamamen giriş haline getiriyorsunuz.
Bazıları giriş bazıları çıkış ise bu komut tam anlamıyla çalışmaz.
*(0×0a) &0×ff
şeklinde bir ifade yazarsanız 0xff değerini hangi portları okuyacaksınız ona göre değerlendirmek kaydıyla istenilen pinleri tris değerine dokunmadan yapabilirsiniz.
input_state

https://www.ccsinfo.com/forum/viewtopic.php?t=46396

Burada bir örnek var.

RaMu

#9
Bende dün " input_state(PIN_X); " komutunu arıyordum,
sanki portu okuyan versiyonuda vardı gibi hatırlamıştım ama yanılmışım sanırım,

input_state sadece bir pini okuyabildiğinden her zaman işe yarayamayabiliyor.
Yine verdiğin linkteki şu örnek ile porttun o anki giriş çıkış ayarını değiştirmeden port değeri okunabiliyor:

#use FAST_IO(B)     
i = input_b(); 
#use STANDARD_IO


Veya şöyle bir yöntemde kullanılabilir:
#byte reg_PortA = GETENV("SFR:PORTA")

veya 18F veya üstü kullanıyorsa:
#byte reg_LatA = GETENV("SFR:LATA")

Diye tanımlayıp, programın içinde:

if (  (reg_PortA & 0b00011111) ) == 0b00010110)
{
.......
}


18F ve üstü için:
if (  (reg_LatA & 0b00011111) ) == 0b00010110)
{
.......
}

Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

30f4011

merahaba arkadaşlar ben mmc_spi.c dosyasını silmişimde biriniz mmc_spi.c dosyanın ccs c kodunu atabilir mi lütfen

xoom


Alıntı yapılan: 30f4011 - 31 Mart 2017, 20:11:20
merahaba arkadaşlar ben mmc_spi.c dosyasını silmişimde biriniz mmc_spi.c dosyanın ccs c kodunu atabilir mi lütfen
https://yadi.sk/d/mg8dvGyl3GXrm3