temel jalv2 kavramları

Upload: ercan-tek

Post on 14-Jul-2015

303 views

Category:

Documents


0 download

TRANSCRIPT

Jalv2 ile PIC Programlama

1.BLMSercan TEKTemmuz 2011

Temel JALv2 KavramlarNot : Buradaki baz komutlar jalv2 derleyicisinin 2.4o ve sonraki versiyonlar iin geerlidir. Temel programlama ve elektronik bilginizin olduu varsaylarak hazrlanmtr. Bu Dokman Hazrlanrken Jalv2 derleyicisinin Daima son srm kullanlmtr.

NDEKLERBlm: 1 Temel Jalv2 Kavramlar1.1 JAL DL VE SYNTAX DZEN . Jalv2'in Destekledii PIC'ler .............. Jalv2 Derleyicisindeki Yenilikler.... Jalv2 Dilindeki Syntax JALEDT UYGULAMA GELTRME ORTAMI ............. Jaledit Programnn stnlkleri ...................... JALV2 KAVRAMLARI VE TEMEL KOMUTLARI ...... ... Deikenler ....... Jalv2 de Deiken Tanmlama Biimleri .... Jalv2 Gsterim ekilleri ......................... Sabitler ................................ Dizi Tanmlamalar .............................. Count Fonksiyonu......................... Include Komutu .......................... Aklama Satrlar ... Takma sim Kullanm (Alias) ... Adres Atama (Location) ...................... Operatrler ................................... Matematiksel Operatrler. Mantksal Operatrler.... Karlatrma Operatrleri.... stenilen Bitlerin Maskelenmesi (Sfrlanmas) .... stenilen Bitlerin Setlenmesi (Birlenmesi) .. Bitlerin Terslenmesi .............. stenilen Bitlerin Terslenmesi.............. Tm Bitlerin Terslenmesi. KARAR VERME YAPILARI,KOD BLOU VE RECORD YAPISI................. Karar Verme Yaplar........... f..Then ..................... Case..Of .............. Block..End Block............ Record Yaps................ DNGLER . Forever Loop Dngs....... For..Loop Dngs ... Using Komutu .. While Loop Dngs... Repeat Until Dngs .... ALT PROGRAM TANIMLAMALARI . Procedure Tanmlamas. Function Tanmlamas. Pseudo Tipinde Alt Program Tanmlamas......... Pseudo Tipinde Procedure Tanmlama..... Pseudo Tipinde Function Tanmlama.... Alt Programlarn Global Olarak Kullanm.... ie Alt Program Tanmlama. PIC ASSEMBLER KULLANIMI..................... Tek Assembler Komutunun Kullanm.... Assembler Kod Blou Kullanm(Assembler..end assembler) .. DAHL FONKSYONLAR.. Count() Fonksiyonu Defined() Fonksiyonu... _usec_Delay() Fonksiyonu.. Tipler Aras Dnm Fonksiyonlar. 1 1 1 2 2 2 3 3 3 4 4 5 5 6 6 6 7 7 8 8 9 9 9 9 9 10 10 10 10 11 12 12 13 13 13 14 14 15 15 16 17 18 18 19 19 20 21 22 22 23 23 23 24 24

1.2 1.3

1.4

1.5

1.6

1.7

1.8

1.9

1.10

Byte() Fonksiyonu... SByte() Fonksiyonu. Word() Fonksiyonu... Sword() Fonksiyonu. Dword() Fonksiyonu. Sdword() Fonksiyonu... PRAGMA KAVRAMI.. Chip Konfigrasyon fadeleri...... Alt Program Optimizasyon fadeleri.... FRAME..... INLINE...... INTERRUPT........... JUMP_TABLE......... KEEP....................... NOSTACK................ Kod Optimizasyon fadeleri... EXPR_RECUDE...... CEXPR_RECUDE.... CONST_DETECT.... LOAD_RECUDE...... TEMP_RECUDE...... VARIABLE_FRAME... VARIABLE_RECUDE..... Derleyici Konfigrasyon fadeleri...... BOOTLOADER......... BLOADER......... LOADER18...... LONG_START..... RICKPIC......... CLEAR..................... EEDATA.................. FUSE....................... IDDATA.................. MESAJ RETME KOMUTLARI... _DEBUG.... _WARN.. _ERROR..... KANAKA....

24 25 25 25 25 25 26 26 26 26 26 28 28 29 29 29 29 30 30 30 30 31 31 31 31 31 31 32 32 32 32 32 33 33 33 33 34 34

Bu Blmde Jalv2 ile program yazarken kullanacamz kodlarn ne ie yaradn ve nasl kullanldn rnek ile reneceksiniz. Bu yzden uan iin jalv2 kullanarak yazlm programlara yer verilmedi. Ama Yaynlanacak olan blmlerde daha ok kod yazmaya ve evresel aygtlarn kullanmna arlk verilecektir.

1.Blm: Temel Jalv2 Kavramlar

Jalv2 ile PIC Programlama

1.1 JAL Dili ve Syntax DzeniJAL, Microchip ve Unicom Firmasnn mikro derleyicileri iin hazrlanm olan cretsiz, yksek seviyeli ve ak kaynak kodlu bir derleyicidir..JAL adn "Just Another Language" Kelimelerinin Ba Harflerinden alr. Wouter van Ooijen tarafndan 22 Haziran 1998 ylnda ilk versiyonu kmtr ve imdi GNU GPL lisansl olup sourceforge.net tarafndan gelitirilmeye devam etmektedir. Bir BASIC derleyicisi yazan Kyle York adndaki programc, yazd derleyiciye JALn syntax dzenini uyarlayarak JALv2 Dilini tretti ve yaymlamaya balad. Yaymlanan Bu Dilde(Jalv2) dilinde kk byk harf hassasiyeti yoktur. Compiler kodu derlerken assembly ktsn da retmektedir. Kodlama esnasnda assembly ifadelerinin veya assembly bloklarnn kullanlmasna izin verir. Tamamen C dili ile gelitirilmi ak kaynak kodlu olarak datlmaktadr.

1.1.1 Jalv2 derleyicisindeki yenilikler1) Deiken tipleri gelitirildi ve Daha yksek bite sahip deikenler ve dizi deikenleri eklendi. 2) Hex dosyasnn derlendikten sonra alma srasndaki hatalarnn giderilmesi saland. 3) Tam ktphane destei saland ve ktphane dosyas olan her 8-bit PIC serisine destek saland. 4) Jalv2, sfrdan yazld iin kaynak kodlar daha sade hale getirildi ve okunabilirlii artrld. 5) Derleme esnasnda kullanlmayan deiken ve alt programlarn derlenmemesi iin gelitirilmeler yaplarak, kan hex dosyasnn daha sade ve ksa hal almas saland 6) Tanmlanan deikenler assembly komutlarnda kullanlmas saland. 7) Daha nceden bulunmayan ilevsel komutlar ilave edildi. 8) Kod Optimizasyonunun en iyi ekilde olmas saland.

1.1.2 Jalv2'in Destekledii PIC'ler10f200 10f202 10f204 10f206 10f220 10f222 12f1822 12f508 12f509 12f510 12f519 12f609 12f615 12f617 12f629 12f635 12f675 12f683 12hv609 12hv615 12lf1822 16f1516 16f1517 16f1518 16f1519 16f1823 16f1824 16f1825 16f1826 16f526 16f610 16f616 16f627 16f627a 16f628 16f628a 16f630 16f631 16f636 16f639 16f648a 16f676 16f677 16f684 16f685 16f687 16f688 16f689 16f690 16f707 16f716 16f72 16f720 16f721 16f722 16f722a 16f723 16f723a 16f819 16f84a 16f87 16f870 16f871 16f872 16f873 16f873a 16f874 16f874a 16f876 16f876a 16f877 16f877a 16f88 16f882 16f883 16f884 16f886 16f887 16f913 16f914 16f916 16f917 16f946 16hv610 16hv616 16hv785 16lf1516 16lf1937 16lf1938 16lf1939 16lf1946 16lf1947 16lf707 16lf720 16lf721 16lf722 16lf722a 16lf723 16lf723a 16lf724 16lf726 16lf727 18f1220 18f1230 18f1320 18f1330 18f13k22 18f13k50 18f14k22 18f14k50 18f2220 18f2221 18f2320 18f2321 18f2331 18f23k20 18f24j11 18f24j50 18f24k20 18f24k22 18f2510 18f2515 18f252 18f2520 18f2523 18f2525 18f2539 18f2550 18f2553 18f258 18f2580 18f2585 18f25j10 18f25j11 18f25j50 18f25k20 18f25k22 18f25k80 18f2610 18f2620 18f2680 18f2682 18f2685 18f26j11 18f26j13 18f43k22 18f4410 18f442 18f4420 18f4423 18f4431 18f4439 18f4450 18f4455 18f4458 18f448 18f4480 18f44j10 18f44j11 18f44j50 18f44k20 18f44k22 18f4510 18f4515 18f452 18f4520 18f4523 18f4525 18f4539 18f4550 18f4553 18f458 18f4580 18f4585 18f46j50 18f46j53 18f46k20 18f46k22 18f46k80 18f47j13 18f47j53 18f6310 18f63j11 18f63j90 18f6410 18f64j11 18f64j90 18f6520 18f6527 18f65j10 18f65j11 18f65j15 18f65j50 18f65j90 18f65k22 18f65k80 18f65k90 18f6620 18f6622 18f6627 18f66j10 18f66j11 18f66j15 18f67j60 18f67k22 18f67k90 18f8310 18f83j11 18f83j90 18f8410 18f84j11 18f84j90 18f8520 18f8527 18f85j10 18f85j11 18f85j15 18f85j50 18f85j90 18f85k22 18f85k90 18f8620 18f8622 18f8627 18f86j10 18f86j11 18f86j15 18f86j16 18f86j50 18f86j55 18f86j60 18f86j65 18lf13k22 18lf13k50 18lf14k22 18lf14k50 18lf23k22 18lf24j10 18lf24j11 18lf24j50 18lf24k22 18lf25j10 18lf25j11 18lf25j50 18lf25k22 18lf25k80 18lf26j11 18lf26j13 18lf26j50 18lf26j53 18lf26k22 18lf26k80 18lf27j13 18lf27j53 18lf43k22 18lf44j10 18lf44j11 18lf44j50 18lf44k22 18lf45j10 18lf45j11

-1-

1.Blm: Temel Jalv2 Kavramlar16f1827 16f1828 16f1829 16f1933 16f1934 16f1936 16f1937 16f1938 16f1939 16f1946 16f1947 16f505 16f506 16f724 16f726 16f727 16f73 16f737 16f74 16f747 16f76 16f767 16f77 16f777 16f785 16f818 16lf1517 16lf1518 16lf1519 16lf1823 16lf1824 16lf1825 16lf1826 16lf1827 16lf1828 16lf1829 16lf1933 16lf1934 16lf1936 18f23k22 18f2410 18f242 18f2420 18f2423 18f2431 18f2439 18f2450 18f2455 18f2458 18f248 18f2480 18f24j10 18f26j50 18f26j53 18f26k20 18f26k22 18f26k80 18f27j13 18f27j53 18f4220 18f4221 18f4320 18f4321 18f4331 18f43k20 18f45j10 18f45j11 18f45j50 18f45k20 18f45k22 18f45k80 18f4610 18f4620 18f4680 18f4682 18f4685 18f46j11 18f46j13 18f66j16 18f66j50 18f66j55 18f66j60 18f66j65

Jalv2 ile PIC Programlama18f86k22 18f86k90 18f8720 18f8722 18f87j10 18f87j11 18f87j50 18f87j60 18f87k22 18f87k90 18f96j60 18f96j65 18f97j60 18lf45j50 18lf45k22 18lf45k80 18lf46j11 18lf46j13 18lf46j50 18lf46j53 18lf46k22 18lf46k80 18lf47j13 18lf47j53 18lf65k80 18lf66k80

18f66k22 18f66k80 18f66k90 18f6720 18f6722 18f67j10 18f67j11 18f67j50

Toplam: 378 Adet PIC Destei vardr.

1.1.3 Jalv2 Dilindeki SyntaxJalv2 dilinin sz dizilimi temel olarak Pascal diline daha yakndr. Baz komutlar C diline ok benzemektedir. nceden Pascal veya C kullanm olanlar daha abuk uyum salayacaklardr. Hi kullanmayanlar ise daha ksa srede dilin kolayll yznden hemen alp program gelitirebileceklerdir. Jalv2 iin tm hereyi Bulabileceiniz Tek adres : Jalv2 Compiler Download

1.2

Jaledit uygulama Gelitirme Ortam

Jalv2 dilinde uygulama gelitirmek iin ncelikle bir Editr Programna htiya duyulmaktadr. Piyasada birok editr yer almakla birlikte en iyi ve gelimi zelliklere sahip JALEDT editrn kullanmanz iinizi kolaylatracaktr. Delphi Dili ile gelitirilmi olup ak kaynak kodlu yaymlanmaktadr.

1.2.1 Jaledit Programnn stnlkleri- erisinde mini seri port terminal modl bulunmaktadr. Bylelikle seri port ile ilgili uygulamalarda seri port tan gelen verileri mini terminal ile grebiliriz. - Jal syntax renklendirmesi yapmaktadr. Kodlarn okunabilirlii artt gibi kodlar takip etmek daha kolaylar. - Derleyiciden gelen hata mesajlarn gsterir ve zerine tklandnda o satra yneltir. - Kullanm basit ve sade bir arayze sahiptir. - Seri port programlayclara balanarak hex dosyasn pic'e aktarabilir. - erisinde basit aralar ile birlikte gelir, program yazlmasn hzlandrr. - Derleyici ayarlar ve editr ayarlar istenildii gibi deitirilmesine izin verir. JALEDT Programn ve gelimeleri takip edebileceiniz adres : Jaledit IDE Download Piyasada bulabileceiniz Serkan AYYILDIZ'n JAL ile Programlama Kitab eski JAL compiler zerine kurulu olduu iin jalv2 ile derleme yapamazsnz. Bu nedenle eer o kitab alacaksanz yannda gelen CD'de bulunan Jal compiler ver jaledit programn kullanabilirsiniz.

-2-

1.Blm: Temel Jalv2 Kavramlar

Jalv2 ile PIC Programlama

1.3

Jalv2 Kavramlar ve Temel Komutlar

1.3.1 DeikenlerDeikenler her programla dilinin vazgeilmez unsurlardr. Program ierisinde tanmlanan deikenler aslnda birer hafza alanndan ibarettir. Yani program ierisinde deer yazp okuyabileceimiz ve belirlediimiz tipe gre hafzada alan kapsayan blmlerdir. Deikenler, defalarca yazlp okunabilmektedir. Tanmlanan her deiken PIC entegresinin RAM bellek alannda yer kaplar. Bunun anlam Elektrik Kesildiinde deikene yklenmi olan son deer silinmektedir. Bundan dolay deiken tanmlandnda balangta bir ilemde kullanlacak ise deikene balang deeri aktarlmas dorudur. Deikenler var Deyimi ile Tanmlanr. Jalv2 dilinde toplam 7 adet deiken tipi vardr. Bunlar aadaki gibidir: Deiken Tipi bit byte sbyte word sword dword sdword Aklama 1 bit deer alabilir 8 bit iaretsiz deer alabilir 8 bit iaretli deer alabilir 16 bit iaretsiz deer alabilir 16 bit iaretli deer alabilir 32 bit iaretsiz deer alabilir 32 bit iaretli deer alabilir Deer Aral 0..1 0..255 -128..127 0..65,535 -32,768..32,767 0..4,294,967,296 -2,147,483,648..2,147,483,647

Tabloda grnd gibi deiken tipleri bakmndan jalv2 zengin bir dil. Ama genelde programlarda sadece 3 tip deiken (bit, byte, word) kullanlr.

1.3.1.1

Jalv2 de Deiken Tanmlama Biimleri

Jalv2 Dilinde Deiken Tanmlarken Aadaki Yaz Format Kullanlr:var var bit deger

rnek:

Burada deger adnda bit tipinde deiken tanmlamas yaplmtr.

Eer deikenimize Balang Deeri Aktarmak stiyor isek o zaman u ekilde olmaldr:Var =

rnek:

var byte deger = 250 Byte Tipinde Tanmlanan deer adndaki deikene

balang deeri olarak 250 says aktarlmtr.DEKEN TP Bit Byte Sbyte Word Sword Dword Sdword Var Var Var Var Var Var Var Var Var Var Var Var RNEK TANIMLAMA bit deger bit deger = 1 byte dd byte dd = 23 sbyte deneme sbyte deneme = -100 word ornek word ornek = 11991 sword cok sword cok = -11991 dword cokdeger dword cokdeger = 4000000000

Var sdword cokcokdeger Var sdword cokcokdeger = -1147483648

-3-

1.Blm: Temel Jalv2 Kavramlar

Jalv2 ile PIC Programlama

Deikenler araya ,(virgl) Koyulmak art ile yanyana da Tanmlanabilirler. rnek: var byte saat,masa,sandalye,lcd Burada saat,masa,sandalye,lcd isimli Deikenler byte tipinde tanmlanmtr.

1.3.2 Jalv2 Gsterim ekilleriDesimal Say Gsterimi: Banda veya sonunda herhangi ek bir iaret olmakszn sadece saynn yazlmas eklindeki gsterimdir.rnek: var byte ornekdec = 65

Burada ornekdec isimli deikene Desimal 65 says atanmtr.

Hexadesimal Say Gsterimi: Hexadesimal say gsteriminde dikkat edilecek husus saynn bana 0x koyulmas gerektiidir. rnek: var byte ornekhex = 0x41 Burada ornekhex isimli deikene Hexadesimal 41says atanmtr. (0x41 = 65)

Octal Say Gsterimi: Octal say gsteriminde dikkat edilecek husus saynn bana 0q koyulmas gerektiidir. rnek: var byte ornekoct = 0q12 Burada ornekoct isimli deikene Octal Tabanda12 says atanmtr.

Binary Say Gsterimi: Binary say gsteriminde dikkat edilecek husus saynn bana 0b koyulmas gerektiidir. rnek: var byte ornekbin = 0b01000001 Burada ornekbin isimli deikene binary01000001says atanmtr. (0b01000001 = 0x41 = 65)

Not: Binary Say Gsteriminde aadaki Formatta Kullanlabilir: rnek: rnek:var byte ornekbin = 0b01000001 var byte ornekbin = 0b_0100_0001 Burada aralara konan _ iareti nemsizdir.

Gz Karkln nlemek in Konulmutur. ASCI Gsterim: ASCI rakam, harf ve baz zel iaretlerden oluan karakterlerin saysal karlklarnn standardna verilen isimdir. Bilgisayar Ortamnda Tm Her ey saylar ile saklanmaktadr. rnein ab = A tanmlamas Yapldnda ab deikenine A nn ASCI karl yklenmektedir. rnek:var byte ab = A Burada ab isimli deikene A Harfinin ASCI Karl Yklenmitir.

1.3.3 SabitlerSabitler Program alrken Sadece Okunabilen Hafza alanlar Olarak Nitelendirilebilirler. Deikenlerden Farkl olarak Tanmlandklar esnada ierisine deer aktarlr ve bu deer sadece okunabilir. Deiiklik Yaplamaz. Jalv2 Dilinde Sabit Tanmlama Format Aadaki Gibidir:Const =

-4-

1.Blm: Temel Jalv2 Kavramlar

Jalv2 ile PIC Programlama

rnek:

Const Const Const Const Const Const Const

bit byte sbyte word sword dword sdword

led deg ges dk sn snn san

= 0 = 100 = -100 = 5000 = -5000 = 4000000000 = -1147483648

bit byte sbyte word sword dword sdword

Tipinde Tipinde Tipinde Tipinde Tipinde Tipinde Tipinde

Sabit Sabit Sabit Sabit Sabit Sabit Sabit

Bu tanmlamalarn yannda sabitlerde ekstradan niversal tip tanmlamada mevcuttur. Genellikle PIC in alma frekans gibi tanmlamalarda kullanlrlar. Herhangi bir tipleri bulunmamaktadr. Derleyici sadece derleme esnasnda bu niversal tipi kullanr ve derlendikten sonra ulama imkn yoktur.rnek:

Const devir = 600

niversal Tip Sabit Tanmlamas

1.3.4 Dizi TanmlamalarDizi tanmlamalar tek trde birok eleman bnyesine alabilen tanmlamalardr. Tanmlama esnasnda dizinin says belli ise bu dizelere statik diziler, dizi says belli deil ise bu dizilere ise dinamik dizeler denir. Diziler hem deiken diziler hem de sabit diziler olarak tanmlanabilir. Dizilerin ilk Elemanlar daima 0(sfr)dan Balamaktadr. rnek: Deiken DizilerVar byte dizi[3] = {245,123,253}

statik dizi

Yukardaki rnekte dizi elemanlar deiken olan statik bir dizi tanmlamas yaplmtr. Burada dizi[0] = 245 , dizi[1] = 123 , dizi[2] = 253 olmaktadr.Ayn Dizi dinamik olarak tanmlanm olsa idi o zaman u ekilde yazlmas gerekmektedir.Var byte dizi[] = {245,123,253} Var byte dizi[] = {S,2,1,V}

dinamik dizi dinamik dizi

Sabit DizilerConst byte mesaj[] = SsEeRrCcAaNn

dinamik dizi

Yukardaki rnekte dizi elemanlar sabit olan dinamik bir dizi tanmlanmtr. Burada diziye yklenen ASCI deer says kadar bir dizi olumaktadr. Ayn Diziyi birde statik olarak tanmlarsak aadaki gibi yazlmas gerekmektedir.Const byte mesaj[12] = SsEeRrCcAaNn statik dizi

Dizi Tanmlamalarnda; eer dizi deiken olarak tanmland ise o zaman dizi elemanlar sonradan deitirilebilir ama sabit olarak tanmland ise daha sonra bir deiiklik yaplamaz. Ayrca bit tipinde dizi tanmlamas yaplmamaktadr.

1.3.4.1

Count( ) Fonksiyonu

Tanmlanan dizilerin eleman saylarn bulmak iin Kullanlan Fonksiyondur. Genellikle dinamik dizilerin eleman saylarn bulmak amac ile kullanlr. Eleman Saysn bir deikene aktararak ya da direkt bu fonksiyon zerinden kullanlarak gerekli ilemler yaplabilir. Kullanm Format :Count(dizi_adi) = Count(dizi_adi) Fonksiyon zerinden Kullanlmas Deikene aktarlmas

-5-

1.Blm: Temel Jalv2 Kavramlar

Jalv2 ile PIC Programlama

1.3.5 Include KomutuJalv2 Dili Ktphanelere dayal bir dildir. Tm Her ey Ktphaneler zerinden Ynetilir. Projenize Balarken bile ncelikle kullanmanz Gereken PIC entegresini tantmanz gerekmektedir. Bunu Yapabilmek in se Kullanlacak Entegrenin adreslerinin tanml olduu ktphane Dosyasn Projenize Dhil Etmeniz Gerekmektedir. Bunun Haricinde zel bir ktphane Dosyasn projenize dhil etmek iin kullanlmaktadr. Yazm Format: includernek:

include

16F628A

Jalv2 Compileri derleme yaparken ktphane Dosyalarn Sadece bir Dizinde aramaktadr. Genellikle Derleyicinin Bulunduu Dizinde Lib klasr Kullanlmaktadr. Bu yzden zel bir ktphane kullanmak istiyorsanz, ktphane Dosyasn Lib klasr ierisine kopyalamanz Gerekmektedir. Compiler C srcsnde olduu varsaylr ise; C:\compiler\jalv2.exe C:\Lib Derleyici Ktphane Klasr

1.3.6 Aklama Satrlar Jalv2 Dilinde Aklamalar iki iaret ile gerekleir. Bunlar: 1) -- Yan Yana iki adet eksi iareti ile 2) ; Noktal Virgl ile Derleyici bu iaretlerin sanda kalan ksmlar derlemez ve gz ard eder. Aklama satrlarnn kullanm amac yazlan programda hatrlatc veya bilgilendirici yazlar yazmaktr. Programda istenmeyen bir kod olduunda deneme amal o kodu pasif hale getirmek iin bu iaretlerde kullanlabilir. Aklama sadece tek satr iin geerlidir. oklu satr aklama yazmak istenirse her satrn bana bu iaretlerden konulmas gerekmektedir.rnek:; ----------------------------------------------------- Programn Ad : Aklama Satr rnek Kod -- Yazan : SsEeRrCcAaNn -Tarih : 14.12.2010 ; ---------------------------------------------------include 16F628A

Yukardaki rnekte aklama satr program hakknda bilgi vermek iin yazlmtr. Burada banda -- ve ; olan satrlar dikkate alnmayacak ve derlenmeyecektir.

1.3.7 Takma sim Kullanm (Alias)Takma simler Daha nce Tanmlanm bir Deikene Aklda Kalc bir isim vermek iin kullanlmaktadr. Derleme Esnasnda Hafzada yer Kaplamazlar. Kullanm derleme sonras kan hex kodunda herhangi bir deiiklik yaratmaz.

-6-

1.Blm: Temel Jalv2 Kavramlar

Jalv2 ile PIC Programlama

Kullanm Format:Var volatile is rnek:

var byte Sercan = 250 var volatile byte Seco is Sercan

Bu rnekte byte tipinde tanmlanm olan Sercan isimli deiken yerine artk Seco takma ad kullanlabilmektedir.

1.3.8 Adres Atama (Location)Jalv2 dilinde adres atama sayesinde kullanlacak olan pc entegresinde bulunan adresleri deikenlere aktarlabilmektedir. Bu sayede deikenler aracl ile pcin kaydedicilerine ve kullanc ramna ulalabilinir. Adres atamada iki tip kullanlmaktadr: 1) - byte tipi 2) - bit tipi Kullanm Format : rnek:var volatile byte var volatile bit at at

var volatile byte portb at 0x86

Program erisinde PICin 0x86 adresine artk

portb olarak eriilebilinecektir. var byte sayi = 0b_1111_1010 var volatile bit sayi_bit at sayi: 3 Burada sayi deikeninin 3.bitini sayi_bit deikenine aktarmaktadr.

Ayn grevi gren baka bir kod yazarsak u ekilde olacaktr:var byte sayi = 0b_1111_1010 var bit sayi_bit at sayi: 3 Burada sayi deikeninin 3.bitini sayi_bit deikenine aktarmaktadr.

1.3.9 OperatrlerOperatrler Programlama Dillerindeki eitli matematiksel, mantksal ve karlatrma ileri yapmakta olan zel karakterlerdir. Jalv2 dili operatr yapsn C dilinden almtr. Operatrler Yanyana yazldklarnda ilem nceliine gre hesaplanrlar.Operatr ! * / % + > < >= != == & | ^ ncelik 0 (Yksek) 0 (Yksek) 1 1 1 2 2 3 3 3 3 3 3 3 3 4 (Dk) 4 (Dk) 4 (Dk) Aklama Kullanld Tipler Negatif iareti Sbyte,sword,sdword Deil(Not) Genel Tipler arpma Genel Tipler Blme Genel Tipler Mod Alma Genel Tipler Toplama Genel Tipler kartma Genel Tipler Sola Kaydrma Byte Sa Kaydrma Byte Kk Genel Tipler Kk Eittir Genel Tipler Byk Genel Tipler Byk Eittir Genel Tipler Eit Deil Genel Tipler Eit Genel Tipler Ve Genel Tipler Veya Genel Tipler Xor Genel Tipler En yksek ncelik = 0 En Dk Tr Matematiksel Mantksal Matematiksel Matematiksel Matematiksel Matematiksel Matematiksel Matematiksel Matematiksel Karlatrma Karlatrma Karlatrma Karlatrma Karlatrma Karlatrma Mantksal Mantksal Mantksal ncelik = 4

-7-

1.Blm: Temel Jalv2 Kavramlar

Jalv2 ile PIC Programlama

1.3.9.1 Matematiksel OperatrlerJalv2 ilemleri 8 bit olduu iin ilemlerin sonular 255 saysn geemez. Eer Getii Takdirde mod 256 ilemi yaplr ve sonuca aktarlr. Toplama lemi(+),kartma lemi (-),arpma lemi (*),Blme lemi(/) : 4 Temel lemin Yapld Operatrlerdir. Mod Alma lemi (%): Blme lemi Yapldnda kalan elde etmek iin kullanlan operatrdr. Genellikle bir saynn belirli bir aralkta kalmas istenildii durumlarda kullanlr. rnek : sayi = (sayi + 1) % 15 Burada say deikeni 1 arttrlyor. Bunu Bir dng aracl ile yaparsak srekli artacak ve 15 e kadar gelecektir. 15te mod 15 alndnda sonu tekrar 0 olacaktr. Bylelikle sayi deikeni srekli 0..14 arasnda deer alm olacaktr. Sola kaydrma() operatrleri: Bir sayy stediimiz basamak kadar sa veya sola kaydrmak iin kullanlan operatrlerdir. rnek :var byte sayi = 0b_1111_0101

Sayi = sayi >> 2

Yukardaki rnekte sayi deikeni tanmlanp binary 0b_1111_0101 says aktarlyor. Daha sonra tekrar sayi deikenine, sayi deikeni 2 sa kaydrp aktarlyor. Sonu olarak sayi deikeninin Son hali aadaki gibi olur:Sayi = 0b_0011_1101

Eer sayi = sayi ) : Verilen ilk deerin, ikinci deerden byk olup olmadn anlamak iin kullanr. Kk (=) : Verilen ilk deerin, ikinci deerden Byk veya eit olup olmadn anlamak iin kullanr. Kk Eit ( 20) loop

1.5.4 Repeat .. Until DngsRepeat .. Until Dngs Genelde Tm programlama Dillerinde Kullanlmaktadr. Untilden Sonra Yazlacak olan art veya artlar Salanana kadar srekli almaktadr. alma mant olarak While..Loop dngsne benzemektedir. Birbirlerinden tamamen farkl yaplara sahiptir. Repeat..Until dngsnde; nce komutlar ilenir ve daha sonra art veya artlara baklmaktadr. Kastl olarak dngden kmak iin Exit Loop Komutu Kullanlmaktadr. Repeat .. Until Dngsnm Genel Yazm Format :Repeat Until

Eer Birden Fazla artta Balanacak ise artlar Parantez iinde yazlarak Or(|) veya And (&) operatrleri ile Balanmaldr.

rnek : 7 faktriyeli hesaplayan Kod blounu Repeat .. Until Dngs Kullanarak Yaznz.var word sonuc = 1 var byte dongu = 0 repeat dongu = dongu + 1 sonuc = sonuc * (dongu) until (dongu == 7) -- Dng adetini Bulma -- lem Sonucu Sonuc Deikenine aktarlacak -- Faktriyeli alnacak Say -- Sonuc Deikenin ierii 5040 olmaktadr. -- Deikenler ve balang deerleri

1.6 ALT PROGRAM TANIMLAMALARIJalv2 dilinin yaps Pascal diline benzemektedir. Pascal dilindeki procedure ve function alt programlar jalv2 dilinde de kullanlmaktadr. Yazlan programlar uzadka program takip etmek ve

- 15 -

1.Blm: Temel Jalv2 Kavramlar

Jalv2 ile PIC Programlama

hata ayklamak olduka zahmetli bir itir. Bu yzden alt programlar sayesinde Kodlar modller halinde sade ve anlalr olarak yazlmaktadr. Yazlan bir alt program farkl programlarda rahatlkla defalarca kez kullanabilinmektedir. Alt programlar parametreli olduu gibi parametresizde yazlabilmektedir. Bu sayede amaca uygun ister parametreli, isterse parametresiz alt programlar oluturulabilmektedir. Jalv2 dili iki alt Program (Procedure - Function) Kullanmna izin vermektedir. Bununla beraber Pseudo Tipinde tanmlama sayesinde, alt programlarn isimleri ile hem deer alnabilinmekte hem de deer verilebilmektedir. Giri Parametresi daha nce tanmlanm bir dizede olabilir.

1.6.1 Procedure TanmlamasProcedure tanmlamas geriye deer dndrmeyen alt programlardr. Parametreli tanmlandklarnda geriye deer dndrmezler ama tanmlanan parametreye deer aktarabilmektedirler. Parametresiz tanmlanan bir procedure alt programn kullanmak iin sadece ismini yazmak yeterlidir. Ama parametreli bir procedure alt program kullanld zaman isim ile beraber parantez ierisinde sras ile parametreleri belirtmek zorunludur. Procedure alt programnn ierisinde dier tm komutlar, deyimler, deikenler ve sabitler kullanlmaktadr. Fakat tanmlanan sabitler ve deikenler yerel olacaklar iin procedure dndan ulalamazlar. Parametresiz Procedure Alt Program Tanmlamasnn Genel Format :Procedure is end procedure

Parametreli Procedure Alt Program Tanmlamasnn Genel Format :Procedure (,) end procedure is

Parametre Tanmlamas Giri Parametresi k Parametresi Giri ve k Parametresi Giri Parametresi Dize ise

: : : :

Genel Format in out in out in [ ]

rnek byte in v_deger byte out v_deger byte in out v_deger byte in v_dizi[ ]

Parametreli procedure tanmlamasnda procedure isminden sonra parantez ierisinde tipleri, giri mi k m olduklar ve isimleri aralara virgl konularak yazlmaldr. Eer parametre giri parametresi ise in , k parametresi ise out, Hem giri hem de k parametresi ise in out komutlar deiken tipinden sonra yazlmaldr. k olarak tanml parametrelerde ve hem k hem de giri olarak tanml parametrelerde, parametre muhakkak bir deiken olarak gsterilmelidir. Aksi takdirde derleme esnasnda derleyici hata verecektir.

- 16 -

1.Blm: Temel Jalv2 Kavramlar

Jalv2 ile PIC Programlama

rnek : Parametreli bir Alt Program Tanmlama ve Kullanmaprocedure deger_aktar(byte in veri1,byte out veri2, byte in out veri3) is for veri1 loop veri2 = veri1 + 3 end loop if veri2 < 25 then veri3 = veri3*veri2 else veri3 = 100 end if end procedure var byte v_deger = 20, v_sonuc = 15 Forever loop Deger_aktar(10,v_deger,v_sonuc) End loop

rnek : Parametresiz bir Alt Program Tanmlama ve Kullanmavar byte v_deger1 = 20,v_deger2 = 10,v_sonuc procedure islem_yap is v_sonuc = v_deger1 * v_deger2 End procedure Forever loop islem_yap End loop

1.6.2 Function TanmlamasFunction alt programlar procedure alt programlarnn tm zelliklerini tamakla birlikte geriye deer dndrebilmektedirler. Function alt programlarn isimleri birer deiken gibi grlmektedir. Parametreli ve parametresiz olarak tanmlama yaplabilmektedir. Matematiksel ilemlerde function ismi direkt kullanlabilmektedir. Procedure tanmlamalarnda olduu gibi parametrelerinin giri mi k m olaca in ve out komutlar ile belirtilmektedir. Ayn zamanda geri dn tipinin tanmlanmas gerekmektedir. Geri dn tipi mevcut deiken tipleri olarak tanmlanmaldr. Geri dn deeri return komutu ile aktarlmaktadr. Parametresiz Function Alt Program, Tanmlamasnn Genel Format:Function return is Return end function

Parametreli Function Alt Program, Tanmlamasnn Genel Format:Function () return Return end function is

- 17 -

1.Blm: Temel Jalv2 Kavramlar

Jalv2 ile PIC Programlama Genel Format in out in out < tipi> in [ ] rnek byte in v_deger byte out v_deger byte in out v_deger byte in v_dizi[ ]

Parametre Tanmlamas Giri Parametresi k Parametresi Giri ve k Parametresi Giri Parametresi Dize ise rnek :

: : : :

Parametresiz bir Function Alt program Tanmlama

Var byte carpim = 10,carpan = 5 ,sonuc Function hesapla return byte is Return carpim*carpan End function Forever loop Sonuc = hesapla End loop

rnek : Yukardaki rnek Kodu Parametreli bir function tanmlamas ile yapnz Var byte sonuc Function hesapla(byte in carpan,byte in carpim) return byte is Return carpim*carpan End function Forever loop Sonuc = hesapla(10,5) End loop

1.6.3 Pseudo Tipinde Alt Program TanmlamasPseudo tipi tanmlama Jal/Jalv2 diline has bir biimdir. Trke olarak Szde tanmlama olarak evrilebilir. Tanmlanan Alt Programn ismi ile hem deer almak hem de deer vermek iin kullanlmasna olanak tanr. Yani Tanmlanan Alt Program function ise kendi ismi ile darya deer aktarabilir. Procedure ise Kendi ismi ile ieriye deer alabilmektedir.

1.6.3.1 Pseudo Tipinde Procedure TanmlamaProcedure put (,) is end procedure

Procedure iin Pseudo tanmlamada isminden sonra put ifadesi yer almaktadr. Burada Dikkat edilecek husus tanml olan parametresinin daima giri olmas ve tanml olan parametrenin 1 veya 2 adet olmasdr. Eer parametre 1 tane ise Pseudo tanmlamada procedure ismine direkt deer eitlendiinde aslnda deer parametreye gitmektedir. Ama 2 adet parametre varsa dizi tanmlamasnda olduu gibi [ ] keli parantez ile ilk parametre verilirken, direkt procedure ismine olan eitlemede deer 2. parametreye gitmektedir. rnek : 1 parametreli Pseudo tanmlamaVar byte xx Procedure hesaplamaput(byte in yy) is xx = yy + 5 End procedure

- 18 -

1.Blm: Temel Jalv2 Kavramlar

Jalv2 ile PIC Programlama

Forever loop Hesaplama = 25 End loop

rnekten de anlalaca gibi Pseudo tanmlama sayesinde yy giri parametresine direkt procedure ismi ile ulalabilmektedir. rnek : 2 parametreli Pseudo tanmlamaVar byte xx Procedure hesaplamaput(byte in yy,byte in cc) is xx = yy * 2 + cc End procedure Forever loop Hesaplama[10] = 25 End loop

Procedure alt programnda, ilk parametreyi keli parantez ile ularken, ikinci parametreye direkt eitleme ile ulalabilmektedir. Bu sayede bit dizisi oluturma gibi ilemlerde Pseudo tanmlama ok ie yaramaktadr. leriki Blmlerde Pseudo tanmlama kullanlarak eitli algoritmalar gsterilecektir.

1.6.3.2 Pseudo Tipinde Function TanmlamaFunction get return is end function

Pseudo tipinde Function tanmlamas yaparken function isminden sonra get ifadesi yer almaktadr. Burada Dikkat edilecek Husus tanmlanan function alt programnn giri parametresinin olmamasdr. Pseudo tipindeki Procedure tanmlamas giri parametresi olabilirken function tanmlama almamaktadr. Alt programda iletilen komutlar sonucu geri dnen deer Pseudo tipindeki function tanmlamann ismi ile dnmektedir. rnek : Pseudo Tipinde Function TanmlamasVar byte sonuc Function hesapla'get return byte is return 10 * 2 End function Forever loop Sonuc = hesapla 5 End loop

-- sonuc deikeninin deeri 15 olur

1.6.4 Alt Programlarnn Global Olarak KullanmJalv2 dili yap bakmndan Pascal programlama diline benzedii daha nceden sz edilmiti. Pascal Dilinde olduu gibi alt programlar yazldnda, nce tanmlanan alt program kendisinden sonra tanmlanan alt programlara ulaamazlar. Bunun nne geilmek iin kodlarmz yazarak tm alt programlar global olarak tanmlarsak; Program ierisinde herhangi bir yerde global olarak tanmlanan alt programlar kullanabiliriz.

- 19 -

1.Blm: Temel Jalv2 Kavramlar

Jalv2 ile PIC Programlama

rnek :var word islem_sonucu function faktoriyel(word in faktoriyeli) return word function karesi(word in deger) return word procedure hesaplama(word in deger) procedure hesaplama(word in deger) is islem_sonucu = faktoriyel(deger) + karesi(deger) end procedure function karesi(word in deger) return word is return deger*deger end function function faktoriyel(word in faktoriyeli) return word is var word sonuc = 1 var byte dongu = 0 repeat dongu = dongu + 1 sonuc = sonuc * (dongu) until (dongu == faktoriyeli) return sonuc end function forever loop hesaplama(7) end loop

-- islem_sonucu deikenin ierii 5089 olacaktr

Alt programlar yukardaki gibi bir tanmlama yapldnda programn herhangi bir yerinden arlabilmektedirler.. Dikkat edilecek Husus tm alt programlarn isimlerinin sonlarda bulunan is ifadesi, global tanmlama yapldnda kullanlmamas gerektiidir. Eer yukardaki programda global tanmlama yaplmam olsayd o zaman hesapla alt program, karesi ve faktoriyel alt programlarna ulaamazd.

1.6.5 e Alt Program TanmlamaBaz Durumlarda Tanmlanan Bir Alt Program sadece baka bir alt program tarafndan kullanlr. Dier alt programlar tarafndan eriilmesi istenmez. Yerel Deiken tanmlamasnda olduu gibi alt program, hangi alt programn ierisinde tanmland ise sadece orada kullanlmaktadr. Genel Kullanm Format : Procedure ierisinde Function Tanmlama :Procedure is Function return is Return end function . . end procedure

- 20 -

1.Blm: Temel Jalv2 Kavramlar

Jalv2 ile PIC Programlama

Yukarda grld gibi procedure ierisinde function tanmlanmtr. Tanmlanan Function sadece Procedure ierisinde kullanlmaktadr. ie tanmlamalarda i ie istenildii kadar tanmlama yaplabilmektedir. Function ierisinde Procedure Tanmlama :Function return is

Procedure is end procedure . . Return end function

Procedure ierisinde Function, Function ierisinde procedure tanmlamas yaplabildii gibi Function ierisinde function, procedure ierisinde procedure tanmlamas da yaplmaktadr. Function ierisinde Function Tanmlamas:Function return is

Function return is Return end function . . Return end function

Proceudre ierisinde Procedure Tanmlamas :Procedure is Procedure is end procedure . . end procedure

1.7 PIC ASSEMBLER KULLANIMIGelimi uygulamalar yazarken jalv2 komutlarnn yan sra hassas lm ve ok kk bekleme sreleri gibi ilemlerde pic assembler komutlar kullanmak gerekebilmektedir.jalv2

- 21 -

1.Blm: Temel Jalv2 Kavramlar

Jalv2 ile PIC Programlama

derleyicisi, ierisinde assembler komutlarnn kullanmna izin veren bir yapda yazlmtr. Tek komut kullanmnn yan sra assembler kod bloklar da kullanlabilmektedir. Kullanlan Assembler komutlarnda program ierisinde tanmlanan deikenler veya sabitler direkt kullanlabilmektedir.

1.7.1 Tek Assembler Komutunun KullanmJalv2 dilinde tek Assembler komutu kullanmak iin komutun nne asm ifadesi eklenmelidir. Genel Format : Asm rnek : 1 komut ileme sresi kadar gecikme sresini Assembler komutu kullanarak yapnz.Procedure mikrosaniye is Asm nop -- 1 mikrosaniye gecikme yapan Assembler komutu (nop) End procedure Forever loop mikrosaniye End loop

1.7.2

Assembler Kod Blounun Kullanm (ASSEMBLER..END ASSEMBLER)

Baz Durumlarda birden fazla Assembler komutu veya Assembler kod blou kullanmak gerekebilmektedir. Byle durumlarda Assembler komutlar Assembler end Assembler blou arasna yazlmaldr. Genel Format : Assembler . . End Assembler

rnek : Assembler kod blou kullanmProcedure asm_blok (byte in veri) is Var byte say = 10 Assembler Local basla , devam Basla : btfsc port_a,0 Goto Basla Movfw 0x25 Movwf veri Devam : Decfsz say, f Goto Devam End Assembler End procedure Forever loop Asm_blok(50) End loop

- 22 -

1.Blm: Temel Jalv2 Kavramlar

Jalv2 ile PIC Programlama

Yukardaki rnekte grld gibi bir Assembler kod blou direkt jalv2 komutlar arasnda kullanlmtr. Yazlan Assembler komutlarndaki etiketler ncelikle Local deyimi ile Assembler komutlar yazlmadan nce tanmlanmtr. Bylece goto - call Komutlar ile program istenilen etikete dallandrlabilmektedir. Jalv2 derleyici tarafndan desteklenen Asm komutlar unlardr : Kodlarda Kullanlan Ksaltmalarn anlamlar : B Bit tipinde deger (0