Öğr.Gör.Ahmet Bingül
bingul@gantep.edu.tr
Anakartın üzerinde bir PC'nin en önemli bileşenleri -Veriyolları(Portlar), CPU, RAM, BIOS, ChipSet, ROM, I/O devrelerinin çoğu- bulunur. Anakart, sistemin çalışmasını organize eder. Bu organizasyon anakart üzerinde bulunan Chipsetler sayesinde gerçekleşir. Anakart üzerinde bilgisayara veri giriş/çıkış için kullanılan pinlere veya bağlantı noktalarına Port denir. Yada çevre birimlerini programlamak ve onlardan bilgi almak için kullanılan elektriksel yollara port denir. Örneğin: Paralel port(LPT), seri port(COM), AGP portu, PCI portu gibi.
Bir porta atanmış olan adresi öğrenmek için değişik yöntemler vardır. Örneğin paralel portun adresleri Windows İşletim Sisteminde şöyle bulunur:
Bu kısımda
Kesme isteği 07 Giriş/Çıkış Aralığı 0378 - 037F
şeklinde ifadeler vardır. Giriş/Çıkış Aralığı 0378 - 037F ifadesi yazıcının port numaralarını, adreslerini, gösterir. Bu Hexadecimal sayılar port programlarında kullanılacaktır.
Aşağıda DOS debug programı ile 0040:0000 adresine bakılarak COM atamaları öğrenilmektedir.
C:\>debug -d 0040:0000 L8 0040:0000 F8 03 F8 02 00 00 00 00 ........ -q C:\>_
LPT1, COM1 ve COM2 portları ile ilgili ayrıntılı bilgiler Tablo 1 de listelenmiştir.
Tablo 1: PC COM Port adresleriİsim | Taban Adres | Düşük Bayt (Low Byte) | Yüksek Bayt (High Byte) | Hexadesimal | Desimal | IRQ |
LPT1 | 0000:0408 | 78 | 03 | 0378 | 888 | 07 |
COM1 | 0000:0400 | F8 | 03 | 03F8 | 1016 | 04 |
COM2 | 0000:0402 | F8 | 02 | 02F8 | 760 | 03 |
Bu kısımda paralel port kısaca tanıtılmış ve özet bilgi verilmiştir. Bir PARALEL port DB-25 olarak adlandırılan 25-pinli adaptörden oluşur. Adaptör erkek(male) konnektör (pinler) veya dişi(female) konnektör (küçük delikler) dür. Genellikle yazıcı portu LPT1 olarak adlandırılır. LPT1 bilgisayarın arka kısmında dişi tipinde bir adaptördür (Bkz Şekil 1). Yazıcı bağlantı kablosu erkek tipi adaptördür ve LAPLINK kablosu olarakta adlandırılır.
Şekil 1 : Erkek ve Dişi LPT1 ve bacak bağlantıları
Paralel port bilgisayarinizin en kolay programlanabilir portudur. DB-25 pinleri üzerinde DATA, STATUS, CONTROL adinda 3 tane port vardir (Bkz Şekil 2). Bu pinlerden her hangi bir tanesinin "1" durumu, o pinden okunacak voltajin +5 Volt olmasi anlamina gelir. "0" olmasi 0 Volt olmasini gösteriyor. Bu sebeple portlar programlanırken binary sayı sisteminin önemi ortaya çıkar.
Şekil 2 : LPT1 için DATA, STATUS ve CONTROL portları
Eğer LPT1 in adresi 0x0378 ise DATA, STATUS ve CONTROL portlarının dağılımları Tablo 2 deki gibi olacaktır.
Tablo 2: LPT1 portlarının dağılımlarıPort adı | Adresi(Hex) | Karşılığı(Hex) |
DATA | 378 | 378 |
STATUS | 378+1 | 379 |
CONTROL | 378+2 | 37A |
Her pinin bilgisayarın yazıcı ile anlaşmasını sağlayan bir görevi vardır. Paralel port pinlerindeki sinyalleri ve giriş çikiş Tablo 3 te listelenmiştir.
Tablo 3 : Paralel port pinlerindeki sinyalleri ve giriş çikiş durumlarıSinyal Adi | BIT | PIN | Yön |
-Strobe | ¬C0 | 1 | Output |
+Data Bit 0 | D0 | 2 | Output |
+Data Bit 1 | D1 | 3 | Output |
+Data Bit 2 | D2 | 4 | Output |
+Data Bit 3 | D3 | 5 | Output |
+Data Bit 4 | D4 | 6 | Output |
+Data Bit 5 | D5 | 7 | Output |
+Data Bit 6 | D6 | 8 | Output |
+Data Bit 7 | D7 | 9 | Output |
-Acknowledge | S6 | 10 | Input |
+Busy | ¬S7 | 11 | Input |
+Paper End | S5 | 12 | Input |
+Select In | S4 | 13 | Input |
-Auto Feed | ¬C1 | 14 | Output |
-Error | S3 | 15 | Input |
-Initialize | C2 | 16 | Output |
-Select | ¬C3 | 17 | Output |
Ground | - | 18-25 | Toprak |
DATA Portu
Paralel port üzerinde DATA portuna ait 8 adet (D0-D7) pin vardir. Bu port paralel portunuzun taban adresini kullanir. 8 tane DATA pini oldugundan 8 Bitlik veri çikisi almak mümkündür. Yani bu 8 tane pinin "1" yada "0" degerlerini almasi ile veri akisi saglanmis olur. DATA portu normalde veri çikisi için kullanilmaktadir. Fakat bazi özel ayarlar yaparak, eger bilgisayariniz da destekliyorsa veri girisi yapmanizda mümkün olabilir.
STATUS Portu
STATUS portu sayesinde, 15 - 13 - 12 - 11- 10 numarali pinlerden, 5 bit sayisal giris yapabiliriz. Veriyi paralel portun seklinde gözüktügü gibi S7, S6, S5, S4, S3 pinlerinden yapacagiz. Bu 5 pinlerden herhangi bir müdahale bulunmadan okuyacaginiz lojik deger "1" olacaktir. (Eger voltmetrenizle bu pinlerdeki voltaji ölçerseniz +5 Volt oldugunu göreceksiniz). Bu pinlere baglayacagimiz butonlar ile pinleri topraklayarak lojik degerlerini "0" yapip bir nevi veri girisi gerçeklestirmeniz mümkün. Fakat bu pinlerden S7, donanim tarafindan tersindirilmistir. Bunun anlami o pinin topraga çektigimiz zamanki degerinin "1" olacagidir.
CONTROL Portu
CONTROL portunu hem giris hem de çikis için kullanmak mümkündür. Paralel port üzerinde CONTROL portununa ait 4 tane pin vardir. Bu pinlerden C0,C1,C3 pinleri tersinmistir. Yani tersinmis olan bu pinlere veri göndermedigimiz zaman durumu "1" dir. Bu pinlerden bir tanesine veri gönderdigimizde o pinin degeri "0" olacaktir. DATA ve STATUS pinlerinin yetmedigi zamanda CONTROL portlari ile çikis yada giris almak mümkündür. Programlama sekli STATUS ve DATA portlari ile aynidir.
Bir mikroişlemci, dış dünya (hafıza ve G/Ç birimleri) ile genelde 8-bitlik parçalarla (8-16-32 ve 64 gibi) haberleşir. Aşağıda verilen şekilde görüldüğü gibi, bu şekilde yapılan veri aktarımı paralel veri aktarımı denir. PC nin yazıcı ile haberleşmesinde, veriyolundan 8-bit veri ile paralel haberleşme yapılır.
+-----+ +-----+ | |--------->| | | V |--------->| A | | E |--------->| L | | R |--------->| I | | I |--------->| C | | C |--------->| I | | I |--------->| | | |--------->| | +-----+ +-----+ Paralel Iletim
Eğer mesafe uzunsa paralel veri aktarımı uygun değildir. Bu gibi durumlarda seri aktarım daha uygun olur. Tekbir veri hattının kullanıldığı bu tür haberleşmenin ucuz olmasının yanında, iki farklı şehirde bulunan iki bilgisayarın telefon hattı üzerinden, bu yöntemi kullanarak, haberleşmesi de mümkün olur. Eğer veri telefon hattından iletilecekse, 0 ve 1 ler ses tonuna çevrilir. Bu çevrim modem (MOdulator/DEModulator) cihazı ile yapılır.
+-----+ +-----+ | | | | | V | | A | | E | | L | | R |--------->| I | | I | | C | | C | | I | | I | | | | | | | +-----+ +-----+ Seri Iletim
PC'de dış dünyaya açılan başka bir kapıda seri portlardır. Bir PC seri portu UART (Universal Asynchronous Receiver Transmitter) tümdevresi ile kullanılır. Bir IBM PC, COM olarak belirtilen 4 taneye kadar Seri Port'a sahiptir. Bu portlar 1, 2, 3 ve 4 olarak numaralandırılmıştır. PC açılışında POST esnasında, 4 COM portundan herbiri için UART tümdevresi konrol edilir. Tablo 4: te PC Seri Port standart I/O adres atamaları gösterilmektedir. Bu adresler birçok bilgisayar için geçerlidir.
Tablo 4: PC seri port taban adresleri ve I/O adres atamalarıİsim | COM Taban Adresi | Adres(Hex) | IRQ |
COM1 | 0000:0400 | 3F8 | 4 |
COM2 | 0000:0402 | 2F8 | 3 |
COM3 | 0000:0404 | 3E8 | 4 |
COM4 | 0000:0406 | 2E8 | 3 |
DB-25P (Plug) ve DB-9 olarak adlandırılan bir PC nin seri port adaptörünün pin numaraları Şekil 3 de görüldüğü gibidir. Bu pinlerin görevleri Tablo 5 da listelenmiştir.
Şekil 3 : 25 ve 9-uçlu erkek seri konnektörler
Tablo 5: IBM PC DB25S/P ve DB-9S/P pin atamaları. 9-uçlu ve 25 uçlu konnektörlerde sinyaller25-uçlu | 9-uçlu | Sinyal adı |
8 | 1 | Data Carrier Detect (DCD) |
3 | 2 | Reive Data (RxD) |
2 | 3 | Transmite Data (TxD) |
20 | 4 | Data Terminal Ready (DTR) |
7 | 5 | Signal Ground (GND) |
6 | 6 | Data Set Ready (DSR) |
4 | 7 | Request to Sent (RTS) |
5 | 8 | Clear to Sent (CTS) |
22 | 9 | Ring Indicator (RI) |
Not: 25 uçlu konnektörde 1, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 23, 24 ve 25 rakamlı uçlar kullanılmamaktadır.
Birçok uygulamada programın koştuğu bilgisayar sisteminin sahip olduğu donanımsal öğelere erişilmesi gerekebilir. Geliştirilen bir program içerisinden donanımsal öğelere erişmek veya onları kullanmak için birçok yol vardır. En yalını, ki sistem mimarisi buna izin veriyorsa, bu gibi birimlere aynı bellek gözüne erişilmiyormuş gibi işaretçi değişkenler kullanılmıştır; ancak bu durum sistem mimarisinden dolayı her zaman mümkün olmayabilir. Bu durumda, ilgili birimlere erişmek için derleyicilerin sahip olduğu hazır kütüphane fonksiyonları kullanılır.
Port programlama konusunda örnekler için C Porgramlama Dili ile Port Denetimi adlı konuyu incelemeniz tavsiye olunur.