Commodore sayı 23, sayfa 48
Sayfanın metni

Sayfa 48

Şekil 11

Burada dirençler LED'den geçen akımı sınırlamak için kullanılmıştır. Bu bitlere verdiğimiz değerlere göre LED'ler yanarlar. Aynı şekilde giriş olarak da bir anahtarı düşünürsek Şekil 12'deki deneyi kullanabiliriz. R3 pull-up direnci olup, anahtar açıkken PB2 = 5V, kapalı iken 0V olması bu direnç sayesindedir.

Şekil 12

*5v

PB>

Anahtarın ne konumda olduğunu bir peek komutu ile öğrenebiliriz. Son olarak anahtar açıkken LEDİ'i yakan, aksi durumda LED?'yi yakan bir program yapalım:

10 POKE 56579,3 20 A—56577 30 C- (PEEK(A)AND4) 401FC- 0THENPOKEA, GOTO 30 ; 50 POKE A, 0: GOTO 30

Saat Programı: Bilgisayarı sadece bir saati işletmek için kullanmak herhalde pek pahalı bir saate sahip olmak dışında hiçbir anlam taşımaz. Bu nedenle yazılmış olan saat programı interrupt ile sürülmekte ve bu sayedeizin bilgisa- .

yarla uğraşmanızı kesmeden saniyede belirli bir sayıda çalıştırılmaktadır. Program her seferinde bir önceki sefer yanık bıraktığı display'den bir sonrakine geçmeke ve ona değer yükleyip yakmaktadır. Dolayısıyla tüm display'lerin taranması için programın 4 defa interrupt ile çağrılması gerekmektedir. Bu noktada bir soru sormak isteyebilirsiniz: Niye her interrupt'ta sadece bir LED'i yanık bırakıyorsunuz da, tüm LED'leri sırayla yakmak gibi bir yola gitmiyorsunuz? Bunun nedenini de basitçe şöyle izah edebilirim:

Bir LED'in aktif olup doymaya ulaşıp ışık vermeye başlayabilmesi için belirli bir süre gerekmektedir . Aksi halde machine-code hızında yapılan böyle bir tarama sonucunda, LED'lerin aktif olması için gerekli zaman olmadığından dolayı ışık vermezler.

Programda CIA | saat olarak programlanmıştır. Display'lere yazılacak veriler ise CIA 1'ingün zamanı saatine (GZS) ilişkin adreslerden okunarak bulunmaktadır. CIA 1'in GZS'nin adres ve anlamları aşağıdadır:

1/10 Saniye : 56328 $DC08

Saniye : 56329 $DCO9 Dakika : 56330 $DCOA Saat AM/PM : 56331 $DCOB

Program konusunda son olarak şu da bilinmelidir: Commodore'da normalde saniyede 50 kere interrupt oluşmaktadır. Bu da saat programının saniyede 50 kere çağrılması sonucunu oluşturur. Yani saniyede 56/4 — 12,5 kere bütün display'ler taranmaktadır. Bu, bizim göz hassasiyetimiz sınırında olduğu için LED'- ler eğer bu şekilde çalıştırılırsa sabit duruyor görünmezler. Devamlı titreşirler. Bunu engelleyebilmeki çin makinenin saniyedeki interrupt sayısı arttırılmıştır. Bu durumda gerçi cursor çok hızlı yanıp sönmekte, space

Klavyeyle gezinmek için ← ve → tuşları.