BİLGİSAYAR PORTLARININ KONTROLÜ

BİLGİSAYAR PORTLARININ KONTROLÜ

Bilindiği gibi bilgisayarla dış dünya arasındaki bilgi alışverişi portlar aracılığıyla yapılır, örneğin yazıcı (printer) bilgisayarın paralel portuna bağlanır.Portlar bilgisayarın kasasının arka tarafında bulunur. Bilgisayarda seri ve paralel olmak üzere iki çeşit port vardır.

Seri portlar COM1, COM2, COM3… olarak adlandırılırlar. Seri portlarda bilgi alışverişi bilgilerin peş peşe gönderilmesi suretiyle (yani seri olarak) yapılır.Yüksek hız gerektirmeyen uygulamalarda seri portlar kullanılır.

Paralel portlar ise LPT1, LPT2, LPT3…olarak adlandırılırlar Paralel portlarda l byte’lık (yani 8 bit) bilgi aynı anda ayrı ayrı iletkenler aracılığıyla gönderilir. Yüksek hız gerektiren uygulamalarda paralel portlar kullanılır. Ayrıca paralel portun kullanımı daha pratiktir.

Bir bilgisayarda en az l seri l de paralel port bulunur. Seri portların sayısı en fazla 4, paralel portlarının sayısı ise en fazla 3 olabilir.

Şimdi göreceğimiz C programlarında paralel port kullanılacaktır. Bu nedenle paralel portu biraz daha yakından tanıyalım.

LPT1 adlı ilk paralel portun 25 ucu vardır. Bu uçlar (pinler) l. 2, 3, 4…25 olarak numaralandırılırlar. Uç numaraları dikkatle bakıldığında okunabilir. Bu uçlardan 2, 3, 4, 5, 6, 7, 8, 9 numaralı olanları 8 bitlik bilgi alışverişinde kullanılabilir ve adresi hexadesimal formatta 378’dir. Bu sayının hexadesimal (onaltılı) sayı olduğunu belirtmek için C programlama dilinde 0x378 biçiminde yazılır. Şekilde 0x378 adresi görülüyor.

     9    8      7    6     5     4     3     2

 

 

 

Burada sadece 0x378 adresim gösterdik. LPT1 portunun 19, 20, 21, 22, 23, 24 ve 25 numaralı uçları da şase (GND) seviyesindedir, örneğin program aracılığıyla 2 nolu çıkışa lojik l seviyesinde bir sinyal gönderilirse 2 nolu çıkışta +5 voltluk bir gerilim oluşur. Bu gerilimi kullanarak bir LED’i yakmak gerekirse LED ve seri dirençten oluşan bir devre kurup bir uçunu 2 numaralı pine, diğer uçunu da şase ucuna (yani 19’dan 25’e kadar pinlerden birisine) bağlamak gerekir. Bu durumda LED yanacaktır. Biz bu bölümde hazırladığımız programlarda 2’den 9’a kadar uçlara bağlı olan LED’leri çeşitli şekillerde yakıp söndürdük. O nedenle bu programları çalıştırabilmeniz için paralel porta şöyle bir bağlantının yapılması gerekmektedir :

9      8     7     6     5     4     3     2     

 

19 île 25

aras nda

herhangi bir

pine

bağlanacak

Bu devredeki LED’lere seri bağlı olan tüm dirençlerin değeri 390 (‘dür.Hangi pinde lojik l (yani +5 Volt) olursa o pine bağlı LED yanar. Buna göre 8 bitlik bir bilgi bu porttan gönderilebilmekte ya da okunabilmektedir. (Bu uçlar kullanılarak bilgisayardan dışarıya bilgi gönderilebildiği gibi dış dünyadan bilgi de okunabilir). 2 numaralı uç LSB, 9 numaralı uç MSB’dir.

Çıkışa LED’lerden oluşan bir devre değil de 7 segmentli displey bağlanmak istenirse o halde şöyle bir bağlantı yapılabilir.

                               9     8      7     6     5     4    3     2

 

                                f      e d c b a

 

 

 

                                             g       f      e      d      c      b      a

Bu devre ortak katodu displeyi sürmektedir. Buna göre displeyin ucunun -gerilim alabilmesi için 19 ile 26 arasındaki uçlardan birisine bağlanması gerekir. Devrede kullanılan dirençlerin tümü 390 ohm değerindedir.

 

ÖRNEĞİN 7 segmentli displey’de l sayısını yakmak için b ve c segmentlerine lojik l uygulamak gerekir. Buna göre 3 ve 4 nolu uçlara l, diğer uçlara 0 gönderildiği taktirde b ve c segmentleri yanacak ve displey l sayısını görüntüleyecektir.

Bu durumda Lojik l (yani + 5 Volt) gönderilen b ve c segmentleri yanacak,lojik O (yani O volt) gönderilen diğer segmentler sönük olarak kalacağı içindispley l sayısını görüntüleyecektir.

Paralel porta giriş işleminde inportb. çıkış işleminde ise outportb komutu kullanılır. Bu komutlar doğrudan doğruya kullanılabildikleri gibi değişkenler aracılığıyla da kullanılabilirler.

Bu komutların kullanılabilmesi için programın başında dos.h header dosyasının programa dahil edilmesi gerekir.

Şimdi inceleyeceğimiz program paralel porta hem bilgi göndermekte hem de o porttaki bilgiyi okumaktadır.

#include <stdio.h>

#include <dos.h>

main()

{

int port1;

clrscr() ;

outportb(0x378,l);

portl=inportb(0x378);

printf(“port1= %d”,port1); }

 

Bu programdaki outportb(0x378,l) komutu paralel porta l sayısını gönderir ve l numaralı pinde +5 volt oluşur. portl=inportb(0x378); komutuyla da paralel porttaki bilgi port1 adlı degişkene okunmaktadır. Printf(“portl=%d”,portl) satırıyla da bu bilgi ekrana yazdırılıyor.

 

YÜRÜYEN IŞIK PROGRAMI

Bu program paralel porta bağlı ledleri sırayla yakar. Paralel porta 8 tane led bağlandığı varsayılmıştır. Programdaki delay komutu gecikmeyi sağlamaktadır.

#include <stdio.h>

#include <dos.h>

main()

{

int  t, i;

clrscr() ;

t=l;

for(i=l;i<=8;i++)

{

outportb(0x378,t) ;

t=t*2;

delay(10000) ;

}

printf(“Bir tuşa basınız..”) ;

getch() ;

YÜRÜYEN IŞIK PROGRAMI (2)

Bu program da az önceki programın yaptığı işi yapar. Ancak burada klavyede herhangi bir tuşa basılana kadar program çalışacaktır.

#include <stdio.h>

# incilide <dos.h>

main()

(

int port1,t,i;

cIrscr();

for (;;)

{   t=1;

for(i=1;i<=7;i++)

{ outportb(0x378,t) ;

t=t*2;

delay(10000); } if(kbhit()) break; } }

BİR LED’ İ YAKIP SÖNDÜREN PROGRAM

Bu programdaki while(!kbhit()) komutuyla herhangi bir tuşa basılana kadar devam eden bir döngü kurulmuştur.

#include <stdio.h>

#include <dos.h>

main()

{

cIrscr();

while(!kbhit())

{

outportb(0x378,l) ;

delay(l0000) ;

outportb(0x378,0) ;

delay(10000) ;

}

}

Bu programda paralel porta 1 ve 0 bilgileri sırayla gönderilmekte ve bu işlem sürekli tekrarlanmaktadır. Klavyede herhangi bir tuşa basılana kadar işlem devam eder.

tuna

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir