8086 8255 porta portb portc adres belirleme sorunu

Başlatan shark27, 13 Ocak 2015, 10:03:53

shark27

herkese ii çalışmalar....

8086 işlemcide A0 ve A1 ucundaki veriler değiştiğinde 8255 Porta,poırtb,portc ve kontrol registerlerina ulşabiliyoruz.

A1  A0
0     0        PORTA
0     1        PORTB
1     0        PORTC
1     1        KONTROL

şimdi diyelimki PORTA'nın adresi 0300H olsun.sondaki 0 (0000) olduğundan en sagdaki 2 bitten dolayı PORTA adresi olduğu veriliyor.buna göre 0001 yani 301 PORTB 0010 PORTC  0011 Kontrol kaydedicisi olarak belirleniyor..

şöle bi sıkıntı varki dün sınavda PORTA adresi 0303H olarak verilmişti.buna göre PORTB PORTC ve kontrol kaytdedicilerin adresleri nasıl hesaplnır?yardımlarınız içn teşekkürler.Hayırlı günler

Kabil ATICI

Araya konan devre var demektir. En basit tahmin her iki hat değillenmiş.(NOT) Bana göre 303h'dan geriye doğru say.

Tabii hoca bunu nasıl düşünmüş orasını bilemem...

ambar7

polleme

303 olunca bu kontrol register oluyor. PORTA değil de kontrol register seçilmiş olur, çünkü A0 = A1 = 1'dir. Bu durumda PortA, PortB ve PortC yine aynıdır (300, 301 ve 302)

shark27

sınavdan önce hocaya gittik.port adresleri geriye doğru gitmez dedi.soruda PORTA nın adresini 0303h diye vermişti buna göre portb portc ve kontrol registerlerinin adreslerini bulun dedi...Sınav bitti hala araştırıyoruz bütünleme için :)

Kabil ATICI

tam adres kod çözümü yapıldığı ise
0303h portA
0304h portB
0305h portC olur.
0306h kontrol
ambar7

polleme

#5
303 PortA ise son octeti 0011 olarak varsayalım. Bunu şöyle düşünelim: 8255, port seçimleri için PortA 00, PortB 01, PortC 10 ve Kontrol 11 istiyor. İşlemciden ise 11 ile PortA'ya erişmek istiyoruz. Bu durumda A0 ve A1 uçlarını birer NOT (değil, yani inverter) kapısından geçiririz. Böylece 8086'dan 303 çıktığında 8255'e 300 olarak (son iki bir sıfırlanır) ulaşır, 8255 te PortA'nin seçildiğini anlar. Benzer şekilde 8086 304 gönderdiğinde bu 307 ile PortB olur, 305 gönderdiğinde 306 ile PortC olur ve nihayet 306 gönderildiğinde 305 ile Kontrol register olur. Kısacası

MCU'dan gönderilen  8255'e gelen  seçilen port
  303 - 0011             300 - 0000      PortA
  304 - 0100             307 - 0111      KONTROL
  305 - 0101             306 - 0110      PortC
  306 - 0110             305 - 0101      PortB

mesaj birleştirme:: 14 Ocak 2015, 02:15:30

Her ikilik düzendeki sayıda en düşük anlamlı iki bite (A0 ve A1) dikkat edin.


mesaj birleştirme:: 13 Ocak 2015, 12:23:03

Şu şekilde de olabilir:

MCU'dan gönderilen  8255'e gelen  seçilen port
  303 - 0011             300 - 0000      PortA
  302 - 0010             301 - 0001      PortB
  301 - 0001             302 - 0010      PortC
  300 - 0000             303 - 0011      KONTROL

Port adresleri geriye gitmez dendiğinden bu opsiyon kabul görmeyecektir. Ama temel amaç kullanılacak portları seçmek olduğundan bu yöntem de çalışacaktır.

z

A1  A0
0     0        PORTA
0     1        PORTB
1     0        PORTC
1     1        KONTROL

0x303..0x306 nın en düşük iki biti

0x303    11
0x304    00
0x305    01
0x306    10

0x303..0x306 aralığı için zaten CS sinyalin vardır.

A1 A0 işlemcinin adres çıkışları, 8255 A1 , A0 uçları ise 8255 A0 ve 8255 A1 olsun.

Biz 8255 A0 A1 sinyallerini üreteceğiz

A1 A0     8255 A1 A0
1    1 ->          0   0
0    0 ->          0   1
0    1 ->          1   0
1    0 ->          1   1

8255 A0 = !A0
8255 A1 = A1 XOR A0
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

polleme

z hocam, bu çok daha güzel bir çözüm oldu, en azından portlar sıralı oldu. Ben iki ucu da NOT ile elde etmiştim, siz birini NOT, diğerini XOR ile elde ediyorsunuz.

shark27

arkadaşlar cevaplarınız için teşekkürler.burdaki sorun hocanın sölediği "PORT adresleri geriye doğru gitmez" cümlesi.acaba düşünüyorum bu cümleyi 8255 içinmi söledi?Yoksa 8255 i ayarlayan 8086 içinmi?

Kabil ATICI

#9
Kendi adıma devre çizimini kolaylaştıracaksa ki zaman zaman gerekir, programda her türlü cambazlığı yaparım...
Program biraz karışıyor, ama sonuçta benim istediğim fonksiyonları yerine getirir...

Hatta ram adres ve data bağlantıları bile sıralı olmayabilir. EPROM ve FLASH bağlantılarında daha zorlayıcı gereklilik vardır.
ambar7

z

Alıntı yapılan: shark27 - 13 Ocak 2015, 14:34:51
arkadaşlar cevaplarınız için teşekkürler.burdaki sorun hocanın sölediği "PORT adresleri geriye doğru gitmez" cümlesi.acaba düşünüyorum bu cümleyi 8255 içinmi söledi?Yoksa 8255 i ayarlayan 8086 içinmi?

Şunu demek istemiş. Digital birimin içindeki registerlerden ilkinin  adresi verilmişse diğer registerler geriye doğru gitmez.

Örneğin 8255 0x300 adresine oturdulduysa register adresleri 0x300, 0x301, 0x302 ... şeklinde ileri doğru gider.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com