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
|
|