Professional Documents
Culture Documents
Plugin Pic Ders Notlari 1
Plugin Pic Ders Notlari 1
Hakan ndil
DEVRELENDRLM LOJK
Lojik (saysal) Devreleri genel olarak 3 ana grupta inceleyebiliriz ;
Bu tr lojik devrelerde herhangi bir andaki klar, sadece giriler tarafndan belirlenir. Bir baka ifadeyle K.L.D. lerde klar zamana bal deildir.
Yukardaki t (saat iareti) ne clock(saat) darbeleri de denir. Bunlar Kare dalga eklinde periyodik iaretlerdir. Ardl Lojik Devreler, Senkron ve Asenkron ardl lojik devreler diye ikiye ayrlrlar : a) Senkron ardl lojik devrelerde ilemler, clock (saat) iaretleri ile senkronize (e zamanl) olarak gerekletirilir. Bu tip lojik devrelere dijital saat devresi rnek olarak verilebilir. b) Asenkron ardl lojik devreler ise; devrenin giriindeki deiimlere bal olarak ilemler artarda (farkl zaman dilimlerinde) gerekleir. Bu tr devrelerde saat iareti bulunmas da art deildir. rnek olarak, para ile alan merubat makinesi para atld zaman harekete geecek (durum deitirecek) ekilde tasarlanabilir.
Burada da A.L.D. ye benzer ekilde saat (darbe) girii vardr ve her t annda bir ilem (toplama, karma, lojik VEYA ,OR gibi) gerekleir. Benzer olarak e(t):giriler ; s(t):klar olmak zere n tane giri ve m tane de ka sahip bir mikroilemci dzenini daha detayl bir ekilde aadaki gibi izmek mmkndr :
Sistemin genelde birden fazla giri ve klar olduu halde program saklamak iin bir Komut Hafzas zerinden ilem yaplacak ve neticede elde edilecek datay (veriyi, yani sayy) saklamak ve okumak iin Data (yada Veri) Hafzas kullanlacaktr. Mikroilemcide yaplacak ilemler ise srasyla komut hafzasndan mikroilemciye gnderilerek icra edilmesi salanr.
SAYI SSTEMLER
Say sistemleri iyi anlalmadan mikroilemcilerle(ya da mikrodenetleyicilerle) uramak ve onlar anlamak imkansz gibidir. Bu nedenle eitli rnekler zerinde say sistemleri ve dnmlerini anlamaya alalm. 7392 = (7392)10 = 7*103 + 3*102 + 9*101 + 2*100 (23.62)10 = 2*101 + 3*100 + 6*10-1 + 2*10-2 (4021.2)5 = 4*53 + 0*52 + 2*51 + 1*50 + 2*5-1 = (511.4)10 (101)2 = 1*22 + 0*21 + 1*20 = (5)10 Aada 0 15 arasndaki desimal saylarn heksadesimal ve binary tabandaki karlklar verilmitir. Desimal (10`lu) 0 1 2 Heksadesimal (16`l) 0 1 2 Binary (2`li) 0000 0001 0010
3 4 5 6 7 8 9 10 11 12 13 14 15
3 4 5 6 7 8 9 A B C D E F
0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
rnek Baz evirme lemleri: 1) (0010 0111 0001 . 1111 1100)2 = (271 . FC)16 (kili tabandaki say drtl gruplar halinde dzenlenerek yukardaki tablodan evrilir.) ( 2 7 1 . F C )16 2) (41)10 = (?) 2 ( Desimal sayy binary sayya evirmek iin srekli 2 ye bler ve ters srayla kalanlar alrsak saynn ikili tabandaki karln elde ederiz )
1-0-0-1-0-1
=>
tersten yazalm
=>
(101001)2 = (41)10
3) (47632)10 = ( ? )16 ( Not: Desimal sayy heksadesimale eviriyoruz ) Bu evirme ilemi iin de benzer tarzda sayy 16 ile artarda bleceiz. Yine kalanlar elde edip gerekenleri 16l tabana dntreceiz. (Blme ilemi farkl bir formatta (ekilde) gsterilmitir. izginin solunda artarda 16ya blme srasndaki blmler, sa tarafta ise kalanlar yer almaktadr. )
Verilen say ondalkl say olduu iin bu defa 16 ya blmeyip 16 ile arpacaz. 0.263 * 16 = 4 .208 0.208 * 16 = 3 .328 0.328 * 16 = 5 .248 Burada blme yerine arpma yapldndan her alnan sonucun tam say ksm batan sona doru (ters ynde deil !) sralanarak yazlarak sonu bulunur. 0,------4------3------5 => (0.435)16 = (0.263)10 5) (CA . 03)16 = ( ? )2 Burada ise her heksadesimal (16 l) saynn binary (ikili) karl alnp yan yana konularak netice elde edilir. C= 1100, A= 1010, 0= 0000, 3= 0011 olduu daha nce verilen tablodan bilindiinden
(52520)10 Tabana gre komplementi 105 - 52520 = 47480 ( Say 5 hane verilmi, o halde 10 5 den verilen say kartlarak netice bulunuyor.) (0.3267)10 Tabana gre komplementi 100 - 0.3267 = 0.6733 ( Saynn tam ksm yok ! , 10 0 = 1 den verilen say karlm. ) (101100)2 Tabana gre komplementi 2 6 - (101100)2 = (1000000)2 - (101100)2 = = (010100)2
(26 says binary olarak 1000000 olarak yazlr)
(0.3267)10 (Taban-1)'e gre komplementi 100 - 10-4 - 0.3267 = 0.6732 (101100)2 (Taban-1)'e gre komplementi (26 - 1) - (101100)2 = = (111111)2-(101100)2 = (010011)2 olur.
Binary (kili) Tabanda Baz lemler: Biz ikili tabandaki ilemleri genellikle 8 haneli olarak yapacaz.(Bunun sebebi, ilerde incelenecek PIC mikrodenetleyicinin 8 hane (bit) olmasdr, bylece buna bir hazrlk yaplmaktadr.) Aadaki rnekler hem binary hem de heksadesimal (16 l) tabanda yaplm ve sonularn ayn olduu gsterilmitir. 1) Toplama lemi (8 haneli) Binary 1000 1100 + 0111 1101 1 0000 1011 Hex 8C + 7F 1 0B
2) karma lemi (8 haneli) Binary 1000 1100 - 0111 1111 Hex 8C -7F
Bu ilemin sonucunu renebilmek iin normal yoldan kartma ilemi yapabiliriz.(Bunun iin en sadaki 0 dan 1 karmaya alacak kmad iin bir st haneden 2 bor alp 2 den 1 karp ilemlere devam edecektik) Fakat bu tarz kartma, toplamaya gre olduka zahmetli olacaktr. (Mikroilemci iindeki Lojik devreler iin de bu ilemin gereklemesi toplamaya gre karmak yap gerektirmektedir. Bu yzden pratikte kartma ilemi toplamaya evrilerek ilemler yaplr.) Bu amala kartmada Komplement (Tmleyen) aritmetii kullanlmas ii olduka basitletirmektedir. Zira, ikinci saynn (kann) tabana gre komplementi elde edilirse artk ilem toplamaya dnm olmaktadr ki btn mikroilemciler bu yolu kullanmaktadr. Buna gre birinci say (karlan) aynen braklr, zerinde herhangi bir ilem yaplmaz ! Sonra ikinci saynn (kann) tabana gre komplementini bulmamz gerekir. Ancak, daha nce komplement kavram ksmnda verilen rneklerden de anlalabilecei gibi komplement bulma ilemi de farkl bir kartma gerektirmektedir. Bunun yerine komplement almada kolay bir yntem olan aadaki metot uygulanabilir: kan olan (0111 1111)2 saysnn tabana gre komplementi basit olarak iki aamada bulunabilir: nce kanda 1 olan bitler(haneler) 0 ; 0 olan bitler ise 1 yaplr. Bylece saymz (1000 0000)2 olacaktr. Bu say, asl saynn ( taban - 1) e gre komplementidir. Daha sonra bu sayya 1 eklediimizde artk tabana gre komplement elde edilmi olacaktr. Yani kann tabana gre komplementi olan (1000 0001)2 says elde edildiinden artk ilem toplamaya dnm olacaktr. O halde kartmay toplamaya dntrdmze gre ilemin son halini tekrar yazalm. 1000 1100 + 1000 0001 1 0000 1101 Hex : 8C +81 1 0D
Binary:
Buradaki bata bulunan 1 Komplement aritmetii kullanld iin ihmal edilir. Bu 1 aslnda karlann kandan byk olduunu da gstermektedir. Ve kartma ileminin sonucu (0000 1101)2 = (0D)16 olarak elde edilmi olur.
Negatif Saylar: aret biti ve saynn mutlak deerinin tabana gre komplementi ile temsil edilirler. (+25)10 = (0.001 1001)2 = (19)16 olduunu yukarda bulmutuk. (+25)10 saysnn tabana gre komplementi (-25) 'tir , ve daha nce verildii gibi bunu yle elde ederiz : nce (0.001 1001) saysnn dualini alalm...(Yani, sayda 0 yerine 1 ; 1 yerine 0 yazalm.) Karmza kan bu say (taban-1) e gre komplement olan (1.110 0110) olacaktr . Bu sayy bir arttrdmzda tabana gre komplementini buluruz : (1.110 0111)
te bu (1.110 0111)2 says (-25)10 saysna karlk geliyor (1.) ile balad iin de negatiftir. Burada bataki bitten (1) sonra konan nokta saylar iaretli olarak dndmz (yorumladmz) ifade ediyor. Yoksa mikroilemcide iaretli iaretsiz say fark YOKTUR. Mikroilemcinin hafzasnda bu say artk (1.110 0111)2 = ( - 25)10 = (E7)16 eklinde temsil edilecektir.
0.011 1100 +0.100 0110 1.000 0010 sonucu elde edilir. Dikkat edilirse sonu negatif ( ! ) gzkmektedir. Halbuki matematikte iki pozitif saynn toplam daima pozitiftir. Bu durumda iaretli saylar gzyle yaplan bu toplama ileminin sonucunda iaretin, dolaysyla neticenin hatal olarak elde edildii grlmektedir. O halde iaretli ilemlerde dikkatli olunmaldr.
3)
nce (+60) = (0.011 1100)2 ve (+70) = (0.011 1100) 2 olduunu nceki rnekten biliyoruz. Bu iki saynn negatiflerini bulmak iin Taban`a gre komplementini alalm: 1.100 0100 = (C4)16 = (-60)10 , 1.011 1010 = (BA)16 = (-70 )10
deerlerini buluruz.
Bu saylar yukardaki gibi toplarsak( - 130) deerini yani gerek sonucu bulamayacaz, yine sonucun hatal olduunu greceiz . O HALDE : NEML SONU : aretli saylarla yaplan ilemlerde sonu (128)10 = (80)16 den kk ya da (+127)10 = (7F)16 den byk ise , bir baka ifade ile sadaki bitlerden iaret bitine bir etki gelmi ise sonucun iareti, dolaysyla kendisi hatal olacaktr. aretli ilemlerde netice ASLA (80)16 ve (7F)16 aralnn dna tamamaldr.
yukarda sz edilen ek elemanlar da iinde bulunduran mikrodenetleyiciler (mikrocontroller) tercih edilir. CPU ve evre Elemanlarn Basit Yaps :
MKRODENETLEYCLER (Microcontrollers)
Bir bilgisayar iinde bulunmas gereken Hafza , Giri/k nitesi gibi elemanlarn CPU ile birlikte tek bir entegre (chip) ierisinde retilmi haline Mikrodenetleyici denir. Bylece hem yer tasarrufu yaplp maliyet drlrken hem de tasarm kolaylatrlm ve programlama ilemi basitletirilmi olur. Gnmzde mikrodenetleyiciler otomobillerden kameralara , cep telefonlarndan oyuncaklara kadar saylamayacak alanlarda kullanlr. Mikrodenetleyiciler birok firma tarafndan retilmektedir. Microchip , Intel , Motorola , SGS Thomson, Hitachi gibi Her reticinin en az birka mikrodenetleyicisi vardr. Mesela ; Microchip 12C508 , 16C84 , 16F84 ve 16F877 gibi farkl mikrodenetleyicilere sahiptir ve hemen, hemen ayn komutlarla programlanrlar. Mikrodenetleyici adlarnda bulunan harfler ayn aile iinde farkl zelliklere sahip (hafza yaps ve miktar, hz gibi) elemanlar ifade eder. Bir uygulama yapmadan nce hangi firmann , hangi numaral mikrodenetleyicisinin kullanlaca tespit edilmelidir. Bunun iin KATALOG (Data sheet) ad verilen kaynaklardan ya da internetteki ilgili sitelerden faydalanlr. Bir Mikrodenetleyici inde Bulunabilen Baz zellikler unlardr : 1 ) Programlanabilir Dijital Giri / k ( I / O ) 2 ) Programlanabilir Analog Giri 3 ) Seri Giri / k ( I / O ) 4 ) Darbe( Pals ) PWM (Darbe genilik modulasyonu) iareti k 5 ) Harici hafza balanabilme 6 ) Dahili hafza seenekleri ( ROM , PROM, EPROM , EEPROM, Flash gibi ) 7) Kesme, Zamanlayc ve Sayc gibi zellikler.
MKRODENETLEYC SEM
Mikrodenetleyici seerken ncelikle uygulama ihtiyacmzn tamamn karlamasna sonra da fiyatna bakarz. Ayrca yazlm ( program ) desteinin/aralarnn ( derleyici, simulatr , emulatr v.s. ) bulunup bulunmadna dikkat ederiz. Piyasada - internette bol miktarda uygulama programlarnn bulunabilmesi de rnek olmas asndan faydaldr. Saylan zellikler gz nne alnrsa ( u an iin ) Microchip firmas tarafndan retilen ksaca PIC olarak ifade edilen mikrodenetleyicilerin kullanlmas olduka avantajl gzkmektedir. PIC ngilizcede evre niteleri Kontrol edici Arabirim anlam tayan kelimelerin ba harflerinden olumutur.
PIC Mikrodenetleyicilerin Dier Baz Avantajlar : 1 ) Destek Yazlmlar internetten cretsiz salanr. 2 ) ok yaygn ve ucuzdur. Hem profesyonel hem de amatr kullanma uygundur. 3) nternette ve kitap/dergilerde ok sayda rnek programlar vardr. 4) ok az ve basit birka elemanlarla ( diren , kondansatr ) donanmlar kurulabilir. 5 ) Komut says az ve basittir. 6 )Daha st seviye diller iin (PIC C, PicBasic gibi) Derleyicilere (compiler) sahiptir. PIC lerde zellikle az sayda ve basit komutlarla programlanma yaplmas,
PIC 16F84 ve PIC 16F877 Mikrodenetleyicileri : Laboratuarda incelenecek setlerde PIC16F877 bulunmasna ramen temel ve basit birok PIC in zelliklerini ieren PIC16F84 n incelenmesi balang iin daha yararl olacaktr. Her iki mikrodenetleyicisinde program hafzalar FLASH ( EEPROM ) hafzadr. Ve elektrik kesilse bile ilerinde yazlm program silinmemektedir. Yeni balayanlar ve aratrma yapanlar iin kolayca yazlp silinebilen zellie sahip olan Flash Hafzal PIC ler bu adan da byk kolaylk salamaktadr. Program hafzas EPROM olanlar da yazlp silinmekteyse de bu tiplerin iindeki program silmek iin zerinde bulunan penceresinden 10 -15 dakika UV (Ultra Viole) n uygulamak gerekir. PIC16F84 iin renilenler nemli oranda PIC 16 / 17 ailesinin tamam iin de geerlidir.
ASSEMBLER PROGRAMI
Biz programlarmz PIC16F84 ve 16F877 ye ait ve 35 komuttan oluan assembly programlama dili ile yazacaz. Basit bir metin editrnde (not defteri gibi) yazlacak olan bu program ( asm uzantl text dosyas ) PICin altrabilecei hale dntrlmelidir (derlenmelidir). Bu ilem PIC iin en basit olarak MPASM denilen bir Assembler program ile yaplmakta ve sonuta ( . hex ) uzantl ve icra edilebilir (Makine Dili) denilen dosya elde edilmektedir. Bu program artk PIC e yklenmeye(kaydedilmeye) hazrdr. MPASM programnn kullanl basit olan DOS versiyonlar da vardr. Eer derleme sonrasnda MPASM hata mesajlar vermise bunlarn ( . asm ) dosyas zerinde dzeltilmesi ve tekrar derlenmesi gerekir. MPLAB da benzer ii grmekle birlikte baz kullanl ilave zellikler iermektedir.
MPASM tarafndan derlenerek makine diline evrilmi hex uzantl dosyann PIC e yazlmas iin programlayc ile birlikte bir de yazlmna da ihtiya vardr. Her programlaycnn kendine has yazlm bulunmaktadr.
EPROM : Hafza hcrelerine uygun elektrik iaretleri ile (genellikle besleme geriliminin zerinde bir
gerilimde) kayt yaplr. Elektrik kesilse de program kalr. Silmek ve yenisini yazmak iin ultraviole (UV) nnn belirli bir sre penceresinden uygulanmas lazmdr. 2 tip olurlar:
10
Program hafzasnda sadece assembly komutlarnn heksadesimal (hex) karlklar saklanr ( PIC 16F84 iin 14 bit ). Yukardaki hafza haritasnda son adresin ( 1023 )10 olma sebebi ilk adresin sfrdan (0x000) balamasdr. lk adres (0x001)den balasayd son adres ( 1024 )10 olacakt. Ancak toplam adres ( 210 = 1024 ) adettir.
11
Register haritas programn almas esnasnda kullanlan deikenleri geici ya da enerji kesilene kadar saklamak iin kullandmz veri alanlardr. PIC 16F84 n RAM hafzas 2 sayfadan ( Bank, ksm ) meydana gelir: Bank 0 a ait adresler 0x00 0x4F , Bank 1 e ait adresler 0x80 0xCF adres aralndadr. Register haritasna baklrsa baz file registerleri her iki bankta ortak olduu grlr. Dolaysyla bu registerlere her iki bankta iken eriilebilir. PCL , STATUS , FSR gibi PIC16F84 iin Bank1 de 0x00 ile 0x0B aras zel fonksiyon registerlerine ayrlmtr. Benzer ekilde Bank2 iin 0x80 0x8B aras da yine zel fonksiyon registerlerine tahsis edilmitir. Ayrca 0x0C - 0x4F adres aral ile 0x8C - 0xCF adres aralndaki genel veri alanlar birbirlerinin kopyasdr.Yani, rnein 0x1B adresi ile 0x9B adresleri gerekte ayn verileri iermektedir (Ayna zellii). Bir baka ifadeyle burada otomatik kopyalama ilemi sz konusudur. Bu sebeple veriyi birine yazp dierinden okumak mmkndr. Bir Bank ( Bank 0 veya Bank 1 ) kullanabilmek iin o Banka gemek gerekir. Bu deitirme ilemi programlama srasnda incelenecektir. Baz sk kullanlan registerler (STATUS gibi) her iki bankta da bulunduundan bunlar iin bank deitirmek gereksizdir.
Bu ilemlerin hangi komutlarla ve nasl yaplaca tablo halinde verilen Assembly komutlar, zellikleri ve kullanm ile aa kavuacaktr.
12
CMOS olarak retilen ve Flash tipi hafzaya sahip PIC16F84 de CLK ( saat ) iareti kesilir ve tekrar uygulanrsa program kald yerden devam eder. VDD ( + ) , VSS ( - ) besleme ulardr. En ideal besleme +5V olup gerekte PIC, (+2V) .... (+6V) aras alr. Portlardan dar alnan akm yeterli deilse transistor veya rle kullanlr. Btn CMOS Lojik entegrelerde olduu gibi burada da kullanlmayan ular +5V (Lojik 1) a balanmaldr.
1) Sink Akm : ( + ) 5 volt beslemeden portun iine doru akan akmdr. Bu durumda porttan
ieri maksimum akacak akm 25 mA dir. Daha fazla aktlan akm PIC in bozulmasna sebep olabilir.
2 ) Source Akm : Portun iinden topraa akan akmdr. Bu durumda maksimum akacak
akm 20 mA dir.
13
kare dalga ( clock sinyali ) ile olur. OSC1 denilen 16 nolu PIC16F84 baca kare dalgann uyguland yerdir. Bacak yaps grnnde CLK IN olarak ifade edilmitir. Dardan buraya uygulanacak kare dalga OSC2/CLK OUT dan drde blnm olarak ( f / 4)dar alnabilir. PIC 16F84 de en ok kullanlan osilatrler unlardr : 1 ) RC Tipi ( Diren / Kondansatr ) 2 ) XT Tipi ( Kristal veya Seramik Rezonatr ) 3 ) HS Tipi ( Yksek Hzl Kristal / Seramik Rezonatr ) 4 ) LP Tipi ( Dk Frekansl Kristal ) Osilatr tipi komut olarak veya programlama esnasnda belirtilmelidir. Bu osilatr yaplarndan sk kullanlan ikisinin balants aada gsterilmitir. RC Tipi Balant :
XT Tipi Balant :
RESET(
) UCU VE DEVRES
Program herhangi bir nedenle kilitlenirse ya da program yeniden (batan) altrmak istersek dardan PIC i reset yapmamz gerekir. Aslnda PIC in iinde besleme gerilimi belirli bir seviyeye ulanca programn almasn salayan bir RESET devresi ( Power-onreset ) vardr. Ayrca PIC16F84 de yine RESET fonksiyonu gren 4 nolu bacakta ucu vardr. Master ( Ana ) Clear ( Silme ucu lojik resetleme gerekleir.. Yani, resetleme Balatma ) kelimelerinden oluturulmu ilemi iin bu girie nce ksa bir sre lojik 0 verilmeli daha sonra lojik 1 uygulayarak , programn enerji verildii andaki duruma (baa) dnp tekrar balamas salanmaldr. Bunun iin aadaki gibi bir Reset devresi kullanlabilir.
14
GR / IKI (I / O) PORTLARI:
PIC16F84 de RA ve RB olarak 13 adet dijital(saysal) port vardr: PIC deki bu portlardan lojik bilgi alnabilir ya da ieri lojik bilgi gnderilebilir. PIC16F84 de 5 adet ( RA0.RA4 ) A portu ( PORT A ) 8 adet ( RB0..RB7 ) B portu ( PORT B ) vardr. Bunlar bizim yazacamz program ile ister giri , ister k yaplabilir. RB0.RB7 ( B portunun 8 ucu birden ) istenirse ierden 50 K direnle ( pull-up direnci ) ( + ) beslemeye balanm gibi etki gsterir ( Giri iken geerli).
Bu 8 diren istenirse option register (opsiyon saklaycs) ile geerli klnr yada iptal edilebilir. Bunun programlamada nasl yaplaca ileri blmlerin konusudur. lk enerji verildii anda bu direnler devrede yoktur. A portuna ait 4. bit ( RA4 ) ucuna bir de TOCK1 yazlmtr. Bu nedenle 16F84 n harici timer / counter ( zamanlayc / sayc ) zellii de vardr. Yani isterse dardan gelen (uygulanan) darbenin sresi llebilir veya gelen darbeler saylabilir. Bunlar da bu dersin 2. dnemdeki ksmnda incelenebilecektir. NOT : RA4 ucu normal k portu yaplrken bu u ile ( + 5 volt) arasna bir 10K luk bir diren balanr. nk bu port ak kollektr ( open-collector ) biimindedir.
PIC ASSEMBLY DL
nce bir metin editrnde assembly dili kurallar ile yazlan komutlar ( hex ) kodlara evirmek (derlemek) iin en basit PIC assembler program olarak (MPASM) kullanlabilecei daha nce belirtilmiti. Assembly dili aslnda yaplacak ilerin srasyla , komutlar halinde yazlmasndan baka bir ey deildir. Komutlar ise ngilizce dilindeki karlklarnn ba harflerinin birlemesinden meydana gelir ve tablo halinde verilmitir. rn : CLRF PORTB komutu ile B portunun ierii temizlenmi (sfrlanm ) olmaktadr.
15
Program yazlmadan nce Ak Diyagram denilen ve anlalrl arttran hatta, gerekirse farkl mikrodenetleyicilere geii de kolaylatran bir gsterilimden faydalanlabilir. rnek olarak ; B portunun ( RB0.RB7 ) ularna ( 1F )16 yklemek isteyelim.
olur.
Yukardaki Ak Diyagram ve Programn yazl u an iin tam olarak anlalmasa da bu konuda bir fikir verecektir. nemli Not: Yukardaki Programda Program Hafzasnn nereden balayacan belirten ORG komutu yer almamtr. Bu komut bulunmad durumda Program 0x000 adresinden itibaren balanr. Ancak Laboratuarda bulunan PIC16F877 setinde programlama yaparken ORG 0x003 yazlarak programn bu adresten balamas salanmaldr. Zira bu setin PC ile haberlemesini ve programlanmasn salayan PLAB program 0x000 adresinden balam ve yazmaya kar korunmutur.
Assembly Dilinde Program Yazarken Dikkat Edilecek hususlar: 1 ) Noktal Virgl ( ; ) : Bir satrn bana (;) konursa o satr ( hex ) koda dntrlmez. Bu satr
sadece bilgi amaldr. Daha sonra program deitirir ya da gelitirirken hatrlamak istediklerimizi (;) den sonra yazabiliriz. 2 ) Program Blmleri : Assembly programnn da Balk , Atama , Program ve Sonu blmleri vardr. Editr nce sanal olarak 3 kolona blnr. Bunlar Etiket, Komut, Adres(ya da Data)
16
1)Etiket
Eer bu kolona yazarken saa / sola kayma yaplrsa derleme srasnda MPASM den uyar (warning) alnr. Oysa dzenli ( 3 kolona gre ) yazlm , noktal virgllerle (;) ile gerekli aklamalar yaplm programlar anlalr , kalc ve gelimelere ak olacaktr.
Etiketlerin zellikleri :
Birinci kolonda yer alan Etiketler PIC hafzasndaki bir adresin atand ve hatrlatmay kolaylatran kelimelerdir. Mesela ; 16F84 de PORT B nin 0x06 adresinde olduu belli olduuna gre (bknz. File Register tablosu) her sefer 0x06 y hatrlamak ve yazmaktan kurtulmak iin ( balangta bir kere ) PORTB EQU 0x06 komutu yazarak 0x06 yerine PORT B kullanmaya hak kazanrz. ( EQU eitleme demektir ).Ayrca tarafmzdan adres atanmayan etiketler de vardr. BASLA , DONGU gibi. rnek: GOTO DONGU ( DONGU ye git ) komutu etiketi DONGU olan satra ( komuta ) gitmeyi salar. Etiketleri kullanrken ; 1. kolona yazmaya , bir harfle balamaya , Trke karakter kullanmamaya (DNG deil DONGU), kk / byk harf duyarllna ( DONGU yerine baka yerde dongu yazlmaz ) dikkat edilmelidir.
17
rnekler :
MOVF 0x03 , 0 ; 0x03 adresinin ieriini W (Akmlatr ) nin iine kopyala.
18
MOVF PORTA , 0 ; PORTA nn ieriini W nin iine kopyala. MOVF STATUS , 0 ; STATUS registerini W nin iine kopyala.
rnekler :
BCF BCF 0x03 , 5 PORTB , UCBIT ; 0x03 adresindeki registerin 5. bitini sfr yap. ; PORTB nin 3. bitini 0 yap (UCBIT, UCBIT EQU 3 komutu ile programda nceden tanml ise).
rnekler :
MOVLW 0x2F ADDLW b00010111 4 ) Kontrol Komutlar : ; W registerine 2F yazar ( ykler ). ; O anda W registerinde bulunan sayya ( 1F )16 = ( 0001 0111 ) ekler.
rnekler :
GOTO DONGU ; Program artsz olarak DONGU etiketli satra gider. CALL GECIKME ; Program GECIKME etiketli alt programa gider. Alt program bitince RETURN veya benzeri bir komutla geri dnlr.
19
PORTB
EQU
* Notlarmzdaki programlarda biz genellikle h03 formatn tercih edeceiz. Binary ( ikili ) saylar iin : b0010 0101 eklinde yazlr. rn : ( 0010 1100 )2 saysn W (akmlatr) e yklemek iin ; MOVLW b0010 110 yazlabilir. Desimal saylar iin : Desimal saylar ise bana d harfi konup yine trnak iinde yazlr. d18 , d255 gibi. rn : ( 15 )10 saysn W ye yklemek iin ; MOVLW d15 yazlr. ASCII karakterler iin ; A yada % biimde kullanlmaldr. Genellikle RETLW komutu ile beraber kullanlr. Dorudan trnak iine alnr. rn : RETLW B RETLW X gibi
20
RP1 = 1 ( BANK 1 seilir ) PIC 16F84 e enerji verildiinde bu bit RP0 = 0 olduu iin BANK 0 seilmi olur. Herhangi bir registerin istenen bitini (0) yapmak iin BCF , (1) yapmak iin BSF komutu kullanlr. Burada STATUS un 5. bitini 0 yapalm. (Eer nceden atama komutu ile STATUS EQU 0x03 tanmlamas yaplmsa ). BCF STATUS , 5 ile RP0 = 0 yaplr. ( Eer atama yaplmamsa ). Ancak, BCF h03 , 5 yazarak RP0 = 0 yaplm olacaktr.
Ak Diyagram izimi :
Genellikle program yazmadan nce ak diyagram izmekte byk yarar vardr. Ak Diyagramlar programcnn ve daha sonra program gelitirecek bir bakasnn rahata anlayabilecei tarzda olmaldr. Asl olan budur. Aada ak diyagram iin kullanlan baz standart semboller verilmitir.
Kullanlan Semboller :
ok basit programlarda ak diyagramna gerek olmasa da biz burada bir rnek olarak izelim. Programc program yazarken rahata anlayaca ekilde ak diyagramn ayrntl ekilde vermelidir. Aada rnek programa ait ak diyagram ve program birlikte gsterilmitir. Her ak diyagram sembolnn yannda bir ya da daha fazla komut karl yazlmtr.
21
Ak diyagram her zaman bir tek komuta karlk gelmeyebilir. stenirse sembollerin iine gerekli komut dorudan yazlabilir. Btn mesele programcnn yada ilerde program gelitirecek kiinin ak diyagramn anlayabilmesidir. Programda kullanlan baz komutlar srasyla aklayalm: CLRF BSF MOVLW MOVWF BCF MOVLW MOVWF h06 h03,5 hFA h86 h03,5 h05 h06 ; 0x06 adresinde bulunan PORTB nin tm bitlerinin sfrlanmas ; 0x03de bulunan STATUS un 5.biti ( 1 ) yaplarak BANK1 e geilmesi ; W registerine ( FA )16 yklenmesi ; TRISB ye yaz.Ve PORTB nin 0. ve 2. bitlerin k, dierlerinin Giri yap. ; 0x03de bulunan STATUS un 5.biti ( 0 ) yaplarak BANK0 a geilmesi ; W ye ( 05 )16 yklenmesi ; ( 05 )16 saysnn PORTB ye yazlarak 0. ve 2. bitlerin ( 1 ) yaplmas
22
Burada komutlarn ngilizce karllarna ina olunursa komutlarn ne anlama geldii daha kolayca anlalacaktr. Mesel ; BSF STATUS,5 komutu ( Bit Set File (Reg) STATUS (bit) 5 [ Statusun 5. bitini 1 yap] ) demektir. Veya
MOVLW h05
komutunun da (Move Literal to W) hex (05) saysn W ye aktar olduu anlalr. Ve yukardaki rnek programn icrasndan sonra sonuta PORTB knda
elde edilecektir.
MPASM LE DERLEME :
Aslnda bilgisayar ekrannda tek bir pencereden ibaret olan MPASM denilen programda baz ayarlar ok nemli bir rol oynamaz. Ancak zellikle programda hata varsa veya deiiklikler yapmak istendiinde baz dosyalarn retilmesi faydal olacaktr. Bu nedenle ; Hata dosyas iin ( .ERR ) Programn toplu zeti iin ( .LIST ) = Error File = List File
Ayrca uyar ve hatalar birlikte almak iin Warning and Errors seeneini; Processor iin kullanacamz 16F84 tercihini seiniz. Hex dosyas format iin INHX8M i iaretleyiniz. Derlemek iin Browse ikonu ile ornek.asm yi bulunduu klasrde bulup Tamama tklamak yeterli olacaktr. Sonuta kan pencerede Assembly Successful mesaj alnrsa derlemenin baarl olduu ve artk hex dosyasnn programlayc kullanarak PIC 16F84 e yklenebilecei anlalr.
2.Sayfada ;
23
( ERRORS ve WARNING) = Hata ve Uyar says bulunur. *.ERR ( Hata ) Dosyas : Bu dosyada kullandmz editr ile alabilir. Programda komut yada etiket hatas varsa hatal satr numaras bu dosyada grlr. Mesela ; ornek.asm de 8. satrda bir hata yapm ve BSF Status,5 yerine BFS Status,5 yazm olalm. Bu durumda ; Error 122 C:\MPASM\ORNEK.ASM 8 : Illegal opcode ( STATUS ) ifadesi ile karlar. Bu hatann .LST dosyasnda da hatann yapld satrdan hemen sonra belirtilmesi programcya kolaylk salar.
24