(3) numarali komut satirinda tus degeri byte büyüklügünde tanimlanmaktadir. Tusun alabilecegi deger maksimum 12 sayisi oldugundan ve bu desimal sayinin binary karsiligi “1100” oldugundan 4 bitlik bu sayi degerinin maksimum 8 bit olan byte büyüklügünde tanimlanmasi yeterlidir.
(4)-(10) numarali komut satirlari arasinda tus takimina ait satir ve sütunlarin bagli oldugu PORTB pinleri tanimlanmistir. Sekil 8.6’da da görüldügü gibi B portunun 4,5,6,7 numarali pinlerine tus takimina ait satirlar, 0,1,2 numarali pinlerine ise sütunlar baglanmistir.
(11)-(12) numarali komut satirlarinda PORTA ve PORTB içerigi silinmistir.
(13)-(34) numarali komut satirlari arasinda tus taramasi yapilmaktadir. Tus tarama islemi öncelikle ilk satir “1” yapilarak sütun seviyelerinin tespiti seklinde gerçeklesmektedir. Daha sonra diger satirlar sirasiyla “1” yapilarak her bir tus için sütun seviye kontrolü sorgulanmaktadir.
(14) numarali komut satirinda satir1, lojik1 (HIGH) yapilmaktadir.
(15) nolu komut satirinda 1 numarali tusa basilip basilmadigi kontrol edilmektedir. IF SUTUN1=1 THEN : TUS=1 : GOSUB LCD komut diziliminde “Eger sütun seviyesi “1” ise o zaman TUS register içerigine “1” yaz ve LCD alt programini çagir denmektedir. Bu komut satirinda her bir komut iki nokta üst üste (:) ile ayrilmistir. Programin uzun olusundan dolayi satirlari alt alta yazmak yerine yan yana yazabilmek amaciyla bu yöntem tercih edilmistir.
(16) ve (17) numarali komut satirlari ile 2 ve 3 numarali tuslara basilip basilmadigi kontrol edilmektedir.
Programin (18) numarali komut satirinda satir1 seviyesi LOW komutu ile sase potansiyeline çekilmektedir. Böylece ilk satir için 1,2 ve 3 numarali tuslara ait tarama islemi sonlandirilmis olur. Bu islem (19)-(23), (24)-(28) ve (29)-(33) komut satirlari arasinda diger tus kontrolleri için tekrarlanir.
Daha detayli açiklama için Program 44 ve Bölüm 7’yi inceleyiniz.
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
KARAKTER VERILI PROG. UYG.
(3) ve (4) numarali komut satirlarinda program baslangici için PORTA ve PORTB register içerikleri silinmistir.
(5) numarali komut satirinda LED_YAK etiketi 0x0 adresli LED’in yakilacagi alt program baslangicidir. Bu etiket (8) numarali komut satirindan (5) numarali komut satirina sürekli döngü saglayarak LED’in daima yanik kalmasi amaciyla kullanilmistir.
(6) numarali komut satirinda 0x0 adresli LED’in bagli oldugu PIC16F84’ün B portunun 6. biti “1” diger bitleri “0” yapilmaktadir. RB6 “1” yapilarak, Sekil 9.9’da görüldügü gibi RB6 satirina bagli tüm LED’lerin anotlarina pozitif gerilim uygulanmaktadir. Bu satirda belirtilen 5 LED’den hangisinin katoduna sase potansiyeli uygulanirsa o LED yanacaktir.
(7) numarali komut satirinda RA0=1, RA1=1, RA2=0 ve RA3=1 yapilarak (PORTA=%11101011) yani 74154 entegresinin ABCD girislerine 1101 uygulayarak, 0x0 LED’inin bagli oldugu ilk sütun olan Q11 çikisi “0” yapilir (Bakiniz Sekil 9.9 ve Tablo 9.1).
Q11 çikisinin “0” olarak yetkilendirilmesi için 74154’ün G1 ve G2 girislerinin “0” olmasi gerekir. Bu girisler RA4’e bagli oldugundan (7) numarali komut satirinda PORTA’nin 4. biti de “0” yapilmaktadir (PORTA=%11101011).
(8) numarali komut satiri ile yakilan LED’in daima yanik kalmasi için alt programi sürekli döngüye sokmak amaciyla (5) numarali komut satirina dallanma olusturulmustur.
Program 50 kullanilarak Sekil 9.11’deki LED’i yakmak için (6) numarali komut satiri PORTB=100000 seklinde degistirilmelidir.
Program 50 kullanilarak Sekil 9.12’deki LED’leri yakmak için (6) numarali komut satiri PORTB=%01010101 seklinde degistirilmelidir.
Program 50 kullanilarak Sekil 9.13’deki gibi ilk sütuna ait LED’leri yakmak için (6) numarali komut satiri PORTB=%11111111 seklinde degistirilmelidir.
74154’de Q15’in bagli oldugu SUTUN1 bilgisi $7E, Program 54 ile bir saga kaydirilir. Bu islemin ardindan 74154’ün Q14 çikisi seçilerek, PORTB’ye $09 bilgisi yüklenirse SUTUN1 VE SUTUN2 üzerinde Sekil 9.29’daki görüntü elde edilir.
Her sütun kaydirma islemi esnasinda bir sonraki sütuna “A” harfinin satir bilgileri PORTB araciligiyla gönderilir. Bu islemler “A” harfinin matrix dizilmis LED’ler üzerinde SUTUN1’den baslamak üzere tamaminin görüntülenip, SUTUN5’den ayrilisina kadar devam eder.
Program 54, 4 bölümden olusmaktadir. (1)-(8) numarali komut satirlari arasinda degisken içeriklerine ait Büyüklükler tanimlanmaktadir. (9)-(17) numarali komut satirlari arasinda sütun seçme islemlerini gerçeklestirebilmek amaciyla degisken içeriklerine sabit sayilar atanmaktadir. (18)-(36) numarali komut satirlarinda “A” karakterini olusturan satir ve sütun bilgileri tanimlanmaktadir. (37)-(46) numarali komut satirlari arasinda “A” harfi LED matrix üzerinde kaydirilmaktadir.
Programin (1)-(5) numarali komut satirlari arasinda sütun bilgilerinin kodlanacagi registerler ile (6) numarali komut satirinda kayma hizini belirleyen I degiskeni register içerigi byte büyüklügünde tanimlanmaktadir.
(7) ve (8) numarali komut satirlarinda TRISA ve TRISB register içerikleri “0” yapilarak PORTA ve PORTB çikis olarak tanimlanmaktadir.
Hiç yorum yok:
Yorum Gönder