at89c51

Başlatan serdarkaradeniz, 25 Ocak 2008, 14:16:22

serdarkaradeniz

Keil ile harici elemanlara adres ve data hattı ile ulaşan programı inceliyorum. Anlayamadım. Varsa başka basit bir örnek verebilirmisiniz.

Birde merak ettiğim harici elemana(RAM) ulaşırken pointer ile işi bitirmiş. ALE ve diğer pinler otomatik mi devreye giriyor. Böyle bir şey olmaz da anlamadım. Tanımlama şu şekilse

sfr (Auxr , 0x8E)  

#define Writeport     ((unsigned char*)0x2D000L)  //Bu tanımıda anlamadım

Auxr= 0x02;  // set ERAM enable ALE
"Writeport=0x00;

Klein

eğer EA ucunu VCC ye bağlamamış isen , external adrese ulaşmak istediğinde  ale ve psen otomatik devreye girer. aynı şekilde adres ve data bus cpu modunda çalışır.  Eğer EA VCC ye bağlı ise 8051 mikrokontrolcü modunda çalışır. Bu durumda External bir adres vermiş isen, bazı modellerdeki   standart 256 byte dışında kalan adres bölgesine dallanmak isteyecektir.

serdarkaradeniz

define Writeport ((unsigned char*)0x2D000L)
"Writeport=0x00;  (harici bellekteki belirli bir adrese 00 deeğerini sanki dahili bir belleğe ulaşır gibi ulaşıyor ve sıfır değerini yazıyor Onu anladım)

0x2D000L değeri nasıl oluyor. Port0'dan 0x00  ve Port2' den 0xD0 fakat 2 değeri hangi port ile ilişkili?

Ayrıca bir portu veya bir pini  keil'de hem input hem output olarak nasıl kullanıyoruz.

mesela şu kodlama doğru olurmu;

while(true)
{
 P1=0X20; // P1 portuna hex 20 yükle  OUTPUT
 z=P1;   // P1 portundaki değeri z' ye yükle  INPUT
}

ahmet2004

Şematik varmı?

Klein

evet yukarıdaki port kullanımı doğrudur. 8051 mikrokontrolcü ailesinde giriş çıkış kavramı yoktur. port çıkışı open collector bir transistör ve pullup tan oluşur. porta aslında sadece 0 yazarız. 1 yazdığımızda portu boşa çıkarmış oluruz. ve pullup ile yukarı çekildiği için 1 görürüz.  Portu yazılımla 0 yapıp portu okumak istediğinde 0 okursun. Portu 0 yaptığında dışarıdan 1 yapmak istersen transistörü bozarsın. Fakat  portu 1 yaptığında  portu dışarıdan da 0 yapabilirsin.

8051 in adres haritasını şu an hatırlamıyorum. Ama bu bahsettiğin adres dış adres gibi görünüyor. Belki 8255 gibi bir harici I/O konmuş olabilir. ve bu adres bu harici I/O nun adresi olabilir.