Elektrik Mühendisliği · Sayı 290 · 1982 / 10

Z80'DE PARALEL GİRİŞ/ÇIKIŞ

Elektronik ve yarı iletkenler Teknik / bilimsel makale

Yıl
1982
Sayfa
11
Okuma süresi
15 dk
Görüntülenme
0

Konu

Elektronik ve yarı iletkenler

İlgili: Bilgisayar, yazılım ve internet

Anahtar kelimeler

  • Z80
  • mikroişlemci
  • PIO
  • giriş/çıkış komutları
  • 8080
  • kayıtlayıcı

Özet

Z80 mikroişlemcisinin yapısı, kayıtlayıcıları, bayrak yapısı, adresleme biçimleri ve özellikle giriş/çıkış komut grubu ayrıntılı olarak teknik açıdan anlatılmakta, örnek programlarla desteklenmektedir.

Tam metin

Metin PDF'ten otomatik çıkarılmıştır; tablo, şekil ve formüller eksik ya da hatalı olabilir. Özgün dizgi için PDF'e bakın.

Aykut DALGIÇ Elektrik Mühendisliği Bölümü Orta Doğu Teknik Üniversitesi

GİRİŞ

Konunun daha iyi izlenebilmesi amacıyla önce Z80 hak kında (onun bacak gösterimi, kayıtlayın yapısı, bayrak yapısı, komut kümesi ve adresleme biçimleri hakkında) kısa bir özet yapılmıştır. Daha sonra Z80 komut kümesi nin giriş ve çıkış grubu komutları incelenmiş ve bunlarla

il.sjili kısa program örneklerine yer verilmiştir. Son olarak 1.1 Z80 Paralel Giriş /Çıkış Devresi (PIO) ele alınmış ve onun programlanması kısaca ve örneklerle gözden geçi rilmiştir.

A.1. Z80

Z80, Intel 8080'nin çok geliştirilmiş bir modelidir. Intel 8080 makina dilinde yazılmış herhangi bir program Z80'de de işlenebilir. Z80, 8080 gibi 8 bitlik bir mikroiş Icmcidir. Adresleyebilme kapasitesi 216 = 64 K Bayt'tır. Z80'de, 8080'in aritmetik işlemlerdeki eksikliklerini kar şılamak üzere fazladan komutlar bulunmaktadır. İki ba ğımsız indis kayıtlayıcısı vardır. Bunlar Z80'nin adresle me yeteneğini arttırmaktadır.

780 donanımsal açıdan da 8080'den ileri düzeydedir. Ör neğin 8080'de üç ayrı güç kaynağının kullanılmasına kar cın Z80'de tek güç kaynağı (+5V) kullanılmaktadır.

Z80'de kesme olarak, maskelenebilen kesme girişi INT ve maskelenemeyen kesme girişi NMI bulunmaktadır.

Şekil 1'de tek bir tümleşik devreden oluşan Z80'nin ba cak gösterimi görülmektedir.

Z80'de 18 tane 8 bitlik ve 4 tane 16 bitlik kayıtlayıcı var dır. Birikeç (akümülatör) ve bayrak (flag) kayıtlayıcıları ikişer tanedir. Z80'deki kayıtlayıcılar, Şekil 2'deki Z801 nin basit genel yapısında da gösterildiği gibi, aşağıdaki kay ulayıcılardan oluşmaktadır:

Ana Kayıtlayıcılar Kümesi: A (Birikeç), F (Bayrak), B, C, D, E, H ve L.

Seçenek Kayıtlayıcıları Kümesi: A'(Birikeç), F'(Bayrak), B\ C\ D1, E1, H' ve L\

Genel Amaçlı Kayıtlayıcılar: İndis Kayıtlayıcıları IX ve IY, Yiğit Göstericisi (SP), Program Sayıcısı (PC), Kesme Vektörü (I), Bellek Yenileme (R).

Herhangi bir anda, Ana Kayıtlayıcılar ve Seçenek Kayıt layıcıları Kümelerinin sadece birindeki genel amaçlı ka yıtlayıcılar kullanılmaktadır. Bir değiştirme komutuyla Ana ya da Seçenek Kayıtlayıcı Kümesinin hangisinin kul lanılacağı belirlenebilir.

Şekil 3'te Z80'nin işlevsel blok şeması gösterilmektedir.

Z80'nin Aritmetik Mantık Biriminde (ALU'da) CPU'nun 8 bitlik aritmetik ve mantıksal komutları işlenmektedir. ALU tarafından gerçekleştirilebilen işlemler şunlardır :

Toplama Çıkarma Mantıksal VE (AND) Mantıksal VEYA (OR)

SYSTEM ) ݰ COUTR0\.\ "O

Z80 CPU MK 3880 MK 3880 4

ZSU'ııııı ÜJtjk

ANA KAYITLAYICILAR BAYRAK KAYII

BtRİKEÇ (8) LAYTCISI (8)

RENEL

KAYIT

LAYI

Cl

LAR

SEÇENEK KAYITLAYICILART

KÂVKAKKAYıı

»lRtKEÇ

F'

(8) LAYICISI(8)

GENEL

D'

KAYIT (t)

WYI

H1 Cl

,.AR

E' (8)

L'

{g)

Z80 ALU

Şekil : 2 ZSO'nin Basit Genci Yjpısı

CPU VE ŞİSTEM DENETİM İŞARETLERİ

KOMUT ÇÖZÜMLEME VE CPU DENETİMİ

CPU DENETİMİ

8 BİTLİK VERİ TAŞITI

VERİ TAŞITI DENETİMİ

tP VFRT

TASTTT

CPU KAYITLAYICILARI

ADRES DENETİMİ

Şekil : 3 Z80'nin İşlevsel Blok Şemjsı

16 BİTLİK ADRES TAŞITI

Mantıksal Dışlayan Veya (EXCLUSIVE OR) Karşılaştırma

Sağa veya sola kaydırma ve döndürme (aritmetik ve mantıksal)

Arttırma A/altma Biti birleme Biti sıfırlama Biti test etme Z80'in Bayrak Yapısı :

Z80'in her iki Bayrak Kayıtlayıcısı, çeşitli CPU işlemle riyle değiştirilebilen (sıfırlanan ya da birlenen) 6 bitlik bir bilgi taşırlar. Bunların 4 tanesi test edilebilir, yani bunlar atlama (Jump), çağırma (Cali) ve geri dönme (Return) komutları için birer koşul olarak kullanılabilir ler. Bu 4 bit şunlardır :

1) Elde Bayrağı (C): Bu, birikecin (akümülatörün) en ö ııemli bitinden olan eldeyi gösterir. Örneğin bir toplama işlemi sırasında birikecin en önemli bitinden bir elde ya ratılırsa o zaman Elde Bayrağı 1 olur.

2) Sıfır Bayrağı (Z): Yapılan işlemin sonucu sıfırsa bu bayrak 1 olur. Aksi takdirde O'dır.

3) İşaret Bayrağı (S): Bu bayrağın işaretlenmiş sayılarla kullanılması amaçlanmış olup işlemin sonucu eksi ise işaret bayrağı 1, artı ise 0 olmaktadır.

4) Eşlik/Taşma Bayrağı (P/V): Bu iki amaçlı bayrak, bi rikeçte mantıksal işlemler yapıldığı zaman sonucun eşli ğini belirtir. Eğer işaretlenmiş sayılarla 2'nin tümleyeni ne göre aritmetik işlemler yapılıyorsa, o zaman bu bay rak taşmayı belirtir.

Örneğin ikili (binary) sayı 11101110'nın eşliği = 1, 11101100'nın ise O'dır. Eğer ikili sayıdaki 1'lerin topla mı çift ise Eşlik 1, tek ise Eşlik 0 olmaktadır.

Taşma ile ilgili olarak ta aşağıdaki örnek ele alınabilir.

+ 120 = 0111 1000

+ 104 = 0110 1000

elde(C) =0 1110 0000= 32 (+224 bu yedi hane için olan maksimumu yani + 127'yi geçtiği için taşma var.)

Yukarıdaki örnekten de görüldüğü gibi, işaretlenmiş sayı larla 2'nin tümleyenine göre yapılan aritmetik işlemler de, taşma.elde (C) yaratılmadan da meydana gelebilmek tedir.

Bu saydığımız 4 test edilebilir bayrak dışında test edile meyen 2 bayrak daha vardır. Onların ikisi de BCD arit metiğinde kullanılırlar. Bunlar : 1) Yarım Elde Bayrağı (H) ve 2) Topla/Çıkar Bayrağı (N)'dir.

8 bitlik olan Bayrak Kayıtlayıcısında, bu saydığımız bay rakların dağılımı şu şekildedir.

[S | Z [~X J H [ X j P/Vj "N"| C

(X belirsiz anlamında kullanılmıştır.)

ZSO'in Komut Kümesi

Z80, 8080A'nın 78 değişik çeşitteki komutu dahil ol mak üzere 158 değişik çeşitteki komutu işleyebilmekte dir. ZSO'nin işleyebildiği bu 158 değişik çeşitteki ko mutlar aşağıdaki gibi gruplandırılabilir :

Yükleme ve Değiştirme Grubu Blok Aktarma ve Arama Grubu Aritmetik ve Mantıksal İşlemler Grubu Döndürme ve Kaydırma Grubu Bit Düzenlemesi Grubu Dallanma Grubu (Atlama, Çağırma ve Geri Dönme) Giriş/Çıkış Grubu Temel CPU Denetimi Grubu

Z80 komutları bir, iki, üç veya dört bayt uzunlukta ola bilmektedir. Birden fazla bayttan oluşan komutlar ard arda gelen bellek yerlerinde depolanmaktadır.

Z80'de Adresleme Biçimleri

Z80 komutlarının çoğu, CPU'nun iç kayıtlayıcılarında, bellekte veya giriş/çıkış portlarında olan veri üzerinde iş lemlerde bulunurlar. Adresleme, komut içinde verinin adresinin nasıl belirlendiğini belirtir. Z80'de kullanılın adresleme biçimleri aşağıda verilmektedir :

hemen Adresleme : Bu tür adrcslemede, veri komutun içindedir. Yani bellekte işlem kodunu takip eden bayt ve baytlar veri olarak alınır.

'İşlem Kodu j 1 veya 2 bayt

jVeri

1 veya 2 bayt (8 bit veya 16 bitlik veri)

D,

Örnek : LD B, FFH* (8 bitlik veri) LDBC. FFFFH (16 bitlik veri)

Değiştirilmiş Sayfa Sıfır Adreslemesi : Z80, bir baytlık özel bir çağırma komutuna sahiptir. Bu çağırma komu tunun adresi belleğin sayfa sıfırdaki 8 yerinden biri ola bilmektedir.

İşlem Kodu 1 bayt

(çağırmanın yapılacağı adres

Örnek : RST p (p şu değerlerden birisi olabilir : 00H, 08H, 10H, 18H, 20H, 28H,30H, 38H.) — Bağım (Göreceli Adresleme) Bu tür adreslemede işlem kodundan sonraki 1 baytlık veri, atlamanın o andaki

* H verilen sayının 16'lık sayı sistemine göre olduğunu belirtir. B verilen sayının 2'li sayı sistemi ne (binary) göre olduğunu belirtir.

programın bulunduğu yerden ne kadar uzağa yapılacağı nı bildirir. İşaretlenmiş 2'nin tümleyeni şeklinde olan bu verinin A + 2'ye ilave edilmesiyle atlamanın adresi bulu nur. (A, işlem kodunun bulunduğu bellek yerinin adresi dir.)

Örnek : JR e (e işaretlenmiş 2'nin tümleyeni şeklindedir.)

. Doğrudan Adresleme : Bu tür adreslemede, işlem ko dundan sonra gelen 2 bayt adresin kendisini verir.

İşlem Kodu

j

1 veya 2 bayt

Adresin az önemli ı I

bayt. (AaH)

(,

Adresin en önemli

baytı (AeH)

JJ

2 bayt

(Adres: AeAaH)

Örnek : JP nn (nn, OH ile FFFFH arasında bir sayıdır.)

İndisli Adresleme : Bu tür adreslemede, işlem kodunu takip eden 1 baytlık verinin indis kayıtlayıcısmm (IX veya IY) içeriğine ilâve edilmesiyle bellekteki yeni adres bulunmuş olur. Veri, işaretlenmiş 2'nin tümleyeni şek lindedir. İndis kayıtlayıcısının hangisi olduğu işlem kodu tarafından belirlenir.

ı İşlem Kodu i İşlem Kodu

2 baytlık işlem kodu

I Veri (d)

örnek : ADD A, (IX + d)

Kayıtlayıcı Adresleme : Bu tür adreslemede komut, verinin yerleştirilmiş olduğu kayıtlayıcı ya da kayıtlayıcı çiftini belirler.

Örnek : LD D, E

İşleneni İçinde Olan Adresleme (Implied Addressing): Bu tür adreslemede işlem kodu, verinin veya veriden biri nin hangi CPU kayıtlayıcısında bulunduğunu belirtir.

örnek : SUB B

Kayıtlayıcı Dolaylı Adresleme : Bu tür adreslemede komut, verinin bellekte yerleştirilmiş olduğu yerin adre sinin bulunduğu kayıtlayıcı çiftini belirler.

Örnek : LD A, (BC)

Bit Adresleme : Bu tür adreslemede komutlar, herhan gi bir bellek yerinin veya CPU kayıtlayıcısmm belirlen

mesini kayıtlayıcı adresleme, kayıtlayıcı dolaylı adresle me veya indisli adreslemeyle, bu bulunan 8 bitten birinin belirlenmesini de işlem kodunda belirlenen 3 bitle yapar lar.

Örnek : SET b, r (r A, B, C. D, E, H, L kayıtlayıcıların dan birini, b'de bitin bu kayıtlayıcı içindeki yerini belir tir.)

A.2 Z80'de Giriş/Çıkış Grubu Komutları

Z80'deki giriş/çıkış grubu komutları 8080'deki giriş/çı kış grubu komutlarının hepsini kapsamaktadır. Z80 bu nun yanısıra 8080'de bulunmayan bazı giriş/çıkış komut larına da sahiptir. Bunlar Z80'in giriş/çıkış işlemlerinde 8080'den bir derece daha üstün olmasına neden olmakta dır.

Z80'nin giriş/çıkış grubu komutlarının kısa adları (mne monic), onların sembolik açıklamaları ve etkiledikleri bayraklar aşağıdaki tabloda gösterilmektedir :

Komutun Kısa Adı (Mnemonıc)

Komutun Y aptıjı işlem

İN A, (n)

AM

INr.(C) INI

• r« (C)

(HL) (C) B B1 HL HL+I

<HL) (C)

BB1

HL HL+I

ve B * 0 olana

kadir tekrarla

IND

(HL) (C)

B B1

HL HL 1

INDR OUT (n), A

(HL) (C) B B1 HL HL I veB Oolana kadar tekrarla (n) A

OUT(C),r

(C) r

(C) (HL) B B1 HL HL+1

<C) <HL) B B1 HL HL+1 ve B 0 olana kadar tekrarla

OUTD

(C) (HL) B B1 HL HL 1

OTDR

(C) (HL) B B 1. HL HL 1 ve B 0 olana kadar »krarh

Etkilenen Bayraklar

S z P/V c

EEp X E» X X X1X X

IjlemKodu (H) DB ED ED A2

ED ta

ED AA

ED BA

D3 ED ED A3

ED B3

ED AB

ED BB

Not : Yukarıdaki tabloda kullanılan semboller şu anlam ları taşımaktadır.

= Bayrak etkilenmemektedir. 1 = Bayrak birlenmektedir.

21 r,

ELEKTRİK MüllES DİŞLİĞİ 2 90

X = Bayrağın durumu belli değildir. E = Bayrak işlemin sonucuna göre etkilenmektedir. * = Eğer B 1 sıfırsa sıfır bayrağı (Z) birlenmekte, aksi takdirde Z sıfır olmaktadır. P = P/V bayrağı işlem sonucunun eşlik durumuna göre etkilenmektedir. r = A, B, C, D, E, H, L kay Ulayıcılarından herhangi biri n = 8 bitlik port adresi ( ) = Parantezin içinde bulunan kayıtlayıcıların veya adreslenmiş bellek yerinin içeriğini verir. (Onlarda depo lanmış veriyi gösterir.)

Bütün Z80 giriş/çıkış komutlarında kullanılan port adres leri 8 bitliktir.

Yukarıda sayılan giriş/çıkış komutları dört gruba ayrıla bilir :

1) Port adresini doğrudan kullanan komutlar (Doğrudan Adreslemeyi kullanan komutlar) İN A, (n) veOUT(n), A. Bu komutlar, komutta adresi verilmiş olan port ile biri keç (A) arasındaki 8 bitlik veri aktarımını gerçekleştirir ler.

2) Tek baytlık ve kayıtlayıcı dolaylı adreslemeyi kulla nan komutlar : İN r, (C) ve OUT (C), r. Bu komutlar, be lirtilen kayıtlayıcı ile adresi C kayıtlayıcısında verilmiş olan port arasındaki 8 bitlik veri aktarımını gerçekleşti rirler. Port adresi sürekli olarak C kayıtlayıcısında bu lunmaktadır. Bu port adresi program belleğinin bir par çası değildir. Bu nedenle o, bir değişken olarak kullanıla bilmekte ve programa bir esneklik getirebilmektedir.

3) Blok giriş/çıkış komutları: INI, OUTI, IND ve OUTD. INI ile OUTI komutları, HL kayıtlayıcı çiftinde adresi verilen bellek yeri ile C kayıtlayıcısında adresi verilen port arasındaki veri artırımını gerçekleştirirler. Bunun yanısı ra her iki komutta HL'deki adresi birer arttırır ve B ka yıtlayıcısındaki sayıcının değerini birer azaltırlar. IND ve OUTD komutları tek fark dışında INI ve OUTI komutla rıyia aynı işlevi görürler: IND ve OUTD komutları HL'deki adresi birer arttırmazlar, tam tersi birer azaltırlar.

4) Tekrarlanan blok giriş/çıkış komutları : INIR, OTIR INDR ve OTDR. INIR ve OTIR komutları, INI ve OUT, komutlarının işlevlerini B'deki sayıcının değerinin sıfıra düşmesine kadar tekrarlarlar (yaparlar). INDR ve OTDR komutlarıyia IND ve OUTD komutları arasında da böyle bir benzer ilişki vardır.

Giriş/çıkış komutlarının daha iyi anlaşılabilmesi amacıy la, aşağıda bu komutlarla ilgili çok basit program örnek leri verilmektedir. (Bu örneklerde zamanlama göz önün de bulundurulmayacaktır.)

Örnekler:

1) Birikeci (A'yı) giriş portu 5'ten (adresi 5H olan giriş portundan) yükle

— Doğrudan adreslemeyle İN A, (5)

Kayıtlayıcı dolaylı adreslemeyle LD C, 5 İN A, (C)

2) Birikeçteki (A'daki) veriyi çıkış portu 55H'e gönder.

Doğrudan adreslemeyle OUT (55H), A Kayıtlayıcı dolaylı adreslemeyle LD C, 55H OUT (C), A

3) Giriş portu 15H'ten F5AOH ile adreslenmiş bellek yerini yükle

A,(15H) ; VERİY İ ELDE ET

(F5AOH), A VERİ Y İ DEPOLA

A,(C)

(FSAOH),A ; VERİ Y İ DEPOLA

HL.FSAOH ; BELLEK Y ERİ Nİ N

INI

; VERİY İ ELDE

ET VE DEPOLA

4) 1800H ile adreslenmiş bellek yerindeki veriyi çıkış portu F8H'e gönder.

OUT (F8H), A

; VERİY İ GÖNDER

LUT (C),A

; VERİ Y İ GÖNDER

HL, 1800H ; BELLEK Y ERİNİN

VE GÖNDER

5) 1800H ile 1808H arasındaki bellek yerlerini giriş portu 6'dan yükle

LD HL.1800H VERİNİN BEL LEKTEKİ BAŞ

Nİ ELDE ET •

DEVAM: İN LD

A. (6) (HL),A

VERİY İ ELDE ET VERİY İ DEPOLA

INC HL

D) NZ DEVAM

Blok giriş/çıkış komutlarıyia LD HL.1800H ; VERİNİN BEL

ELEKTRİK Mi HENDÎSLİĞI 290

2 Ki

DEVAM : INI

; VERİ Y İ ELDE ET

VE DEPOLA

Tekrarlanan blok giriş/çıkış komutlarıyla

VE DEPOLA (SA

Y ICI SIFIR OLUN

CAY A KADAR)

6) Bellekte bulunan 1800H ile 1808H arasındaki veriyi çıkı; portu 6'ya gönder

DEVAM : LD A, (HL)

; BELLEKTEN VE

RİY İ ELDE ET

OUT (6), A

; VERİY İ ÇIKIŞ

PORTUNA GÖN

DJNZ DEVAM

Blok giriş/çıkış komutlarıyla

HL, 1800H VERİNİN BEL

PORT ADRESİNİ ELDE ET

DEVAM : OUTI

VERİY İ ELDE ET VE ÇIKIŞ PORTU

NA GÖNDER

— Tekrarlanan blok giriş/çıkış komutlarıyla

HL, 1800H : VE Rİ Nİ N BEL

; BELLEKTEKİ VE RİY İ ELDE ET VE

ÇIK IŞ PORTUNU

GÖNDER (SAY ICI

SIFIROLUNCAY A

KADAR)

Görüldüğü gibi "tekrarlanan blok giriş/çıkış" komutları sürekli olan bir veri aktarımını gerçekleştirmektedirler. Bu durumda, aktarımlar arasında bir zamanlama yapmak söz konusu olamamaktadır. Bu nedenle bu komutlar, çev re elemanlarının CPU ile aynı hızda çalışmadığı durum

•21;

larda veya zamanlamanın clonanıms.ıl olarak ele alınıp çözümlenemediği clurumlaıda kullanılamazlaı.

ZSO Paralel Giriş/Çıkış Devresi (PIO), CPU ile aynı hı/da çalışmaktadır. PIO kullanarak, çevresel elemanlara yapı labilecek veya onlardan gelebilecek veri aktarımlarının zamanlaması yapılabilmektedir.

A.3 Z80 Paralel Giriş/Çıkış Devresi (PIO)

PlO'nun b.ıcak »(isterimi Şekil 4'te, PlO'mın blok şema sı da Şekil 5'te gösterilmektedir. PlO'da 8'şer bitlik iki tane port bulunmaktadır. (Port A ve Port S). Bu portla rııı blok şeması da Şekil 6'da !>östeı ilmektedir. PlO'nun kesme ile ilgili o/elliklerine ve yeteneklerine bu ya/ıda yer verilmeyecektii .

Her PIO, dön giriş port adresini ve dürt çıkış port adre sini kaplar.

Eğer PlO'da C/D SEL A j'e ve U/A SEL A()'a bağlanmış ise port adresleri aşağıdaki gibi olacaktır :

Vlreslenmis Ka> Ulayıcılar Veri Kayıtlayıcısı A

Veri kayıtlayıcısı L> Vnetim Kayıtlayıcısı A .Denetim Kayıtlayıcısı B

Port Adresleri (PORTAD ile uaşladığı Düşünülürse)

PORTAD

PORTAD+1

PORTAD + 2

PORTAD+3

Denetim Kayı.tlayıcısı A veya B'ye gönderilen verinin D7D6D5D4D3D2D1D0 şeklinde olduğu kabul edilirse PIO Denetim Kayıtlayıcılarının adreslemesi de aşağıdaki şekilde gösterildiği gibi ifade edilebilir.

Kayıtlayın

Adreslemesi

\IOD DENETİMİ

D3 = D2=D1=Do=1

GİRİŞ/ÇIKIŞ DENETİMİ MOD EDENETİMİ M0D3Ü SEÇTİKTEN SONRAKİ SÖZCÜK

MASKELEME DENETİM KAYITLAYICISI

03 = 0 , 0 2 = 0 ! =D()= 1

KESMEYİ MASKELEME ' MASKELEME DENETİM

KAY ITLAY ICISI KAY ITLAY ICISI

KAYITLLAAYYIICCISINA D4 = 1 İLE GİRİLDİKTEN * 1 SONRAKİ SÖZCÜK

KESMEYE İZİN VERME D3 = D2=0 . D ^ D ^ I

KESME VEKTÖRÜ

Do=1

ELEKTRİK Mı III \ DİŞLİĞİ 290

CPU DATA < BUS

PORTA I/O

PHJ CONTROL

PORTB

INTERRUPT „ CONTROL '

INT ENABLE OU T

Şekil : 4 l'lO'ıınn li.ıcak dostı rim1

VERİ TAŞITI (8)

ÎÇ DENETİM DEVRESİ

KARŞILIKLI ONAY İŞARETLERİ

PIO

^

DENETİM I | j ^

UÇLARI (6) "^

CPU İLE OLAN ARABİRİM

KESME DENETİMİ

KESME DENETİMİ „ UÇLARI (3)

Şekil : 5 PlO'nun Blok Şemdsı

PORT B GİRİŞ / ÇIKIŞ

v KARŞILIKLI

[ONAY J4ŞARETLERI

ÇEVRESEL ELEMANLARLA OLAN ARA BİRİM

DENETİM

KAYITLAYICISI

(2 BİT)

|

GİRİŞ/ÇIKIŞ SEÇME KAYIT LAYICISI (8)

MASKELEME DENETİM KAYITLAYI CISI (2BÎT)

VERİ ÇIKIŞ KAYITLAYI CISI(8BİT)

MASKELEME KAYITLAYICI SI (2 BİT)

Giriş Verisi

VERİ GİRİŞ KAYITLAYICI SI (8BİT)

8 BİTLİK ÇEVRE ELEMANI VERİ VEYA DENETİM TAŞITI

t""

RDY

ONAY İŞARET

ONAY

5?

Kesme İstekleri

LERİ DENETİM

1 (HANDSHAKE)

DEVRESİ

İŞARETLERİ

Şekil :6 PlO'nun l'ortlarının Blok Şeması «oo

PIO Mod Denetimi PlO'da çalışma modu, PlO'ya aşağıda belirtilen şekilık bir denetim sözcüğünün yazılmasıyla belirlenir. Modun Belirlenmesi :

I MI

MO

Çift yön

ı Bit Denetimi

M I ! MO

4 3 2 10

1 1 I! 1 'Denetim Sözcüğü l—J 1

Mod 3 seçildiği zaman, onu takibeden sözcük giriş/çıkış denetimi kayıtlayıcısını düzenleyecektir.

T |G/Ç7 G/Ç6 G/Ç5 G/Ç4 G/Ç3İ G/Ç2 G/Ç1 G/ÇO

Giriş/Çıkış Denetimi Kayıtlayıcısı

G/Ç 1 ise bu bit giriş olur. G/Ç 0 ise bu bit çıkış olur. PlO'nun mod'ları, onlara karşılık gelen anlamlar ve de netim sözcükleri aşağıda gösterildiği gibidir.

PIO Modları

0 1 2 3

Denetim Sözcüğü

Anlamları İkili (Binary)

Hex

00001111

OF

01001111

4F

Çift yön 10001111

8F

Denetim 11001111

CF

Not : Bit 4 ve bit 5 belirli bir amaç için kullanılmamak tadır. Bu iki bit herhangi bir değeri alabilir.

PlO'nun mod'ları kısaca şu şekilde özetlenebilir:

1) Mod 0 ÇIKIŞ MODU : Port çıkış kayıtlayıcısına veriyi yazmak, verinin port veri taşıtında hazır olmasını sağlar. RDY (Hazır) işaretinin O'dan 1 'e çıkması verinin hazır olduğunu belirtir. RDY, çevre elemanından verinin kabul edildiğini belirtir STB işaretinin gelmesine kadar 1'de kalır. Eğer kesmeye izin verilmiş ise STB 'nin O'dan 1 'e geçişi kesmeye neden olmaktadır.

2) Mod 1 GİRİŞ MODU : Çevre elemanı veyaeleman ları, veriyi port giriş kayıtlayıcısına STB işareti ile koyar. STB 'nin O'dan Ve geçişi (STB'nin artan kenarı) kesme ye neden olur (kesmeye izin verilmişse) ve RDY'yi sıfır

lar. CPU veriyi okuduğu zaman verinin kabul edildiğini göstermek için RDY 1'e gider.

3) Mod 2 ÇİFT YÖN MODU : Bu mod, 4 karşılıklı onay (handshake) işaretinin hepsini kullanır. Onun için veri giriş ve çıkışı sadece port A'dan yapılır. Port A'nın RDY ve STB işaretleri çıkış denetimi için, port L/nin RDY ve STB işaretleri ise giriş denetimi için kullanılır.

4) Mod 3 DENETİM KODU : Bu mod RDY ve STB işaretlerini kullanmaz. Bu mod her bir bitin tek başımı anlam taşıdığı durum vedenetim uygulamaları için amaç lanmıştır. Mod 3 seçildikten sonraki PlO'ya (giriş/çıkış denetimi kayıtlayıcısına) gönderilen denetim sözcüğü port veri bit'lerinin yönlerini belirler. Daha önce de belirtildi ği gibi, bu sözcük içindeki herhangi bir bit yerindeki " 1 " buna karşılık gelen taşıtı giriş yapar. Benzer şekilde " 0 " da o bit'e karşılık gelen taşıtı çıkış yapar.

PlO'nun Programlanması

Güç kaynağı yeni açıldığı zaman PIO giriş moduna (Mod 1 'e) girer. Aynı zamanda bütün kesmeler kesmeye izin ve rilmez durumuna getirilir ve denetim işaretleri sıfırlanır.

PlO'nun programlanmasında şunlar gözönünde bulundu rulur :

1) Çalışma Modunu belirlemek için, uygun denetim söz cüğü Mod Denetimi Kayıtlayıcısına yazılır. Kesme .dene timi ile giriş/çıkış mod'u bilgisinin de gönderilmesi gere kebilir.

2) Eğer Mod 3'e girildiyse, Mod 3'ün seçildiğini bildiren denetim sözcüğünden hemen sonra, giriş/çıkış denetimi kayıtlayıcısına bir denetim sözcüğü gönderilerek giriş/çı kış bacaklarının yönü belirlenir.

PlO'nun programlanmasının daha iyi anlaşılabilmesi için, aşağıda bunlarla ilgili basit program örneklerine yer veri lecektir. (Bu örneklerde kesme ile ilgili program örnekle rine yer verilmemektedir.) örnekler :

1) B portunu çıkış portu yapmak LD A,00001111B ;B PORTUNU ÇIKIŞ YAP OUT (PIODNB),A

2) B portunu giriş portu yapmak LD A,01001111B ;B PORTUNU GİRİŞ YAP OUT (PIODNB).A

3) A portunun çift yönlü port olarak kullanılması LD A.10001111B ; A PORTUNU ÇİFT YÖNLÜ YAP OUT (PIODNA*),A

4) Portun Denetim Portu olarak kullanılması

LD A.11001111B A PORTUNU DENETİM

OUT (PIODNA),A

LD A.FFH

BÜTÜN BİTLERİ GİRİŞ YAP

LD A,11001111B B PORTUNU DENETİM

OUT (PIODNB).A

LD A.OOH

; BÜTÜN BİTLERİ ÇIKIŞ YAP

+5V

Anahtar

Giriş portundan veriyi elde et

Şekil :7 b

CPU'ya

OUT (PIODNB).A LD A,1100111113 ; APORTUNU DENETİM

PORTU YAP OUT (PIODNA).A LD A.000011110B ; TAŞITIN I., 2 , 3 . BİTLERİ

Ni GİRİŞ, 0., 4., 5., 6., 7. BİTLERİNİ ÇIKIŞ YAP OUT (PIODNA).A

35H1 in (00110101B) çıkış portu A'ya gönderilmesi

LD A.OFH

; APORTUNU ÇIKIŞ YAP

LD A,35H

; 35H'ı (0011010113ı) BİRİ

KECE YÜKLE OUT (PIOVRA::),A ; BİRİKEÇTEN ÇIKIŞAGÖN

••i PIO giriş portu A'nın 0. bitine bir anahtar bağlanmış ı ir. Şekil 7a'dan da görüldüğü gibi, bu anahtar açıkken C.

bite 1(+5V) kapalıyken 0(0V) gelmektedir. Öyle bir program yazılması istenmektedirki, bu program bu anah tarın açık mı yoksa kapalı mı olduğunu test etsin ve anahtar açıksa belleğin 1800H ile adreslenmiş yerini FFH'le, kapalıysa OOH'le doldursun.

Bunu sağlayan programın akış diagramı Şekil 7B'de gös terilmektedir.

Bu program aşağıdaki gibidir.

LD A.01001111B ; APORTUNU GİRİŞ YAP

LD HL.1800H LD (HL),00H ; İŞARET =00H

A.(PIOVRA) ; ANAHTARIN DURUMUNU

OKU

AND 01H )R Z.SON LD (HL),FFH

; ANAHTAR KAPALI MO (0)? ;EVET ; HAYIR. İŞARET = FFH

SON: HALT

KAYNAKLAR :

1) MicrucompuK T Compoıunıs I);ıi;ı llook.Moslık Corporation, 1979

2) Z80 Asscmbly LaııgııuKC Programmin.!;, l.;ıncc A. I.cventlıal, Ad;ım Osboınc and Associates, Inc.. I 979 j) Z 80Microproccssor, Pro.^ı ;ımmiıiKiin(l Iıucrfacing, Joscph C. Nichols, F.li/abcth A. Niılıolsand Pctrı R.Rony, Nanotran, Inc., 1979.

4) ODTÜ Elektrik Mühendisliği Böl. Mustafa Parlar Yaz Okulu "Bilgisayar Donanımı ve Mikroişlcmci Sistemleri" Kurs Notları. Hasan Güran, Uj>ur Halıcı, Aykut Dalgıç, (28 Haziran 2 Tem muz 1982)

5) The Z 80 Microcomputcr Ilaııdbook, U'ıllıam liardcn, ,|R., llouard W. Sams and Co., Inc., 1978. 6) Microcomputcr BasedDesignJohn B. Peatman,McC.ıau 11 ili. Inc., 1977.

PIODNB = Denetim Kayıtlayıcısı B'nin adresi PIODNA = Denetim Kayıtlayıcısı A'ran adresi PIOVRA = Veri Kayıtlayıcısı A'nın adresi

ELEKTRİK MüUESDİsl İdi 290