Programin (1) nolu komut satirinda TRISB içerigi “0” yapilarak PORTB registeri çikis olarak tanimlanmistir.
(2) nolu komut satirinda SAYI degisken içerigi 8 bitlik binary sayma islemi için byte büyüklügünde tanimlanmistir.
(3) nolu komut satirinda PORTB içerigi silinmistir.
(4) nolu komut satirinda 8 bitlik binary sayma isleminin “0” baslangiç degeri SAYI degiskeni içerisine atanmistir.
(5) nolu komut satirina sürekli döngüden dönüs için ILERI etiketi atanmistir.
(6) nolu komut satiri sayma islemini gerçeklestirir. Bu komut satiri her isletildiginde SAYI içerigi bir artirilarak tekrar SAYI degiskeni içerisine kaydedilir.
(7) nolu komut satiri sayma isleminde bekleme gecikmesi saglar. Bu komut satiri ile binary sayi degeri LED’ler üzerinde 1sn’lik süre boyunca görüntülenir.
(8) nolu komut satiri ile SAYI içeriginin PORTB registerine kaydedilmesi saglanir. Böylece SAYI degiskeni içerigi PORTB’ye bagli LED’ler üzerinde görüntülenir.
(9) nolu komut satirinda GOTO komutu ile (5) nolu komut satirina dönülerek sayma isleminin devamliligi saglanir.
(10) nolu komut satiri ile program sonlandirilir.
(2) nolu komut satirinda SAYI degisken içerigi 8 bitlik binary sayma islemi için byte büyüklügünde tanimlanmistir.
(3) nolu komut satirinda PORTB içerigi silinmistir.
(4) nolu komut satirinda 8 bitlik binary geri sayma isleminin “255” baslangiç degeri SAYI degiskeni içerisine atanmistir.
(5) nolu komut satirina sürekli döngüden dönüs için GERI etiketi atanmistir.
(6) nolu komut satiri sayma islemini gerçeklestirir. Bu komut satiri her isletildiginde SAYI içerigi bir azaltilarak tekrar SAYI degiskeni içerisine kaydedilir.
(7) nolu komut satiri sayma isleminde bekleme gecikmesi saglar. Bu komut satiri ile binary sayi degeri LED’ler üzerinde 1sn’lik süre boyunca görüntülenir.
(8) nolu komut satiri ile SAYI içeriginin PORTB registerine kaydedilmesi saglanir. Böylece SAYI degiskeni içerigi PORTB’ye bagli LED’ler üzerinde görüntülenir.
(9) nolu komut satirinda GOTO komutu ile (5) nolu komut satirina dönülerek sayma isleminin devamliligi saglanir.
(10) nolu komut satiri ile program sonlandirilir.
Programda sayma islemi hangi sayidan geriye dogru yapilacak ise o deger (4) nolu komut satirinda oldugu gibi SAYI degiskeni içerigine yerlestirilir. Geriye sayma isleminin baslangiç degeri bu satirda desimal 255 olarak belirtilmistir. Bu deger binary olarak (11111111) olarak da yazilabilir.
Binary sayi degerine dikkat edildiginde geriye dogru 8 bitlik bir sayma islemi yapilmaktadir. (4) nolu komut satirinda belirtilen bu deger binary olarak (00001111) seklinde düzenlenirse bu kez sayma islemi bir defaya mahsus olarak 15’den geriye dogru olacaktir ancak sayi sifira ulastiginda geriye sayma sayi degeri tekrar 255’ten (11111111) baslayacaktir.
Ortak katotlu 7 segment displayler ayni zamanda 7448 (7 segment kod çözücü) entegresi ile de kullanilabilirler. Ancak sekildeki devrede 4511 entegresinin kullanilma nedeni, 7 segment kod çözücü özelliginin yaninda kilitleme özelliginin de bulunmasidir.
4511 entegresinin LE girisi (5 nolu pin) pozitif degerlikli (yaklasik +3V ve üzeri) yapildiginda display üzerinde en son görüntülenen rakam, A,B,C,D giris degerlerine bakilmaksizin sabit kalir. A,B,C,D giris degerlerine göre display üzerinde degisik rakamlar elde etmek için diger bir ifadeyle 4511 entegresini 7 segment kod çözücü olarak aktif etmek için, LE girisine sase potansiyeli yapilamali ve LT ile BI girisleri ise pozitif degerlikli olmalidir.
Program 25, PIC16F84’e yüklenip devre çalistirildiginda displayler üzerinde 0-99 ileri sayma isleminin gerçeklestigi görülür.
Devrede 4511 entegrelerine ait A,B,C ve D data girisleri birbirlerine paralel baglidir. Dolayisiyla PIC16F84’ten uygulanan datalar ayni anda iki 4511 girisine de uygulanir. Ancak buna ragmen displaylerde farkli rakam degerleri görüntülenir. Bunun sebebi program araciligiyla 4511 entegreleri çok kisa zaman araliginda tarama yöntemi seklinde ayri ayri seçilir ve 8 bitlik sayi degeri 4’er bit halinde 4511 entegrelerine ayri ayri gönderilir.
Programin (1) nolu komut satirinda TRISB register içerigi 0 yapilarak PORTB’nin çikis olarak tanimlanmasi saglanmistir.
Sayma islemi 0-99 araliginda yapilacagindan ve desimal 99 degeri binary olarak (1100011) degerine esit oldugundan, 7 bitlik bu sayi için (2) nolu komut satirinda SAYI degisken içerigi byte büyüklügünde tanimlanmistir. Byte olarak tanimlanan bir degisken içerigi maksimum 8 bit olabilir.
(3) ve (4) nolu komut satirlarinda DISPLAY1 ve DISPLAY2 degisken içerikleri byte büyüklügünde tanimlanmistir. Bunun nedeni(11) ve (12) nolu komut satirlarinda görüldügü gibi her iki display kontrolü için 4511 girisleri A,B,C ve D olmak üzere 4’er bitliktir ve bu büyüklükler byte ile tanimlanabilmektedir.
(5) nolu komut satirinda ana program çalistirilmadan önce PORTB içerigi sifirlanarak, bu register içeriginde istenilmeyen bilgi kalintilarinin silinmesi saglanir.
(6) nolu komut satiri ile 0-99 sayicisina ait sayma isleminin baslangiç degeri olan 0 sayisi SAYI degiskeni içerisine yüklenmektedir.
(7) nolu komut satirinda ILERI etiketi ile programin (23) nolu komut satirindan bu komut satirina dönebilmesi saglanmaktadir.
Sayma islemi (8) nolu komut satirinda gerçeklestirilir. Bu komut satiri ile sayi degeri “1” artirilir. Program (23) nolu komut satirindan (7) nolu komut satirina dönüp, (8) nolu komut satirina her gelisinde bu SAYI degisken içerigi “1” artirilarak sayma isleminin 99’a kadar artmasini saglar.
(9) nolu komut satiri sayma zaman araligini belirler.PAUSE 500 komutu ile sayma islemi 0,5’er saniye araliklarla gerçeklesir.
(10) nolu komut satiri ileri sayma islemini 99 sayisi ile sinirlar. Bu komut satirinda SAYI degiskeni içeriginin 100’e ulasip ulasmadigi sorgulanir. Sayi degeri 100’e ulasmis ise displayler üzerinde en son 99 görüntülenir ve ayni komut satirinda SAYI degiskeni içerigi 0 yapilarak, sayma islemi 0’dan itibaren yeniden baslatilir. SAYI degerinin içerigine 99 verilmesi durumunda displayde en son 98 rakami görüntülenir ve sayma islemi yeniden 0’dan baslar.
Sayma islemi 8 bitlik yapilmaktadir. Programin (11) ve (12) nolu komut satirlari ile 8 bitlik sayi degeri 4’er bit halinde iki ayri parçaya bölünür.Ilk 4 bit DISPLAY1’in bagli oldugu 4511 girislerine uygulanirken, son 4 bit DISPLAY2’nin bagli oldugu diger 4511 girislerine uygulanir.
(11) ve (12) nolu komut satirlarinda yer alan DIG komutu, aritmetik operatör olarak görev yapar. DIG komutu, desimal sayinin istenilen bitini herhangi bir degisken içerisine atamak amaciyla kullanilir.
Asagidaki örnek programin ilk satirinda SAYI1 içerigine desimal 45 sayisi yüklenmektedir. Ikinci satirda ise DIG 1 komutu ile, SAYI2 içerigine SAYI1’e yüklenen 45 desimal sayisindaki 4 sayisi atanir. DIG komutunun degeri “1” oldugundan, 45 sayisinin sagdan sola dogru sayildiginda 1. biti 4 rakamina karsilik gelmektedir. Bu komut satiri DIG 0 olarak degistirilirse, bu kez SAYI2 içerigine 5 rakami atanir.
SAYI1 = 45 ‘SAYI1’e 45 sayisini atar.
SAYI2 = SAYI1 DIG 1 ‘SAYI2’ye 4 rakamini (45’nin 1. rakami) atar.
Sayicinin 00-99 sayma islemi sirasinda DIG komutu ile her bir displayin 0-9 rakamlarini uygun zamanlarda ayri ayri göstermesi saglanir. Örnegin sayma rakami 00’dan baslayip 17 gibi bir sayiya geldiginde DIG 0 komutu ile DISPLAY1 “7” rakamini, DIG1 komutu ile “1” rakamini görüntüler.
Sekildeki uygulama devresine dikkat edildiginde PORTB’nin 4 ve 5. bitleri 4511 seçmek amaciyla kullanilmaktadir. DISPLAY1 ve DISPLAY2’yi süren 4511’in data bilgileri yine PORTB’nin ilk 4 biti tarafindan saglanmaktadir.
Programin (14) ve (17) nolu komut satirlari arasinda DISPLAY1’in bagli oldugu PORTB’nin 5. biti 1msn’lik kisa süre içerisinde önce “0” yapilir ve 4511 entegresi yetkilendirilerek sayinin “1” artmasina izin verilir. Daha sonra bu bit tekrar “1” yapilarak 4511 çikisindaki sayi degeri kilitlenir ve display üzerinde görüntülenmesi saglanir.
(18) ile (22) nolu komut satirlarinin çalisma prensibi yukarida anlatildigi gibi (13) ile (17) nolu komut satirlarinda oldugu gibidir.
Devreye ilave olarak display segmentlerine (4511 çikislarina) 330ohm dirençler ve 4511 entegresinin LT, BI pinleri +5V'a baglanmalidir.
Program 28’de sayma islemi 0-9999 araliginda yapilmaktadir. Maksimum 10000 olan sayi degeri 14 bit oldugundan SAYI ve DISPLAY içerikleri (2)-(6) nolu komut satirlari arasinda 16 bitlik word büyüklügü olarak tanimlanmistir.
Program 25’e Program 28’de görüldügü gibi buton kontrolüne ait (9)-(11) nolu komut satirlari eklenip, (40) nolu komut satiri GOTO BASLA olarak degistirildiginde butona her basista displayler üzerindeki sayi degeri 1 artar.
(10) nolu komut satirinda PORTA’nin 0. bitinin “0” olup olmadigi sorgulanmaktadir. Butona basildiginda PORTA’nin 0. biti “0” degerlikli olacagindan program ILERI etiketli (12) nolu komut satirina dallanarak Program 25’te anlatildigi gibi displaylerde ilk sayinin görüntülenmesi saglanir.
Butona basilmamis ise program (11) nolu komut satirini isleterek BASLA etiketli (9) nolu komut satirina döner. Butona basilana kadar döngü devam eder. (14) nolu komut satiri buton arkini söndürmek için 150msn’lik gecikme saglar. (15) nolu komut satirinda maksimum sayi degeri 9999 olarak tanimlanmistir.
Program 28’de Program 25’in aksine buton kontrolü için (40) nolu komut satirinda belirtilen BASLA etiketine yönlendirme yapilmaktadir. Eger Program 25’te oldugu gibi ILERI etiketine yönlendirme yapilirsa, butona bir kez basildiginda sayma islemi buton kontrolsüz olarak 0-99’a araliginda sayar.
Devre üzerinde buton kaldirilarak devreye enerji verilir verilmez sayma isleminin yapilmasi için, program üzerinde (9), (10) ve(11) nolu komut satirlari silinerek, (40) nolu komut satiri GOTO ILERI seklinde düzenlenmelidir.
Devreye ilave olarak display segmentlerine (4511 çikislarina) 330ohm dirençler ve 4511 entegresinin LT, BI pinleri +5V'a baglanmalidir.
Program 28’de sayma islemi 0-9999 araliginda yapilmaktadir. Maksimum 10000 olan sayi degeri 14 bit oldugundan SAYI ve DISPLAY içerikleri (2)-(6) nolu komut satirlari arasinda 16 bitlik word büyüklügü olarak tanimlanmistir.
Program 25’e Program 28’de görüldügü gibi buton kontrolüne ait (9)-(11) nolu komut satirlari eklenip, (40) nolu komut satiri GOTO BASLA olarak degistirildiginde butona her basista displayler üzerindeki sayi degeri 1 artar.
(10) nolu komut satirinda PORTA’nin 0. bitinin “0” olup olmadigi sorgulanmaktadir. Butona basildiginda PORTA’nin 0. biti “0” degerlikli olacagindan program ILERI etiketli (12) nolu komut satirina dallanarak Program 25’te anlatildigi gibi displaylerde ilk sayinin görüntülenmesi saglanir.
Butona basilmamis ise program (11) nolu komut satirini isleterek BASLA etiketli (9) nolu komut satirina döner. Butona basilana kadar döngü devam eder. (14) nolu komut satiri buton arkini söndürmek için 150msn’lik gecikme saglar. (15) nolu komut satirinda maksimum sayi degeri 9999 olarak tanimlanmistir.
Program 28’de Program 25’in aksine buton kontrolü için (40) nolu komut satirinda belirtilen BASLA etiketine yönlendirme yapilmaktadir. Eger Program 25’te oldugu gibi ILERI etiketine yönlendirme yapilirsa, butona bir kez basildiginda sayma islemi buton kontrolsüz olarak 0-99’a araliginda sayar.
Devre üzerinde buton kaldirilarak devreye enerji verilir verilmez sayma isleminin yapilmasi için, program üzerinde (9), (10) ve(11) nolu komut satirlari silinerek, (40) nolu komut satiri GOTO ILERI seklinde düzenlenmelidir.
Sekildeki uygulama devresinde görüldügü gibi PORTA’nin 0. ve 1. bitlerine ILERI ve GERI butonlari baglanmistir. PORTB çikislari ise 4511 entegreleri ile displayleri kontrol etmektedir.
Devreye ilave olarak display segmentlerine (4511 çikislarina) 330ohm dirençler ve 4511 entegresinin LT, BI pinleri +5V'a baglanmalidir.
Programin (1) nolu komut satirinda TRISB register içerigi 0 yapilarak PORTB’nin çikis olarak tanimlanmasi saglanmistir.
Hiç yorum yok:
Yorum Gönder