PIC16F877 Sayı 6
Yazı dizimizde bu ay, Pic Basic Pro ile Pic16F877 için tasarlanmış programlarla ilgili bazı örnekler verip, işlerin nasıl daha kısa sürede yapılabildiğini görebilirsiniz.
Eveet yazın artık iyiden iyiye kendini göstermeye başladığı şu günlerde insanlar bir yandan tatil özlemi duyup, fırsat bulursa nasıl tatil yapacağının hayalini kurarken, bir yandan da işleriyle daha verimli bir şekilde ilgilenebilmekte.
Biz de bu ay yazı dizimize Pic Basic Pro ile Pic16F877 için tasarlanmış programlarla ilgili bazı örnekler verip, işlerin nasıl daha kısa sürede yapılabildiğini anlatmaya ve macro assembler ile karşılaştırmaya çalıştık.
Programcılıkta daha önceki yazıda da belirttiğim gibi hep bir düşünce vardır. Programlama dili olarak seçilen dil ne kadar Makine diline yakınsa programın kontrol ettiği donanımın uç birimlerine kadar kontrol etme imkanı artar. Bu yüzden yıllarca programcılar, İnsana yakın (üst düzey) ve işlemciye yakın (alt düzey diller) olarak dilleri kendi arasında kategoriye ayırmışlardır.
İşte bence bu geleneksel yapı bence Pic Basic� de biraz bozulmuş. Yani izlediğim şekliyle öyle hızlı bir değişim süreci geçirdi ki, ilk üretildiği dönemde yalnızca henüz başlangıç düzeyinde mikrokontrol programlamayla uğraşan meslektaşlara yönelik bir yapısı varken şimdi 7'den 70'e, amatörden, profesyonel'e her kesimi destekleyen bir yapıya büründü.
Küçük bazı örneklerle Pic Basic Pro ve Macro assembler programları mümkün olduğunca karşılaştırma fırsatı.
Bu yazıya kadar ki dönemde genelde tüm konulara giriş yapmaya çalıştım. Bundan sonra Pic 16F877 konusunda örnekler verirken, bu örnekleri şu ana kadar ki yöntemlerin hemen tümünü birlikte vererek , örnek üzerinde komut yapılarını anlatacağım.
Akış diyagramı şekilde verilmiş bir program bloğu olsun;
Her iki blokta da PORTA,4 kontrol ediliyor. PORTA,4 1 olmadığı sürece PORT'a bakılıyor. 1 olduğunda PORTB'ye Hex.12 değeri gönderiliyor. Program DONGU etiketinin olduğu satırda sonsuz döngüye giriyor.
SAYAC değişkeninin değeri programın önceki satırlarında 10 olarak belirlenmiş olsun…
Her iki blokta da SAYAC adında bir değişkenin 10 değerinden 0 değerine kadar �1'er değer çıkartılarak sayması sağlanıyor. MASM ile bu işlemi sayaç kullanarak ve sürekli kontrol yaparak saydırırken, PIC BASIC PRO'da yine sayaç kullanabileceğimiz gibi yukarıda görüldüğü gibi 10'dan başlayarak 0 değerine kadar -1'er artış miktarı belirlenmiş hazır bir döngü kurulup, döngü tamamlandığında PORTB'nin 0 yapılması sağlanıyor.
Her iki örnekte de �SAYAC� döngüsü içerisinde tekrarlanması gereken komutlar kullanılabilirdi.
PortA'nın 1. biti 0 mı? test ediliyor. Değer 0 olmadığı sürece TEST_PORTA etiketine program yönlendiriliyor. Değer 0 olduğunda PortB'nin 0. biti 1 yapılıyor.
W yazmacındaki h'0A' sayısıyla h'24' sayısını toplayıp, sonucu B port'una bağlı led ya da geliştirilen farklı bir donanım bağlandığında yapılacak küçük değişiklikle orada görüntüleyebilecek program.
Başta belirttiğim gibi buradaki küçük örneklerde birkaç komut ile birlikte MASM-PRO karşılaştırması yapmaya çalıştım. Bu örnekler basit olsalar da bundan sonraki geliştirilecek PIC16F877 projelerinde komutların görevleri de yazılarak gittikçe kompleks örneklerle anlatacağım projeleri bulacaksınız.
Son olarak Pic Basic ile Pic Basic PRO versionu arasındaki farkları görmeniz için komut listesini ve yenileri yanyana veriyorum.
İyi Çalışmalar…
PIC BASIC | PIC BASIC PRO |
12CIN | @ |
12COUT | ASM..ENDASM |
END | BRANCHL |
BRANCH | CLEAR |
BUTTON | COUNT |
CALL | DEBUG |
DEBUG | DATA |
EEPROM | DISABLE |
FOR .. NEXT | DISABLE DEBUG |
GOSUB | DISABLE INTERRUPT |
GOTO | DTMFOUT |
HIGH | ENABLE |
IF..THEN | ENABLE DEBUG |
INPUT | ENABLE INTERRUPT |
LET | FREQOUT |
LOOKDOWN | HSERIN |
LOOKUP | HSERIOUT |
LOW | I2CREAD |
NAP | I2CWRITE |
OUTPUT | LCDIN |
PAUSE | LCDOUT |
PEEK | LOOKDOWN2 |
POKE | LOOKUP2 |
POT | ON DEBUG |
PULSIN | ON INTERRUPT |
PULSOUT | PAUSEUS |
PWM | RCTIME |
RANDOM | SERIN2 |
READ | SEROUT2 |
RETURN | SHIFTIN |
REVERSE | SHIFTOUT |
SERIN | SWAP |
SEROUT | WHILE..WEND |
SLEEP | WRITE CODE |
SOUND | XIN |
TOGGLE | XOUT |
WRITE |