Haberler:

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

Ana Menü

Port dan Bİnary değer okuma ?

Başlatan ekozo, 28 Mayıs 2012, 12:40:42

ekozo

Tuş takımı d portuna bağlı. Tuş takımı taramada tuşa basıldığında d portundaki değeri bir registere atıp LCD de göstermek istiyorum.
data=input_(d) yazıyorum bunun d portundaki değeri dataya attığını düşünüyorum. mesela 3 tuşuna basıldı d portu (00000011) oldu bu binary değeri datada saklamak istiyorum.  LCD de aynı binary değerini görmek istiyorum ama printf ile datayı yazdırdığımda 0 değeri görünüyor.    Burdaki sorun nedir. Değer dataya atanamadı mı? data değişkeni binary olarak mı saklıyor yoksa decimal mi ?
tuş takımı taramada bi sorun yok ondan eminim 3 e basıldığında 00000011 değeri port d ye geliyor.

JKramer

data değişkeninin tipi nedir? printf fonksiyonun nasıl kullandınız? İlgili kod parçacığını yazmanız gerekiyor.

ekozo

   printf(lcd_putc,"\ftus:");   

       while(TRUE)
     
       {
         lcd_gotoxy(5,1);
         if (keypad_oku()!='\0')
         {

          data=input_d();
         
        while (x < 8)
         {

        if(shift_left(&data,1,0)==1)
        lcd_putc("1");
        else lcd_putc("0");
        x++;
               
         }
         printf(lcd_putc,"%d",data); 
             
         }



Üst tarafında tuş takımı tarama var.  değişkeni integer. bu kodda data değişkenini kendimiz değer verirsek LCD de yazıyor. Sorun porttan alamamak

taso


yasinkir55

PortD bilgi alıp direk bir değişkene atıyamazsın ataman için en başla adrese eşitlemen lazım.

# byte  portd  0x09

portD adresi bburası bu yaptıktan sonra bilgi=portd yazarsan portd bilgi içerisine atılır.

yazırmak icin
while(1)
{

bilgi=portd;                                       // PortD bilgi değişkenine atandı.

lcd_gotoxy(1,1);                               // LCD imlecinin yeri belirlendi.
printf(lcd_putc," PortD: %d", bilgi);  // LCD ekranda portD değerleri yazıldı.

}
Üniversite'de Benden Yardımını Esirgemeyen Sn. Serdar ÇİÇEK Hocama Çok Teşekkür Ederim. Bu Seviyeye Gelmemde Yardımları Kişisel Olarak Gelişmemde Hocama Tekrardan Çok Teşekkürlerimi Sunarım :)

Eren Eraslan

Alıntı yapılan: yasinkir55 - 01 Haziran 2012, 03:32:13
PortD bilgi alıp direk bir değişkene atıyamazsın ataman için en başla adrese eşitlemen lazım.

# byte  portd  0x09

portD adresi bburası bu yaptıktan sonra bilgi=portd yazarsan portd bilgi içerisine atılır.

yazırmak icin
while(1)
{

bilgi=portd;                                       // PortD bilgi değişkenine atandı.

lcd_gotoxy(1,1);                               // LCD imlecinin yeri belirlendi.
printf(lcd_putc," PortD: %d", bilgi);  // LCD ekranda portD değerleri yazıldı.

}
neden bir adrese eşitliyoruz onu anlayamadım hocam
insanın içine işleyen şarkılar ;  https://soundcloud.com/reeraslan

yasinkir55

PortA 0x06
PortB 0x07
PortC 0x08
PortD 0x09
PortE 0x0A



Bunlar portların hafızası yani PortD bir değişiklik oldu zaman 0x09 adresinin içerisinde bir başka bilgi gelene kadar o değerleri saklıyor.
örneğin; portD deki bilgi 00001111 bu bilgi bir başka bilgi gelene kadar saklanır. Saklanması için #byte portd 0x09 olarak adresini belirleyip aktif etmen gerekmektedir. bilgi=portd dediğin zamanda ise portD içerisindeki 00001111 bilgisi bilgi değişkeni içerisine aktarılır. Bir farklı değer geldi zaman 11110000 olarak portd adresindeki bilgide sürekli değişir.
Üniversite'de Benden Yardımını Esirgemeyen Sn. Serdar ÇİÇEK Hocama Çok Teşekkür Ederim. Bu Seviyeye Gelmemde Yardımları Kişisel Olarak Gelişmemde Hocama Tekrardan Çok Teşekkürlerimi Sunarım :)