PIC BASIC PRO

PIC BASIC PRO İLE PROGRAMLAMA
pic-basic-pro

1.1. Pic Basic Pro Hakkında

Pic Basic programlama dili mikrochip firmasının ürettiği mikrodenetleyicileri programlamada kullanılan daha çabuk ve kolay bir dildir(www.rentron.com). Pic Basic Pro programlama dili ile 8 ile 84 pin arasındaki değişik özelliklerdeki mikrodenetleyiciler için program yazılabilir. Üst seviyeli programlama dilleri sayesinde çok daha rahat ve hızlı bir şekilde programlama yapılabilmektedir. Ancak bu programlar çok karmaşık sistemlerin çözümünde yetersiz kalabilmektedir.Yüksek seviyeli bu programlama dilleri assembly dili komutları ile birlikte kullanılabilmektedir. Bu durumda yüksek seviyeli bir pic programlama dili ve PIC assembly dili birlikte kullanıldığında bu sorun ortadan kalkmaktadır.

1.2. Pic Basic Pro Komut Seti

Pic Basic Pro’nun komut seti basic programlama diline çok benzemektedir. Basic programlama dilinde olmayan komutlar da mevcuttur.

PIC BASIC PRO programlama dilinin tüm yönleriyle açıklanması bir kitap konusu olacağından burada sadece bu çalışma için gerekli olan komutlar ve bunların özelliklerinden bahsedilmiştir.

1.2.1. Değişkenler ( Variables )

PICBASIC programlama dilinde üç tip değişken tipi kullanılmaktadır. Değişkenler BIT, BYTE veya WORD büyüklüğünde olabilirler. Örneğin: k VAR byte (byte büyüklüğünde K değişkeni)

Pic Basic Pro Komut Seti

END NAP SELECT CASE
ADCIN FOR…NEXT ON DEBUG SERIN
ASM…ENDASM FREQOUT ON INTERRUPT SERIN2
BRANCH GOSUB OUTPUT SEROUT
BRANCHL GOTO OWIN SEROUT2
BUTTON HIGH OWOUT SHIFTIN
CALL HPWM PAUSE SHIFTOUT
CLEAR HSERIN PAUSEUS SLEEP
CLEARWDT HSEROUT PEEK SOUND
COUNT I2CREAD POKE STOP
DATA I2CWRITE POT SWAP
DEBUG IF…THEN PULSIN TOGGLE
DEBUGIN INPUT PULSOUT USBIN
DISABLE LCDIN PWM USBINIT
DESABLE DEBUG LCDOUT RANDOM USBOUT
DISABLE INTERRUPT LET RCTIME WHILE…WEND
DTMFOUT LOOKDOWN READ WRITE
EEPROM LOOKDOWN2 READCODE WRITECODE
ENABLE LOOKUP RESUME XIN
ENABLE DEBUG LOOKUP2 RETURN XOUT
ENABLE INTERRUPT LOW REVERSE

1.2.2. Etiketler ( Labels )

Etiketler GOTO veya GOSUB gibi komutlara referans teşkil ederler. Bu komutların icrasından sonra program etiketle belirtilen satıra dallandırılır. Etiketler herhangi bir kelime olabilir ve sonuna iki nokta üst üste (:) konur.

Örneğin: Etiket: HIGH PORTB.5

1.2.3. Nümerik sabitler ( Numeric constants )

Nümerik sabitler üçşekilde tanımlanırlar. Bunlar decimal, binary ve hexadecimal‘dir. Binary değer tanımlanırken değerin başına ‘%’ ve hexadecimal değerinbaşına ‘$’işareti konulur. Decimal değer tanımlanırken herhangi bir işaret kullanılmaz. Örneğin:

100‘decimal değer .

%100 ‘decimal 4 için binary değer.

$100 ‘decimal 256 için hexadecimal değer.

1.2.4. Portlar

PIC’in herhangi bir portunun istenilen pini giriş yada çıkış olarak tanımlanabilir. Daha sonra istenilen değer ilgili porta yüklenir. Değerin porta yüklenmesi için farklı yollar vardır.

Örneğin:

TRISB = 0 ‘Portb’nin tüm pinlerini çıkış olarak tanımlamada kullanılır’

TRISA=1 ‘Portb’nin tüm pinlerini giriş olarak tanımlamada kullanılır’

TRISC = %11110000 ‘Portb’nin ilk dört biti çıkış,son dört biti giriş olarak tanımlamada kullanılır’

Yönlendirilen port pinlerine bilgilerin gönderilmesi için birkaç yol vardır. Örneğin:

PORTB = %11110000 : ‘Portb’nin ilk dört pinine lojik-0 , son dört pinine ise lojik-1değeri gönderilmede kullanılır .’

PORTB = 1 ‘Portb’nin bütün pinlerine lojik-1 değeri gönderilmede kullanılır.’

HIGH PORTB.4 ‘PORTB’nin dördücü pinine lojik-1 değeri gönderilmede kullanılır .’

LOW PORTB.6                       ‘PORTB’nin altıncı pininelojik-0 değeri gönderilmede kullanılır.’

1.2.5. Zaman gecikmesi ( Pause )

Pause programı istenilen bir süre beklemeye alır. En fazla 61.535 milisaniyelik bir gecikme sağlanabilir. Bu da bir dakikanın biraz üstünde bir değerdir. Pause komutundaki değer milisaniye büyüklüğündedir. Örneğin, PAUSE 49000 (49 saniyelik gecikme). Pause komutu bu çalışmada komut yazımı anlamında programı basitleştirmiştir. Eğer 49 saniyelik gecikmeyi assembly kodunda yazmak gerekseydi, şu şekilde yazılmalıdır.

LIST = P16F877

INCLUDE “P16F877.INC”

SAYI :2′>              EQU H’20’

SAYI1             EQU H’21’

SAYI2             EQU H’22’

GECIKME

MOVLW H’FF’

MOVWF SAYI

DONGU

MOVLW H’FF’

MOVWF SAYI1

DONGU1

MOVLW H’FF’

MOVWF SAYI2

DONGU2

DECFSZSAYI2,F

GOTO DONGU2

DECFSZ SAYI1,F

GOTO DONGU1

DECFSZ SAYI

GOTO DONGU

RETURN

Oysa bu programı PIC BASIC PRO programlama dilinde PAUSE 49000 şeklinde tek satırda gerçekleştirmek mümkün olmaktadır. Görüldüğü üzere PIC BASIC PRO ile program yazmak hem çok rahat hem de çok basit olmaktadır.

1.2.6. Döngü düzenlemek ( For…Next )

Bazı işlemlerin önceden belirlenen sayıda tekrarlanması gerekmektedir. PICBASIC programlama dilinde bu işi FOR…NEXT döngüsü bir sayaç gibi çalışarak gerçekleştirmektedir. FOR komutundan sonra bir değişkene ilk değer atanıp, bu değişkenin sayacağı son değer de belirtilir. Ayrıca değişkenin kaçar kaçar artacağı STEP komutuyla kontrol edilebilmektedir. Son olarak NEXT döngüsüne gelen program eğer son değere ulaşılmamış ise bir sonraki değer için aynı işi yapacaktır. Örneğin:

For k=2 TO 10 step 2

Pause1000

Next

Burada k değişkeni 2’den 10’a kadar ikişer ikişer saymaktadır. Her bir döngüde bir saniyelik bir gecikme sağlamaktadır. Döngü toplam beş tur atacağından 5 saniyelik bir gecikme sağlanmış olacaktır.

1.2.7. Kontrol yapmak (IF…Then)

Bazı işlemlerde bir durumun kontrol edilmesi gerekebilir. Picbasic programlama dilinde bu işi IF…THEN komutu sağlamaktadır. Bu kontrol deyimi bir veya birden çok karşılaştırmayı icra edebilir. IF…THEN kontrolörü bir durumun doğru (true) veya yanlış (false) olmasını karşılaştırarak değerlendirir. Eğer değerlendirme doğru iseTHEN komutundan sonraki komut icra edilmektedir. Eğer değerlendirme yanlış ise program bir sonraki satıra geçmektedir. Örneğin:

IF portb.2 = 0 then high porta.1

Else high portb.3

Bu program parçasında eğer portb’nin ikinci pinine lojik-0 gelmişse porta’nın birinci pinine lojik-1gönderilir aksi taktirde portb’nin üçüncü pinine lojik-1 gönderilecektir.

1.3. Kesmeler

Bir Pic mikrodenetleyicisinde kesmelerin nasıl olduğundan 3. bölümde bahsedilmiştir. Burada sadece Pic Basic Pro dilinde kesmelerin nasıl yapıldığından biraz bahsedilecektir.

Bir kesme programı yazmak için en kolay yol ON INTERRUPTyazmakla başlar. Bu komut Pic Basic Pro programının dahili kesmeleri aktif etmesini ve kesme geldiği anda mümkün olan en kısa zamanda kesme alt programına dallanması gerektiğini bildirir. ON INTERRUPT kullanılırsa, bir kesme oluştuğu anda program bulunduğu yerden alt programa dallanmakta ve kesme alt programını icra ettikten sonra kaldığı yere geri dönmektedir. Fakat bu işlem assembly dilindeki kadar hızlı olmamaktadır. İlk olarak kesme geldiği andaki komutun icrası tamamlanmakta ve ardından kesme işlemi gerçekleştirilmektedir. EğerPAUSE 10000 gibi bir komut icra edilirken kesme gelmişse bu komutun icrası bitene kadar (10 saniye) kesme işlemi gerçekleşmeyecektir ve program istenilen amacın dışında çalışacaktır. Bu da Pic Basic Pro’nun dezavantajlarından biridir.

Kesme işleminin yapılabilmesi için öncelikle ilgili registerlerin ayarlanması gerekmektedir ve dikkat edilmesi gereken bir hususta kesme altprogramının programda doğru yerlere yazılmasıdır. Örnek bir kesme alt programı aşağıdaki gibidir.

‘ Port ayarlamaları yapılır

….

ON INTERRUPT GOTO OKUMA

INTCON = %10100000                     ‘ Tmr0 kesmesini ayarlamak için

STATUS = %00000111                      ‘ Prescaler değeri için

ENABLE INTERRUPT

‘ Ana program bu kısıma yazılır

……..

……

…..

….

DISABLE INTERRUPT

ASM

MOVF TMR0,W             ‘ Assembly komutları kollanılmıştır.

MOVWF PORTD

NOP

BCF TMR0,2

ENDASM

RESUME

ENABLE INTERRUPT

END

1.4. Pic Basic Pro Komutları

@ : Assembly kodu (tek satırlık) eklemek için kullanılır.

ASM . . ENDASM     : Assembly dili kodlarını eklemek için kullanılmaktadır.

BRANCH       : Programın başka bir yere dallanmasını sağlamaktadır ( = ON..GOTO )

BRANCHL     : Programın değişken içerikli bir konuma dallanmasını sağlamaktadır.

BUTTON : Pine bağlı bir anahtardaki sıçramaları düzenlemektedir.

CALL             : Assembly dilinde yazılmış alt programı çağırmaktadır.

CLEAR           : Tüm değişkenleri sıfırlamaktadır.

CLEARWDT : Watchdog timerı silmektedir.

COUNT           : Bir pindeki darbeleri saymaktadır.

DATA             : Eepromun ilk içeriğini belirlemede kullanılmaktadır.

DEBUG           : Uygun pinden ve hızda (baud) asenkron seri çıkış

DEBUGIN      : Uygun pinden ve hızda (baud) asenkron seri giriş

DISABLE       : Debug yada Interrupt komutlarının icrasını durdurmaktadır. (pasif etme)

DTMFOUT     : İstenilen pinden touch tonlar üretir.

EEPROM       : Eepromun ilk içeriğini belirlemede kullanılmaktadır.

ENABLE : Debug yada Interrupt komutlarının icrasını aktif etmektedir.

END :2′>               : İşlemleri durdurur ve düşük güç moduna geçmektedir.

FOR… NEXT : İşlemlerin tekrarında kullanılmaktadır.

FREQOUT      : Bir pinde ikiden fazla frekans sağlamaktadır.

GOSUB           : Belirlenen adresteki BASIC altprogramını çağırmaktadır.

GOTO             style=’mso-bidi-font-weight: bold’>: Programının icrasını belirlenen adrese götürmektedir.

HIGH :2′>             : Pini aktif yapmaktadır. (lojik-1)

HPWM : Programdan bağımsız PWM sinyal üretmektedir.(sadece belirli Pic’erde)

HSERIN : Programdan bağısız asenkron seri giriş.

HSEROUT      : Programdan bağısız asenkron seri çıkış.

I2CREAD       : I²C aygıtlardan okumada kullanılır.

I2CWRITE     : I²c aygıtlara yazmada kullanılır.

INPUT             : Pini giriş yapmaktadır.

LCDIN : Lcd hafızasından (RAM) okumada kullanılır.

LCDOUT : Karakterleri lcdde göstermektedir.

LOOKDOWN : Değişken için sabit tablosunu araştırmaktadır.

LOOKDOWN2 : Değişken için sabit-değişken tablosunu araştırmaktadır.

LOOKUP : Tablodan sabit değeri almaktadır.

LOW :2′>              : Pini sıfıra çekmektedir.(lojik sıfır)

NAP                 : Geçici bir süre işlemcinin enerjisini kesmektedir.

OWIN             : Tek kablo giriş.

OWOUT :: Tek kablo çıkış.

OUTPUT : Pini çıkış yapmaktadır.

PAUSE : Gecikme sağlamaktadır. (ms)

PAUSEUS       : Gecikme sağlamaktadır. (µs)

PEEK               : Registerden Byte’ı okumada kullanılır.

POKE             : Registere Byte’ı yazmada kullanılır.

POT                 : Belirlenen pindeki potansiyometrenin değerini okumaktadır.

PULSIN :: Bir pindeki darbe genişliğini okumaktadır.

PULSOUT       : Pinde darbe üretmektedir.

PWM               : Pinde PWM sinyal üretmektedir.

RCTIME : Pindeki darbe genişliğini ölçmektedir.

READ             : Eepromdan Byte’ı okumaktadır.

READCODE : Kod hafızasından kelime okumaktadır.

RESUME : Kesmeden sonra programı kaldığı yere göndermektedir.

RETURN : GOSUB komutuyla dallanılan alt programdan kaldığı yere geri döndermektedir.

REVERSE      : Pinin konumunu değiştirmektedir.(girişse çıkış çıkışsa giriş yapar)

SELECT CASE : Bir değişkeni farklı değerlerle karşılaştırmaktadır.

SERIN : Asenkron seri giriş.

SEROUT : Asenkron seri çıkış.

SHIFTIN : Senkron seri giriş.

SHIFTOUT     : Senkron seri çıkış.

SLEEP             : Belli bir süre için işlemcinin enerjisini kesmektedir.

SOUND           : Belirlenen pinde ton yada beyaz gürültü oluşturmaktadır.

STOP               : Programın icrasını durdurmaktadır.

SWAP             : İki değişkenin değerini değiştirmektedir.

TOGGLE : Pini toggle durumuna almada kullanılır..

USBIN : USB giriş.

USBINIT : USB ayarlama.

USBOUT : USB çıkış.

WHILE… WEND      : Şart doğru olana kadar programın (durumun) icrasını sürdürmede kullanılır.

WRITE           : Eeproma byte’ı yazmada kullanılır.

WRITECODE : Kod hafızasına kelime yazmada kullanılır.

XIN                 : X-10 giriş.

XOUT             : X-10 çıkış.

1.5. Microcode Studio Programı

Pic basic programlama dilinde yazılan bir program yazmak ve derlemek (compile) için microcode studio programı kullanılmaktadır. Herhangi bir editörde yazılan Pic Basic Pro kodları microcode studio programına aktarılabildiği gibi, bu programın kendine has editörü bulunmaktadır. Aşağıdaki şekilde microcode studio programının ana sayfası görülmektedir.

microcode studio

1.6. Propic Programı

PIC’in belleğine yüklenmek üzere yazılan program, microcode studio programında derlenmektedir. Program doğru yazılmışsa .HEX, .ASM, .BAS ve MAC uzantılı dört dosya oluşturulmaktadır. Hexadecimal kodlar ( derlenmiş program ) bilgisayarın paralel portuna bağlanan programlayıcı ( PROTOPIC ) aracılığı ile PIC’in program belleğine yazılmaktadır. Aynı işlemi yapmak için bilgisayarın seri portuda kullanılabilir.(ICPROG) PROTOPIC programlayıcısının PROPIC adında bir programı bulunmaktadır. Programın ana menüsü de aşağıdaki şekilde görüldüğü gibidir.

Propic -1

Yorum bırakın

Scroll to Top