Bilgisayar Donanımı pport 1 BÖLÜM 2 PARALEL PORT 2.1.GİRİŞ Kökeni itibariyle basit bir yazıcı arabirimi olan PC paralel portu, zamanla, bilgisayara bağlamak istediğiniz her hangi bir şeyin takılabileceği bir giriş (plug-in) haline gelmiştir. Paralel port popüler olmasının nedeni hem çok yönlüdür hem de; giriş, çıkış ve çift yönlü bağlantılarda kullanabilirsiniz. Her PC’de bir tane bulunur. Porta bağlanan cihazların en yaygın olanları yazıcılardır. Bununla birlikte harici teypler, disk sürücüler ve tarayıcılarda popüler cihazlar arasındadır. Diz üstü bilgisayarlarında paralel port bazlı şebeke arabirimi yada joystick kullanması mümkündür. Öte yandan, veri toplamaya, testlere ve kontrol sistemlerine yönelik düzinelerce paralel port cihazı söz konusudur.Yine, paralel port, bilgisayarla harici cihaz arasında iletişim gerektiren çok sayıda küçük çaplı ve tek amaçlı projeler için seçenek arabirimidir. Şekil 2.1 Paralel Port Orijinal PC paralel portunda sekiz çıkış, beş giriş ve dört iki yönlü hat mevcuttu. Aslında bu hatlar çeşitli tiplerdeki çevre birimleriyle iletişim açısından yeterliydi. Fakat yeni PC’lerin bir çoğunda, bu sekiz çıkış hattı tarayıcılarla, sürücülerle ve PC’ye veri gönderen diğer cihazlarla iletişimi hızlandırmak için giriş hattı olarak da kullanılabilmektedir. Çoğu port sinyalinin (PaperEnd, AutoLineFeed) orijinal isminden de anlaşılabileceği gibi, paralel port, başlangıçta yazıcı portu olarak tasarlanmıştı. Günümüzde porta bağlanan çok sayıda cihaz bulunmaktadır. Bu nedenle, içinde yazıcılarla birlikte tarayıcı, modem ve diğerlerinin de bulunduğu PC’ye takılan cihazlar kategorisini ifade etmek üzere çevre birimi sözcüğü kullanılmaktadır. 2 Tablo 2.1: Paralel port sinyalleri Bir PC’de bulunan her bir paralel port, 3 tane port adrese sahiptir. Bu adreslere karşı gelen portlar: Veri (data), durum (state) ve kontrol (control) portlarıdır. Veri portunun adresi, taban, yani ilk adres olup diğerleri bu adrese göre sıralanır. Örneğin, eğer bir bilgisayarda paralele portun ve dolayısıyla veri portunun adresi 378h ise, ilgili durum portu 379h’ta ve kontrol portu 37Ah’dır. Tablo 2.2 PC paralel port adres atamalarını göstermektedir. Tabloda R/W sembolü portun okunup yazılabileceğini göstermektedir. Durum portu sadece okunabilmektedir. Printer Veri Portu (R/W) Durum Portu (R) Kontrol Portu (R/W) LPT1 0x03BC 0x03BD 0x03BE LPT2 0x0378 0x0379 0x037A LPT3 0x0278 0x0279 0x027A LPT4 YOK Tablo 2.2: Paralel portlar ve adresleri 3 Tablo 2.2’de LPT1 için verilen 3BCh adresi, PC’lerde ilk video kartlardaki paralel portlarda kullanıldı. Daha sonra video kartlardan paralel portlar çıkartıldığından, bu adres bir süre ortadan kalkmıştır. Şimdi bu adres tekrar paralel portlar için bir seçenek olarak tekrar ortaya çıkmıştır ve ayarı BIOS tarafından değiştirilmektedir. 378h ve 278h adresleri genelde paralel portlar için kullanılmıştır. Normalde LPT1 378h ve LPT2 278h taban adresine atanır. Bununla beraber, bu her zaman böyle olmayabilir. Bilgisayar ilk açıldığında, işletim sistemi, bilgisayar portlarının sayısını belirler ve bu cihazlara LPT1, LPT2, LPT3 ve LPT4 sembollerini atar. İşletim sistemi (BIOS) ilk önce 3BCh adresine bakar. Eğer burada bir paralel port bulunur ise, LPT1’i bu porta atar. Daha sonra, 378h adresini arar. Eğer bu adreste bir paralel cihaz bulunur ise, bir sonraki kullanılabilir cihaz sembolünü atar. Bu, eğer daha önce 3BCh adresinde port bulunmamış ise, LPT1, bulunmuş ise LPT2 olur. En son port aramadaki adres 278h aynı şekilde belirlenir. Bu yüzden LPT2, umulan adresi 278h yerine 378h adresinde de bulunabilir. Herhangi bir LPT portuna BIOS tarafından atanmış adresi öğrenmek için, BIOS tarafından belirlenen, tablo 2.3’te görülen adres tablosu kullanılabilir. Her bir yazıcı için hafızada belli bir alan kullanılır. BIOS veri alanındaki LPT4 için olan adres, PS/2 ve yeni BIOS’larda farklı amaçla kullanılabilir ve bu yüzden geçersiz olabilir. Tablo 2.3: BIOS veri alanındaki LPT Adresleri 2.2.PORT TÜRLERİ PC tasarımındaki evrime bağlı olarak, paralel portun gelişmiş versiyonları da devreye girmiştir. Yeni port türleri orijinal tasarımla uyumlu olmakla birlikte, başta hız olmak üzere yeni yetenekler kazanmışlardır. Bilgisayarların ve çevre birimlerinin hızları arttıkça, gördükleri işler karmaşıklaşmış, alışveriş yapmaları gereken bilginin miktarı büyümüştür. Bu durum hızın önemini ortaya koymaktadır. Nitekim, paralel port ilke tasarımıyla, ASCII karakterleri temsil eden byte’ları nokta vuruşlu yazıcıya göndermek yönünden yeterince süratliyken, yeni yazıcılar, içinde farklı fontların, detaylı ve çoğu kez renkli grafiklerin yer aldığı bir sayfayı basabilmek için çok daha fazla bilgiye ihtiyaç duyuyorlar. Bir bilgisayarın bilgi iletim hızı ne kadar yüksekse, yazıcının bilgiyi işleyerek baskıyı sonuçlandırması da o kadar çabuk olacaktır. 4 Hızlı bir arabirim, çevre birimlerinin harici ve taşınabilir olmasını da mümkün kılmaktadır. Çünkü, aksi taktirde bunların bilgisayarın içinde kurulması gerekecektir. Paralel porta bağlanan bir teybin yada disk sürücünün bir sistemden alınıp diğerine taşınması kolaydır. Yine, örneğin bir yedekleme gereği doğduğunda, böyle bir birimi farklı sistemlerde kullanmak mümkündür. Ancak bu durumda, yüzlerce megabyte’lık bir kopyalama işlemini gerçekleştirebilmek için arabirimin yeterince hızlı olması gerekecektir. Paralel port türlerini şöyle sıralayabiliriz: Orijinal (SPP) PS/2-tip (basit iki yönlü) EPP ECP 2.2.1.Orijinal (SPP) Orijinal IBM PC’deki paralel port ve bu anlamda orijinal tasarımla benzeşen her hangi bir portu standart paralel port yada kısaca SPP olarak adlandırılır. Bu porta ilişkin IBM PC belgeleri ve şematik diyagramlar dışında yazılı hiçbir standart yoktur. AT-tip veya ISA- uyumlu olarak da adlandırılmaktadır. Orijinal PC’deki portun esası Centronics yazıcı arabirimine dayanmaktadır. Bununla birlikte PC’ler, diğer sistemlerce de sürdürülen bazı farklılıklar getirmişlerdir. SPP, Centronics arabiriminde kullanılan protokolün benzerini kullanarak, çevre birimine bir defada 8-bit transfer yapabilir. SPP’nin byte çaplı giriş portu yoktur. Ancak PC’den çevre birimine transferde, bir kerede her bir byte’ı 4-bit transfer eden bir Nibble modunu kullanabilmektedir. Şekil 2.2 PC’deki 25 pin D-SUB dişi konnektör Pin Name Dir Description 1 /STROBE Strobe 2 D0 Data Bit 0 3 D1 Data Bit 1 4 D2 Data Bit 2 5 D3 Data Bit 3 6 D4 Data Bit 4 7 D5 Data Bit 5 8 D6 Data Bit 6 5 9 D7 Data Bit 7 10 /ACK Acknowledge 11 BUSY Busy 12 PE Paper End 13 SEL Select 14 /AUTOFD Autofeed 15 /ERROR Error 16 /INIT Initialize 17 /SELIN Select In 18 GND Signal Ground 19 GND Signal Ground 20 GND Signal Ground 21 GND Signal Ground 22 GND Signal Ground 23 GND Signal Ground 24 GND Signal Ground 25 GND Signal Ground Tablo 2.4: D tip 25 pin Paralel port pin sinyalleri Centronics protokolünde önce, 8 bit veri, paralel portun uçlarına (2 ile 7 arasındaki uçlara) uygulanır. Daha sonra, bilgisayar, yazıcının meşgul olup olmadığına bakar. Yazıcıdan gelen BUSY hattı düşük olmalıdır. Program sonra, STROBE sinyalini düşük seviyeye getirir ve en az 1 mikro saniye bekler. Daha sonra, bu sinyal pasif yani lojik 1 yapılır. Normalde veri, yazıcı veya diğer dış cihaz tarafından, STROBE sinyalinin yükselen kenarında okunur. Yazıcı veriyi işlemekle meşgul olduğunu, BUSY sinyalini lojik 1 yaparak belirtir. Yazıcı veriyi kabul ettikten sonra, bu durumu ACK sinyali ile, yaklaşık 5 mikro saniye süreli bir negatif darbe üreterek bilgisayara haber verir. Genellikle bilgisayar ACK sinyalini zaman kazanmak için ihmal eder. Örneğin, ECP portundaki hızlı Centronics modunda, el sıkışma işlemleri donanım tarafından yapılır. Programcının bütün yaptığı I/O portuna veriyi yazmaktır. Donanım yazıcının hazır olup olmadığını kontrol etmekte ve diğer gerekli sinyalleri üretmektedir. Bu moda ACK sinyali de kontrol edilmez. 6 Şekil 2.3 Centroniks protololü el sıkışma sinyal diyagramı 2.2.2.PS/2-tip (basit iki yönlü) Paralel portta ilk gelişme, IBM’in PS/2 modelinde sunulan ve çevrebiriminden PC’ye bir defada 8-bit transferi mümkün kılan iki yönlü veri portu olmuştur. Nitekim PS/2 tip terimi, iki yönlü veri portu olan, ancak aşağıda anlatılan EPP ve ECP modlarını desteklemeyen herhangi bir paralel porta gönderme yapmaktadır. PS/2 tip portların çevrebiriminden PC’ye veri transferinde kullandığı 8-bit veri transfer protokolüne byte mod denilmektedir. 2.2.3.EPP EPP (Enhanced Parallel Port-Yükseltilmiş Paralel Port) ilk olarak yonga üreticisi Intel, PC imalatçısı Zenith ve paralel port ağı ürünleri imalatçısı Xircom tarafından geliştirilmiştir. Burada PS/2 tip portta olduğu gibi, veri hatları iki yönlüdür. Bir EPP, bir SPP yada PS/2 porttaki dört çevrime kıyasla, el sıkışma da dahil, yaklaşık bir mikro saniyede, ISA genişleme bus’ının bir çevriminde bir byte veriyi okuyabilir veya yazabilir. EPP yünleri çabucak çevirebilir. Bu yönüyle disk, teyp sürücüleri ve her iki yönde veri transfer eden diğer cihazlarla kullanıldığında son derece etkilidir. Öte yandan bir EPP, SPP yerine kullanılabilirken, bazen PS/2 tip port yerine de kullanılabilmektedir. 7 Tablo 2.5:SPP ve EPP’ nin karşılaştırılması Şekil 2.4 EPP veri yazma işlemi 8 Şekil 2.5 EPP adres yazma işlemi Şekil 2.6 EPP veri okuma işlemi Şekil 2.7 EPP adres okuma işlemi 2.2.4.ECP ECP (Extended Capabilities Port-Yetenekleri Arttırılmış Port) ilk kez Hewlett Packard ve Microsoft tarafından gündeme getirilmiştir. ECP’de EPP gibi iki yönlüdür ve ISA bus hızlarında veri transfer edebilir. ECP’lerin tamponları (buffer) olup, DMA (belleğe doğrudan 9 erişim) transferleri ve veri sıkıştırmayı desteklemektedir. Bunlar, özellikle büyük çaplı bilgi transfer eden yazıcılarda, tarayıcılarda ve diğer çevrebirimlerinde çok işe yaramaktadır. Yine, bir ECP, bir SPP yada PS/2 tip port yerine kullanılabilmektedir. Ayrıca ECP’lerin bir çoğu, EPP yerinede kullanılabilmektedir. Şekil 2.8 PC’deki 25 pin D-SUB dişi konnektör Pin Name Dir Description 1 nStrobe Strobe 2 data0 Address, Data or RLE Data Bit 0 3 data1 Address, Data or RLE Data Bit 1 4 data2 Address, Data or RLE Data Bit 2 5 data3 Address, Data or RLE Data Bit 3 6 data4 Address, Data or RLE Data Bit 4 7 data5 Address, Data or RLE Data Bit 5 8 data6 Address, Data or RLE Data Bit 6 9 data7 Address, Data or RLE Data Bit 7 10 /nAck Acknowledge 11 Busy Busy 12 PError Paper End 13 Select Select 14 /nAutoFd Autofeed 15 /nFault Error 16 /nInit Initialize 17 /nSelectIn Select In 18 GND Signal Ground 19 GND Signal Ground 20 GND Signal Ground 21 GND Signal Ground 22 GND Signal Ground 23 GND Signal Ground 24 GND Signal Ground 25 GND Signal Ground Tablo 2.6: PC’deki 25 pin D-SUB dişi konnektör pin sinyalleri 10 Tablo 2.7: SPP ve ECP sinyallerinin karşılaştırılması Tablo 2.8 : ECP Registerleri 11 Şekil 2.9 ECP İleri yönlü veri gönderimi Şekil 2.10 ECP ileri yönlü kumanda saykılı 12 Şekil 2.11 ECP ters yönlü veri saykılı Şekil 2.12 ECP ters yönlü kumanda saykılı 13 Table 2.9: ECR - Extended Kontrol Register Table 2.10: ECR - Konfigürasyon Register A 14 2.3.PORTLARA ERİŞİM Paralel portta veri alıp göndermek için portlarını ve yazmaçların dutumunun her an bilinmesi gerekir. Paralel portta 3 çeşit register vardır. Bu register’daki bitlere doğru değerleri vererek portları yapılandırabiliriz. Paralel port aşağıdaki yazmaçları içerir: Data yazmacı Status yazmacı Control yazmacı Şekil 2.13 Paralel port yazmaçları 2.3.1.CENTRONİCS KÖKLER Orijinal Centronics arabiriminin 36 hattı vardı. Nitekim çoğu printer bu 36 yuvalı konnektörü kullanmaktadır. Ancak PC’de 25 bacaklı konnektör bulunur. Bunun sebebi, muhtemelen genişleme kartının arkasındaki bir başka konnektöre yer açmaktır. 25 bacaklı konnektörün 36 yuvayı karşılayamayacağı açıktır. Bazı toprak (ground) bacaklarla birlikte kimi zorunlu olmayan kontrol sinyalleri dışlanmıştır. Aynı zamanda, PC, bir takım yuvalara yeni işlevler tahsis etmiştir. Tablo 2-3, PC arabirimiyle orijinal Centronics’teki sinyaller arasındaki bu farkları sergilemektedir. Pin (Centronics) Orijinal Fonksiyonu Yeni (PC) Fonksiyonu 14 Signal ground nAutoLF 15 Oscillator out No connection 16 Signal ground No connection 17 Chassis ground No connection 18 +5V No connection 33 Light detect Ground return for nSelectIn 34 Line count No connection 35 Ground return for line count No connection 36 reserved nSelectIn Tablo 2.11: PC arabirimiyle orijinal Centronics arabirimi arasındaki farklar. 15 2.3.2.DATA YAZMACI Data portu yada Data yazmacı (D0-D7) Data çıkışına yazılan byte’ları tutar. İki yönlü data portlarında, port giriş için yapılandırıldığında, Data yazmacı konnektörün Data bacaklarında okuduğu byte’ı tutar. Tablo 2.12: Data Port 2.3.3.STATUS YAZMACI Status portu yada Status yazmacı S3- 7 S arasındaki beş girişin lojik durumlarını tutar. S0-S2 aralığındaki bitler konnektörde görünmez. Status yazmacı salt okunurdur. Ancak S0 farklıdır. Bu bit, EPP transferleri destekleyen portlarda süre aşımı bayrağı (timeout flag) işlevi görür ve yazılımla temizlenebilir. Çoğu portta, Status girişlerinin çekme (pull-up) dirençleri vardır. Starus bitleri olağan kullanımda şu işlevleri görürler: S0 : Süreaşımı (Timeout). Bu bit, bir EPP veri transferinin bir süre aşımını işaret etmek üzere yükselir. Aksi taktirde kullanılmaz. Konnektörde görünmez. S1 : Kullanılmaz. S2 : Kullanılmaz. Bitin, paralel portun kesme durumunu (PIRQ) gösterdiği az sayıdaki bazı portlarda kullanılmaktadır. S3 : nError veya nFault. Yazıcı bir hata tesbit ettiğinde düşüktür. S4 : Select. Yazıcı devredeyken, yani Data girişleri etkin durumdayken yüksektir. S5 : Kağıt sonu PaperEnd, PaperEmpty yada PError. Yazıcıda kağıt bittiği zaman yüksek olur. S6 : nAck veya nAcknowledge. Yazıcı bir byte’lık bilgi aldığında düşük darbe sinyali gönderir. Kesmeler etkin durumda iken bu bacaktaki bir seviye geçişi (genelde yükselen kenar) bir kesmeyi tetikler. 16 S7 : meşgul (Busy). Yazıcının yeni veri kabul edememesi durumunda düşük olur. Konnektörde tersinir. Tablo 2.13: Status Port 2.3.4.CONTROL YAZMACI Control portu yada Control yazmacı 3 0 C C aralığındaki bitlerin durumlarını tutar. Normalde bu bitler çıkışlarda kullanılır. Bununla birlikte SPP’lerin çoğunda Control bitler açık-kollektör yada açık direndirler. Dolayısıyla giriş olarakta iş görebilirler. Bir Control bitindeki dışsal bir lojik sinyali okumak için, uygun çıkışa 1 yazar, sonrada yazmaç bitini okursunuz. Ne varki EPP ve ECP modları destekleyen çoğu portlarda, yön değişim (switching) hızını arttırmak amacıyla, Control çıkışları çekmeli-itmeli tipler olup, giriş olarak kullanılamaz. Bazı çok modlu portların ileri modlarında Control bitlerinin çekmeli-itmeli çıkışları vardır. Ayrıca uyum amacıyla, bunlar SPP yerine kullanılırken, açık kolektör/açık diren çıkışlara çevrilebilirler (switch). C4-C7 aralığındaki bitler konnektörde görünmezler. Olağan kullanımda Control bitlerinin işlevleri şunlardır: C0 : nStrobe. Bu düşük yollu (low-going) atımın (pulse) yükselen kenarı, yazıcıya, D0-D7 aralığını okuması sinyalini yollar. Konnektörde tersinir. Bilgisayarın açılışı sonrasında, normal olarak konnektörde yükselir. C1 : Auto LF (Otomatik Satır Besleme). Düşük bit, her bir Döndür (carriage return- ASCII 0Dh)’den sonra yazıcıya satır beslemeyi (ASCII 0Ah) otomatik olarak türetmesini söyler. Konnektörde tersinir. Normalde, açılış sonrasında konnetktörde yükselir. C2 : nInit, n Initialize: Yazıcıyı reset edip tamponu temizlemek için düştüğü darbeler. En küçük darbe genişliği 50 mikro saniyedir. Açılış sonrasında konnektörde yüksek olur. C3 : nSelectIn. Data girişlerini açması için yazıcıya yüksek gelir. Konnektörde tersinir. Normal olarak açılış sonrasında konnektörde düşük olur. C4 : Kesme isteklerini açar. Kesme isteklerini nAck (S6)’dan bilgisayarın kesme kontrol devrelerine iletmesini sağlamak üzere yüksek gelir. Eğer C4 yüksek ve portun IRQ düzeyi kesme kontrolöründe açıksa, nAck’taki geçişler donanım kesme isteğine yol açacaktır. Konnektörde görünmez. 17 C5 : Yön kontrolü. İki yönlü portlarda, Data portunun yönünü set eder. Çıkış için 0 (Data çıkışları mümkü), giriş için 1 (Data çıkışları mümkün değil). Bu bitin etkili olması için, bir çok durumda, (PS/2 modunda) portun öncelikle iki yönlü kullanıma yönelik yapılandırılması gerekir. Konektörde görünmez. SPP’lerde kullanılmaz. C6 : Kullanılmaz. C7 : Kullanılmaz. (Normalde C5 tarafından yapılan yönlendirme işini üstlendiği az sayıdaki bazı portlar dışında). Tablo 2.14: Control Port 2.4.İKİ YÖNLÜ PORTLAR Orijinal paralel portta, Data portu salt çıkış olarak tasarlanmıştır. Status portunun beş girişi vardır. Bazı portlarda Control portunun dört biti giriş olarak da kullanılabilir. Ancak sekiz biti veriyi okumak, ya Status ve Control portlarını, yada bir portu iki defa olmak üzere, iki byte okumayı gerektirir. Sonrada okunan değerlerden bir byte veri oluşturulur. Bir çok durumda 8 bit giriş için Data portunu kullanmak uygun olacaktır. Dolayısıyla sadece bunu yapmak yeterli olur. PC’nin orijinal portunda (D0-D7) Data çıkışlarını bir 74LS374 sekizli flip-flop sürer. Data portunun bacakları bir giriş tamponuna bağlıdır. Tampon, porta yazılan son değeri saklar. Portun Data yazmacı okununca bu değer döner (return). 74LS374’ ün çıkış imkanlı (OE ) bacağı da vardır. OE düşük olduğu zaman, çıkış mümkündür. Yüksek olduğu zamansa, çıkışlar ya üç durumludur (three stated), yada etkinliklerini devre dışı bırakan bir yüksek empedans durumundadırlar. Orijinal PC portunda, OE doğrudan topraklanmıştır. Dolayısıyla çıkışlar sürekli olarak devrededir. IBM, 1987’deki PS/2 modelinden başlayarak, Data hatlarının çıkış kadar giriş olarakda iş görmesini sağlayan bir iki yönlü paralel portu kullanıma sundu. IBM’i diğer üreticiler izlediler. EPP’lerin ve ECP’lerin el sıkışmalı Data portlarını okumada yüksek hızlı modları vardır. Ancak bu portlar PS/2’nin basit iki yönlü yeteneğine de sahiptirler. 18 2.4.1.İKİ YÖNLÜ OPERASYONUN YAPILANDIRILMASI Çoğu iki yönlü portun iki yada daha fazla operasyon modu bulunur. Yine, orijinal porta uyum sağlamak amacıyla çoğunun, Data portu salt çıkış olan SPP modu vardır. Bu genellikle, güvenlik amacıyla, başlangıç modudur. Çünkü, böylece Data çıkışlarının şu yada bu sebeple devre dışı kalmasının önüne geçilmiş olunur. İki yönlü data portunun giriş amaçlı kullanmak için, öncelikle portu iki yönlü olarak yapılandırmak gerekir. Bu bir yazılımla yapılabileceği gibi, CMOS setup ekranı kullanılarak yada portun devre kartındaki atlama (jumper) vasıtasıyla da yapılabilir. Port iki yönlü yapılandırıldıktan sonra, Control yazmacındaki bit 5’i set ederek yada sıfırlayarak Data hatlarını giriş yada çıkış için kullanabilirsiniz. 0 değeri çıkışı yada yazımı (açılıştaki default durumu); 1 ise girişi, yada okumayı anlatır. Az sayıda kimi port, yön kontrolünde bit 5 yerine bit 7’yi kullanır. Her türlü portla uyum amacıyla, yazılım, yönü set etmek üzere hem bit7’yi hemde bit5’i ayarlamaktadır. Bir SPP’de yada iki yönlü yalpanmış herhangi bir portta, C5 biti 1 veya 0 olabilir. Çok nadir olmamakla birlikte, yön bitinin salt yazılır olduğu iki yönlü portlar da bulunmaktadır. Böyle bir durumda biti set etmek veya temizlemek mümkünse de, o anki durumunu belirleme şansı yoktur. Çünkü okuma mümkün değildir. Seçili bitlerini değiştirip, değeri yeniden Control portuna yazmak suretiyle Control portunu okuma tekniklerini kullanmayı bilmek son derece önemlidir. Bit 5 daima 1 oluyorsa, Data port çıkışlarının devre dışı kalması istenmiyorken bile, bite sürekli olarak 1 yazılıyor demektir. Bundan kaçınmak için bir yandan bit 5’ in istenen durumunun izlenmesi gerekirken, öte yandan da, Control portuna yazım sırasında bitin 1’mi yoksa 0’ mı olduğundan (uygun durumda olup olmadığından) emin olunması gerekir. Elde Data portunu süren (driving) 74LS374’lü eski tip salt çıkış bir port varken, devreleri modifiye ederek Data portunu giriş amaçlı kullanmak mümkündür. Bazı salt çıkış portlarda, her hangi bir modifikasyona gitmeksizin Data çıkışlarını yükseğe getirebilir ve giriş tamponunu dış sinyallerle sürebilirsiniz. Ancak bu durumda port devrelerine hasar verme riski söz konusudur. İki yönlü olmayan portlardaki çıkışlar bu tarz kullanıma elverişli değildir. Lojik çıkışları, çıkışların açık Data hatlarına bağlamak her iki cihazda da hasar verici akımlara sebep olabilir. Devreler hemen o anda çökmesede, bu ilave gerilim zaman içinde sorunlara yol açabilir. Devre çalışmaya devam edebilir, ancak voltajlar marjinal olacak ve gürültüye yol açacak, performansı düşecektir. Bu şekilde kullanım tavsiye edilmemektedir. 19 Şekil 2.14 Tek yönlü portun çift yönlü hale getirilmesi Şekil 2.15 Paralel portun 8 bit giriş için ayarlanması (SPP türü portlar için) 2.5.PARALEL PORTUN PROGRAMLANMASI Pek çok programlama dilinde paralel port kontrol ve kumanda komutları mevcuttur. Bunun yanında assembly ile tüm programlama dillerinde paralel port programları yazılabilir. 2.5.1.C C dilinde, bir paralel porta INP ve OUTP fonksiyonları ile erişmek mümkündür. Aşağıda, Data port 378h’a AAh yazlmaktadır: 20 #include #include #include (dos.h> void main() { usigned DataAddress=0x378; int DataPort; DataPort=outp(DataAdress,0xAA); return 0; getchar(); } Bu program ise Status port 379h’ ın değerini okur. #include #include #include (dos.h> void main() { usigned StatusAddress=0x379; int StatusPort; StatusPort=inp(StatusAddress); Printf(“Status port = Xh\h”,StatusPort); return 0; getchar(); } 2.5.2.ASSEMBLY Burada, porta erişimde mikroişlemcinin IN ve OUT komutları kullanılır. Porta yazımda: mov dx,378h ; portun adresini dx’e depola mov al,AAh ; al’ye yazılanı data’ya depola out dx,al ; dx deki port adresine al’nin içeriğini yaz. Porttan okurken: mov dx,379h ;port adresini dx’e depola in al,dx ; porttaki bilginin içeriğini al’ye depola. Aşağıdaki C programı, printer portlarının adreslerini elde etmek için bu hafıza yerleşiminin nasıl okunacağını gösterir. #include #include void main(void) { unsigned int far *ptraddr; /* Pointer to location of Port Addresses */ 21 unsigned int address; /* Address of Port */ int a; ptraddr=(unsigned int far *)0x00000408; for (a = 0; a < 3; a++) { address = *ptraddr; if (address == 0) printf("No port found for LPT%d \n",a+1); else printf("Address assigned to LPT%d is %Xh\n",a+1,address); *ptraddr++; } } LPT atamalarını görmek için alternatif bir teknik ise Microsoft Diagnostics (MSD.EXE) programını çalıştırmaktır.