Şimdi Ara

ARKADAŞLAR PİC BASİC HAKKINDA YARDIMCI OLURMUSUNUZ

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
6
Cevap
0
Favori
4.096
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • ARKADASLAR PİCLE 3 -4 AYDIR UGRASIYORUM.YAZILI HAZIR 4-5 PİCLİ DEVRE YAPTIM ÇALIŞTIRDIM.YAZILIMINI KENDIM YAZMAK ISTIYORUM.PİC ASM Yİ ÖGRENMEK İSTEDİM AMA İLK ZOR GELDI.PİC BASİCİN DAHA KOLAY OLDUGUNU DUYDUM.PİC ASM DE KULLANILAN KOMUTLARLA BASIC DEKI KOMUTLAR AYNIMI.DEĞİLSE ELINDE KOMUTLARI OLAN ARKADASLAR VARSA YARDIMCI OLURMUSUNUZ.BİDE ÖGRENIP İNCELEMEK AMACIYLA KÜÇÜK BİR BASİCLE YAZILMIS PROGRAM VARSA ONU İNCELİYEYİM.YARDIMCI OLURSANIZ COK SEVINIRIM.
    SAYGILAR



  • valla dostum bizde bi arkadasla yapıyoruz hazır pic li devreler ama bi türlü bizde istedigimiz sekiilde bir picli devre yapamiıyoruz komutları ezberlemek gerekir herhalde
  • Pic basic in help dosyası gayet güzel bir kaynak.Komutları öğrenmek için en iyi yol.Aryıca bazı komutların anlatımında örnek programlar var..

    Ama ASM yi kesinlikle öğrenmelisiniz.PicBasic ya da başka bir derleyici sadece işleri kolaylaştırmak için bir araç olmalı.



    < Bu mesaj bu kişi tarafından değiştirildi OzanGazi -- 7 Şubat 2007; 18:42:55 >
  • elimde bunlar var işine yararsa....

    PİC BASİC PRO KOMUTLARI VE ÖRNEKLERİ



    BUTTON : Bir pini okumak için kullanılır duruma göre pindeki değişiklikler çıkışa yansıtılır.

    BUTTON PORTB.1,0,125,1,B2,0,ledyak ‘sırası ile,

    PORTB.1 = Okunacak olan pin numarası
    0 = Pine bir buton basıldığını düşünürsek buton basılı mı değilmi bunu belirtiriz.
    Burada şunu unutmayalım pull up ve pull down yani 1 ve 0 bunlar çok önemli.
    125 = Gecikme süresi ark için bazen butona basıldığı anda hassas devrelerde sanki butona çok sayıda işlem görür.
    1 = Otomatik tekrar yani butona devamlı basılması durumunda girilen gecikme süresi.
    B2 = Değişken bu her zaman komuttan önce sıfırlanmalı.Gecikme ve tekrar işlemleri
    için kullanılır.
    1 = İşlev dallanma yapılacaksa 1 seçilir.
    Ledyak = Etiket komut eğer işlev 1 olursa dallanır.Ve program ordan itibaren devam eder.

    Ama biz button Yerine ileride IF……..THEN komutunu kullanacağız.

    BUTTON komutu sadece özel durumlarda kullanılıyor.

    GOTO KOMUTU: Programı belirtilen etiketten itibaren devam ettirir.

    GOTO gönder ‘Gönder etiketinden itibaren devam et.

    END KOMUTU : Programın çalışmasını durdurur her programın sonunda END,STOP,GOTO

    Yazılması gerekmektedir.


    LET KOMUTU : Bir değişkenin içerisine değer atamak için kullanılır.

    LET B0 = B1*B2+B3
    B0 = SQR W1




    TOGGLE KOMUTU : Tanımlanan pinin durumunu tersler.

    LOW PORTB.1 ‘PORTB.1 1. bitin 0 yap.

    TOGGLE PORTB.1 ‘Yukarıdaki işlemi tersle.

    POKE VE PEEK KOMUTLARI İLAVE PORTLAR İÇİN KULLANILIR.

    POKE KOMUTU : Verilen adresteki picin registırına değer yazmak için kullanılır.

    POKE TIRSA , 0 ‘ PORTA nın tüm pinlerini çıkış yap.

    “””””TRISA = 0 ‘ Dersek aynı işlem yine gerçekleşir.”””””


    PEEK KOMUTU : POKE GİBİ ÇALIŞIR.

    PEEK PORTA, B0 ‘PORTA pinlerindeki veriyi B0 değişkeni içine saklar.

    “””””B0 = PORTA ‘PORTA pinlerindeki veriyi B0 değişkeni içine saklar.
    BU KOMUTTA AYNI İŞLEMİ GERÇEKLEŞTİRİR.


    AŞAĞIDAKİ KOMUTLAR UZUN OLDUĞU İÇİN YERİNE KULLANILANLARI YAZDIM

    INPUT ( GİRİŞ PİNİ OLARAK TANITMAK KISA YOLU) TRISB.0=1 0.PİN GİRİŞ.

    OUTPUT (ÇIKIŞ OLARAK TANITMAK KISA YOLU) TRISB.0=0 0.PİN ÇIKIŞ.

    LOW ( ÇIKIŞ YAPILAN PİNİ 0 V YAP KISA YOLU) PORTB.0=0 0.PİN 0 V.

    HİGH ( ÇIKIŞ YAPILAN PİNİ 5 V YAP KISA YOLU) PORTB.0=1 0.PİN 5 V.

    ------------------------------------------------------------------------------------------------------------------

    FOR… NEXT KOMUTU : Tekrarı istenilen bir grup komutu istenilen sayıda tekrar etmek için kullanılır.

    FOR i =1 TO 10 ‘ Burada “i” önceden tanıtılacak yani i=12 mesela i nin değerini
    1 den 10 a kadar artırmak için kullanılır bu komut.

    STEP – 1 10dan sonra ozaman çıkarmaya başlar.

    NEXT i ‘ise “i” ye geri döndürür ve işlem tekrar edilir.









    IF…..THEN KARŞILAŞTIRMA KOMUTLARI : Karşılaştırma işlemine göre aşağıda yazılan operatörler sayesinde hangisi büyük—küçük-- eşit lik durumlarına göre dallanma yada bir pine 5 V sürme işlerinde kullanılır.

    KARŞILAŞTIRMA OPERATÖRLERİ AÇIKLAMA
    =VEYA== EŞİTTİR
    <>VEYA!= EŞİT DEĞİL
    > BÜYÜKTÜR
    < KÜÇÜKTÜR
    <= KÜÇÜK VEYA EŞİT
    >= BÜYÜK VEYA EŞİT

    Eğer parantezli ise önce ilk paratez değerlendirilir.

    IF PORTB.0=1 THEN LED_yak ‘ Eğer PORTB nin 0 pini 1 yani 5V gelirse tabi (PORTB.0 PİN giriş olarak tanıtılacak) LED_yak etiketine dallan.

    VEYA PORTA DİREK YÖNLENDİREBİLİRİZ.

    IF PORTA.0=1 THEN PORTB.1=1 ‘Eğer PORTA nın 0 . pini 1 oılursa

    PORTB 1 NOLU PİNİ 1 YAP GİBİ.


    PAUSE KOMUTU : Gecikme için kullanılır.Programı belirlenen milisaniye değeri kadar durdurur.Çok hassastır ( NAP VE SLEEP GİBİ DÜŞÜK MOD GÜCÜNE SOKMAZ) Sistem clock frekansı ile aynıdır.

    PAUSE 1000 ‘1 Saniye gecikme yapar.


    PAUSES KOMUTU : Pauseyle tek farkı mikrosaniye ile programı durdurur.

    PAUSES 1000 !1 Mikrosaniye gecikme yap.

    ÖRNEK “”IF”” LE

    IF gecikme>1000 THEN
    Gecikme=1000 ‘1 Sn den fazla dgecikmeyi engelle
    Endif

    GİBİ.


    WHİLE……WEND KOMUTU : Bu komutlar arasına yazılan PBP basic komutlarını eğer istene değer veya karşılaştırma sonucunda doğruluk varsa yani,

    İ=15 ‘İ sonucu önceki programda mesela 15 olsun

    WHİLE İ >= 10 ‘Eğer i büyük veya eşitse ,
    PORTB.0=1 ‘PORTB.0 nolu pini 1 yap.
    WEND ‘Eğer karşılaştırma sonucu yoksa WEND den sonraki komut çalışır.

    BRANCH KOMUTU : Goto komutu gibi fakat şartlandırma ile geçiş yapan komuttur.

    BRANCH B2,[GİT,YAK,SÖNDÜR] ‘Burada b2 eğer değeri,

    0 ‘sa GİT’e
    1’se YAK’a
    2’se SÖNDÜR’e dallan

    BRANCHL : KOMUTUDA AYNIDIR FAKAT EĞER PROGRAM 2K LIK BELLEK İÇİNDEYSE BRANCH EĞER NEREDE OLDUĞUNU BİLMİYORSAK 128 ADET BRANCHL KOMUTU YAZARAK ETİKETLERE DALLANIRIZ.


    RANDOM KOMUTU : Değişken içinde tanıtılan ama rastgele bir sayı elde etmek pic bunu kendisi reastgele seçiyor.

    RANDOM W2 ‘W2 değişkeni içinde 1 ile 65536 arasında rastgele bir sayıyı atar.



    SOUND KOMUTU : İstenilen bir pinden istediğimiz ses tonunu istediğimiz süre kadar elde etmeye yarar.

    SOUND PORT.4, [ 100 , 10 , 45 , 10 ] ‘100 VE 45 Değerlerine tekabül eden frekanslarda ve 10 ar (120 ms) süresinde ses üret.


    GOSUB KOMUTU : Alt programlardan belirtilene atla.


    GOSUB LED_yak ‘LED_yak etiketine dallan.


    FAKAT ÖNEMLİ BİR NOKTA RETURN KOMUTUNA GELİNCEYE KADAR PROGRAM GOSUB DAN SONRA ÇALIŞIR RETURN KOMUTU İLE ANA PROGRAMA GERİ DÖNÜLÜR.

    RETURN KOMUTU :GOSUB komutu ile RETURN arasındaki etiket normal çalışır taki RETURN komutuna kadar burada program ana programa dallanır.


    INCLUDE “bs1defs.bas”

    Snd con PORTB.0=0

    IF PORTB.0=1 THEN LED_yak

    GOSUB LED_yak ‘LED_yak etiketine dallan.

    LED_yak:

    PORTB.0=1

    RETURN

    PULSIN KOMUTU : Belli pindeki pals genişliğini ölçer.

    PULSIN PORTB.5,1,W2 ‘ PORTB nin 5 . pindeki HİGH palsleri sayar ve w2 ye yazar.Burada HIGH 1 demekti yani giriş 5 V du fakat genliği değişik geldiği için genliğini ölçer.

    PULSOUT KOMUTU : Belirlenen pinden pals üretir.

    PULSOUT PORTB.6, 100 ‘Pin 6 dan 10 ms süre ile pals üretir.

    SERIN KOMUTU : Belirlenen bir pinden bir veya daha fazla veriyi alır.

    SERIN 2, N2400, [“A”],B1 ‘2 nolu pinden (baudrate 2400 hızı ) “A” belirleyicisini

    ‘alıncaya kadar bekle bir sonraki karakteri B1 e kaydet.

    SERIN2 KOMUTU : Belirlenen pinüzerinden standart asenkron formatında bir veya daha fazla veri alır.

    SERIN2 1 ,15790,[wait (“A”) , B2] ‘1 Nolu pinden seri olarak a karakterini

    alıncaya kadar bekle sonrakini B2 ye yaz.

    SERIN2 PORTA.2,48 [skip 3, dec4 B0 ] ‘İki karater atla ve 4 dijitlik bir sayıyı b0 a

    ‘yerleştir.

    SEROUT KOMUTU : Belirlenen bir pin üzerinden standart asenkron formatında (8N1) bir veya daha fazla veri gönderir.

    SEROUT 0, N2400 , [#B0,10] ‘B 0 IN ASCII karşılığını ve arkasından satır besleme
    karakterini (10) pin0 dan seri olarak gönder.



    SEROUT2 KOMUTU :


    SEROUT2 0,16450,[dec B0,10] ‘2400 baud rate de b0 ın ASCII değerini ve arkasın
    ‘dan satır besleme karak. Pin 0 dan seri olarak gön




    LCDOUT KOMUTU : Likit kristal ekran üzerine istenilen verileri göndermek için kullanılır.PBP üzerinde Hitachi 44780 kontrol chipi veya eşdeğeri olan LCD modüllerini destekler.
    Bu LCD lerin genellikle tek veya çift sıralı 14 yada 16 pini vardır.Eğer veri önünde # işareti konulursa her bir karakterin ASCII karşılığı olan sayı LCD ye gönderilir.

    LCD KONUSU DAHA AYRINTILI OLARAK ELE ALINMASI GEREKİR .BU NEDEN LE SADECE KOMUT OLARAK ANLATACAĞIM.


    LCDOUT $FE ,$C0 ‘LCD displayin ikinci satırından itibaren karakter yazmaya
    ‘başlar.

    LCDOUT $FE, 1, “Merhaba” ‘Ekranı sil ve “Merhaba” yaz.

    LCDOUT B0, #B1 ‘B0 içerisindeki sayının ASCII karşılığı olan karakteri ve B1 içerisindeki karakterin ASCII karşılığını LCD ekrana gönder.


    ON INTERRUPT KOMUTU : Bu komutla bazı kesmeler yapılır.Bir kesmenin yapılması için INTCON registerinde bir bitin değişikliği gerekmektedir.


    ON INTERRUPT GOTO LED_yak ‘Kesme oluştuğunda LED_yak alt

    programına atla ve RB0 kesmesini aktif kıl.


    RESUME KOMUTU : Bir kesme oluştuğunda program nerede kaldıysa tekrar oraya dönmesi için kullanılır.Resume kesme alt programlarında kullanılır.

    Saatkesmesi:
    Saniye=saniye+1 ‘süreyi say
    RESUME ‘Kesmeden sonra ana programa dön.

    DİSABLE KOMUTU : Bu komuttan sonraki kesmeler geçersiz kılınır.

    DISABLE ‘Kesmeleri geçersiz yap


    ENABLE KOMUTU : DISABLE ile iptal edilen komutlar tekrar geçerli olur.

    DISABLE ‘Kesmeleri geçersiz yap

    LED_yak:

    Led=1 ‘Kesmeleri oluştuğunda Ledi yak
    RESUME ‘Ana programa dön
    ENABLE ‘Kesmeleri geçerli yap.

    WRİTE KOMUTU : Piclerde belirlenen adrese bir değer yazar.

    WRİTE 5, B0 ‘EEPROM un 5 adresine B0 içindeki değeri yazar.


    READ KOPMUTU : Chip üzeri EEPROM un belirtilen adresini okur.Sonucu değişken
    İçinde saklanır.

    READ 5, B2 ‘EEPROM un 5 adresindeki veriyi B2 değişkeni içerisinde sakla.





    EEPROM KOMUTU : Chip üzeri EEPROM alanına verileri yazmak için kullanılır.

    EEPROM 5 , [10,20,30] ‘5 adresinden itibaren 10 , 20 , 30 verilerini yazar.


    DATA KOMUTU : Mikrodenetleyici programlama esnasında chip üzerindeki EEPROM
    Belleğe sabit değerler yazmak için kullanılır.

    DATA @5 , 10,20,30 ‘5 adresinden itibaren 10 , 20 , 30 verilerini EEPROM a
    ‘yazar.

    DATA (4) , 0 (10) ‘ 4 Adres atlar ve 10 tane 0 kaydeder.


    I2CREAD KOMUTU : Kontrol kodu ve isteğe bağlı adres bytelarını clock pininden ve data pininden gönderir.Okunan byteları değişken içerisine kaydeder.

    ADRES=17

    I2CREAD PORTA.0 , PORTA.1 , kontrol, adres , [B2] ’17 Adresindeki datayı oku B2
    ‘değişkenine sakla.


    I2CWRİTE KOMUTU : Belirli data pini yada clock pininden isteğe bağlı olarak yazılan bir adrese komut içerisinde yazılan dataları gönderir.


    ADRES=1

    I2CWRİTE PORTA.0 , PORTA.1 , kontrol, adres , [B2] ‘1 Adresine B2 deki veriyi
    ‘gönderir.


    @ KOMUTU : Bu komuttan sonraki gelen ASSEMBLY komutları PBP ye kaydeder.

    @ rlf _dodur,F ;”dondur” değişkeni içindakini bir sola kaydır.

    Ayrıca bir ASM dosyasınıda dahil etmej için kullanılır

    @ INCLUDE “asmpro.asm”

    ASM….ENDASM KOMUTU : Bu iki komut arasına yazılan asm Komutlarını PBP ye dahil eder.

    ASM
    Bsf PORTA.0 ;Pini 1 yap
    Bcf PORTB.0 ;Pini 0 yap
    ENDASM






    CALL KOMUTU : Etikete belirtilen asm dili alt dosyasını çağırmak için kullanılır.


    CALL YAK ‘”YAK” etiketiyle adlandırılan assembly dili alt programını çalıştırır.


    CLEAR KOMUTU : Her banktaki RAM registırını , değişkenleri , dahili sistem değişkenlerinide sıfırla genellikle kullanılmaz.


    CLEAR ‘ Tüm değişkenleri sıfırla


    COUNT KOMUTU : Peryot ile belirlenmiş süre içerisinde pindeki palsleri sayar.Pin ototmatik olarak giriş olarak tanımlanır.


    COUNT PORTA.2,1000,W1 ‘1 sn deki palsleri sayar ve W1 değişkenine yazar.


    DEBUG KOMUTU : 8 bitlik paritysiz ve 1 stop biti olan standart asenkron formatında ( 8N1),önceden tanımlanmış bir baud rate hızında bir pine bir veya daha fazla veriyi gönderir.


    DEFINE DEBUG_REG PORTB ‘ Debug pinini PORTB ye kur.


    FREQOUT KOMUTU : Komutta belirtilen sürede bir pinden frekans üretir.pin otomatikman çıkış pini olur.


    FREQOUT PORTB.1,2000,1000 ‘1 khz lik frekansı 2 saniye süresince pin1 den gönderir.


    HSERİN KOMUTU : Donanımı asenkron seri iletişimi destekleyen cihazların seri portundan bir veya daha fazla veri almak için kullanılır.



    DEFINE HSER_BAUD 2400 ‘Baud rateyi 2400 e kur.



    HSEROUT KOMUTU : Donanımı asenkron seri iletişimi destekleyen cihazların seri portundan bir veya daha fazla veri göndermek için kullanılır.

    HSEROUT [dec, B0,10] ‘B0 içindeki desimal değerinden bir satır besleme sinyalini (10) USART donanımına gönder.




    LOOKDOWN KOMUTU : 8 bitlik sabitlerin yazıldığı bir liste içerisinde bir sayının var olup olmadığını ve kaçıncı sırada olduğunu araştırı.


    LOOKDOWN B0,[“0123456789ABCDEF”],B1 ‘B0 İçindeki heksadecimal karakte-

    Rin ondalık karşılığını B1 içerisine yaz.


    LOOKDOWN2 KOMUTU:Listeye yazılmış değerler içerisinde aranan değerin olup olmadığını araştırır.


    LOOKDOWN2 W0, [512,W1,1024,],B0 ‘ W0 ın içindeki değer liste içinde
    ‘bulunuyorsa B0 içine atar.


    LOOKUP KOMUTU : 8 bitlik sabitlerden oluşan bir listeden değer almak için kullanılır.


    for i=0 to 9 ‘0 dan 9 a kadar say

    lookup i,[%00111111,%00000110,%01011011,%01001111,%01100110,%01101101_

    ,%01111101,%00000111,%01111111,%01101111],portb ‘donguyu tekrarla

    pause 500

    next

    goto main


    LOOKUP2 KOMUTU : 16 bitlik sabitlerden oluşan bir listeden değer almak için kullanılır.


    LOOKUP2 B0, [256,512,1024,],W1 ‘ W1 değişkeni içine 512 sayısını yerleştirir.


    NAP KOMUTU : Pici kısa bir süre içinde düşük güç moduna sokar.


    NAP 7 ‘Yaklaşık 2.3 saniye düşük güç modunda bekler.


    POT KOMUTU : Bir pine bağlı olan potu okur.

    POT 3, 255 , B0 ‘Taksimatı belirlemek için pin3 den pot değerini B0 içine
    ‘yerlestir.





    PWM KOMUTU : Belirlenen bir pin üzerinden genişliği değişebilen pals (PWM)
    Göndermek için kullanılır.

    PWM PORTB.7 , 127, 100 ‘%50 iş_süresi olan 100 PWM palsini pin7 den
    ‘gönder.


    RCTIME KOMUTU : Bir pinin konumunu koruma süresini ölçmek için kullanılır.PULSIN
    A çok benzerdir.

    RCTIME PORTB.3,0,W0 ‘Pindeki potu oku (direncini) ve W0 a yaz.


    REVERSE KOMUTU : Pinin giriş çıkış yönünü değiştirmek için kullanılır.


    PORTB.4 =1 ‘ Pin 4 ü giriş yap
    REVERSE 4 ‘Pin 4 ü çıkış yap.


    SHIFTIN KOMUTU : Clock pinindeki clock sinyali ile senkronize olacak şekilde data pindeki bitleri kaydırır ve seri olarak alınan verileri değişken içerisinde saklar.


    SHIFTIN 0, 1 , MSBPRE , [B0]



    SHIFTOUT KOMUTU : Clock pinindeki clock sinyali ile senkronize olacak şekilde
    Değişken verileri kaydırır ve seri olarak gönderir.

    SHIFTOUT PORTA.1 , PORTA.2,1 [worddeğişken\4]

    SLEEP KOMUTU : Belirlenen süre ile pici düşük güç moduna sokar.Süre 16 bittir ve 65536
    Saniyelik bir süreyle (Yaklaşık 18 saat )gecikme yapar.

    SLEEP 60 ‘Uyku moduna yaklasık 1 dakika girer.


    STOP KOMUTU : Sonsuz bir dongüyü çalıştırarak programın çalışmasını durdurur.Stop pici düşük güç moduna sokmaz.Pici sonsuz bir döngüde devamlı olarak çalışır.


    STOP ‘Devam eden programı sonsuz döngüye sokar.



    SWAP KOMUTU : İki değişken içerisindeki değerleri birbiri ile yerlerini ters çevirir.

    B0=3 : B2=6 ‘İSE

    SWAP B0 , B2 ‘B0=6 , B2=3 YAPAR
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.