Program 11 : A portunun ilk bitine bagli butona basildiginda, B portunun ilk bitine bagli LED’i (0. LED) yakan program.
Program 11’de butona basilip basilmadigina dair buton kontrolü (6) nolu komut satirinda yapilmaktadir. Sekilde görüldügü gibi buton PORTA’nin 0. bitine pull-up baglanmistir. Butona basildiginda PORTA’nin 0. biti sase potansiyeli almaktadir. Diger bir ifadeyle butona basildiginda PORTA’nin 0. bit girisi “0” olmaktadir. Bu nedenle program içerisinde BUTON=0 kontrolü yapilir.
(4) nolu komut satirinda yer alan SYMBOL ile A portunun 0. bitine (PORTA.0) BUTON ismi (alias) verilmistir. Semboller, bir sabit veya degiskene programin daha kolay anlasilmasini saglamak veya program içerisinde karmasayi gidermek amaciyla farkli bir isim vermek amaciyla kullanilirlar.
IF komutu ile BUTON degerinin “0” olup olmadigi sorgulanir. THEN komutu ile buton degeri “0” ise LED_YAK etiketli (8) nolu komut satiri isletilerek LED yakilir.
Programin açiklanmasi : (1) 8 bitlik TRISB registerine ait tüm bitler “0” yapilarak PORTB register bitleri çikis olarak ayarlanir ve böylece bu portun ilk bitine bagli LED yakilabilir.
(2) 5 bitlik TRISA registerine ait tüm bitler “1” yapilarak PORTA bitleri giris olarak ayarlanir ve böylece bu portun ilk bitine bagli buton kontrolü saglanabilir.
(3) PIC üzerine önceden yazilmis bir program var ise bu komut satiri ile silinir.
(4) SYMBOL komutu ile PORTA’nin 0. biti BUTON olarak isimlendirilmistir. Böylece program içerisinde A portunun 0.bitini tanimlayan PORTA.0 ibaresi yerine BUTON yazmak yeterli olur.
(5) Programin (6) nolu komut satirindan (4) nolu komut satirina dönebilmesi için DONGU etiketi kullanilir. Bu etiket ile (4)-(6) nolu komut satirlari arasinda buton kontrolünü saglayan sürekli döngü elde edilir.
(6) IF BUTON=0 THEN LED_YAK
Eger (IF) BUTON degeri “0” ise o zaman (THEN) LED_YAK etiketli (7) nolu komut satirina dallan.
(7) Buton kontrolü için (4) nolu komut satirina dallan.
(8) IF…THEN komutlari ile yapilan kiyaslama sonucu botunun basilmasi durumunda program LED_YAK etiketli bu program satirina dallanir.
(9) PORTB’nin 0. bitini “1” yap (LED’i yak).
(10) Program sonu.
Programda (7) ve (8) nolu komut satirlari silinerek, (5) nolu komut satiri IF BUTON=0 THEN HIGH PORTB.0 seklinde düzenlendiginde, programin isleyisinde bir farklilik olmaz ve butona basildiginda LED yanar. Böylece program iki satir kisaltilabilir.
Programin açiklanmasi : (1) 8 bitlik TRISB registerine ait tüm bitler “0” yapilarak PORTB register bitleri çikis olarak ayarlanir ve böylece bu portun ilk bitine bagli LED yakilabilir.
(2) 5 bitlik TRISA registerine ait tüm bitler “1” yapilarak PORTA bitleri giris olarak ayarlanir ve böylece bu portun ilk bitine bagli buton kontrolü saglanabilir.
(3) PIC üzerine önceden yazilmis bir program var ise bu komut satiri ile silinir.
(4) SYMBOL komutu ile PORTA’nin 0. biti BUTON olarak isimlendirilmistir. Böylece program içerisinde A portunun 0.bitini tanimlayan PORTA.0 ibaresi yerine BUTON yazmak yeterli olur.
(5) Programin (6) nolu komut satirindan (4) nolu komut satirina dönebilmesi için DONGU etiketi kullanilir. Bu etiket ile (4)-(6) nolu komut satirlari arasinda buton kontrolünü saglayan sürekli döngü elde edilir.
(6) IF BUTON=0 THEN LED_YAK
Eger (IF) BUTON degeri “0” ise o zaman (THEN) LED_YAK etiketli (7) nolu komut satirina dallan.
(7) Buton kontrolü için (4) nolu komut satirina dallan.
(8) IF…THEN komutlari ile yapilan kiyaslama sonucu botunun basilmasi durumunda program LED_YAK etiketli bu program satirina dallanir.
(9) PORTB’nin 0. bitini “1” yap (LED’i yak).
(10) Program sonu.
Programda (7) ve (8) nolu komut satirlari silinerek, (5) nolu komut satiri IF BUTON=0 THEN HIGH PORTB.0 seklinde düzenlendiginde, programin isleyisinde bir farklilik olmaz ve butona basildiginda LED yanar. Böylece program iki satir kisaltilabilir.
Program 12 : A portunun 1.bitine bagli butona (RA1) basili oldugu sürece B portunun 1. bitine (RB1) bagli LED’i yakan program.
Programin (7)-(11) nolu komut satirlari arasinda IF…THEN…ELSE…ENDIF komutlari birlikte kullanilmistir. Bu program satirlari ile butona basildiginda LED’in yanmasi buton birakildiginda ise LED’in sönmesi saglanir.
IF…THEN kiyaslama komut diziliminde THEN komutundan sonra önceki programlarda oldugu gibi herhangi bir etiket tanimlanabilecegi gibi THEN komutundan sonra farkli bir komut da isletilebilir.
Program 11’de oldugu gibi THEN komutundan sonra kullanilan LED_YAK etiketi gibi bir etiketin kullanilmasi durumunda ELSE veya ENDIF komutlarinin kullanimina gerek yoktur. Ancak THEN komutundan sonra farkli komutlar isletilecek ise IF…THEN komutlari ENDIF ile sonlandirilmalidir.
(7) ve (11) nolu komut satirlarinda, eger (IF) butona basilmis ise o zaman (THEN) LED’i yak, yoksa (ELSE) LED’i söndür denmektedir.
Program 12, (4) nolu komut satirina kadar program 8 ile ayni yapidadir. Programin (5) nolu komut satirinda (4) nolu komut satirinda oldugu gibi SYMBOL komutu ile PORTB’nin 1. biti LED olarak isimlendirilmistir. Böylece programin devaminda PORTB.1 yerine LED yazmak yeterli olacaktir.
DONGU islemleri programin (6)-(12) nolu komut satirlari ile yapilir.
(7) nolu komut satiri ile butona basilip basilmadigi (buton seviyesi) kontrol edilir. Butona basilmis ise PORTA’nin 1. biti sase “0” potansiyelinde olacagindan THEN komutundan sonra gelen komut isletilerek (8) nolu komut satirindaki HIGH komutu ile PORTB’nin 1. biti “1” yapilir ve LED yanar.
Butona basilmamis veya buton basilip birakilmis ise bu kez program (7) nolu komut satirindan (9) nolu ELSE komut satirina dallanir ve (10) nolu komut satiri ile LED’in sönük olmasi saglanir.
(11) nolu komut satirinda IF..THEN komutlari sonlandirilir.
Programda PORTA’ya bagli buton ile PORTB’nin farkli bitine bagli LED’i yakmak için (5) nolu komut satirindaki PORTB içerigi degistirilmelidir. Örnegin PORTB’nin 3. bitine bagli LED’i yakmak için bu komut satiri SYMBOL LED=PORTB.3 yapilmalidir.
Programda ayni LED’i PORTA’nin farkli bitine bagli butonla yakmak için ise (4) nolu komut satirindaki PORTA içerigi degistirilmelidir. Örnegin PORTA’nin 2. bitine bagli butona basildiginda LED’i yakmak için bu komut satiri SYMBOL BUTON=PORTA.2 yapilmalidir.
Program 13 :A portunun ilk bitine (RA0) bagli butona basildiginda B portuna bagli tüm LED’leri yakan, A portunun ikinci bitine (RA1) bagli butona basildiginda ise LED’leri söndüren program
Programin (1) ve (2) nolu komut satirlarinda PORTB çikis ve PORTA giris olarak tanimlanmistir.
(3) nolu komut satirinda PORTB içerigi silinmistir.
(4) ve (5) nolu komut satirlarinda SYMBOL komutu ile A portunun 0. biti (PORTA.0) BUTON0 ve 1. biti
PORTA.1) BUTON1 olarak tanimlanmistir.
(6) nolu komut satiri ile buton kontrollerine ait sürekli döngü islemi saglanmistir.
(7) nolu komut satirinda BUTON0’a basilip basilmadigi kontrol edilmektedir. Eger PORTA’nin 0. bitine bagli butona basilmis ise program (8) nolu komut satirini isleterek PORTB’ye bagli tüm LED’leri yakar.
(8) nolu komut satirinda PORTB bitleri “lojik 1” yapilarak tüm LED’lerin yakilmasi saglanmistir.
(9) nolu komut satirinda BUTON0’a ait IF…THEN komut sorgulamasi ENDIF komutu ile sonlandirilmistir.
(10) nolu komut satirinda BUTON1’e basilip basilmadigi kontrol edilmektedir. Eger PORTA’nin 1. bitine bagli butona basilmis ise program (11) nolu komut satirini isleterek PORTB’deki tüm LED’leri söndürür.
(11) nolu komut satirinda PORTB bitleri “lojik 0” yapilarak yanik durumdaki tüm LED’ler söndürülür.
(12) nolu komut satirinda BUTON1’a ait IF…THEN komut sorgulamasi ENDIF komutu ile sonlandirilmistir.
(13) nolu komut satiri ile sürekli buton kontrolü için (6) nolu komut satirina yönlendirme yapilir.
(14) nolu komut satiri programi sonlandirir.
Farkli butonlari kullanarak ayni LED’leri yakip söndürmek için programda (4) ve (5) nolu komut satirlarindaki
PORTA degerlerini degistirmek gerekir. Örnegin butonlarin PORTA’nin 2. ve 3. bitine baglanmasi durumunda
programin (4) nolu komut satiri SYMBOL BUTON0=PORTA.2 ve (5) nolu komut satiri SYMBOL BUTON1=PORTA.3 seklinde degistirilmelidir.
Ayni butonlari kullanarak ilk butona basildiginda PORTB’nin ilk 4 LED’ini diger butona basildiginda ise PORTB’nin son 4 LED’ini yakmak için program üzerinde (8) ve (11) nolu komut satirlarini degistirmek gerekir.
(8) nolu komut satirinda PORTB içerigi 00001111 ve (11) nolu komut satirinda PORTB içerigi 11110000 seklinde düzenlenmelidir.
Program 16 :A portunun ilk bitine (RA0) ve ikinci bitine (RA1) bagli butonlara sirasiyla basildiginda B portunun tüm LED’lerini yakan program.
Program 16’da diger programlardan farkli olarak SYMBOL komutu ile buton veya LED tanimlamasi yapilmamistir. Istenildigi taktirde SYMBOL komutu kullanilarak bu tanimlamalar da yapilabilir.
Programin (1) ve (2) nolu komut satirlarinda PORTB çikis ve PORTA giris olarak tanimlanmistir.
(3) nolu komut satirinda PORTB içerigi silinmistir.
(4) nolu komut satiri ile buton1 kontrolü için sürekli döngü islemi yapilmistir.
(5) nolu komut satiri ile PORTA’nin 0. bitine bagli butona basilip basilmadigi kontrol edilmektedir. PORTA’nin 0. bitine bagli butona basilmis ise program PORTA’nin 1. bitine bagli diger butona basilip basilmadigini kontrol etmek için A etiketli (7) nolu komut satirina dallanir.
Eger ilk butona basilmamis ise (5) nolu komut satirindan sonra (6) nolu komut satiri isletilerek, bu butona basilana kadar (4)-(6) arasinda sürekli döngü islemi olusturulur.
Ilk butonun basilmasinin ardindan (8) nolu komut satiri ile ikinci butona basilip basilmadigi kontrol edilir. Eger PORTA’nin 1. bitine bagli butona basilmis ise PORTB’nin tüm bitleri “lojik 1” yapilarak bu bitlere bagli LED’ler yakilir. Butona basilmamis ise THEN komutundan sonra gelen komutu atlanarak (9) nolu komut satiri isletilir ve ikinci butona basilana kadar (7)-(9) arasinda sürekli döngü islemi yapilir.
(10) nolu komut satiri ile program sonlandirilir.
PORTA’nin farkli bitlerine bagli butonlara sirasiyla basildiginda B portunun farkli bitlerine bagli LED’leri yakmak için programin (5) ve (8) nolu komut satirlarinda belirtilen PORTA’nin 0. biti ile 1. bit degerleri ile PORTB içeriginin degistirilmesi gerekir. Örnegin A portunun önce 2. daha sonra 3. butonuna sirayla basildiginda B portunun ilk 4 bitine bagli LED’leri yakmak için, (5) nolu komut satiri IF PORTA.2=0 THEN A yapilmali, (8) nolu komut satiri ise IF PORTA.3 THEN yapilmalidir.
Hiç yorum yok:
Yorum Gönder