PIc Basic Pro ile Programlama

Visual basic , Delphi , C , C++ - PIc Basic Pro ile Programlama ...

Cevapla
PIc Basic Pro ile Programlama
Standart

PIc Basic Pro ile Programlama

Alt 24-06-2007 #1
Sponsorlu Bağlantılar

1.1. Pic Basic Pro Hakkinda : Pic Basic Pro programlama dili mikrochip firmasinin ürettigi mikrodenetleyicileri programlamada kullanilan daha çabuk ve kolay bir dildir. Pic Basic Pro programlama dili ile 8 ile 84 pin arasindaki degisik özelliklerdeki mikrodenetleyiciler için program yazilabilir. Üst seviyeli programlama dilleri sayesinde çok daha rahat ve hizli bir sekilde programlama yapilabilmektedir. Ancak bu programlar çok karmasik sistemlerin çözümünde yetersiz kalabilmektedir.Yüksek seviyeli bu programlama dilleri assembly dili komutlari ile birlikte kullanilabilmektedir. Bu durumda yüksek seviyeli bir pic programlama dili ve PIC assembly dili birlikte kullanildiginda bu sorun ortadan kalkmaktadir.

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. Çizelge 15’de Pic Basic Pro komutlari görülmektedir.

PIC BASIC PRO programlama dilinin tüm yönleriyle açiklanmasi bir kitap konusu olacagindan burada sadece bu çalisma için gerekli olan komutlar ve bunlarin özelliklerinden bahsedilmistir.

1.2.1. Degiskenler ( Variables ) : PICBASIC programlama dilinde üç tip degisken tipi kullanilmaktadir. Degiskenler BIT, BYTE veya WORD büyüklügünde olabilirler. Örnegin: k VAR byte (byte büyüklügünde K degiskeni)

PIc Basic Pro ile Programlama

1.2.2. Etiketler ( Labels ) : Etiketler GOTO veya GOSUB gibi komutlara referans teskil ederler. Bu komutlarin icrasindan sonra program etiketle belirtilen satira dallandirilir. Etiketler herhangi bir kelime olabilir ve sonuna iki nokta üst üste ( : ) konur.


Örnegin: Etiket: HIGH PORTB.4
Bu mesajdan alıntı yap
Sponsor Links

Grafikerler.net Reklamları

Standart
Alt 24-06-2007 #2
                             Sponsorlu Bağlantılar
1.2.3. Nümerik sabitler ( Numeric constants ) : Nümerik sabitler üçsekilde tanimlanirlar. Bunlar decimal, binary ve hexadecimal‘dir. Binary deger tanimlanirken degerin basina ‘%’ ve hexadecimal degerinbasina ‘$’isareti konulur. Decimal deger tanimlanirken herhangi bir isaret kullanilmaz. Örnegin:

100‘decimal deger .

%100 ‘decimal 4 için binary deger.

$100 ‘decimal 256 için hexadecimal deger.

1.2.4. Portlar : PIC’in herhangi bir portunun istenilen pini giris yada çikis olarak tanimlanabilir. Daha sonra istenilen deger ilgili porta yüklenir. Degerin porta yüklenmesi için farkli yollar vardir.

Örnegin:

TRISB = 0 ‘Portb’nin tüm pinlerini çikis olarak tanimlamada kullanilir’

TRISA=1 ‘Portb’nin tüm pinlerini giris olarak tanimlamada kullanilir’

TRISC = %11110000 ‘Portb’nin ilk dört biti çikis,son dört biti giris olarak tanimlamada kullanilir’

Yönlendirilen port pinlerine bilgilerin gönderilmesi için birkaç yol vardir. Örnegin:

PORTB = %11110000 : ‘Portb’nin ilk dört pinine lojik-0 , son dört pinine ise lojik-1degeri gönderilmede kullanilir .’

PORTB = 1 ‘Portb’nin bütün pinlerine lojik-1 degeri gönderilmede kullanilir.’

HIGH PORTB.4 ‘PORTB’nin dördücü pinine lojik-1 degeri gönderilmede kullanilir .’

LOW PORTB.6 ‘PORTB’nin altinci pininelojik-0 degeri gönderilmede kullanilir.’

1.2.5. Zaman gecikmesi ( Pause ) : Pause programi istenilen bir süre beklemeye alir. En fazla 61.535 milisaniyelik bir gecikme saglanabilir. Bu da bir dakikanin biraz üstünde bir degerdir. Pause komutundaki deger milisaniye büyüklügündedir. Örnegin, PAUSE 49000 (49 saniyelik gecikme). Pause komutu bu çalismada komut yazimi anlaminda programi basitlestirmistir. Eger 49 saniyelik gecikmeyi assembly kodunda yazmak gerekseydi, su sekilde yazilmalidir.


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 programi PIC BASIC PRO programlama dilinde PAUSE 49000 seklinde tek satirda gerçeklestirmek mümkün olmaktadir. Görüldügü üzere PIC BASIC PRO ile program yazmak hem çok rahat hem de çok basit olmaktadir.
Bu mesajdan alıntı yap
Standart
Alt 24-06-2007 #3
1.2.6. Döngü düzenlemek ( For…Next ) : Bazi islemlerin önceden belirlenen sayida tekrarlanmasi gerekmektedir. PICBASIC programlama dilinde bu isi FOR…NEXT döngüsü bir sayaç gibi çalisarak gerçeklestirmektedir. FOR komutundan sonra bir degiskene ilk deger atanip, bu degiskenin sayacagi son deger de belirtilir. Ayrica degiskenin kaçar kaçar artacagi STEP komutuyla kontrol edilebilmektedir. Son olarak NEXT döngüsüne gelen program eger son degere ulasilmamis ise bir sonraki deger için ayni isi yapacaktir. Örnegin:

For k=2 TO 10 step 2

Pause1000

Next

Burada k degiskeni 2’den 10’a kadar ikiser ikiser saymaktadir. Her bir döngüde bir saniyelik bir gecikme saglamaktadir. Döngü toplam bes tur atacagindan 5 saniyelik bir gecikme saglanmis olacaktir.

1.2.7. Kontrol yapmak (IF…Then) : Bazi islemlerde bir durumun kontrol edilmesi gerekebilir. Picbasic programlama dilinde bu isi IF…THEN komutu saglamaktadir. Bu kontrol deyimi bir veya birden çok karsilastirmayi icra edebilir. IF…THEN kontrolörü bir durumun dogru (true) veya yanlis (false) olmasini karsilastirarak degerlendirir. Eger degerlendirme dogru iseTHEN komutundan sonraki komut icra edilmektedir. Eger degerlendirme yanlis ise program bir sonraki satira geçmektedir. Örnegin:

IF portb.2 = 0 then high porta.1

Else high portb.3

Bu program parçasinda eger portb’nin ikinci pinine lojik-0 gelmisse porta’nin birinci pinine lojik-1gönderilir aksi taktirde portb’nin üçüncü pinine lojik-1 gönderilecektir.


1.3. Kesmeler : Bir Pic mikrodenetleyicisinde kesmelerin nasil oldugundan 3. bölümde bahsedilmistir. Burada sadece Pic Basic Pro dilinde kesmelerin nasil yapildigindan biraz bahsedilecektir.

Bir kesme programi yazmak için en kolay yol ON INTERRUPT yazmakla baslar. Bu komut Pic Basic Pro programinin dahili kesmeleri aktif etmesini ve kesme geldigi anda mümkün olan en kisa zamanda kesme alt programina dallanmasi gerektigini bildirir. ON INTERRUPT kullanilirsa, bir kesme olustugu anda program bulundugu yerden alt programa dallanmakta ve kesme alt programini icra ettikten sonra kaldigi yere geri dönmektedir. Fakat bu islem assembly dilindeki kadar hizli olmamaktadir. Ilk olarak kesme geldigi andaki komutun icrasi tamamlanmakta ve ardindan kesme islemi gerçeklestirilmektedir. Eger PAUSE 10000 gibi bir komut icra edilirken kesme gelmisse bu komutun icrasi bitene kadar (10 saniye) kesme islemi gerçeklesmeyecektir ve program istenilen amacin disinda çalisacaktir. Bu da Pic Basic Pro’nun dezavantajlarindan biridir.

Kesme isleminin yapilabilmesi için öncelikle ilgili registerlerin ayarlanmasi gerekmektedir ve dikkat edilmesi gereken bir hususta kesme altprograminin programda dogru yerlere yazilmasidir. Örnek bir kesme alt programi asagidaki gibidir.


‘ Port ayarlamalari yapilir

….

ON INTERRUPT GOTO OKUMA

INTCON = %10100000 ‘ Tmr0 kesmesini ayarlamak için

STATUS = %00000111 ‘ Prescaler degeri için

ENABLE INTERRUPT

‘ Ana program bu kisima yazilir

……..

……

…..

….

...

DISABLE INTERRUPT

ASM

MOVF TMR0,W ‘ Assembly komutlari kollanilmistir.

MOVWF PORTD

NOP

BCF TMR0,2

ENDASM

RESUME

ENABLE INTERRUPT

END
Bu mesajdan alıntı yap
Standart
Alt 24-06-2007 #4
1.4. Pic Basic Pro Komutlari

@ : : Assembly kodu (tek satirlik) eklemek için kullanilir.

ASM . . ENDASM : Assembly dili kodlarini eklemek için kullanilmaktadir.

BRANCH : Programin baska bir yere dallanmasini saglamaktadir ( = ON..GOTO )

BRANCHL : Programin degisken içerikli bir konuma dallanmasini saglamaktadir.

BUTTON : Pine bagli bir anahtardaki siçramalari düzenlemektedir.

CALL : Assembly dilinde yazilmis alt programi çagirmaktadir.

CLEAR : Tüm degiskenleri sifirlamaktadir.

CLEARWDT : Watchdog timeri silmektedir.

COUNT : Bir pindeki darbeleri saymaktadir.

DATA : Eepromun ilk içerigini belirlemede kullanilmaktadir.

DEBUG : Uygun pinden ve hizda (baud) asenkron seri çikis

DEBUGIN : Uygun pinden ve hizda (baud) asenkron seri giris

DISABLE : Debug yada Interrupt komutlarinin icrasini durdurmaktadir. (pasif etme)

DTMFOUT : Istenilen pinden touch tonlar üretir.

EEPROM : Eepromun ilk içerigini belirlemede kullanilmaktadir.

ENABLE : Debug yada Interrupt komutlarinin icrasini aktif etmektedir.

END : Islemleri durdurur ve düsük güç moduna geçmektedir.

FOR… NEXT : Islemlerin tekrarinda kullanilmaktadir.

FREQOUT : Bir pinde ikiden fazla frekans saglamaktadir.

GOSUB : Belirlenen adresteki BASIC altprogramini çagirmaktadir.

GOTO : Programinin icrasini belirlenen adrese götürmektedir.

HIGH : : Pini aktif yapmaktadir. (lojik-1)

HPWM : Programdan bagimsiz PWM sinyal üretmektedir.(sadece belirli Pic’erde)

HSERIN : Programdan bagisiz asenkron seri giris.

HSEROUT : Programdan bagisiz asenkron seri çikis.

I2CREAD : I²C aygitlardan okumada kullanilir.

I2CWRITE : I²c aygitlara yazmada kullanilir.

INPUT : Pini giris yapmaktadir.

LCDIN : Lcd hafizasindan (RAM) okumada kullanilir.

LCDOUT : Karakterleri lcdde göstermektedir.

LOOKDOWN : Degisken için sabit tablosunu arastirmaktadir.

LOOKDOWN2 : Degisken için sabit-degisken tablosunu arastirmaktadir.

LOOKUP : Tablodan sabit degeri almaktadir.

LOW :2'> : Pini sifira çekmektedir.(lojik sifir)

NAP : Geçici bir süre islemcinin enerjisini kesmektedir.

OWIN : Tek kablo giris.

OWOUT :: Tek kablo çikis.

OUTPUT : Pini çikis yapmaktadir.

PAUSE : Gecikme saglamaktadir. (ms)

PAUSEUS : Gecikme saglamaktadir. (µs)

PEEK : Registerden Byte’i okumada kullanilir.

POKE : Registere Byte’i yazmada kullanilir.

POT : Belirlenen pindeki potansiyometrenin degerini okumaktadir.

PULSIN :: Bir pindeki darbe genisligini okumaktadir.

PULSOUT : Pinde darbe üretmektedir.

PWM : Pinde PWM sinyal üretmektedir.

RCTIME : Pindeki darbe genisligini ölçmektedir.

READ : Eepromdan Byte’i okumaktadir.

READCODE : Kod hafizasindan kelime okumaktadir.

RESUME : Kesmeden sonra programi kaldigi yere göndermektedir.

RETURN : GOSUB komutuyla dallanilan alt programdan kaldigi yere geri döndermektedir.

REVERSE : Pinin konumunu degistirmektedir.(girisse çikis çikissa giris yapar)

SELECT CASE : Bir degiskeni farkli degerlerle karsilastirmaktadir.

SERIN : Asenkron seri giris.

SEROUT : Asenkron seri çikis.

SHIFTIN : Senkron seri giris.

SHIFTOUT : Senkron seri çikis.

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

SOUND : Belirlenen pinde ton yada beyaz gürültü olusturmaktadir.

STOP : Programin icrasini durdurmaktadir.

SWAP : Iki degiskenin degerini degistirmektedir.

TOGGLE : Pini toggle durumuna almada kullanilir..

USBIN : USB giris.

USBINIT : USB ayarlama.

USBOUT : USB çikis.

WHILE… WEND : Sart dogru olana kadar programin (durumun) icrasini sürdürmede kullanilir.

WRITE : Eeproma byte’i yazmada kullanilir.

WRITECODE : Kod hafizasina kelime yazmada kullanilir.

XIN : X-10 giris.

XOUT : X-10 çikis.

konunun tamamı alıntıdır...
Bu mesajdan alıntı yap
josef29 isimli Üye şimdilik offline konumundadır

josef29

Hiç Biri / İstanbul

Standart
Alt 23-02-2008 #5
vayyy süper anlatım tşklerPIc Basic Pro ile ProgramlamaD
Bu mesajdan alıntı yap
Cevapla

Tags
pic basic pro, for next dongusu, pic pro ile, programlama

Benzer Konular
Konu Konu Bilgileri Forum Cevaplar Son Mesaj
nasıl hesap makinası tasarlanır basic dilinde? velas Visual basic , Delphi , C , C++ 5 21-07-2010 10:33:53
Visual Basic .Net Olan var mı? Blackblue Visual basic , Delphi , C , C++ 4 31-07-2008 17:03:21
Merhaba ArkadaŞlar Aranızda Visual Basic Proğramı Olan Var Mı ? akk33 Visual basic , Delphi , C , C++ 2 19-07-2007 13:26:02

Kapat
Şifremi Unuttum?