CCS C Port Giriş ve Çıkış Komutları

PIC mikrodenetleyicisi için yazılan kodların derlendiği CCS C derleyicisine ait bazı özel komutlar vardır. Bu komutlar bizim PIC üzerinde işlem yapmamızı oldukça kolaylaştırır. Bu yazımızda CCS C derleyicine ait port giriş ve port çıkış işlemlerini ele alacağız.

PIC üzerindeki portlara bağlı pinler bizim onları nasıl kullanacağımıza göre giriş ve çıkış olarak değerlendirilirler. Eğer o pinden bir led yakacaksak bu çıkış pini olurken, buton vasıtasıyla bir değer okuyacaksak bu da giriş pini olarak değerlendirilir.

Sırasıyla derleyicimizde kullanacağımız işimize oldukça yarayan giriş ve çıkış komutlarımızı açıklayalım.

SET_TRIS_X() Komutu

Bu komut ile hangi portun hangi pinlerini giriş ve çıkış olarak kullanacağımızı derleyiciye bildirebiliriz. X yazan yere kullanacağımız portun adını, parantez içerisine de porta bağlı pinlerden hangilerini lojik-1 veya lojik-0 konumunda kullanacağımızı yazarız.

Örnek vermek gerekirse a portuna bağlı 8 pinimiz var. Bu 8 pinden ben sadece 3. ve 5. pinlerimi çıkış pini olarak kullanmak istiyorum. Bu durumda yazmam gereken komut set_tris_b(0b11010111) şeklinde olacaktır. Parantez içerisine yazdığımız değer ikili sayı sisteminde (binary) bir değerdir ve başındaki 0b onun binary sistemine ait bir değer olduğunu bildirir. Aynı değeri hexa (16’lık sistem) formatında da yazabilirdik. Bu durumda 0x ile başlardı.

set_tris_b(0b11010111)

Yukarıdaki örnekte A0,A1,A2,A4,A6,A7 pinlerini giriş pini; A3 ve A5 pinlerini çıkış pini olarak tanımlamış olduk.

GET_TRIS_X Komutu

set_tris_x komut formatını kullanarak portlarımızın giriş ve çıkış pinlerini ayarladıktan sonra kodumuzun herhangi bir kısmında portumuzdaki pinlerin giriş mi yoksa çıkış mı olduğunu sorgulamamız gerekebilir. Bu durumda get_tris_x komutunu kullanarak derleyiciden bir girdi almamız sağlanır. Eğer siz B portunu 1010101010 olacak şekilde ayarlamışsanız ve get_tris_x ile bunu girdi olarak derleyiciden almaya kalkarsanız 10101010 olacak şekilde girdinizi alırsınız.

set_tris_b(0b10101010);
durum = get_tris_b;

Yukarıdaki kod örneğinde durum değişkeninin değeri 10101010 ‘dır. Tabi öncesinde durum değişkenini derleyiciye tanımlamayı unutmuyoruz. 🙂

OUTPUT_LOW() Komutu

Bu komut ile PIC üzerindeki istediğimiz portlardan istediğimiz portun üzerindeki istediğimiz pinin değerini LOW konumuna getirebiliriz. LOW konumuna getirmek demek lojik-0 konumuna getirmek demektir. Bu sayede yanan bir ledi sönük konuma getirebilirsiniz.

output_low(pin_A5);

Yukarıdaki kod ile A portuna bağlı A5 pininin durumu lojik-0 konnumua getirildi. Yani artık o pinde 0 V gerilim var.

OUTPUT_HIGH() Komutu

Bu komut ise output_high komutunun tam tersi işleve sahip bir komuttur. Komutun içerisinde belirttiğimiz porta bağlı pinin lojik durumu lojik-1 konumuna gelir. Bu sayede yanmayan bir ledi yakabiliriz.

output_high(pinC7);

Yukarıdaki kod ile C portuna bağlı 7 numaralı pinimizin durumu lojik-1 olmuştur. Yani artık o pinde 5V gerilim vardır.

OUTPUT_BIT() Komutu

Bu komut ile istediğimiz pinin lojik-1 veya lojik-0 konumuna geçmesini sağlıyoruz. Aslına bakılırsa set_tris_x() komutu ile aynı görevi yapıyorlar fakat farklı yolları izliyorlar diyebiliriz.

output_bit(PINA2,1);

Yukarıdaki kod ile A portuna bağlı A2 pininin durumu lojik-1 durumuna getirilmiştir.

OUTPUT_X() Komutu

Bu komut ile istediğimiz portun bütün pinlerine tek bir komut vasıtasıyla lojik-0 ve lojik-1 değerlerini atayabiliyoruz.

output_b(0x0F);

Yukarıdaki kod sayesinde B portuna bağlı pinlerden B0,B1,B2,B3 pinlerine lojik-1; B4,B5,B6,B7 pinlerine lojik-0 değerlerini atamış olduk. Burada dikkat etmemiz gereken husus parantez içerisine yazacağımız değerin 8 bitlik bir değer olmasıdır. (0F = 00001111)

OUTPUT_TOGGLE() Komutu

Bu komut ile istenilen portun istenilen pininin lojik durumunun değeri değiştirilir. Eğer 1 konumunda ise 0, 0 konumunda ise 1 konumu geçer.

output_toggle(pin_A3);

Yukarıdaki kod örneğinde ilk olarak A3 pinimizin durumu lojik-1 olarak kabul edilerek kod işleme alınır alınmaz lojik-0 konumuna geçmiştir.

OUTPUT_FLOAT() Komutu

Bu komut ile istediğimiz pini 1 veya 0 konumunda tutabiliriz lakin bu tamamen kuracağımız devre ile ilgili bir durum. Pull up ve Pull down dirençleri ile pinimizin durumunu değiştirebiliriz.

output_float(pin_B0);

INPUT Komutu

Bu komutun kullanımı get_tris komutuna oldukça benzemektedir. Pinin hangi ojik konumda olduğunu bize bir değişken üzerinden çıktı olarak verebilen bir komuttur.

durum = input(pin_A3);

Yukarıdaki kod sayesinde A portuna bağlı A pinimizin lojik durumunu durum değişkenine atamış oluyoruz. Bu bilgi 1 ve 0 olarak atanır.

INPUT_X Komutu

Bu komut ile sadece bir pinin değil bir portun lojik durumunu çıktı olarak bir değişkene atayabiliyoruz. Atadığımız bu değer 8 bitlik bir veridir.

bilgi = input_c();

Yukarıdaki kod sayesinde C portuna bağlı tüm pinlerin lojik durumlarını bilgi adındaki değişkenimize atamış olduk.

INPUT_STATE() Komutu

Bu komut ise INPUT() komutu ile aynı mantıkta çalışmaktadır. İçerisine yazdığımız pinin lojik durumunu bir değişkene atamamıza olanak sağlar.

durum = input_state(pin_A7);

Yukarıdaki kod ile A portundaki A7 pininin lojik durumunu durum değişkenine atamış olduk.

PORT_X_PULLUPS Komutları

Bu komut ile mikrodenetleyimizde eğer pull-up özelliği dahili olarak kendinde varsa bu özelliği aktif etmeye yarar. Parantez içerisine aktif etmek için TRUE, pasif etmek için FALSE yazılır.

port_c_pullups(TRUE);

Yukarıdaki kod ile C portunun pullups özelliği aktif edilmiş oldu.

Pull-Down ve Pull-Up Dirençleri Nelerdir?

Pull down ve Pull up İngilizcede aşağı çeken ve yukarı çeken anlamların gelmektedir. Elektrikteki karşılığı ise devreyi topraklama hattına çekmek veya yukarı...