Bu modl, mesleki ve teknik eitim okul/kurumlarnda uygulanan ereve retim Programlarnda yer alan yeterlikleri kazandrmaya ynelik olarak rencilere rehberlik etmek amacyla hazrlanm bireysel renme materyalidir. Mill Eitim Bakanlnca cretsiz olarak verilmitir. PARA LE SATILMAZ.
i
AIKLAMALAR ................................................................................................................... iii GR ....................................................................................................................................... 1 RENME FAALYET-1 ..................................................................................................... 2 1. MKRODENETLEYC PROGRAMI YAZMA ................................................................. 2 1.1. Ak Diyagram Oluturma ve Sembolleri ..................................................................... 2 1.2. Mikrodenetleyici Assembler Program ve Yazm Kurallar ......................................... 3 1.2.1. Noktal Virgl ........................................................................................................ 4 1.2.2. Balk ..................................................................................................................... 4 1.2.3. Sabitler ................................................................................................................... 8 1.2.4. Org Deyimi ............................................................................................................ 8 1.2.5. Girintiler ve Program Blmleri ............................................................................ 8 1.3. Mikrodenetleyici Komutlar ........................................................................................ 10 1.3.1. Byte Ynlendirmeli Komutlar ............................................................................. 11 1.3.2. Bit Ynlendirmeli Komutlar ................................................................................ 21 1.3.3. Sabit leyen Komutlar ........................................................................................ 23 1.3.4. Kontrol Komutlar ............................................................................................... 27 1.4. Say ve Karakterlerin Yazl ..................................................................................... 30 1.4.1. Heksadesimal Saylar........................................................................................... 30 1.4.2. Binary Saylar ...................................................................................................... 30 1.4.3. Desimal Saylar .................................................................................................... 31 1.4.4. ASCII Karakterler ................................................................................................ 31 1.5. Mikrodenetleyici in Gerekli Yazlmn Kullanm ................................................... 31 1.5.1. Programn Kurulmas........................................................................................... 32 1.5.2. Menlerin Tantlmas ......................................................................................... 34 1.5.3. Mikrodenetleyici ve Dier Donanmlarn Seilmesi ........................................... 34 1.6. Programlama Teknii .................................................................................................. 35 1.6.1. Bank Deitirme .................................................................................................. 36 1.6.2. Portlarn Giri ve k Olarak Ynlendirilmesi ................................................. 38 1.6.3. Her Adm in Ak Diyagram izme ................................................................ 38 1.6.4. Konfigrasyon Bitlerinin Yazlmas .................................................................... 39 1.6.5. W Kaytsnn Kullanm .................................................................................... 40 1.6.6. Bitleri Test Ederek lem Yapma ........................................................................ 41 1.6.7. Saya Kullanarak Dng Dzenlemek ................................................................ 42 1.6.8. Karlatrma Yaparak Dng Dzenlemek ........................................................ 43 1.6.9. Status Kayts .................................................................................................... 44 1.6.10. Zaman Geciktirme Dngleri ............................................................................ 46 1.6.11. Altprogramlar .................................................................................................... 51 1.6.12. Bit Kaydrma ..................................................................................................... 52 1.6.13. Mantksal lemler ............................................................................................. 55 1.6.14. Aritmetik lemler .............................................................................................. 58 1.6.15. evrim Tablolar ................................................................................................ 61 1.6.16. Kesmeler ............................................................................................................ 64 1.6.17. Donanm Sayclar ............................................................................................ 72 1.6.18. D/A ve A/D evirme ......................................................................................... 81 UYGULAMA FAALYET .............................................................................................. 90 LME VE DEERLENDRME .................................................................................... 92 NDEKLER
ii RENME FAALYET-2 ................................................................................................... 94 2. MKRODENETLEYC KONTROL PROGRAMININ MAKNE DLNE EVRLMES ................................................................................................................................................ 94 2.1. Programn Derlenmesi ................................................................................................ 94 2.1.1. Derleme leminin Yaplmas .............................................................................. 94 2.1.2. Derleme Sonucu Elde Edilen Dosyalar ............................................................... 96 UYGULAMA FAALYET ............................................................................................ 103 LME VE DEERLENDRME .................................................................................. 104 MODL DEERLENDRME ............................................................................................ 106 CEVAP ANAHTARLARI ................................................................................................... 108 KAYNAKA ....................................................................................................................... 109
iii AIKLAMALAR KOD 523EO0020 ALAN Elektrik-Elektronik Teknolojisi DAL/MESLEK Otomasyon Sistemleri MODLN ADI Mikrodenetleyici Programlama MODLN TANIMI Mikrodenetleyici programnn yazlmas ve derlenmesi ile ilgili bilgi ve becerilerin kazandrld renme materyalidir. SRE 40/32 N KOUL Mikroilemci ve Mikrodenetleyiciler modln tamamlam olmak. YETERLK Mikrodenetleyiciyi programlamak MODLN AMACI Genel Ama Bu modl ile eitim retim ortamlar ve donannmlarnda belirtilen ortam salandnda, yaplacak ileme gre gerekli teknikleri kullanarak mikrodenetleyici programn hatasz yapabileceksiniz. Amalar 1. Kurulacak devre iin mikrodenetleyici programlama yazlmn eksiksiz olarak kullanabileceksiniz. 2. Yaplan mikrodenetleyici programn makine (heksadesimal kodlara) diline hatasz olarak evirebileceksiniz. ETM RETM ORTAMLARI VE DONANIMLARI Ortam: Atlye Donanm: Mikrodenetleyici programlama kart, mikrodenetleyici programlama kart yazlm, mikrodenetleyici uygulama kart, bilgisayar , avometre, aktif ve pasif devre elemanlar, lehimleme malzemeleri, dier faydal el ve g aralar donanmlar LME VE DEERLENDRME Modl iinde yer alan her renme faaliyetinden sonra verilen lme aralar ile kendinizi deerlendireceksiniz. retmen modl sonunda lme arac (oktan semeli test, doru-yanl testi, boluk doldurma, eletirme vb.) kullanarak modl uygulamalar ile kazandnz bilgi ve becerileri lerek sizi deerlendirecektir.
AIKLAMALAR
1 GR
Sevgili renci,
Mikrodenetleyiciler gnlk hayatta kullandmz pek ok cihaz ierisine girmi durumdadr. yle ki mikrodenetleyicileri otomobillerde, cep telefonlarnda, kameralarda, faks-modem cihazlarnda, fotokopi, radyo, TV ve baz oyuncaklar gibi saylamayacak kadar pek ok alanda kullanmn grmek mmkndr. Mikrodenetleyici kullanmnn bu kadar yaygn olmasnn nemli nedenleri vardr. Daha nce mikroilemci kullanm gereken yerlerde, ayrca hafza niteleri (RAM, ROM) ve giri/k arabirim devrelerine (I/O) ihtiya duyuluyordu. Bu da sistemin maaliyetini ykselmesi , devrenin karmak olmas ve fazla yer kaplamas, programlamann zorluu gibi problemler oluturuyordu. Fakat mikrodenetleyicilerle bu sorunlar ortadan kaldrld. nk fiyatlar son derece makul olan bu entegreler, ayrca hafza niteleri (RAM, ROM) ve giri/k arabirim devrelerine (I/O) ihtiya duyulmadan istenilen tasarmn yaplabilmesine imkn tanmaktadr. Bununla beraber programlanmas da olduka kolay ve programlama dili olan assembly iin de bir bedel gerekmemektedir. Ayrca flash bellekleri sayesinde bir denetleyicinin onlarca defa programlanabilip silinebilmesine imkn tanr. te bu gibi zelliklerinden dolay mikrodenetleyiciler pek ok alanda mikro ilemcilerin yerini almtr. Gnmzde birok firma mikrodenetleyici retmekte ve bunlar donanm tasarmclarnn kullanmna sunmaktadr. Biz, bundan nceki modldeki olduu gibi bu modlde de chip(ip) firmasnn rettii mikrodenetleyicileri anlatacaz. Konular genelde ilgili firmann rettii PIC16F84 mikrodenetleyicisi zerinden ilenecektir. Bu ekilde, modl sonunda artk siz de bir mikrodenetleyiciyi tanm ve amaca gre programnn yazabilme seviyesine km olacaksnz.
GR
2
RENME FAALYET-1
Uygun ortam salandnda kurulacak devre iin mikrodenetleyici programn eksiksiz olarak yapabileceksiniz.
Aratrma ilemleri iin internet ortam ve mesleki kitaplarn bulunduu ktphaneler ile bu sektr zerinde alan teknik elemanlardan faydalanabilirsiniz.
1. MKRODENETLEYC PROGRAMI YAZMA
Assembly dili bir mikrodenetleyiciden (Bundan sonra sadece denetleyici veya PIC olarak bahsedilecek.) beklenen veya denetleyicinin yapmas istenen ilemlerin belirli kurallara uygun olarak yazlm komutlar dizisidir. Assembly komutlar ngilizcedeki manalarnn ksaltmalarndan meydana gelmektedir. Bu komutlar genellikle bir komutun yapt ii ifade eden ngilizce szcklerin ba harflerinden meydana gelmektedir. rnein, BTFSC Bit Test F Skip if Clear [File kaytdaki (kaydedici) biti test et] vb.
1.1. Ak Diyagram Oluturma ve Sembolleri
Assembler ile bir program yazmadan evvel, denetleyicinin hangi admlarla program ileyeceini planlamamz gerekmektedir. Bu planlama ilemi ak diyagramlar ile yaplr. Ak diyagram ilenecek komutlarn srasdr. Uzun ve karmak programlarda, ak diyagramlar, hangi seviyeden programn ayrlacan ve hangi komutlar yerine getireceini, sonra tekrar nereye dneceini gstermesi sebebiyle faydaldr. Ak diyagramlarnn kendine has sembolleri de vardr. ekil 1.1de ak diyagram sembolleri grlmektedir. RENME FAALYET-1
ARATIRMA AMA
3
ekil 1.1: Ak diyagram sembolleri 1.2. Mikrodenetleyici Assembler Program ve Yazm Kurallar
PIC assembly programlarnn yazlabilmesi iin kullanlan metin editrlerinden Windows altnda alan NOTPAD veya dos altnda alan EDIT en uygun olanlarndan birka tanesidir. Bunun dnda printer kontrol komutlar iermeyen ve ASCII kodunda dosya retebilen herhangi bir editr de kullanlabilir. MPLAB kullanldnda ayrca editr kullanmaya gerek yoktur. nk MPLABn iinde hem bir text editr hem de MPASM bulunmaktadr.
Bunun dnda PIC mikrodenetleyicisi iin program yazmann baka yollar da vardr. Pic Basic Pro, C diliyle yazlm program PIC iin derleyici programlar veya PLC mantyla grsel olarak PIC programlayclar (PICBIT) ile de PIC denetleyicileri iin program yazlabilir. Fakat bu programlar da arka planda kendi ASM uzantl ktklerini kullanr. Bu yzden btn bu programlara da temel tekil eden assembly dili kullanlacaktr.
MPASM assembler programnn yazlan komutlar doru olarak alglayp PICin anlayabilecei heksadesimal kodlara dntrlmesi, u bilgilerin program ierisinde zel formatta yazlmas gerekir:
Komutlarn hangi PIC iin yazld Programlarn bellekteki hangi adresten balayaca Komutlarn ve etiketlerin neler olduu Programn biti yeri
4 1.2.1. Noktal Virgl
Ba tarafna (;) konulan satr, assembler tarafndan heksadesimal kodlara dntrlemez. Bu satrlar programn gelitirilmesi esnasnda hatrlatc aklamalarn yazlmasnda kullanlr. Aada rnekte CLRF ile balayan satrda portBnin iini sfrla cmlesi, CLRF komutunun ne i yaptn aklar. Programn blmlerini birbirinden ayrmak iin (------- veya = = = = ) izgileri kullanmak, program grsel olarak daha okunur hle getirdii gibi bu izgiler arasna uyarlar ve aklamalar da yazlabilir.
;==========bu satr derleyici tarafndan dikkate alnmaz.====== CLRF PORTB ; portBnin iini sfrla. ;==========bu satr da derleyici tarafndan dikkate alnmaz.=====
Balk blmnde program dosyasnn ad ve hazrland tarih, istenirse hazrlayann ad ya da farkl bir ad yazlabilir. lk satr, bir aklama satrdr ve assembler tarafndan derlenmez.
LIST P=16F84 satr, programn hangi PIC iin yazldn belirtir. LIST bir derleyici bildirisidir. Yani derleyiciyi ynlendiren bir komuttur ve yegane kullan amac ve yeri burasdr.
Balk blmnde INCLUDE komutu da kullanlabilir. Bir program yazlrken tm kaytlar tek tek tanmlamak olduka zordur. Bu yzden include dosyas denilen bu tanmlarn iinde bulunduu ve assembler tarafndan tannan bir dosya kullanlr. Assembler tarafndan tannmas iin program giriinde tanmlanr.
rnein, PORTB, STATUS ve TRISB kaytlarn kullanan bir program yazld varsaylsn. Eer programnzn balk ksmnda
INCLUDE P16F84.INC
eklinde bir ifade kullanlrsa programda kaytlar kullanc tantmak zorunda kalmaz. Aksi hlde aadaki gibi bellek adresleri tantlmaldr. PORTB EQU h06 STATUS h03 TRISB h86
5 Aada PIC16F84 mikrodenetleyicisi iin bu rn reten tarafndan hazrlanm INC dosyas grlyor. Burada kaytlarn bellek adreslerinin ve kayt bitlerinin tek tek tanmlandna dikkat edilmelidir.
LIST ; P16F84.INC Standard Header File, Version 2.00 Microchip Technology, Inc.
NOLIST
; This header file defines configurations, registers, and other useful bits of
; information for the PIC16F84 microcontroller. These names are taken to match
; the data sheets as closely as possible.
; Note that the processor must be selected before this file is
; included. The processor may be selected the following ways:
; 1. Command line switch: ; C:\ MPASM MYFILE.ASM /PIC16F84 ; 2. LIST directive in the source file ; LIST P=PIC16F84 ; 3. Processor Type entry in the MPASM full-screen interface
;================================================================= ========= ; ; Revision History ; ;================================================================= =========
;Rev: Date: Reason:
;2.00 07/24/96 Renamed to reflect the name change to PIC16F84. ;1.01 05/17/96 Corrected BADRAM map ;1.00 10/31/95 Initial Release
PIC assembly dilinde heksadesimal saylar birer sabittir. Sabitler MOVLW ve baz mantksal ve aritmetik ilem komutlarnda kullanlr.
Etiket Komut START MOVLW 0 X 02 Sabit
1.2.4. Org Deyimi
Org ngilizcedeki origin kelimesinden gelmektedir. Org deyimi iki ama iin kullanlr: Program komutlarnn hangi adresten itibaren baladn ve PICin kesme alt programnn balang adresini gstermek iin kullanlr.
ORG 0 x 000 ; ilk program komutunun bellek adresi
ORG 0 x 004 ; h004 adresi, PIC16F84 denetleyicisinin kesme alt programnn balang adresi
1.2.5. Girintiler ve Program Blmleri
Metin editrlerinde birbirinden farkl uzunlukta girintiler veren TAB zellii vardr. Bu zellikten yararlanarak assembly komutlar kolona blnerek yazlr. Bir assembly program temel olarak drt blme ayrlr. Bunlar: Balk, atama, program ve sonu blmleridir.
9
ekil 1.2: Girintiler ve program blmlerinin grn Assembler, yukarda ekil 1.2de belirtildii gibi komutlarn kolona blnerek yazlm olduunu varsayar. Belirtilen kolona yazlmayan bir komut olduunda ise bunu da kabul eder. Ancak, heksadesimal kodlara dntrme esnasnda bu tip hatalar bir uyar olarak belirtir. Assembly komutlar yazlrken kolonlar arasnda verilen TABlarn uzunluu nemli deildir. Boluk tuu ile verilen aralk da assembler tarafndan TAB olarak alglanr. PICe yaptrlacak herhangi bir ilem iin zellikle uzun ve zor programlar yazmaya baladktan sonra yaplacak aklamalar, blmlere ayrlm programlarn daha kullanl olduu grlr. nk programlar bu ekilde yazldnda daha sonraki gelitirmelere aktr. Aradan zaman gese bile bir program gelitirmek iin tekrar ele aldnda, program ierisine yazlan aklamalar ihtiya olan hatrlatmalar yapacaktr.
1.2.5.1. Balk Blou
Programnn bandaki bilgilere balk blm denilir. Bu blm daha nce balk konusunda anlatlmtr.
10 1.2.5.2. Atama Blou
EQU deyimi PICin belleindeki bir heksadesimal adresi belirlenen bir etikete atamak iin kullanlr. Aada atama deyimine bir rnek gsterilmitir.
Etiket Atama deyimi
PORTB EQU 0 X 06 Heksadesimal adres Heksadesimal sayy ifade eder.
1.2.5.3. Program Blou
Programcnn asembly komutlar kullanarak ii yaptracak program yazd, iinde altprogramlarnda bulunabilecei ana blmdr. Modl iindeki programlar incelenerek program blou bulunabilir.
1.2.5.4. Sonlandrma Blou
PIC 16F84n duraklama (halt) komutu yoktur. Program belirli bir yerde duraklatmak iin bazen sonsuz dng kullanlr.
DONGU GOTO DONGU END
Yukardaki sonsuz dngde DONGU etiketine assembler otomatik olarak bir adres verir. GOTO DONGU komutu ise program akn devaml olarak ayn adrese gnderir. Bu durumda program belirlenen adreste duraklatlm olur.
END deyimi ise program komutlarnn sona erdiini assemblere bildirir. Her program sonunda END deyimi muhakkak kullanlmaldr. Aksi hlde program devam ederken dosya sonunun belirtilmediini gsteren bir hata mesaj verecektir.
1.3. Mikrodenetleyici Komutlar
PIC16F84 denetleyicisinin toplam 35 tane komutu vardr. Dier PIC serisinin baka komutlarda olmasna ramen bu 35 komut temel tekil ettii iin bu komutlar gsterilecektir. Bu komutlarn yazl biimi drt grupta toplanabilir .
Byte-ynlendirmeli komutlar Bit-ynlendirmeli komutlar Sabit ileyen komutlar Kontrol komutlar
f = Dosya kayts (kaydedicisi) (File Register) d = Gnderilen yer (destination) iki durum sz konusudur ; d=0 ..Hedef W kaytsdr. d=1 ..Hedef dosya (F) kaytsdr . k = Sabit veya adres etiketi b = Bit tanmlayc b = Binary saylar belirleyen harf (rnein b00001111 gibi) d = Desimal saylar belirleyen harf (rnein d 16 gibi) h = Hexadesimal saylar belirleyen harf (rnein h 0A gibi)
1.3.1. Byte Ynlendirmeli Komutlar
Bu grup komutlarda hedef kayt W veya bir dosya kayts (f) olabilir. Kaytlar aras veri transferleri ve ilemleri bu komutlarla gerekleir. Bu komutlar:
ADDWF W ve f kaytlarn topla. Dizim: [etiket] ADDWF f,d Operandlar: 0f127 d[0,1] lem: (W)+(f) (hedef) Etkilenen bayraklar: C,DC,Z Kodlama: 00 0111 dfff ffff MSB tarafndaki 5 bit komut kodu , d biti hedef biti , f ile belirtilen LSB tarafndaki 5 bit ise dosya adresini (f kayt adresi) tanmlar. Tanm: W kaytsnn ieriini f kaytsna ekler. Eer d=0 ise sonu W kaytsnn ierisinde depolanr. d=1 ise sonu f kaytsnn ierisinde geri saklanr. Hafza alan (Bayt):1 Saat pals:1
rnek: ADDWF FSR, 0
Komuttan nce; W = h17 FSR= hC2 olsun. Komuttan sonra d=0 olduundan sonucun W de olduuna dikkat ediniz. W = hD9 FSR= hC2 olur.
12
ANDWF Wyi f ile mantksal ANDle. Dizim: [etiket] ANDWF f,d Operandlar: 0f127 d[0,1] lem: (W).AND.(f) (hedef) Etkilenen bayraklar: Z Kodlama: 00 0101 dfff ffff MSB tarafndaki 5 bit komut kodu , d biti hedef biti , f ile belirtilen LSB tarafndaki 5 bit ise dosya adresini (f kayt adresi) tanmlar. Tanm:W kaytsn f kayts ile mantksal ANDler. AND mantnda girilerden birinin 0 olmas sonucu 0 yapacaktr.Sonucun 1 olmas iin tm girilerin 1 olmas gerekir. Eer d=0 ise sonu W kayts iinde saklanr. Eer d=1 ise sonu f kayts iinde geri saklanr. Hafza alan (Bayt):1 Saat pals:1
rnek: ANDWF FSR, 1
Komuttan nce W = h17 FSR= hC2 olsun. Komuttan sonra h17=b0001 0111 AND hC2=b1100 0010 b 0000 0010=h02 ve ; d=1 olduundan sonucun f (burada FSR ) de olduuna dikkat edilir. W = h17 FSR= h02
CLRF F kaytsn sil. ( Clear f ) Dizim: [etiket] CLRF f Operandlar: 0f127 lem: 00h (f) 1 Z Etkilenen bayraklar: Z Kodlama: 00 0001 1fff ffff MSB tarafndaki 5 bit komut kodu , d biti hedef biti , f ile belirtilen LSB tarafndaki 5 bit ise dosya adresini (f kayt adresi) tanmlar. Tanm:f kaytsnn ierii silinir ve Z biti kurulur. Hafza alan (Bayt):1 Saat pals:1
rnek: CLRF SAY
Komuttan nce SAY = h5A Komuttan sonra
13 SAY = h00 Z = 1
CLRW W Kaytsn Sil. Dizim: [etiket] CLRW Operandlar: Yok lem: 00h (W) 1 Z Etkilenen bayraklar: Z Kodlama: 00 0001 0000 0011 MSB tarafndaki 5 bit komut kodu , d biti hedef biti , f ile belirtilen LSB tarafndaki 5 bit ise dosya adresini (f kayt adresi) tanmlar. Tanm:W kayts silinir. Z biti set edilir. Hafza alan (Bayt):1 Saat pals:1
rnek: CLRW
Komuttan nce W = h5A Komuttan sonra W = h00 Z = 1
COMF F kaytsn tmle ( tersini al ). Dizim: [etiket] COMF f,d Operandlar: 0f127 d[0,1]
lem: (f) (hedef) Etkilenen bayraklar: Z Kodlama: 00 1001 dfff ffff MSB tarafndaki 5 bit komut kodu , d biti hedef biti , f ile belirtilen LSB tarafndaki 5 bit ise dosya adresini (f kayt adresi) tanmlar. Tanm:F kaytsnn ierii tmlenmitir. Eer d=0 ise sonu W kaytsnn ierisinde depolanr, d=1 ise sonu f kaytsnn ierisinde geri saklanr. Hafza alan (Bayt):1 Saat pals:1
rnek: COMF test, 0
Komuttan nce test = h13 olsun. Komuttan sonra d=0 olduundan sonucun Wde olduuna dikkat edilmelidir. test = h13=b0001 0011
14 terslenirse b1110 1100=hEC ve test = h13 W= hEC olur.
DECF f kaytsnn deerini 1 azalt. Dizim: [etiket] DECF f,d Operandlar: 0f127 d[0,1] lem: (f) 1 (hedef) Etkilenen bayraklar: Z Kodlama: 00 0011 dfff ffff MSB tarafndaki 5 bit komut kodu , d biti hedef biti , f ile belirtilen LSB tarafndaki 5 bit ise dosya adresini (f kayt adresi) tanmlar. Tanm: f kaytsnn deerini 1 azaltr. Eer d=0 ise sonu W kaytsnn ierisinde depolanr, d=1 ise sonu f kaytsnn ierisinde geri saklanr. Hafza alan (Bayt):1 Saat pals:1
rnek: DECF SAY, 1
Komuttan nce SAY = h01 Z = 0 olsun. Komuttan sonra d=1 olduundan sonucun f (burada SAY) de olduuna dikkat edilmelidir. SAY = h00 Z = 1
DECFSZ f kaytsnn deerini 1 azalt , sonu 0 ise bir sonraki komuta atla. Dizim: [etiket] DECFSZ f,d Operandlar: 0f127 d[0,1] lem: (f)1 (hedef); sonu=0 ise atla Etkilenen bayraklar: Yok Kodlama: 00 1011 dfff ffff MSB tarafndaki 5 bit komut kodu , d biti hedef biti , f ile belirtilen LSB tarafndaki 5 bit ise dosya adresini (f kayt adresi) tanmlar. Tanm: f kaytsnn ierii 1 azaltlr. Ayn zamanda sorgulama yapar. Kayt ierii 0 olursa program bir sonraki komuta atlar, deilse alttaki komut ilenir. Eer d=0 ise sonu W kaytsnn ierisinde depolanr, d=1 ise sonu f kaytsnn ierisinde geri saklanr. Hafza alan (Bayt): 1 Saat pals: 1(2) Sonu 0sa 2 saat pals , deilse 1 saat pals alr.Yani atlama olmad durumda uygulanmas 1, atlama durumunda 2 saat pals alr.
15
rnek: DON DECFSZ CNT,1 GOTO LOOP DEVAM programn devam
Komuttan nce PC = Adres DON Komuttan sonra CNT= CNT-1 Eer CNT= 0 PC= {Adres DEVAM} Eer CNT0, PC={Adres DON+1} yani GOTO komutunun olduu satr ilenir.
INCF f kaytsnn deerini 1 artr. Dizim: [etiket] INCF f,d Operandlar: 0f127 d[0,1] lem: (f) + 1 (hedef) Etkilenen bayraklar: Z Kodlama: 00 1010 dfff ffff MSB tarafndaki 5 bit komut kodu, d biti hedef biti, f ile belirtilen LSB tarafndaki 5 bit ise dosya adresini (f kayt adresi) tanmlar. Tanm: f kaytsnn deerini 1 artrr. Eer d=0 ise sonu W kaytsnn ierisinde depolanr. d=1 ise,sonu f kaytsnn ierisinde geri saklanr. Hafza alan (Bayt): 1 Saat pals: 1
rnek: INCF CNT,1
Komuttan nce CNT= hFF Z =0 Komuttan sonra d=1 olduundan sonucun f (burada CNT) de olduuna dikkat ediniz. Ayrca FF+1=00 olacana da dikkat edilmelidir. CNT= h00 Z= 1
INCFSZ f kaytsnn deerini 1 artr, sonu 0 ise bir sonraki komuta atla. Dizim: [etiket] INCFSZ f,d Operandlar: 0f127 d[0,1] lem: (f)+1(hedef),sonu=0 ise atla Etkilenen bayraklar: Yok Kodlama: 00 1111 dfff ffff
16 MSB tarafndaki 5 bit komut kodu , d biti hedef biti , f ile belirtilen LSB tarafndaki 5 bit ise dosya adresini (f kayt adresi) tanmlar. Tanm: f kaytsnn ierii 1 arttrlr. Ayn zamanda sorgulama yapar. Kayt ierii 0 olursa program bir sonraki komuta atlar, deilse alttaki komut ilenir. Eer d=0 ise sonu W kaytsnn ierisinde depolanr, d=1 ise sonu f kaytsnn ierisinde geri saklanr. Hafza alan (Bayt):1 Saat pals:1(2)
Sonu 0sa 2 saat pals, deilse 1 saat pals alr. Yani atlama olmad durumda uygulanmas 1 , atlama durumunda 2 saat pals alr.
rnek: DON DECFSZ CNT,1 GOTO LOOP DEVAM programn devam
Komuttan nce PC = Adres DON Komuttan sonra CNT = CNT+1 Eer CNT= 0 ise PC= {Adres DEVAM} Eer CNT0 ise PC={Adres DON+1} Yani GOTO komutunun bulunduu satr ileme sokulur.
IORWF f ile W kaytlarn mantksal OR ilemine tabi tut. Dizim: [etiket] IORWF f,d Operandlar: 0f127 d[0,1] lem: (W).OR.(f) (W) Etkilenen bayraklar:Z Kodlama: 00 0100 dfff ffff MSB tarafndaki 5 bit komut kodu , d biti hedef biti , f ile belirtilen LSB tarafndaki 5 bit ise dosya adresini (f kayt adresi) tanmlar. Tanm: f ile W kaytlarn mantksal OR ilemine tabi tutar. OR mantnda girilerden birinin 1 olmas sonucu 1 yapacaktr. Sonucun 0 olmas iin tm girilerin 0 olmas gerekir. Eer d=0 ise sonu W kaytsnn ierisinde depolanr, d=1 ise sonu f kaytsnn ierisinde geri saklanr. Hafza alan (Bayt):1 Saat pals:1
rnek: IORWF RESULT, 0 Komuttan nce RESULT = h13 W = h91 Komuttan sonra d=0 olduundan sonucun Wde olduuna dikkat edilmelidir.
17 h13=b0001 0011 OR h93=b1001 0011 b 1001 0011=h93 ve ; RESULT = h13 W = h93 olur.
MOVF F kayt ieriini hedefe ta. Dizim: [etiket] MOVF f,d Operandlar: 0f127 d[0,1] lem: (f) (hedef) Etkilenen bayraklar: Z Kodlama: 00 1000 dfff ffff MSB tarafndaki 5 bit komut kodu, d biti hedef biti, f ile belirtilen LSB tarafndaki 5 bit ise dosya adresini (f kayt adresi) tanmlar. Tanm: F kayt ieriini belirtilen hedefe tanr. Eer d=0 ise f ierii W kaytsna tanr. d=1 ise f ierii f kaytsna tanr. d=1 durumu, status kaytsnda Z bayran etkileyeceinden dolay, bir file kaytsnn ieriinin 0 olup olmadnn testinde kullanlabilir. Hafza alan (Bayt): 1 Saat pals: 1
rnek: MOVF FSR, 0
Komuttan sonra; d=0 olduundan sonucun Wde olduuna dikkat edilmelidir. W=FSR olur.
MOVWF Wnin ieriini f kaytna ta. Dizim: [etiket] MOVWF f Operandlar: 0f127 lem: (W) (f) Etkilenen bayraklar: Yok. Kodlama: 00 0000 1fff ffff MSB tarafndaki 5 bit komut kodu, f ile belirtilen LSB tarafndaki 5 bit ise dosya adresini (f kayt adresi) tanmlar. Tanm:W kaytsnn ierii f kaytsna tanr. Hafza alan (Bayt): 1 Saat pals: 1
rnek: MOVWF OPTION
Komuttan nce OPTION = hFF W = h4F Komuttan sonra Bu komutta hedefin (d) belirtilmediine dikkat edilmelidir. OPTION = h4F W = h4F
18 NOP lem yok. Dizim: [etiket] NOP Operandlar: Yok lem: Yok Etkilenen bayraklar: Yok Kodlama: 00 0000 0xx0 0000 Tanm: 1 saat pals zaman gecikmesi salar. Hafza alan (Bayt): 1 Saat pals: 1
rnek: NOP 1 saat pals zaman gecikmesi salar.
RLF f kaytsn elde biti (Carry) araclyla sola dndr. Dizim: [etiket] RLF f,d Operandlar: 0f127 d [0,1] lem: Aadaki tanma baknz. Etkilenen bayraklar: C Kodlama: 00 1101 dfff ffff MSB tarafndaki 5 bit komut kodu, d biti hedef biti f ile belirtilen LSB tarafndaki 5 bit ise dosya adresini (f kayt adresi) tanmlar. Tanm: f kaytsnn ierii elde biti (C) iinden bir bit sola dndrlr. C biti f kaytsnn MSB bitini tar. Eer d=0 ise sonu W kaytsnn ierisine yerletirilir. Eer d=1 ise sonu f kaytsnn ierisinde geri depolanr.
Hafza alan (Bayt): 1 Saat pals: 1 rnek: RLF REG1,0 Komuttan nce REG1 = b1110 0110 C = 0 Komuttan sonra REG1 = b1110 0110 W = b1100 1100 C = 1 olur.
RRF f kaytsn elde biti (Carry) araclyla saa dndr. Dizim: [etiket] RRF f,d Operandlar: 0f127 d [0,1] lem: Aadaki tanma baknz. Etkilenen bayraklar: C Kodlama: 00 1100 dfff ffff MSB tarafndaki 5 bit komut kodu , d biti hedef biti , f ile belirtilen LSB tarafndaki 5 bit ise dosya adresini (f kayt adresi) tanmlar. C F kayts
19 Tanm:f kaytsnn ierii elde biti (C) iinden bir bit saa dndrlr. C biti f kaytsnn LSB bitini tar. Eer d=0 ise sonu W kaytsnn ierisine yerletirilir. Eer d=1 ise sonu f kaytsnn ierisinde geri depolanr.
Hafza alan (Bayt): 1 Saat pals: 1 rnek: RRF REG1,0
Komuttan nce REG1 = b1110 0110 C = 0 Komuttan sonra REG1 = b1110 0110 W = b0111 0011 C = 0
SUBWF F kaytsndan W kaytsn kart. Dizim: [etiket] SUBWF f,d Operandlar: 0f127 d[0,1] lem: (f) (W) (hedef) Etkilenen bayraklar: C,DC,Z Kodlama: 00 0010 dfff ffff MSB tarafndaki 5 bit komut kodu, d biti hedef biti, f ile belirtilen LSB tarafndaki 5 bit ise dosya adresini (f kayt adresi) tanmlar. Tanm:W kayts f kaytsndan kartlr. d=1 ise sonu f kayts ierisinde geri saklanr. Hafza alan (Bayt):1 Saat pals:1
1.rnek: SUBWF REG1,1
Komuttan nce REG1 = 3 W = 2 C = ? Z = ? Komuttan sonra REG1 = 1 W = 2 C = 1, sonu pozitif Z = 0
C F kayts
20 2. rnek: Komuttan nce REG1 = 2 W = 2 C = ? Z = ? Komuttan sonra REG1 = 0 W = 2 C = 1,sonu sfr Z = 1
3. rnek: Komuttan nce REG1 = 1 W = 2 C = ? Z = ? Komuttan sonra REG1 = FF W = 2 C = 0,sonu negatif Z = 1
SWAPF fyi takas et Dizim: [etiket] SWAPF f,d Operandlar: 0k255 d[0,1] lem: (f<3:0>)(hedef<7:4>), (f<7:4>)(hedef<3:0>) Yani f kaytsnn LSB tarafndaki 4 biti (1.Dijiti) ile MSB tarafndaki 4 biti (2.dijiti) yer deitirir. Eer d=0 ise sonu W kaytsnn ierisine yerletirilir. Eer d=1 ise sonu f kaytsnn ierisinde geri depolanr. Etkilenen bayraklar: Yok. Kodlama: 00 1110 dfff ffff MSB tarafndaki 5 bit komut kodu , d biti hedef biti , f ile belirtilen LSB tarafndaki 5 bit ise dosya adresini (f kayt adresi) tanmlar. Tanm:f kaytsnn yksek ve alak baytlar dntrlr. d=0 ise sonu W kayts iine yerletirilir. Eer d=1 ise sonu f kayts iine yerletirilir. Hafza alan (Bayt): 1 Saat pals: 1
rnek: SWAP F ISIK, 0
Komuttan nce; ISIK = hA5 olsun . Komuttan sonra; ISIK = hA5 W = h5Aolur.
21 XORWF f ile Wnin ieriini mantksal EXORla. Dizim: [etiket] XORWF f,d Operandlar: 0k127 d[0,1] lem: (W) .XOR. (f) (hedef) Etkilenen bayraklar: Z Kodlama: 00 0110 dfff ffff MSB tarafndaki 5 bit komut kodu , d biti hedef biti , f ile belirtilen LSB tarafndaki 5 bit ise dosya adresini (f kayt adresi) tanmlar. Tanm:W kaytsnn ierii, f kayts ile mantksal EXORlanr. EXOR mantnda ayn bitlerde k 0, farkl bitlerde k 1 olur. Eer d=0 ise sonu W kayts iinde depolanr, d=1 ise sonu f kayts iine geri yerletirilir. Hafza alan (Bayt):1 Saat pals:1
rnek: XORWF REG , 1
Komuttan nce REG = hAF W = hB5 Komuttan sonra hAF= b1010 1111 EXOR hB5= b1011 0101 b 0001 1010=h1A ve ; REG = h1A W = hB5
1.3.2. Bit Ynlendirmeli Komutlar
Bit ynlendirmeli komutlarda dikkat edilirse hedef (d) belirtilmemitir. Sonu her zaman f kaytsnn iersindedir.
BCF F kaytsnn belirtilen bitini sfrla. Dizim: [etiket] BCF f,b Operandlar: 0f127 lem: 0 (f<b>) Etkilenen bayraklar: Yok Kodlama: 01 00bb bfff ffff MSB tarafndaki 4 bit komut kodu (opcode), 3 tane b biti hedef biti belirler, f ile belirtilen LSB tarafndaki 7 bit ise dosya adresini (f kayt adresi) tanmlar. Tanm:f iindeki b. biti silinir. Hafza alan (Bayt): 1 Saat pals: 1
22
rnek: BCF TEST,7
Komuttan nce TEST = hC7 olsun.
Komuttan sonra hC7=b 1100 0111
0 olur ve; TEST = h47 olur.
BSF F kaytsnn belirtilen bitini kur (birle). Dizim: [etiket] BSF f,b Operandlar: 0f127 0b7 lem: 1 (f<b>) Etkilenen bayraklar: Yok Kodlama: 01 01bb bfff ffff MSB tarafndaki 4 bit komut kodu (opcode), 3 tane b biti hedef biti belirler, f ile belirtilen LSB tarafndaki 7 bit ise dosya adresini (f kayt adresi) tanmlar. Tanm:f kayts iindeki b. Bit 1e kurulur. Hafza alan (Bayt): 1 Saat pals: 1 rnek: BSF TEST, 7 Komuttan nce TEST = h0A olsun. Komuttan sonra h0A=b 0000 1010
1 olur ve; TEST = h1A olur. BTFSC f kaytsnn belirlenen biti 0 ise bundan sonraki komutu atla. Dizim: [etiket] BTFSC f,b Operandlar: 0f127 0b7 lem: F(<b>)=0 ise atla Etkilenen bayraklar: Yok Kodlama: 01 01bb bfff ffff MSB tarafndaki 4 bit komut kodu (opcode), 3 tane b biti hedef biti belirler, f ile belirtilen LSB tarafndaki 7 bit ise dosya adresini (f kayt adresi) tanmlar. Tanm: f kayts iindeki b. Bitin 0 olup olmad test edilir. Eer b. bit 0 ise bu komutun altndaki komut ilenmez bir sonraki komuta saplr. Aksi durumda ise sradaki komut ilenir. Hafza alan (Bayt):1 Saat pals:1(2)
23 Test edilen bit 1 ise 1 saat pals , 0 ise 2 saat pals alr. rnek:BASLA BTFSC PORTB,1 ;B portunun 1.bitini test et. GOTO BASLA ; 0 deilse bu satr ilenir, BASLA etiketine dallanr. ;Yani 0 olana kadar test etmeye devam edecek. BSF PORTB,1 ;0 ise bu satr ilenir ve B portunun 1. biti bu komut ile ;1 yaplr. Eer bu pine bir led bal ise yanar.
BTFSS f kaytsnn belirlenen biti 1 ise bundan sonraki komutu atla. Dizim: [etiket] BTFSS f,b Operandlar: 0f127 0b127 lem: Eer (f<b>)=1 ise atla Etkilenen bayraklar: Yok. Kodlama: 01 11bb bfff ffff MSB tarafndaki 4 bit komut kodu (opcode), 3 tane b biti hedef biti belirler, f ile belirtilen LSB tarafndaki 7 bit ise dosya adresini (f kayt adresi) tanmlar. Tanm: f kayts iindeki b. Bitin 1 olup olmad test edilir. Eer b. bit 1 ise bu komutun altndaki komut ilenmez bir sonraki komuta saplr. Aksi durumda ise sradaki komut ilenir. Hafza alan (Bayt): 1 Saat pals: 1(2) Test edilen bit 0 ise 1 saat pals , 1 ise 2 saat pals alr. rnek: BASLA BTFSS PORTA,1 ;A portunun 1.bitini test et. GOTO BASLA ;1 deilse bu satr ilenir, BASLA etiketine dallanr. ;Yani 1 olana kadar test etmeye devam edecek. BSF PORTB,1 ;1 ise bu satr ilenir ve B portunun 1. biti bu komut ile 1 ;yaplr. Eer bu pine bir led bal ise yanar.
1.3.3. Sabit leyen Komutlar
Sabit ynlendirmeli komutlarda dikkat edilirse hedef (d) belirtilmemitir. Sonu her zaman W kaytsnn iersindedir. Ayrca bu gruptaki komutlarn W dndaki kaytlar ile kullanlamadna dikkat edilmelidir.
ANDLW W ile birlikte 8 bitlik k sabitini mantksal ANDle. Dizim: [etiket] ANDLW k Operandlar: 0k255 lem: (W).AND.(k) (W) Etkilenen bayraklar: Z Kodlama: 11 1001 kkkk kkkk
MSB tarafndaki 5 bit komut kodu , k ile belirtilen LSB tarafndaki 8 bit ise 1 baytlk sabit deeri tanmlar. Burada hedef (d) in kodlanmadna dikkat ediniz.
Tanm:W kaytsnn ierii 8-bitlik sabit k ile mantksal ANDlenir. Sonu,W kaytsna geri konur.
24
Hafza alan (Bayt): 1 Saat palsi: 1 rnek: ANDLW h5F
Komuttan nce W = hA3 Komuttan sonra hA3= b1010 0011 AND h5F= b0101 1111 b 0000 0011=h03 ve; W = h03 olur.
ADDLW W ile birlikte 8 bitlik k sabitini topla. Dizim: [etiket] ADDLW k Operandlar: 0k255 lem: (W)+k (W) Etkilenen bayraklar: C,DC,Z Kodlama: 11 111x kkkk kkkk
MSB tarafndaki 5 bit komut kodu, k ile belirtilen LSB tarafndaki 8 bit ise 1 baytlk sabit deeri tanmlar. Burada hedef (d) in kodlanmadna dikkat edilmelidir. Hafza alan (Bayt):1 Saat palsi:1
rnek: ADDLW h15
Komuttan nce W = h10 Komuttan sonra W = h25 olur.
IORLW W ile birlikte kapsayan OR yazm Dizim: [etiket] IORLW k Operandlar: 0k255 lem: (W).OR.(k) (W) Etkilenen bayraklar: Z Kodlama: 11 1000 kkkk kkkk
MSB tarafndaki 5 bit komut kodu, k ile belirtilen LSB tarafndaki 8 bit ise 1 baytlk sabit deeri tanmlar. Burada hedef (d) in kodlanmadna dikkat edilmelidir. Tanm:W kaytsnn ierii 8-bitlik sabit k ile ORlanr. Sonu, W kaytsna geri konur. Hafza alan (Bayt):1 Saat pals:1
25 rnek: IORLW h35
Komuttan nce W= h9A Komuttan sonra h9A= b1001 1010 OR h35= b0011 0101 b 1011 1111=hBF ve ; W= hBF ve Z=1 olur.
MOVLW W kaytsna bir say/sabit ykle. Dizim: [etiket] MOVLW k Operandlar: 0k255 lem: k (W) Etkilenen bayraklar: Yok. Kodlama: 11 00xx kkkk kkkk MSB tarafndaki 5 bit komut kodu, k ile belirtilen LSB tarafndaki 8 bit ise 1 baytlk sabit deeri tanmlar. Burada hedef (d) in kodlanmadna dikkat edilmelidir. Tanm: 8-bitlik sabit k, W kaytsna yklenir. Hafza alan (Bayt):1 Saat pals:1
rnek: MOVLW h5A
Komuttan nce W= h9A olsun ; Komuttan sonra W= h5A olur.
RETLW Altprogramdan Wye bir say/sabit ykle ve geri dn. Dizim: [etiket] RETLW k Operandlar: 0k255 lem: (k) (W) TOS (PC) Etkilenen bayraklar: Yok Kodlama: 11 01xx kkkk kkkk
MSB tarafndaki 5 bit komut kodu, k ile belirtilen LSB tarafndaki 8 bit ise 1 baytlk sabit deeri tanmlar. Burada hedef (d) in kodlanmadna dikkat edilmelidir.
Tanm:Altprogramdan Wye bir k say/sabiti ykleyerek dnmek iin kullanlr. Dn TOS (ynn st- yani geri dn adresinin bulunduu hafza alan) deerinin PC (program sayc) ye aktarlmasyla yaplr. Bu komut daha ok evrim tablolarnda kullanlr. lerde detayl ilenecektir. Hafza alan (Bayt):1 Saat pals:2
26 rnek: RETLW h3F
Komuttan nce Wnin ierii ne olursa olsun komuttan sonra W=h3F yaplr ve anaprograma geri dnlr.
SUBLW Bir k say/sabitten Wyi kart. Dizim: [etiket] SUBLW k Operandlar: 0k255 lem: k (W) (W) Etkilenen bayraklar: C,DC,Z Kodlama: 11 110x kkkk kkkk MSB tarafndaki 5 bit komut kodu, k ile belirtilen LSB tarafndaki 8 bit ise 1 baytlk sabit deeri tanmlar. Burada hedef (d) in kodlanmadna dikkat edilmelidir. Tanm:W kayts (2nin tmleyeni metodu ile) sekiz bitlik k yazmndan kartlr. Sonu, W kayts ierisine yerletirilir. Hafza alan (Bayt):1 Saat pals:1
rnek 1:
SUBLW h02 Komuttan nce W = 1 C = ? Z = ? Komuttan sonra W = 1 C = 1, sonu pozitif Z = 0 rnek 2:Komuttan nce W = 2 C = ? Z = ? Komuttan sonra W = 0 C = 1, sonu sfr Z = 1 rnek 3:Komuttan nce W = 3 C = ? Z = ? Komuttan sonra W = FF C = 0, sonu negatif Z = 1
27 XORLW Bir k say/sabit ile Wyi mantksal EXORla. Dizim: [etiket] XORLW k Operandlar: 0k255 lem: (W) .XOR. k (W) Etkilenen bayraklar: Z Kodlama: 11 1010 kkkk kkkk MSB tarafndaki 5 bit komut kodu, k ile belirtilen LSB tarafndaki 8 bit ise 1 baytlk sabit deeri tanmlar. Burada hedef (d) in kodlanmadna dikkat edilmelidir. Tanm: W kaytsnn ierii, sekiz bitlik k yazm ile mantksal EXORlanr. EXOR mantnda ayn bitlerde k 0, farkl bitlerde k 1 olur. Sonu W kayts iine yerletirilir. Hafza alan (Bayt): 1 Saat pals: 1
rnek: XORLW hAF
Komuttan nce W = hB5 olsun. Komuttan sonra hAF= b1010 1111 EXOR hB5= b1011 0101 b 0001 1010=h1A ve; W = h1A olur.
1.3.4. Kontrol Komutlar
Kontrol komutlar program akn belirleyen komutlardr. Alt program arma, artsz dallanma ve uyku moduna geme gibi olaylar bu komutlarla gerekleir. Bu komutlarda hedef genelde bir adres deeridir.
CALL Alt program ar . Dizim: [etiket] CALL k Operandlar: 0k2047 lem: (PC)+1 TOS, PC: Program sayc (program counter) TOS: Ynn st (Top Of Stack) k (PC<10:0>), (PCLATH<4:3>)(PC<12:11>) Etkilenen bayraklar: Yok. Kodlama: 10 0kkk kkkk kkkk MSB tarafndaki 3 bit komut kodu, k ile belirtilen LSB tarafndaki 11 bit ise altprogram balang adresini tanmlar. Burada hedef (d) in kodlanmadna dikkat edilmelidir. Tanm: Alt program arr. lk olarak geri-dn adresi (PC+1) yna itilir. Onbir bitlik altprogramn balang adresi , PC bitleri <10:0> ierisine yklenir. PCn st bitleri
28 PC<12:11> , PCLATHin <4:3> bitlerinden yklenir. CALL mutlaka RETURN komutu ile birlikte kullanlmaldr. RETURN komutu ilerde anlatlacaktr. Hafza alan (Bayt): 1 Saat pals: 2
rnek: DON CALL SAYAC
DONun bir etiket olduuna ayn zamanda CALL komutunun u anki adresini tuttuuna dikkat ediniz. SAYAC ise altprogramn balang adresini tutan etikettir. Bu durumda; Komuttan nce PC = {Adres DON} Komuttan sonra PC = {Adres SAYAC} TOS = {Adres DON} olur.
Tanm: CLRWDT komutu, Watchdog Timer reset eder. Bu komut ayn zamanda WDTnin n blcsnn de resetlenmesine sebep olur. T0 ve PD durum bitleri de set edilir. Bu bitlerin ilevleri iin status kayts konusuna baklmaldr. Hafza alan (Bayt):1 Saat pals:1
GOTO Adrese git Dizim: [etiket] GOTO k Operandlar: 0k2047 lem: k (PC<10:0>)
29 (PCLATH <4:3>) (PC<12:11>) Etkilenen bayraklar: Yok Kodlama: 10 1kkk kkkk kkkk Tanm: GOTO, koulsuz bir sapma komutudur. Knin belirledii 11-bitlik adres PC bitlerinin <10:0> ierisine yklenir. PCn st bitleri (PC<12:11>) , PCLATH<4:3>ten yklenir ve oluan adrese saplr. Hafza alan (Bayt):1 Saat pals:2
rnek: GOTO SAYAC Komuttan sonra; PC = {Adres SAYAC} olur.
RETFIE Kesme altprogramndan geri dn. Dizim: [etiket] RETFIE Operandlar: Yok lem: TOS (PC) ; 1 GIE TOS da geri dn adresi bulunur. Etkilenen bayraklar: Yok Kodlama: 00 0000 0000 1001 Tanm: Kesme altprogramndan geri dnmek iin kullanlr. Ynda (TOS) bulunan geri dn adresi PCye yklenir. INTCON kesme kaytsnn GIE (Genel kesme yetkisi) biti set edilir. Bu, iki dnglk bir komuttur. Hafza alan (Bayt): 1 Saat pals: 2
rnek: RETFIE
Komuttan sonra; PC = TOS GIE = 1
RETURN Altprogramdan geri dn. Dizim: [etiket] RETURN Operandlar: Yok lem: TOS (PC) Etkilenen bayraklar: Yok Kodlama: 00 0000 0000 0000 Tanm: Altprogramdan geri dnmeyi salar. Ynda (TOS) bulunan geri dn adresi PCye yklenir. Bu, iki dnglk bir komuttur. Hafza alan (Bayt):1 Saat pals:2
rnek: RETURN
Komuttan sonra PC= TOS; yani PCye geri dn adresi yklenir ve ana programa yklenir.
30
SLEEP Uyku (Standby) moduna gir. Dizim: [etiket] SLEEP Operandlar: Yok lem: 00h WDT 0 WDT n-blcs 1 TO 0 PD Etkilenen bayraklar: TO , PD Kodlama: 00 0000 0110 0011 Tanm: G yok durum biti PD (Power down) sfrlanr. Sre am TO (Time-out) durum biti ise 1e kurulur. Watchdog zamanlaycs ve n-blcs silinir. Osilatrn durmasyla ilemci SLEEP moduna girer. PIC bu durumda ok az g harcar. Arada bir kontrol gereken gvenlik ilerinde ya da belirli srelerde yaplacak iler bittiinde PIC uyuma moduna sokulur. Hafza alan (Bayt):1 Saat pals:1
rnek: SLEEP
1.4. Say ve Karakterlerin Yazl
PIC assembly komutlarnda saylar heksadesimal, binary veya desimal formda kullanlabilir. Deiik kaynaklarda kullanlan say ve karakter gsterili biimleriyle karlaldnda bunlar okuyabilmek iin aada rnekler verilmitir.
1.4.1. Heksadesimal Saylar
Heksadesimal saylar 0x, 0 veya h harfleriyle balamaldr. rnein, STATUS kaytsna 03 adresini atamak iin aada gsterilen yazl biimleri kullanlabilir.
STATUS EQU 0x03 EQU. 03h EQU. h 03
MOVLW komutu ile W kayts ierisine yklenecek olan FF heksadesimal sabiti ise aadaki gibi yazlabilir. MOVLW 0 x FF veya MOVLW h FF Biz hexadesimal format h xx eklinde kullanlacak.
1.4.2. Binary Saylar
Binary saylar b harfi ile balamaldr. rnein 00001010 binary saysn W kayts ierisine yklemek iin aadaki gibi yazlmaldr.
MOVLW b00001010
31 1.4.3. Desimal Saylar
Desimal saylarn bana d harfi konularak trnak ierisinde yazlr. rnein, 15 desimal says W kayts ierisine yklemek iin aadaki gibi yazlmaldr.
MOVLW d 15
1.4.4. ASCII Karakterler
Genellikle RETLW komutu ile birlikte kullanlan ASCII karakterler trnak ierisine alnarak aadaki gibi yazlr.
RETLW A RETLW T
1.5. Mikrodenetleyici in Gerekli Yazlmn Kullanm
Mikrodenetleyici programlamak iin (Burada PIC16F84) yazlm ve donanm ihtiyalarmz olacaktr. Yazlm olarak
ASM uzantl dosyamz yazabilmek iin bir metin editr, ASM dosyamz makine koduna (HEX dosyas) evirecek derleyici program HEX dosyasn bir programlama kartna ykleyecek PIC programlayc yazlm ihtiyac olacaktr.
Metin editr olarak windowsun kendi NOTPAD program veya MPLAP ierisindeki kendi editr de kullanlabilir. Resim 1.1de MPLAPnin ASM editr arabirimi grlyor.
32
Resim 1.1: MPLAPnin ASM editr arabirimi Donanm olarak ise IBM uyumlu bir bilgisayara ve kullanlan mikrodenetleyiciyi programlayabilecek programlayc karta ihtiya vardr. Bu kartn yaplmas ve programlaycnn nasl kullanaca Mikro lemci ve Mikrodenetleyiciler modlnde anlatlmtr. Burada sadece derleme (compiler) olaynn nasl yapldna deinilecek
1.5.1. Programn Kurulmas
Chip(ip) firmasnn MPASM derleyicisi ile yazlm olunan assembly dosyalar, mikrodenetleyiciye yklemek zere .HEX uzantl dosyalara evrilebilir. Bu program internet sitesinden cretsiz datlan MPLAB programnn iinde bulunabilir. Bu program yaklak 30MBlk dosyadr (MPLAB710.zip).
Gelen zip dosyasn alr ve iindeki Setup.exe dosyasn altrlarak yklenir. Resim 1.2de kurulum grlmektedir.
33
Resim 1.2: MPLAB kurulumu Ykleme ilemi bittikten sonra, balat mensnden porgramlarm iinde MPASM program aldnda ekrana Resim 1.3teki pencere gelecek.
Resim 1.3: MPASM derleyici program arayz
34 1.5.2. Menlerin Tantlmas
MPASM derleyicisinin ayarlar yledir:
Source File Name ile derlenecek ASM uzantl kaynak dosya seilir. Bunun iin Browse tklanarak kaynak dosya seilir. Radix radyo dmelerinden hexadecimal seilmelidir. Warning level, ikaz seviyesi ayarlanabilecek bir ayar grubudur. Programn hangi durumlarda ikaz vereceini belirler.Tercihen Warning and errors seilmelidir. Hex Output, derleme sonucunda oluacak hex dosyasnn k formatn belirler. Tercihen INHX8M seilmelidir. Generated Files, derleme sonucunda hangi dosyalarn oluturulacan belirler. Tercihen Error File ve List Fileseilmelidir. Bir problem durumunda bu dosyalar incelenerek hatalar giderilebilir. Macro expansions, makro uzantlarnn kabul edilip/edilmemesini belirleyen bu ayar tercihen default olmaldr. Processor, ile kullanlacak mikrodenetleyici seilir. Tab size , sekme uzunluu deeri 8 seilebilir. Extra Option, zel parametreler girmek iin kullanlr. rnein, buraya /LTEST.LST yazlrsa derleme sonucunda HEX dosyas ile beraber TEST.LST dosyasnn da olutuu grlr. 1.5.3. Mikrodenetleyici ve Dier Donanmlarn Seilmesi
Mikrodenetleyiciler ile bir proje tasarlanrken seilecek mikrodenetleyicinin seimi ok nemlidir. Mikrodenetleyicilerin komut saylar, kullandklar kaytlar, bellek deerleri vb. birbirinden farkldr. Bu yzden ncelikle kullanlacak mikrodenetleyici seilmelidir. Bunun iin mikrodenetleyicilerin kataloglar incelenmelidir. Chip firmasnn sitesinde retilen tm mikrodenetleyicilerin (PIC serisi) kataloglarna ulalabilir. Bu modlde daha ok PIC16F84 mikrodenetleyicisinin programlanmas grlecektir. Yalnz analog/dijital dnm konusunda, PIC16F84 denetleyicisinin dhil ADC modl olmadndan, bunun iin 16F877 denetleyicisi kullanlacak. ekil 1.3 ve ekil 1.4te en ok kullanlan denetleyicilerin baz teknik verileri verilmitir.
35
ekil 1.3: 18 pinli baz denetleyicilerin teknik verileri
ekil 1.4: 40 pinli baz denetleyicilerin teknik verileri Yaplacak ie, kullanlan denetleyicinin teknik zelliklerine gre kullanlacak dier donanmlar (ADC /DAC dntrcler, LCD display, sensrler vs. ) seilmelidir.
1.6. Programlama Teknii
Program yazarken 4 temel kural izlenmelidir.
Yazlm hakknda daima aklamalar yaplmaldr. Yoksa kanlmaz olarak geri dnldnde, neyin, neden yapldn anlamak ok zor olur.
36 Programlar iin evrensel bir (Header) balk kullanlmaldr. Bu, i ykn hafifletir, tutarl bir format yaratr ve hatrlanmas gereken deiken saysn azaltr. Tm alt rutinler tek blgede toplanmaldr. PICle alrken bu evrensel blge, her bellek sayfasnn stnde (00-FFh) olmaldr. Yazlmn ne yapmasn gerektiini hatrlamak iin bir ak diyagram izilmelidir.
1.6.1. Bank Deitirme
STATUS kaytsnn 5. ve 6. bitleri (RP0,RP1) bank deitirmek iin kullanlr. Bank deitirme ilemi o banktaki kaytlar kullanabilmek iin yaplr. ekil 1.5te PIC16F84 iin Bank 0 ve Bank 1de bulunan kaytlar ve bellekteki adresleri grlmektedir. PIC16F84n sadece 2 bank bulunduundan bank seimi sadece STATUS kaytsnn 5. biti ( RP0) ile yaplr.Yani 6. bitin deeri daima 0 olmaldr. Zaten PIC enerjilendii anda power-On-Reset (POR) gerekleir ve bu iki bit 0 olur. Bu bitler ayn zamanda MCLR ucundan yaplan hric reset ve WDT reseti durumunda da 0 olur. Bank geileri iin aadaki komut ikilisi kullanlr (PIC16F84 iin).
BSF STATUS,5 ; Bank 1 seilir. BCF STATUS,5 ; Bank 0 seilir.
37
ekil 1.5: PIC 16F84 denetleyicisinin bank ve kayt yaps
38 1.6.2. Portlarn Giri ve k Olarak Ynlendirilmesi
Portlara bal bulunan bir giri/k elemann kullanabilmek iin portlarn giri/k olarak ynlendirilmesi gerekir. PIC16F84de A portunu TRISA kayts, B portunu TRISB kayts ynlendirir.
PortA/PortBnin hangi bitleri giri yaplacaksa TRISA/TRISB kaytlarnn o bite karlk gelen bitleri 1 yaplr. Ayn ekilde k yaplacaksa TRISA/TRISB kaytlarnn o bite karlk gelen bitleri 0 yaplr.
1. rnek: Port A nn ilk 4 biti giri, 5. biti k olarak kurulsun (PIC16F84de A portu 5 bitlik bir porttur.).
CLRF PORTA ; PORTAy sfrla. BSF STATUS, 5 ; Bank 1e ge. nk TRISA bank1de. MOVLW h0F ; TRISAya yklemek iin deer hazrla. MOVWF TRISA ; TRISAya deeri ykle. TRISA<0:3> giri, TRISA<4> k iin ;ayarland. BCF STATUS, 5 ; Bank 0e ge. nk PORTA bank1de ve I/O ilemleri portlardan gerekleir.
2. rnek: PortAnn tamam giri, Port Bnin tamamn k olarak kurulsun (PIC16F84de B portu 8 bitlik bir porttur.).
CLRF PORTB ; PORTBy sfrla. BSF STATUS, RP0 ; Bank1e ge.nk TRISA ve TRISB bank1de. CLRF TRISB ; TRISBya deeri ykle.TRISB<0:7> 0olacandan tm bitler ; k olarak kuruldu. MOVLW hFF ; A portunun tamam MOVWF TRISA ; giri olarak ayarland. BCF STATUS, 5 ; Bank 0e ge. nk PORTA ve PORTB bank 1de ve I/O ilemleri; portlardan gerekleir.
1.6.3. Her Adm in Ak Diyagram izme
Ak diyagram oluturma ve sembolleri konusunda ak diyagramlar hakknda bilgi verilmiti. Burada Port ynlendirmesine bir rnek olarak PICe enerji verildiinde PORTBnin 1.bitine bal ledi yakacak programn ak diyagramn ve her sembolde ilenecek assembly komutlar yazlsn.
39
Ak diyagram izmenin amac karmak ve/veya ok uzun programlar yazarken ilem sras oluturup dnme kolayl salamasdr.
1.6.4. Konfigrasyon Bitlerinin Yazlmas
Konfigrasyon bitleri, PICe gerilim uygulandnda PICin uymas gereken koullar belirlemede kullanlr. Bu bitler aadaki koullar belirlemede kullanlr:
Osilatr tipi WDTin aktif/pasif yapma PORi (Power-On-Reset) aktif/pasif yapma Kod korumay aktif/pasif yapma
40 Bu konfigrasyon bitlerini program ierinde yazlabilecei gibi PIC programlaycnn kendi programndaki fuses penceresinden de yaplabilir.
Konfigrasyon bitlerini belirleyen tanmlar:
_CP_ ON / OFF ; kod koruma var/yok. _WDT_ ON / OFF ; WDT aktif /pasif. _ PWRT_ ON / OFF ; Power-On-Reset var/yok. _RC_OSC ; RC osilatr kullanlyor. _LP_OSC ; Alak g (low power) osilatr kullanlyor. _XT_OSC ; Kristal osilatr kullanlyor. _HS_OSC ; Yksek hzl (High speed) osilatr kullanlyor.
Konfigrasyon cmlesi yazarken unlara dikkat edilmelidir:
CONFIG ifadesinin yanndaki alt izgi ift olmaldr ___. Daha sonra yazlan ifadeler tek alt izgili olmaldr _. Konfigrasyonlar arasnda bir boluk olmaldr. Boluktan sonra & iareti kullanlmaldr. & iaretinden sonra ara vermeden konfigrasyon yazlr.
Aadaki rnek incelenmelidir.
__CONFIG _CP_OFF & _WDT_ON &_ PWRT_ON & _RC_OSC Bu ifadede ; _CP_OFF ; kod koruma yok. _WDT_ON ; WDT aktif _ PWRT_ON ; Power-On-Reset var. _RC_OSC ; RC osilatr kullanlyor.
1.6.5. W Kaytsnn Kullanm
PIC16F84'n RAM bellek alannda grlmeyen bir de W registeri vardr. W register bir akmlatrdr. W registerine direkt olarak ulalmayabilinir. Ancak dier registerlerin ierisindeki verileri aktarrken erimek mmkndr. Bir PIC'te gerekleen tm aritmetik ilemler ve atama ilemleri iin W register kullanlmak zorunluluu vardr. rnein, iki register iindeki veriler toplanmak istendiinde ilk olarak registerlerden birinin ierii W registere aktarlr (ekil 1.6). Daha sonra da dier registerin ierisindeki veri W registeri ierisindekiyle toplanr. Bu registerin kullanm zellikleri yine programlama konusunda detayl olarak ele alnacaktr.
ekil 1.6: W kayts kullanm
Port A
Port B W kayts
41 1.6.6. Bitleri Test Ederek lem Yapma
Bir kayt ierisindeki herhangi bir bit BTFSS veya BTFSC komutlar ile test edilebilir. Mikrodenetleyici komutlar konusunda ilenen bu komutlarn ilevi ksaca hatrlanrsa BTFSS komutu belirtilen f kaytsndaki biti test eder, eer 1 ise bir sonraki komuta geer.
BTFSC komutu ise belirtilen f kaytsndaki biti test eder, eer 0 ise bir sonraki komuta geer.
rnek : A portunun 0.bitine bal olan bir butona basldnda B portuna bal 8 ledi yakacak program yazlsn.
zm: nce programn ak diyagram karlr.
hayr
evet
ekil 1.7: rnek progamn algoritmas
imdi de program yazlsn. Bala PortByi sil. PIC16F84 tant. Tekrar test et. PORTA giri PORTB k PORTA<0>=1 mi? PORTBdeki ledleri yak. son
42 ;====led.asm====== LIST P=16F84 tanmlamalarn yapld INCLUDE P16F84.INC blm
CLRF PORTB BSF STATUS,5 A portu giri, B portu k olarak CLRF TRISB ayarland. MOVLW hFF MOVWF TRISA BCF STATUS,5 TEST_PORTA BTFSS PORTA,0 ; PORTA<0>=1 mi? GOTO TEST_PORTA ; hayr.Tekrar test et. MOVLW hFF ; evet. W=hff ykle. MOVWF PORTB ; B portundaki tm ledleri yak. SON PIC16F84de duraklama komutu olmad GOTO SON iin burada yazlm ile sonsuz dng END oluturup PICi aldatyoruz. RESET olana kadar PIC sonsuz dngde kalr.
1.6.7. Saya Kullanarak Dng Dzenlemek
Baz ilemlerin nceden belirlenen sayda tekrarlanmas gerekebilir. Bu durumda programc tarafndan belirlenen bir kayt saya olarak kullanabilir. Saya u ekilde hazrlanr:
nce saya ierisine tekrar saysn belirleyen say yklenir. Her ilem tekrarnda saya 1 azaltlr(DECFSZ komutu kullanlr.). Saya 0 olduunda program ya bitirilir ya da baka bir yere dallandrlr.
Olaylarn ak diyagram izilsin.
Ak diyagramnn komut listesi:
TEKRAR DECFSZ SAYAC,F GOTO TEKRAR BSF PORTB,1
hayr evet
ekil 1.8: DECFSZ komutu ile yaplan sayacn algoritmas Tekrar test et. SAYAC=0 m? PORTBnin 1.bitini 1 yap. SAYAC=SAYAC-1
43 Bilindii gibi DECFSZ komutu, kaytdan 1 kart eer sonu 0 ise bir sonraki komuta dallan ilevini yapmaktadr. Detayl bilgi iin mikrodenetleyici komutlar konusunda DECFSZ komutu incelenmelidir.
Zaman geciktirme dngleri konusunda saya kullanarak yaplan dngler incelenmelidir.
1.6.8. Karlatrma Yaparak Dng Dzenlemek
SUBLW, SUBWF, INCF, DECF komutlar kullanlarak da sayalar dzenlenebilir. Bu komutlar hakknda detayl bilgi iin mikrodenetleyici komutlar konusuna baklmaldr.
Saya u ekilde hazrlanr:
nce saya ierisi sfrlanr. Her ilem tekrarnda saya 1 arttrlr(INCF komutu kullanlr.). Saya istenilen sayya ulatnda STATUS kaytsnn Z biti BTFSS komutu ile sorgulanarak program ya bitirilir ya da baka bir yere dallandrlr. imdi de bu olaylarn ak diyagram izilsin. Ak diyagramnn asm kodlar
CLRF SAYAC TEKRAR INCF SAYAC,F MOVLW dtekrar says SUBWF SAYAC,W BTFSS STATUS,Z GOTO TEKRAR BSF PORTB,1
hayr
evet
ekil 1.9: SUBWF komutu ile yaplan sayacn algoritmas Tekrar test et. STATUS<2>=0 m? PORTBnin 1.bitini 1 yap. W=SAYAC-W SAYAC=SAYAC+1 We tekrar saysn ykle. SAYAC=h00
44 Yukardaki program parasnda SAYAC deeri Wye yklenen tekrar saysna ulatnda SUBWF SAYAC, W komut satr icrasnda STATUS kaytsnn Z bayra 1 olacaktr ve B portunun 1.biti 1 yaplarak buna bal led yanacaktr. Burada dikkat edilmesi gereken konu, GOTO TEKRAR komut satr, Wye yklenen d tekrar saysndan 1 eksik sayda icra edilecektir. Yani MOVLW d10 yapldysa GOTO TEKRAR komut satr 9 defa icra edilecektir.
1.6.9. Status Kayts
STATUS kayts ALU`nun aritmetik statsn, RESET statsn ve veri belleinin kme seim bitlerini iermektedir.
Herhangi bir kaytla olduu gibi STATUS kayd herhangi bir komut iin hedef olabilir. Eer STATUS kayd, Z, DC, veya C bitini etkileyen komutun hedefiyse o zaman bu bit zerine yazma etkin deildir.Yani sadece okunabilir durumdadr. Bu bitler aygtn lojik durumuna gre uygun olarak kurulmu veya silinmitir. Daha tesinde, TO ve PD bitleri sadece okunabilir bitlerdir.
rnein, CLRF STATUS komutu yukar biti temizleyerek Z bitini kuracaktr. Bu STATUS kaydndan 000u uluu olarak kacaktr. (u=deimeyen). STATUS kaydn deitirmek iin yalnzca BCF, BSF, SWAPF ve MOVWF kullanlmaktadr. nk bu komutlar hibir stats bitini etkilememektedir.
STATUS kayd, Z, DC ve C bitini etkileyen komutun hedefi olduu durumlarda bu bitin zerine yazma etkinsizdir.
kartmalarda, C ve DC bitleri dn alan bitler olarak almaktadr.
Aada STATUS kaytsnn her bir bitinin hangi durumlarda 1 ve 0 olaca gsterilmitir.
ekil 1.10: Status kayd (O3h, 83h adresi) R= Okunabilir bit W= Yazlabilir bit N= POR resetindeki deer. n=Bilinmez 1 ya da 0 olabilir.
rnein, 2.bit olan Z biti R/W-n ifadesiyle hem okunabilir hem de yazlabilir bir bit olduunu, ayrca g reseti durumunda lojik seviyesi iin bir ey sylenemeyecei anlamn tar. Ama 3.bitin g reseti durumundaki lojik deeri 1dir.
45 Bit 7: IRP: Bank kmesi seim biti (dolayl adresleme iin kullanlr). 0: Bank 0,1 (h00-hff) 1:Bank 2,3 (h100-h1ff) IRP biti PIC16F87X serisinde kullanlmaktadr. 16CXX, 16F8X serisi mikrodenetleyicilerde kullanlmaz.
Bit 6-5: RP1:RPO: Bank seim bitleri (Dorudan adresleme iin kullanlr.) 00:Bank 0 01:Bank 1 10:Bank 2 11:Bank 3
PIC16F84te sadece bank 0 ve bank1 bulunduu iin bank seimini sadece RP0 biti kullanlarak yaplr. Her bir bank 128 bayttr.
Bit 4:TO: Zaman aral biti (Time-out) 1= PICe enerji verildiinde, CLRWDT komutuyla veya SLEEPden g verme durumuna geirildiinde 1 olur. 0= WDT sre am ilemi gereklemi ise 0 olur.
Bit 3:PD: G kesme biti (Power down). 1= PICe enerji verildiinde veya CLRWDT komutu ile olur. 0= SLEEP komutunun yrtlmesi ile olur.
Bit 2 :Z: Sfr Bit (zero) 1= Aritmetik veya mantksal ilemin sonucu sfrdr. 0= Aritmetik veya mantksal ilemin sonucu sfr deildir.
Bit 1:DC: Dijit elde (Digit Carry/Borrow) biti. (ADDWF ve ADDLW komutlar iin) 1= Alt 4 bitin (1.dijit) 4. bitinde tama meydana geldiinde olur. 0= Alt 4 bitin (1.dijit) 4. bitinde tama meydana gelmediinde olur.
Bit 0 :C: Elde (Digit Carry/Borrow) biti. (ADDWF ve ADDLW komutlar iin) 1= Meydana gelen sonucun en nemli bitinden (7.bit) tama olursa 1 olur. 0= Meydana gelen sonucun en nemli bitinden (7.bit) tama olmazsa 0 olur.
RRF, RLF komutlarn yrtlmesi srasnda , bu bit, kaynak kaydndaki dk veya yksek deerlikli ( MSB veya LSB) biti ile yklenmektedir.
46 1.6.10. Zaman Geciktirme Dngleri
Bu konumuzda dng gecikmelerinde geen zamann hesaplanmasn ve dier komutlar reneceiz. Bunun iin ncelikle dhil komut saykl kavramn bilmemiz gerekir.
PIC16F84e uygulanan 4 Mhzlik osilatr sinyalinin 1 komutu icras iin 4 pals gerekir. Dolaysyla PICin 1 komutu icra etmek iin kulland frekans, dardan uygulanan sinyalin ne der ve 1 Mhz olur. te Fosc/4 deerindeki bu deere dhil komut saykl denir. 1Mhzlik sinyalin dhil komut peryotu da 1S olacaktr. Baz komutlarn icras ise 2 komut saykllk zaman alr. Bu komutlar Tablo 1.1de verilmitir.
Komut Komut saykl GOTO 2 RETURN 2 CALL 2 PCye veri yazan komutlar 2 DECFSZ 1 (Kayt iindeki deer 0 deilse) 2 (Kayt iindeki deer 0 ise) RETLW 2 RETFIE 2 INCFSZ 1 (Kayt iindeki deer 0 deilse) 2 (Kayt iindeki deer 0 ise) BTFSC 1 (Kayt iindeki deer 0 deilse) 2 (Kayt iindeki deer 0 ise) BTFSS 1 (Kayt iindeki deer 1 deilse) 2 (Kayt iindeki deer 1 ise) Tablo 1.1: 2 komut saykl eken komutlar Tek dng ile gecikme alt programnn ak diyagramn izip program yazlsn ve maksimum ne kadarlk bir zaman gecikmesi yapt hesaplansn.
hayr evet
ekil 1.11: Tek dnglk zaman gecikmesi algoritmas SAYAC=hFF=d255 SAYAC=0 m? SAYAC=SAYAC-1 RETURN Bu yol GOTO komutu ile icra edilir ve 254 defa tekrarlanr. Sonuta 2x254 tane komut saykl eker.
Yukardaki hesaplamada dikkat edilmesi gereken nokta DECFSZ komutunun icrasdr. SAYAC deeri 0 olana kadar bu komut bir komut saykl ekecektir. SAYAC deeri 0 olunca ise 2 komut saykl eker. SAYAC sfr olana kadar 254 defa komut icra edileceinden toplamda bu komut (1x254+2=256) komut saykl ekecektir.
Ayn ekilde GOTO komutu icras 2 saykl alr (Tablo 1.1). Bu komut proram sonuna kadar 254 defa icra edileceinden toplam 2x254=508 komut saykl eker.
GECIKME alt program sonunda ise toplan 766 komut saykl sresi kadar bir gecikme olur . imdi de bu kadar saykln 4 Mhz kristal osilatr kullanan bir PICC16F84te ne kadar srelik bir gecikme yapld bulunsun.
Osilatr frekans 4Mhz ise dhil komut frekans F=Fosc/4 olduundan 1 Mhz olacaktr. O hlde bir komut saykl sresi,
t=1/f=1/1Mhz= 1S olacaktr.
GECIKME alt programnn sresi ise 1S x766 = 766S = 0.766mS olacaktr. Bu sre tek dng ile yaplabilecek maksimum zaman gecikmesidir.
Uygulamalarda tek dng ile yeteri kadar gecikme yaplamad iin, en az iki dng yapmak gerekmektedir. Aada iki dng ile yaplm gecikme altprogramnn ak diyagram grlmektedir.
48
hayr
evet evet
hayr
evet
ekil 1.12:ift dnglk zaman gecikmesi algoritmas GECKME alt programnn assembly program yazlp geen zaman bulsun.
ekil 1.13: ift dnglk zaman gecikmesi assembly program Burada SAYAC1 deerine M, SAYAC2 deerine N denilirse toplam saykl saysn yaklak TSS=3MN+5M+4 kadar bulunur. Buradaki 4 deeri rahatlkla ihmal edilebilir. GECIKME SAYAC2=SAYAC2-1 SAYAC2=0 m? RETURN SAYAC2= hFF SAYAC1=hFF=d255 SAYAC1=0 m? SAYAC1=SAYAC1-1 M N
49 Hatta ok hassas bir zamandan bahsedilmiyorsa 5M deeri de ihmal edilebilir. Eer M=N alnrsa TSS=3M 2 olarak sadeletirilebilir. Maksimum zaman gecikmesi yapmak iin sayalara d225 yklenmitir. Yani M=N=255tir. Bu durumda toplam komut saykl says yaklak olarak.
Bu da 4 Mhz frekans iin 196,35 mS = 0.196 saniye yaklak 0,2 saniye eder. Bu deer 2 dng ile yapabileceimiz maksimum gecikme sresidir. imdi de istenen bir gecikme deeri iin sayalara yklenilecek deerin nasl bulunaca grlsn. rnein, 2 dngl bir gecikme ile 40 mSlik bir zaman gecikmesi yapmak iin kaytlara hangi deerler yklenilecei bulunsun. Kolaylk bakmndan saya deerleri ayn say ile yklensin(PIC 16F84in osc frekans 4Mhz kabul edilecek.). zm: 40 mS=40000S yapar. Bu da dhil komut saykl sresi 1S olan bir PIC iin TSS=40000yapar. TSS=3M 2 , 40000=3M 2 ve M=(4000/3=116 desimal deeri bulunur.
Eer PICinin osc frekans 10Mhz olsayd ne deiirdi?
ok ey. Bu durumda dhil komut saykl f=Fosc/4=2,5 Mhz ve t= 1 / f =0.4 S olurdu. 40mS=40000S olduundan bu srenin gemesi iin gereken saykl says TSS=40000/0.4=100000 saykl gerekir.TSS=3M 2 , 100000=3M 2 ve M=(100000/3=183 desimal deeri bulunur.
Bu bilgiler nda Min bulunmas iin genel bir forml yazlrsa
bulunur. Burada; GS=Gecikme sresi(S), sresi
Fosc=PICin osilatr frekans (Mhz) M=Saya deerini (desimal) ifade eder.
Yukardaki rnekleri bir bu formlle zerek sonularn ayn olduu grlr. imdi de 3 dngl bir gecikme alt program yazlsn. Fosc=4 Mhz iin toplam 50.070.529 mikrosaniye ve yaklak 50 saniye eder.
50
ekil 1.14: ift dnglk zaman gecikmesi assembly program Demek ki 3'l dng ile yeteri kadar zaman elde edilebilir.
Eer 4'l bir dng dzenlenirse o zaman saatlerce srecek bir zaman gecikmesi elde etmek mmkn olur. imdi de bir tablo izilerek drtl bir dng hlinde ne olabilecei grlsn.
ekil 1.15: ift dnglk zaman gecikmesi assembly program Sonu olarak 12.767 bir gecikme elde edilir. Bu da 212 dakika ve yaklak 3.5 saatlik bir gecikme olur. Bu yaklak 255 X50 saniye demektir, burada ilk 255 yerine decimal 100 girilirse 100X50 saniye yani 5000 saniye elde edilir, bu da 83 dakika eder. 1 girilirse 50 sn. 10 girilirse 8.3 dakika elde edilir. lk 255 says yerine 1den 255'e kadar deien rakamlar girildiinde 4l bir dng iin 50 sn.den 3.5 saate kadar uzanan bir zaman gecikmesi elde edilir. Tek ve iki dnddeki gibi istenirse 3l ve 4l dnglerde formlize edilebilir. 5li bir dng hlinde ise bu zaman bir ay (900 saat) civarndadr.
51 1.6.11. Altprogramlar
Program ierisinde defalarca tekrar edilmesi gereken komut dizilerini srekli yazmak yerine, bu komut dizilerini altprogramlar eklinde yazarak hem bellek alanndan tasarruf edilmi olur hem de program sadelik kazanr. Altprogramlar ana programdan CALL komutu ile arlr ve altprogramn almas bittikten sonra ana programa RETURN komutu ile dn salanr.
Altprogramlar iki eittir:
CALL komutu ile arlan altprogramlar Kesme altprogramlar (Kesme alt programlar Kesme alt programlarnn dzenlenmesi konusunda ilendiinden burada ilenmemitir.)
Bir alt programn almasn ematik olarak ekil 1.16' daki gibi gsterilebilir.
PC=>TOS (Yn) ve SAYAC adresi=>PC gerekleir.
TOS (Yn) =>PC yaplarak Ana programa dnlr.
ekil 1.16: Alt program kurgusu SAYAC
Alt program
RETURN Ana program
CALL SAYAC
52 Yukardaki ekilde unlar dikkati ekmi olmaldr:
CALL komutundan sonra alt programn isimi yazlarak altprogram arlr. Burada alt programn ismi SAYACtr. Alt program arldnda program sayc (PC) kaytsnn ierii (yani geri dn adresi) yna (TOS) itilir ve SAYAC altprogram adresi PCye yazlr. Bu olay mikrodenetleyici tarafndan otomatik olarak gerekleir. Bylece altprograma dallanma gereklemi olur. Altprogramn altrlmas bittikten sonra RETURN komutu ile ana programa dn salanr. nk RETURN komutu, daha nce yna itilmi geri dn adresini PCye tekrar ykler. Ayrca altprogram iinde baka altprogramlar da arlabilir.
Sradaki Bit pozisyonlarn sola kaydrma konumuzda led.asm programnda bir gecikme altprogram kullanlmtr.
1.6.12. Bit Kaydrma
1.6.12.1. Bit Pozisyonlarn Sola Kaydrma
Bit pozisyonlarn sola kaydrmak iin RLF komutunu kullanlr. Bu komut belirlenen bir kayt ierisindeki bitleri her defasnda 1 bit sola kaydrr. Detayl bilgi iin mikrodenetleyici komutlar konusunda RLF komutu incelenebilir.
rnek: PORTBye bal 8 led srayla periyodik olarak yansn. yle ki PORTB<0>dan PORTB<7>ya doru tek bit srayla yansn ve 7. bitten sonra ilem baa dnsn.
;====led.asm====== LIST P=16F84 INCLUDE P16F84.INC SAYAC1 EQU h0C tanmlamalarn yapld SAYAC2 EQU h0D blm CLRF PORTB BSF STATUS,5 B portu k olarak CLRF TRISB ayarland. BCF STATUS,5 BASLA BCF STATUS,0 ;Elde biti sfrland. Ana MOVLW h01 ;ilk deeri ykle ve Program MOVWF PORTB ;B portundan kar. TEKRAR CALL GECIKME ;2.deer iin bekle. RLF PORTB,F ;sola kaydr BTFSS STATUS,0 ;C=1 mi? GOTO TEKRAR ;hayr.TEKRARa dallan. GOTO BASLA ;evet.BASLAya dallan.
Bit pozisyonlarn saa kaydrmak iin RRF komutunu kullanlr. Bu komut belirlenen bir kayt ierisindeki bitleri her defasnda 1 bit saa kaydrr. Detayl bilgi iin mikrodenetleyici komutlar konusunda RRF komutu incelenebilir.
rnek: PORTBye bal 8 led kara imek dzeninde yansn. Yani PORTB<0>dan PORTB<7>ya doru tek bit sola doru srayla yansn ve 7. bitten sonra ilem saa doru dnsn ve bu ilemler periyodik olarak tekrarlansn.
;====karaimek.asm====== LIST P=16F84 INCLUDE P16F84.INC SAYAC1 EQU h0C tanmlamalarn yapld SAYAC2 EQU h0D blm CLRF PORTB BSF STATUS,5 B portu k olarak CLRF TRISB ayarland. BCF STATUS,5 BCF STATUS,0 ;Elde biti sfrland. MOVLW h01 ;ilk deeri ykle ve MOVWF PORTB ;B portundan kar.
SOL CALL GECIKME ;Yeni deer iin bekle. RLF PORTB,F ;sola kaydr BTFSS PORTB,7 ;PORB<7>=1 mi? GOTO SOL ;hayr.SOLa dallan.
SAG CALL GECIKME ;evet. Yeni deer iin bekle. RRF PORTB,F ; saa kaydr.
54 BTFSS PORTB,0 ; PORB<0>=1 mi? GOTO SAG ;hayr.SAGa dallan. GOTO SOL ;evet.SOLa dallan,
GECIKME MOVLW hFF MOVWF SAYAC1 DON1 MOVLW hFF MOVWF SAYAC2 GECKME alt program DON2 DECFSZ SAYAC2,F GOTO DON2 DECFSZ SAYAC1,F GOTO DON1 RETURN END
1.6.12.3. Bit Pozisyonlarn Tersleme
COMF komutu bir kayt ierisindeki bitleri tersine evirir (complement). Detayl bilgi iin mikrodenetleyici komutlar konusunda COMF komutunu incelenebilir. Bu komut, 2li tmleme yntemiyle karma ilemi yaparken baz mantksal devre zmlerine, k ovlar tasarlarken ie yarayabilir.
rnek: PORTBye bal 8 ledleri dnml olarak ilk nce ilk 4 bitindeki, sonrada son 4 bitindeki ledleri yakan program yazlsn.
;====TERSLE.asm====== LIST P=16F84 INCLUDE P16F84.INC SAYAC1 EQU h0C tanmlamalarn yapld SAYAC2 EQU h0D blm CLRF PORTB BSF STATUS,5 B portu k olarak CLRF TRISB ayarland. BCF STATUS,5 MOVLW h0F ;ilk deeri ykle ve MOVWF PORTB ;B portundan kar. TERSLE CALL GECIKME ;Yeni deer iin bekle. COMF PORTB,F ;PORTByi tersle. GOTO TERSLE ; saa kaydr.
55 GECIKME MOVLW hFF MOVWF SAYAC1 DON1 MOVLW hFF MOVWF SAYAC2 GECIKME alt program DON2 DECFSZ SAYAC2,F GOTO DON2 DECFSZ SAYAC1,F GOTO DON1 RETURN END
1.6.13. Mantksal lemler
Mantksal ilem komutlar bir kaytdaki istenilen bitleri deitirmek (maskelemek veya kurmak), test etmek amacyla kullanlr. Bu komutlar ANDLW, ANDWF, IORLW, IORWF, XORLW, XORWF ve COMF komutlardr. Detayl bilgi iin mikrodenetleyici komutlar konusunda bu komutlar incelenebilir.
1.6.13.1. stenen Bitleri Sfrlamak
ANDLW komutu W kayt ierisinde bulunan istenilen bitleri sfrlamak (maskelemek) iin kullanlr. Burada sonu daima W kaytsndadr.
rnein, W kaytsndaki 3. ve 4. bitlerini dier bitleri deitirmeden sfrlamak (meskelemek) isteniyor. Bunun iin kullanlacak komut satr,
ANDLW hE7 ; olmaldr.
Burada sabit hE7 olarak kuruldu. nk; W =b(xxxx xxxx) AND hE7=b1110 0111 W=bxxx0 0xxx olur.
Sonuta W kaytsndaki 3. ve 4. bitleri dier bitler deitirilmeden sfrlanm (meskelemek) oldu. Burada dikkat edilmesi gereken maskelenecek bitler 0, dier bitler 1 ile ANDlenecek ekilde say seilmelidir (hE7).
ANDWF komutu da maskelemek iin kullanlabilir. Ancak bu komutta maskeleme iin kullanlan deer sabit bir saydan deil, bir dosya kaytsndan (f) alnr ve sonu deer hedef (d) bitine gre W yada F kaytsndadr.
evrim tablolarnn kullanm yerleri ve kullanm konusunda verilen hex.asm programnda da bu komutun kullanm grlebilir.
56 1.6.13.2. stenen Bitleri Bire evirmek
IORLW komutu W kayt ierisinde bulunan istenilen bitleri 1 yapmak (kurmak) iin kullanlr. Burada sonu daima W kaytsndadr.
rnein, W kaytsndaki 3. ve 4. bitlerini dier bitleri deitirmeden 1 yapmak istiyoruz Bunun iin kullanacamz komut satr,
IORLW h18 ; olmaldr.
Burada sabit h18 olarak kuruldu. nk; W =b(xxxx xxxx) OR h18=b0001 1000 W=bxxx1 1xxx olur.
Sonuta W kaytsndaki 3. ve 4. bitleri dier bitler deitirilmeden sfrlanm (meskelemek) oldu. Burada dikkat edilmesi gereken kurulacak bitler 1, dier bitler 0 ile ORlanacak ekilde say seilmelidir (h18).
IORWF komutu da maskelemek iin kullanlabilir. Ancak bu komutta maskeleme iin kullanlan deer sabit bir saydan deil, bir dosya kaytsndan (f) alnr ve sonu deer hedef (d) bitine gre W ya da F kaytsndadr.
1.6.13.3. stenen Bitleri Terslemek
XORLW komutu W kayt ierisinde bulunan istenilen bitleri terslemek iin kullanlr. Burada sonu daima W kaytsndadr.
rnein, W kaytsndaki deer h4Colsun. Wnin 3. ve 4. bitlerini dier bitleri deitirilmeden terslenmek isteniyor . Bunun iin kullanlacak komut satr,
XORLW h18; olmaldr.
Burada sabit h18 olarak kuruldu. nk; W = b0100 1100 XOR h18=b0001 1000 W= b0101 0100 olur.
Sonuta W kaytsndaki 3. ve 4. bitleri dier bitler deitirilmeden sfrlam (meskelemek) oldu. Burada dikkat edilmesi gereken terslenecek bitler 1, dier bitler 0 ile XORlanacak ekilde say seilmelidir (h18).
XORWF komutu da maskelemek iin kullanlabilir. Ancak bu komutta maskeleme iin kullanlan deer sabit bir saydan deil, bir dosya kaytsndan (f) alnr ve sonu deer hedef (d) bitine gre W ya da F kaytsndadr.
57 1.6.13.4. Bir Baytlk ki Veriyi Karlatrmak
W kaytsnn bir baytlk sabit bir veriyle ayn olup olmadn test etmek iin XORLW komutu kullanlabilir.Benzer ekilde W kaytsnn, bir dosya kayts ierii ile ayn olup olmadn test etmek iin de XORWF komutu kullanlabilir. Eer veriler eit ise STATUS kaytsndaki sfr bayra (Z) 1 olur. te bu biti test ederek verilerin ayn olup olmadn kontrol edilebilir.
rnein. B portundaki deerin h4C olup olmadn test etmek iin gereken program paras yazlsn. Bunun iin kullanlacak komut satr,
MOVLW h4C ;W= h4C TEST_PORTB XORWF PORTB,F ;PORTB=(PORTB XOR W) BTFSS STATUS,2 ; STATUS<2>=1 mi? (Z=1 mi?) GOTO TEST_PORTB; hayr.Tekrar test et. DEVAM ;evet. Sonraki komutlar MOV . . .
XORLW ve XORWF komutlaryla sadece verilerin eit olup olmad testi yaplabilir.
Bu ilem iin istenirse SUBLW ve SUBWF komutlar da kullanlabilir. Ayrca bu iki komutla byk / kk m? testleri de yaplabilir.
1.6.13.5. Bir Baytlk Veriyi Sfr ile Karlatrmak
W kaytsnn ieriindeki 1 baytlk verinin 0 olup olmadn anlamak iin h00 sabit verisiyle ORlanr. Bu ilem iin IORLW komutu kullanlr.
Bir kaytnn (f) ieriindeki 1 baytlk verinin 0 olup olmadn anlamak iin nce W kaytsna h00 sabit verisi yklenir. Sonrada W ile F kaytlar ORlanr. Bu ilem iin ise IORWF komutu kullanlr.
ORlama sonucunda sonu 0 ise STATUSun 2.biti (Z) 1 , deilse 0 olacaktr. Bu biti kontrol ederek program ynlendirilebilir.
rnein, W kaytsnn 0 olup olmad aadaki gibi test edilebilir:
TEST_W IORLW h00 ;W=(W OR h00) BTFSS STATUS,Z ;Sonu sfr m? (Z=1 mi?) GOTO TEST_W ;hayr.Tekrar kontrol et. DEVAM . ;evet.Programn devam..
58 1.6.14. Aritmetik lemler
PICler baz aritmetik ilemlerin yaplmasna da izin verir. Bu modlde 8 ve 16 bitlik saylarn toplanmas ve karlmas grlecektir. Bunun iin ADDLW, ADDWF, SUBLW, SUBWF komutlarn kullanlacandan, mikrodenetleyici komutlar konusunda ilgili komutlarn incelenmesi yerinde olacaktr.
1.6.14.1. 8 Bit Toplama
8 bitlik ( 1 Bayt ) lik iki veri iki ek ilde toplanabilir:
W kayts ile sabit bir say toplanr, sonu W kaytsndadr (ADDLW). W kayts ile dosya kayts (f) toplanr, sonu hedef kaytsndadr (ADDWF).
ki saynn toplamndan elde edilen sonu hFFden bykse tama olaca iin STATUS kaytsndaki elde bayra (C) 1 olacaktr.
rnek: nce W kaytsna h25 deerini ykleyip daha sonrada W ile hA3 sabiti toplayan program paras yazlsn. Elde bayrann durumunu bulunuz.
rnek: nce W kaytsna h7A deerini, TOPLAM kaytsna da hDD ykleyip daha sonrada W ile TOPLAM kaytlarn toplayan ve sonucu TOPLAM kaytsna kaydeden program paras yazlsn. Elde bayrann durumunu bulunuz.
8 bitlik ( 1 Bayt ) lik iki veri iki ekilde karlabilir:
Sabit bir saydan W kayts karlr, sonu W kaytsndadr (SUBLW). Dosya kayts (f) ieriinden W kayts karlr, sonu hedef kaytsndadr (SUBWF). karma ilemi yaplrken karlacak saynn tersi alnp 1 eklenir (2li tmleyeni alnr). Daha sonra her iki say da toplanr. PIC bu olay otomatik olarak kendi yapar. Bu nedenle kk saydan byk say karlrsa C=0 (sonu negatif), byk saydan kk say karlrsa veya saylar eit ise C=1 (sonu pozitif) olur. Yalnz kk saydan byk say karlrsa gerek sonucu bulmak iin, sonucun 2li tmleyeni alnmaldr. Bu programcnn sorumluluundadr.
rnek: nce W kaytsna h25 deerini ykleyip daha sonrada hA3sabitinden Wyi karan program paras yazlsn. Elde bayrann durumunu bulunuz.
60 hA3= b1010 0011 1010 0011 SUB h25= b0010 0101>2li tmleyeni> 1101 1011 1 0111 1110 W = h7E ve C=1 Sonu pozitif olur.
rnek: nce W kaytsna h40 deerini, FARK kaytsna da h25 ykleyip daha sonrada FARK kaytsndan Wyi karan ve sonucu FARK kaytsna yazan program paras yazlsn. Elde bayrann durumunu bulunuz.
MOVLW h40 ;W= h40 MOVWF FARK ;FARK= h40 MOVLW h35 ;W= h35 SUBWF FARK,1 ;FARK= h40- h35= hF5 ;Yukardaki rnekteki ;gibi PIC 2li tmleyen ile ;hF0sonucunu buldu. ;(C=0 sonu negatif).
1.6.14.4. 16 Bit karma
Kaytlar 1 baytlk olduklar iin 16 bitlik (2 bayt) verilerin karlmas iin 2 kayt kullanmak gerekecektir. 2 baytlk veri 0-65535 onlu saylar ifade edebilecektir. Bu ilemi yapmak iin,
karlacak iki saynn nce alt (LSB) baytlar birbirinden karlr. Eer alt baytlarn karlmasndan bor varsa (C=0) , st baytlardan birisinden 1 karlr. st baytlar birbirinden karlr.
rnek: A= h33A5 ve B= h8EDE saylarn karan (B-A) sonucu C adnda bir kaytya atan program paras yazlsn.
zm: A= 33 A5 B= 8E DE
AH AL BH BL eklinde saylar yklemek iin 4 kayt gerekiyor. Ayrca Sonucun bulunaca kayt da CH ve CL olarak 2 tane olmaldr.
evrim tablolar sral deer alma ilemleri gereken yerlerde kullanlr. Bu ekilde bir kod baka bir koda evrilebilir. rnein, B portuna balanan 7 segment display zarinde hexadesimal karakterler grmek isteniyor. evrim tablosunda hexadesimal koda karlk gelen uygun kodu B portuna gndermek gerekir. Ya da bir adm motorunu belirli bir ekilde dndrmek iin porta balanm step motoruna sral ikili deerleri gndermek gerekir. Bu tip durumlarda evrim tablolarndan faydalanlr.
1.6.15.2. evrim Tablolarnn Kullanm Yerleri ve Kullanm
evrim tablolarnn kullanm iin PCn (program counter) yapsnn iyice anlalmasnda fayda olacaktr. Program sayac (PC), 13 bit geniliindedir. Dk byte PCL registeri, okunabilir ve yazlabilir bir kayt olup bellein h'02 adresinde yer alr. PCnin yksek byte , PCLATH registerinden gelir ve direkt olarak okunamaz ya da yazlamaz. PCLATH (PC latch high) registeri PC<12:8> iin bir tutma registeridir ve PICe gerilim uygulandnda (power on reset) tm bitleri 0dr. PC yeni bir deerle yklendii zaman PCLATHn ierii program sayacnn stteki bytena transfer edilir. Bu olay PCLye yazlmda CALL veya GOTO esnasnda olur. PCnin yksek bitleri PCLATHdan yklenmitir. Bu olaylar ekil 1.17 ve ekil 1.18de gsterilmitir.
ekil 1.17: Hedefi PCL kayts olan komutlarn PCyi yklemesi
62
ekil 1.18: GOTO ve CALL komutlarnn PCyi yklemesi GOTO ve CALL komutlaryla kullanlan 11 bitlik adreslemeler 2 KBlk program bellei bulunan PIClerde (16FCxxx ve16Fxx) herhangi bir adrese eriim iin yeterlidir (2 11 =2KB). 1KB bellei olanlarda (16F84) ise 10 bit yeterlidir (2 10 =1KB).
evrim tablolarnn kullanm iin ayrca RETLW komutunun da iyice anlalmas gerekir. Bu komut RETURN komutu gibi anaprograma dn salar. Tek fark dn esnasnda W kaytsna bir sabit say ykler.
rnek: B portunun ularna bal 7 sagment display in 0-F arasnda saydran program yazlsn.
zm: ncelikle hexadesimal koddan 7 sagment display koduna dnm tablosu karlmaldr. Hexadesimal say 7 segmentte grlecek 7 segment 7 segment kodu Say ularndaki veri 00 0 00111111 3F 01 1 00000110 06 02 2 01011011 5B 03 3 01001111 4F 04 4 01100110 66 05 5 01101101 6D 06 6 01111101 7D 07 7 00000111 07 08 8 01111111 7F 09 9 01101111 6F 0A A 01110111 77 0B B 01111100 7C 0C C 00111001 39 0D D 01011110 5E 0E E 01111001 79 0F F 01110001 71 Nokta . 10000000 80
63 imdi de program yazlsn. Programn tablodan deer alma ve gecikme altprogramna dallan blmnde u olaylar gerekleir:
AND komut satrndaki ifade ile Wnin st 4 biti maskelendi. Dolaysyla SAYAC deeri hF=15 deerini geemez [0-15] aras sayar ve her sayda tablodan bir deer alp B portuna bal 7 segment displayde gstererek GECKME alt programna dallanr. ;====hex.asm====== LIST P=16F84 INCLUDE P16F84.INC SAYAC1 EQU h0C tanmlamalarn yapld SAYAC2 EQU h0D blm SAYAC EQU h0E CLRF PORTB BSF STATUS,5 B portu k olarak CLRF TRISB ayarland. BCF STATUS,5 MOVLW h00 SAYAC sfrland. MOVWF SAYAC
TEKRAR MOVF SAYAC,W tablodan deer al ve ANDLW b00001111 gecikme altprogramna CALL HEX_7SEGMENT dallan. MOVWF PORTB INCF SAYAC,F CALL GECIKME GOTO TEKRAR
Mikrodenetleyicilerle yeni almaya balayanlar kesme (interrupt) kelimesini duymalarna ramen kullanmlarnn zor olduu dncesiyle programlar iersinde kullanmaktan ekinir. Oysa renilmesi ve uygulamas pek de zor olmayan kesme altprogramlar kullanarak program ierisinde kullanlacak komut says azaltlabilir ve bir ok mantksal karklklar nlenebilir.
1.6.16.1. Kesme
Kesme ilemini gnlk hayattan bir rnek vererek aklayalm. Mesela yemek yiyorsunuz ve telefon ald. Ne yaparsnz? Yemek yemeyi bir sre iin brakr, telefona bakar sonra dnp yemek yemeye devam edersiniz. te gnlk hayatta karlatnz bir kesme. Asl iiniz yemek yeme olay iken ihtiyatan (telefon almas) dolay asl iinizi brakp dier bir ii yaptnz (telefona bakma) ve geri dnp asl iinizde kaldnz yerden devam ettiniz.
Mikrodenetleyicilerdeki kesme olay yukardaki rnee olduka benzerdir. Kesme, mikrodenetleyicilerin herhangi bir kesme kaynandan gelen sinyal nedeniyle almakta olan program brakmas ve nceden hazrlanan kesme altprogramn altrmas olaydr. Alt programn almas bittikten sonra ana program kald yerden itibaren tekrar almasna devam eder.
65
PC=>TOS(Yn) ve Kesme vektr (h004)=>PC gerekleir.
TOS(Yn) =>PC yaplarak ana programa dnlr.
ekil 1.19: Kesme alt program kurgusu
1.6.16.2. INTCON Kayts (Kaydedicisi)
INTCON register, btn kesme kaynaklar iin olan eitli yetkilendirici bitleri ieren, okunabilir ve de yazlabilir trde bir registerdr.
Aada PIC16F8X mikrodenetleyicisi iin INTCON kaytsnn her bir bitinin hangi durumlarda 1 ve 0 olaca gsterilmitir:
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W- x GIE EEIE T0IE INTE RBIE T0IF INTF RBIF bit7 bit0 R = Okunabilir bit. W = Yazlabilir bit. -n = G reseti (POR reset) durumundaki bit deeri. bit 7: GIE:Global kesme biti yetkisi. 1=Tm kesmelere yetki verir. 0=Tm kesmeleri yetkisizletir. bit 6: EEIE:EEPROM bellee yazma ilemi tamamlama kesim yetki biti. 1= EEPROM yazma tamamlama kesmesine yetki verir. 0= EEPROM yazma tamamlama kesmesine yetkiyi kaldrr. Kesme_altprogram
bit 4: INTE: RB0/INT hric kesmesi yetki biti. 1=RB0/INT kesmesine yetki verir. 0=RB0/INT kesmesine yetkiyi kaldrr.
bit 3: RBIE: Port B (4,5,6ve 7. bitleri) deiiklik kesmesi yetki biti. 1= Port B deiiklik kesmesine yetki verir. Yani B portundaki deiiklikler kesme oluturur. 0= Port B deiiklik kesmesine yetkiyi kaldrr.
bit 2: T0IF: TMR0 saycs tamas durum bayra. 1=TMR0 tamtr (Yazlmn iinden silinmesi gerekiyor.). 0=TMR0 tamamtr. Zaman am yok. bit 1: INTF: RB0/INT hric kesme durum bayra. 1=RB0/INT kesmesi meydana gelmitir. 0=RB0/INT kesmesi meydana gelmemitir. bit 0: RBIF: Port B deiiklik bayra. 1=RB7:RB4 pinlerinden en az bir tanesinin durumu deiti (yazlm iinden silinmesi gerekiyor). 0=RB7:RB4 pinlerinden hi bir tanesinde durum deiiklii yoktur.
1.6.16.3. Kesme Kaynaklar
Kesme kaynaklar mikrokontrolr ailesine bal olarak farkllk gsterir. Aada PIC 16F8X ailesi iin olabilecek kesme kaynaklar sralanmtr.
Hric (External) kesme: PIC16F84n RB0/INT ucundan gelen sinyal ile oluur. Hric kesmelerin kullanabilmesi iin iki ey gereklidir: Yazlm ve donanmdr. Yazlm aracl ile B portunun RB0 ucu, dardan gelebilecek kesmeyi alabilecek ekilde hazrlanmaldr. Bunun iin iki ilem yaplr: RB0 ucu giri olarak ynlendirilmelidir. INTCON kayts ierisindeki ilgili bayrak (INTE bayra) kullanlarak hric kesme ilemi iin yetkilendirilmelidir.
Hric kesmenin kullanlmas iin bir de donanm gereksinimi vardr. Bu da RB0 ucundan kesme sinyalini verecek elektronik devredir.
Ayrca RB0 ucundan uygulanacak sinyalin kenar tetiklemesi nemlidir. OPTION kaytsnn 6.biti kesmeyi yapacak sinyalin kenar tetiklemesini belirler. Eer bu bit 0 ise kesme sinyalin den kenarnda 1 ise ykselen kenarnda gerekleir.
67
Kesme alt programn almas esnasnda gelebilecek yeni kesmeleri engellemek iin INTCON kaytsndaki INTE biti 0 yaplarak hric kesme yetkisi kaldrlmaldr. Bununla beraber bir hric kesme olursa INTCON kayts iindeki INTF 1 olur. Bu bayrak kesme altprogram ierisinde tekrar 0 yaplmaldr. Aksi durumda tekrarlanan kesmelerle karlalr.
TMR0 saycsnda oluan zaman am kesmesi yani TMR0 saycsnn hff den h00a gelmesi olaynda oluur. Bu konu ileride TMR0 saycs konusunda ilenecektir. B Portunun 4,5,6 veya 7. bitlerindeki lojik seviye deiikliinde olur. B portunun 4,5,6 ve 7.bitlerindeki lojik deiim INTCON kaytsnn RBIF bayran 1 yapacaktr. Bu kesme INTCON kaytsnn RBIE biti ile aktif ya da pasif yaplabilir. B portundaki deiiklii alglamak iin bu portaki en son deer, RB4-RB7 ularndan okunan veri ile karlatrlr. Eski ve yeni okunan veri ORlanr. Farkllk varsa RBIF bayra 1 olur.
B Portu kesmesi aadaki gibi silinebilir:
RBIE biti silinmek suretiyle B Portunu okuduktan sonra RBIF bitini silmek suretiyle. EEPROM bellee yazma ileminin tamamlanmas: EEPROM veri yazma zaman yaklak 10 ms kadardr. Yazma ilemi bittiinde EEIF bayra 1 olur ve yazmann bittiini gsterir. EEIF bayra EECON1 kaytsnda bulunur.
Bir kesme olaynn meydana gelmesi esnasnda INTCON kaytsnn GIE biti 0 olur. Bu ilem kesme alt programnn almas esnasnda yeni bir kesmenin olmamas iin PIC tarafndan otomatik olarak yaplr. Kesme altprogram almasn RETFIE komutu ile sona erdirip ana programa dnld anda ise sonraki kesmelerin geerli olabilmesi iin tekrar otomatik olarak 1 yaplr. Kesme ileminde meydana gelen olaylar ekil 1.21den incelenebilir.
Bir kesme meydana geldiinde kesme vektr (interrupt vector) denilen adres gsterici PCye program belleinin h0004 adresini gsterir. Kesme altprogramn ilk komutu ( genellikle GOTO ) buraya yazlmaldr.
Kesme kullanlmad zaman ana program, program belleinin h0000 adresinden itibaren h0004 adresine doru problem karmadan alr. Eer kesme kullanlyorsa programc tarafndan baka bir alma sras dzenlenmelidir. Bu dzen aadaki gibi olabilir. ORG h000 ;Reset vektr adresi GOTO BASLA ;Ana program balangc ORG h004 ;Kesme vektr adresi GOTO KESME
69
ekil 1.21: Kesme ileminde oluan olaylar Bir kesme esnasnda sadece geri dnme PC deeri ynda saklanr. ounlukla kullanclar bir kesme esnasnda anahtar register deerlerini saklamak isterler (rnein W registeri ve STATUS registeri). Bu, yazlmda yerine getirilir.
70 rnek 1de STATUS ve W registerlerinin deerleri saklanm ve tekrar depolanmtr. Kullanc tanml registerler W_TEMP ve STATUS_TEMP , W ve STATUS register deerleri iin geici depolama yerleridir.
rnek 1de aadakiler yaplmaktadr:
W registerini bir deikene (W =W_TEMP) ykle. STATUS registerini bir deikene (STATUS=STATUS_TEMP) ykle. Kesme altprogramn altr . STATUS registerini geri ykle (STATUS_TEMP= STATUS). W registerini geri ykle (W_TEMP=W). Kesme altprogramndan geri dn (RETFIE).
1. rnek : Kesme esnasnda W ve STATUS kayt deerlerini saklamak MOVWF W_TEMP ; W , TEMP registerine kopyalanr. SWAPF STATUS , W ; STATUS ieriini SWAPla ve Wye ykle. MOVWF STATUS _TEMP ; STATUS ieriini STATUS_TEMP ;registerine ykle. ; ; ;
SWAPF STATUS_TEMP , W ; STATUS_TEMP ieriini yeniden ;SWAPla ve Wye ykle. MOVWF STATUS ; Wyi STATUS Registerine ykle. SWAPF W_TEMP , F ; W_TEMP ieriini SWAPla sonucu ;W_TEMPe tekrar ykle. SWAPF W_TEMP , W ; W_TEMP ieriini SWAPla sonucu ;Wye tekrar ;ykle.
Yukardaki ilem iin neden MOVF komutunu kullanmadmz aklnza gelmi olabilir. Kullanlamaz, nk MOVF komutu, STATUS kaytsndaki Z bayran deitireceinden, programda bu bayran kontrol ile yaplan ilemlerde hatalara neden olacaktr.
2. rnek: PIC16F84e enerji verildiinde A portundaki tm ledler snk iken B portunun 0.bitine bal (RB1) bir butuna basldnda A potuna bal ledler yansn. Daha hric kesme ile (RB0/INT) ledler tekrar sndrlsn. Kesme, kesme sinyalinin den kenarnda gereklesin.
zm: Problemdeki verilere gre aadaki algoritma izilebilir: Kesme altprogram buraya yazlmal.
71
ekil 1.22: 2. rnekteki programn algoritmas imdi de asm program yazlsn. ;====kesme.asm====== LIST P=16F84 INCLUDE P16F84.INC tanmlamalarn yapld ORG h000 blm GOTO BASLA ORG h004 GOTO KESME
72 BASLA BSF STATUS,5 A portu k, B portu giri olarak CLRF TRISA ayarland. MOVLW hFF MOVWF TRISB MOVLW b10111111 ;den kenarda kesme pals , MOVWF OPTION_REG ;gelecek ekilde OPTION_REGi kur. BCF STATUS,5 ;Bank0a ge. CLRF PORTA ;A portunu sfrla. BCF INTCON,1 ;INF bayran sil. BSF INTCON,7 ;Global kesmeyi etkinletir. BSF INTCON,4 ;Hric kesmeyi aktifletir.
TEST_PORTB BTFSS PORTB,0 ;PORTA<0>=1 mi? GOTO TEST_PORTA ;hayr.Tekrar test et. MOVLW hFF ;evet. W=hff ykle. MOVWF PORTA ;A portundaki tm ledleri yak. GOTO TEST_PORTB END KESME BCF INTCON,1 ;INTF bayran sil. MOVLW h00 ;W=h00 ykle. MOVWF PORTA ;A portundaki tm ledleri sndr. RETFIE END
1.6.17. Donanm Sayclar
Zaman geciktirme dngleri konusunda, port klarna gnderilecek sinyaller arasnda bir gecikme olmasn istenildii zaman bunu yazlm (software) ile nasl yaplaca grld. Burada ise ayn ilemi donanm zamanlaycs (hardware) kullanlarak nasl yaplaca grlecektir. Bunun iin donanm zamanlaycs (TMR0) kullanlacak. Bu zamanlayc / sayclarn says kullanlan mikrokontrolre gre deimekle beraber, genel olan TMR0n kullanm grlecek.
1.6.17.1. Donanm Saycs ( Zamanlaycs )
Peki donanm zamanlaycs ya da saycs nedir? Belli bir deerden (genelde h00) balayp deeri yukar doru artan bir dosya kaytsdr. PICler iki tip zamanlaycya sahiptir, ilki TMR0 ad verilen 8 bitlik bir saycdr. Bu RAM bellein h01 adresinde bulunan zel bir kaytdr. Dieri de WDT (Watchdog timer) denilen bir zamanlaycdr. WDT zamanlaycs ileriki konularda ilenecektir.
1.6.17.2. TMR0 Saycs ( zamanlaycs )
73 TMR0 saycs RAM bellein h01 adresinde bulunan zel bir kaytdr. TMR0 programlanabilen bir saycdr. Yani saymaya istenilen bir saydan balatlabilir ve herhangi bir anda ierii silinebilir. Timer0 (TMR0) zamanlama/saycs aadaki zelliklere sahiptir:
8 bitlik zamanlama/sayc Okunabilirlik ve yazlabilirlik Programlanabilen frekans blme deeri zellii(prescaler) Dhil ve hric saat pals seimi FFhdan 00ha derken tama zerinden kesme oluturma Hric saat iin den veya ykselen kenar seimine (edge select) sahiptir.
TMR0 saycsnn nemli zelliklerinden biri de ana program veya kesme altprogramlar alrken sayma ilemini durdurmamasdr. Sayma ileminde FFhdan 00ha geite oluan tama INTCON kaytsnn TOIF bayranda grlr ve bu bayrak 1 olur (INTCON kayts konusuna bakabilirsiniz). stenirse bu bayrak test edilerek bir kesme altprogram altrlabilir.
1.6.17.3. Option Kayts
OPTION registeri, TMR0/WDT iin frekans blme iin gerekli bitleri bulunduran, hric kesme sinyal tipini belirleyen, PORTB zerindeki zayf Pull-up direnlerini ayarlayan eitli kontrol bitlerini ieren, TMR0 veya WDTyi seme bayra bulunduran, yazlabilen ve de okunabilen tipte bir registerdir.
bit 7: RBPU:PORTB Pull-up direnleri yetki biti. 1=PORTB Pull-uplar pasif durumundadr (yetki vermeme). 0=PORTB Pull-uplar aktif durumundadr (yetki verme). Pull-Up direnleri aktif yapldnda B portu pinleri 50K luk direnlerle +Vccye balanr. bit 6: INTEDG:Hric kesme sinyali kenar seim biti. 1=RB0/INT pini sinyalin ykselen kenarnda kesme yapar. 0= RB0/INT pini sinyalin den kenarnda kesme yapar.
bit 5: TOCS:TMR0 sinyal kayna seim biti. 1=RA4/T0CKI pini zerinden hric sinyal. 0=Dhil komut palsleri (CLKOUT).
bit 4: T0SE: TMR0 sinyal kayna kenar seim biti. 1=RA4/T0CKI pini zerindeki sinyalin ykselen kenarnda. 0=RA4/T0CKI pini zerindeki sinyalin den kenarnda.
74
bit 3: PSA: Frekans blc seim biti. 1= Frekans blc says ,WDTa tayin edilir. 0= Frekans blc says ,TMR0a tayin edilir. bit 2-0: PS2:PS0:n-lc oran seim bitleri
ekil 1.24: TMR0 yaps Sayc iindeki saynn artmas iin gerekli saat pals iki kaynaktan alnabilir: Dhil komut sinyali (T0CS=0 durumu) Hric saat palsi (T0CS=1 durumu). Bu durumda hric sinyal A portunun 3.bitinden (RA4) uygulanr. Hric sinyal PIC tarafndan saylmas gereken bir sinyal de olabilir. Sinyal kaynandan gelen sinyal direkt olarak TMR0 besleyebilecei gibi frekans blc aracl ile de besleyebilir. OPTION kaytsnn 0,1 ve 2. bitleri kullanarak 8 farkl frekans blme deeri seilebilir. TMR0 saycsn tetikleyecek sinyal, frekans blc kullanlmadan direkt olarak kullanlmak isteniyorsa frekans blme deeri WDye atanr. Bu ilem PSA biti ile gerekletirilebilir. Ayrca frekans blme oranlarnn TMR0 ve WDT iin farkl olduuna dikkat edilmelidir. Frekans blme deerleri TMR0a atandnda TMR0a yazmak iin kullanlan tm komutlar frekans blme deerini siler (CLRF , MOVWF, BSF.gibi).
75 Frekans blme deeri kullanlmadan direkt olarak hric sinyal kullanlrsa dhil komut sinyali ile elemeyi (senkron) salamak iin 2 saykllk bir gecikme salanr. TMR0 saycsnda k sinyalleri iki ekilde oluur: RAM bellein h01 adresindeki TMR0 kaytsnn okunmasyla olur. Saycnn hffden h00a geiinde oluan tamadan dolay INTCON kaytsnn T0IF bayrana 1 yazlmas durumunda olur. Kaynak olarak hric sinyal seildiinde istenirse bu sinyaller saylabilir. Bu durumda TMR0 sinyal sayc olarak kullanlm olur. Bu uygulama devir sayc, rn saydrma gibi ilemler iin kullanlabilir. Frekans blme deerleri, TMR0 veya WDT sayclarnn ka dhil komut sayklnda bir defa bir st sayya geiini belirleyen orandr. rnein,
TMR0 oran ise 2 komut sayklnda bir defa st sayya gei olur. TMR0 oran 1/8 ise 8 komut sayklnda bir defa st sayya gei olur. TMR0 oran 1/256 ise 256 komut sayklnda bir defa st sayya gei olur.
Bilindii gibi program belleine yerletirilen komutlarn almas iin PICe hric bir osilatrden saat pals (f osc )uygulamak gerekir. Bu frekeans PIC tarafndan 4e blnerek OSC2 ucundan dar verilir. te bu sinyalin 1 saykl iin geen sre (peryodu), bir komutun almas iin geen zamandr. Bu durumda:
F komut = f osc / 4
T komut = 1 / F komut
TMR0 sayma aral zaman= T komut x ( TMR0 oran) -1
Kesme olay saynn hffden h00a geiinde olutuuna gre ve hff=256 olduundan,
Kesme gecikmesi = TMR0 sayma aral zaman x 256
olur.
Btun bu formlleri tek formlde birletirilirse
(256-TMR0 ilk deeri) x ( TMR0 oran) -1
Kesme gecikmesi = S olur. f osc / 4
Prescaler: Frekans blme says (2,4,8,,256)
TMR0 ilk deeri: TMR0a atanan ilk say. Eer deer atanmamsa 0dr .
Bu formlden istenirse belli bir kesme sresi iin TMR0a yklenecek say forml de karlabilir. Bu durumda:
76 TMR0 ilk deeri = 256- [(Kesme gecikmesi x f osc ) / 4 x ( TMR0 oran) -1
] olur.
1. rnek: 4MHzlik kristal osilatr kullanan bir PICde, frekans blme deeri (prescaler) b000 seilirse kesmenin ne zaman olacan bulalm.
Frekans blme deeri (prescaler) b000 olduundan TMR0 oran olur.
F komut = f osc / 4 = 4Mhz / 4 = 1 Mhz
T komut = 1 / F komut = 1 / 1 Mhz = 1S
TMR0 sayma aral zaman= 1S
x ( TMR0 oran) -1
TMR0 sayma aral zaman= 1S
x ( 1 / 2 ) -1 = 2 S; yani her 2 Sde bir say yukar doru artyor. Kesme olay saynn hffden h00a geiinde olutuuna gre ve hff=256 olduundan,
Kesme gecikmesi = TMR0 sayma aral zaman x 256
Kesme gecikmesi = 2 S x 256
= 512 Slik periyotlarla kesme olay oluur.
Veya (256-TMR0 ilk deeri) x ( TMR0 oran) -1
Kesme gecikmesi = f osc / 4
(256-0) x 2
Kesme gecikmesi = = 512 S olur. 4 Mhz / 4
2. rnek: 4MHzlik kristal osilatr kullanan bir PICde, frekans blme deeri (prescaler) b110 ise 1.28 mslik gecikme iin TMR0a hangi saynn atanmas gerekir?
1.28 ms =1280 S yapar ve (prescaler) b110 iin TMR0 oran =1 /128dir. TMR0 ilk deeri = 256- [(Kesme gecikmesi x f osc ) / 4 x ( TMR0 oran) -1
] TMR0 ilk deeri = 256- [(1280 x 4Mhz
) / 4 x 128
] TMR0 ilk deeri = 246 desimal deeri bulunur.
Bunu hexadecimal formata dntrrsek hF6 olur.
TMR0 0dan deil de rneimizdeki gibi baka bir saydan balatlmak isteniyorsa yaplmas gereken TMR0a MOVWF komutu ile o saynn yklenmesidir.
77 Prescalar deerini, TMR0 dan WDT a veya WDTdan TMR0 a atama ilemi yaplrken prescalarn sfrlanmas nedeniyle PICin almas esnasnda istenmeyen resetleri engellemek iin aadaki komut sras takip edilerek prescalar tayininin Timer0dan WDTye deitirilmesi salanmaldr. Bu sra WDT mmkn klnmad durumlara da takip edilmelidir. Prescalar WDTden Timer0a deitirmek iin de verilen sra takip edilmelidir. TMR0 dan WDT a prescalar deeri atamak (TMR0WDT) iin aadaki sra takip edilmelidir.
BCF STATUS RP0 ; Bank 0a ge. CLRF TMR0 ; TMR0 ve prescaler silinir. BSF STATUS, RP0 ; Bank 1e ge. CLRWDT ; WDT silinir. MOVLW bxxxx1xxx ; Yeni prescaler WDT iin seilir. MOVWF OPTION ; OPTION kaytsna yaz. BCF STATUS, RP0 ; Bank 0a ge.
WDTdan TMR0a prescalar deeri atamak (WDTTMR0) iin aadaki sra takip edilmelidir. CLRWDT ; WDT ve prescalar silinir. BSF STATUS, RP0 ; Bank 1e ge. MOVLW bxxxx0xxx ;TMR0, yeni prescalar deeri ve saat kayna seilir. MOVWF OPTION ; OPTION kaytsna yaz. BCF STATUS, RP0 ; Bank 0a ge.
rnek: imdi de B portunun 1.bitinden kare dalga sinyal veren program yazlsn. Sinyal kayna olarak dhil sinyal kayna kullanlsn ve TMR0 orann 1 / 256 olacak ekilde prescaler deeri ayarlansn. k sinyali PICin RB1 bitine osilaskobun balanmasyla izlenecektir.
ekil 1.26daki ak diyagram incelenmelidir. Bu diyagramda:
TMR0 <6>=1 ifadesiyle TMR0n 6.biti 1 mi? sorgusu yaplmtr. GECIKME etiketi ile alt programa dallanlmtr. Burada Trke karakterlerin kullanlmad hatrlanmaldr. Program iindeki MOVLW b11010111 ve MOVWF OPTION_REG komut satrlar ile OPTION kayts aadaki gibi ayarlanmtr:
78
1 1 0 1 0 1 1 1 Option kayts
ekil 1.25: Program iin OPTION kaytsnn kurulmas
TMRO kaytsnn tamam olunabilir veya bu rnekteki gibi sadece bir biti test edilebilir. TMR0 <6>=1 olduunda ulalan say b0100 0000=64tr (onlu). PICin 4 Mhzlik kristal osilatrle kullanlacan dnrsek GECKME altp rogramnn sresi aadaki gibi bulunabilir:
F komut = f osc / 4 = 4Mhz / 4 = 1 Mhz T komut = 1 / F komut = 1 / 1 Mhz = 1S TMR0 sayma aral zaman= 1S
x ( TMR0 oran) -1
TMR0 sayma aral zaman= 1S
x ( 1/256 ) -1 =256S TMR0 64e kadar sayacandan GECKME = 256S x 64 =16384 S = 16.384 ms olur. Bu durumda PortB<1> pininden kacak kare dalga sinyalin frekans F= 1/t = 1/16.384 ms = 61 Hz olur. Prescaler (111) TMR0 oran(1/256) Prescaler TMR0'a atanr. TMR0'n say art harici sinyalin den kenarnda. ( Burada kullanlmyor.) TMR0 sinyal kayna dhil komut saykl Harici kesme ykselen kenarda PortB pull-up direnleri geersiz.
79
ekil 1.26: Programn ak diyagram imdi de algoritma programa dklsn:
LIST P=16F84 INCLUDE P16F84.INC BSF STATUS,5 ;Bank1e ge. CLRF TRISB ;B portunun tm k. CLRWDT ; WDT ve prescalar sil. MOVLW b11010111 ;TMR0, yeni prescalar deerini ve sinyal ;kaynan se ve MOVWF OPTION_REG ;OPTION kaytsna yaz. BCF STATUS,5 ;Bank0a ge. CLRF PORTB ;B portunun tm ularn 0 yap. PALS BSF PORTB,1 ;PortB 1.bit lojik 1 yap. CALL GECIKME ;GECIKME altprogramn ar. BCF PORTB,1 ; PortB 1.bit lojik 0 yap. CALL GECKME ;GECIKME altprogramn ar. GOTO PALS GECKME CLRF TMR0 TEST_BIT BTFSS TMR0,6 GOTO TEST_BIT RETURN END
80
1.6.17.5. WDT Zamanlaycs
PIC donanm ierisinde bulunan ikinci bir zamanlaycdr. Trke karl beki kpeidir. Mikrodenetleyici ierisinde bulunan programn bir anlamda bekiliini yapt iin bu ad verilmitir. Peki bu ii nasl yapmaktadr? PICin nceden belirlenen srede yapmas planlanan bir ii zamannda yapmadysa yani dng kontrolden kp da kilitlendiyse WDT devreye girer ve PICi resetler.
Watchdog Timer, baka hric bileenler talep etmeyen serbest alan on-chip RC osilatrdr. Bu osilatrn WDTa salad nominal zaman am sresi 18 msdir. Prescaler deeri artrlarak bu deer 2-3 Sye kadar karlabilir. WDT RC osilatr, OSC1/CLKIN pininin RC osilatrnden ayrlmtr. Yani WDT , OSC1/CLKIN ve OSC2/CLKOUT pinlerindeki saat pals (clock) dursa bile alacaktr. rnein , SLEEP komutu yrrle konduu durumlarda buna rastlanr. Normal iletim esnasnda bir WDT zaman am (time-out) PIC reseti yaratacaktr. Eer PIC SLEEP modunda ise bir WDT cihazn uyanmasn (wake-up) ve normal iletimine devam etmesine sebep olur. OPTION kaytsnn sadece ilk 4 biti (prescaler ve TMR0/WDT seim bitleri) WDTla ilgilidir. OPTION kaytsnn 3.biti 1 yaplarak WDT seilir ve prescaler bitleri (OPTION<0:2>) ile de frekans blme deeri ayarlanr. WDTn, CLRWDT komutuyla reset yapldktan sonra saymasn tamamlayp batan tekrar saymaya balad ana kadar geen sreye zaman am sresi (time-out) denir. WDT saymasn tamamlad anda zaman am sinyali verir. Bu sinyal STATUS kaytsnn 3. ve 4. bitlerindeki (TO ve PD bayraklar) bayraklarn durumunu deitirir. Bu konumda STATUS kayts konusuna dnlp ilgili bitler incelenmelidir. Eer WDT ile kontrolden km bir program tekrar resetleyerek kontrol ele almak planlandysa ana program banda STATUS kaytsnn bu bitleri kontrol edilmelidir. Daha sonra da reset gerekletikten hemen sonra da bu bitler kontrol edilmelidir. Bylece WDTn zaman am sresi dolduunda program ak baka bir yere dallandrlabilir. rnek program paras aadaki gibi olabilir.
WDT_KONTROL BTFSS STATUS,TO ;TO bayra 1 mi? CALL KUR ;hayr (zaman am olumu) , KUR ;altprogramn ar. MOVLW hCC ;Evet (zaman am olumam) . ;programa devam et.
PIC ierisinde bulunan WDT zamanlaycsnn durumunu konfigrasyon bitleri yazlrken belirlenebilir. Bu konfigrasyon bitleri program ierinde aadaki gibi yazlabilir.
81 _CONFIG _CP_OFF & _WDT_ON &_ PWRT_ON & _RC_OSC Bu ifadede _CP_OFF ;kod koruma yok. _WDT_ON ;WDT aktif _ PWRT_ON ;Power-On-Reset var. _RC_OSC ;RC osilatr kullnlyor. (Dier seenekler _LP_OSC, _XT_OSC, _HS_OSC)
stenirse konfigrasyon bitleri PIC programlaycnn kendi programndaki fuses penceresinden de yaplabilir. WDT programn almas esnasnda geersiz yapmak mmkn deildir.
PIC16F84 mikrokontrol sadece dijital verileri giri olarak kabul eden ve yine sadece dijital k verebilen bir entegredir. Bu yzden analog veri girii ve k gereken durumlarda bu iler iin retilmi zel entegreler kullanmak gerekir. Bununla beraber PIC14C000 mikrodenetleyicisinin giriine uygulanan dijital sinyali dorudan analog voltaj k olarak verebilmektedir. Ayrca PIC16F877 mikrodenetleyicisi de giriine uygulanan analog sinyali dorudan dijital k olarak verebilmektedir.
82 1.6.18.1. Dijital Analog evirici
PICten kan dijital kelimeyi analog sinyale dntrmek iin kullanlacak yntemlerden biri AD558 entegresini kullanmaktr. nk bu entegre 8 bitlik dnm salamaktadr ve PIC iin kontol girilerine sahiptir. Dier bir yntem de PWM (Pals genilik modlasyonu) yntemini kullanmaktr. Bu yntemle ayrca bir entegre kullanmak gerekmez.
ekil 1.28de bir kare dalga sinyalin 3 farkl lojik 1 ve 0 sreleri iin voltmetrede lm deerleri (analog gerilim deerleri) grlmektedir. Dolays ile bu 3 gerilim deerleri ile ledleri srersek led parlaklklar birbirinden farkl olacaktr.
ekil 1.28: PWM sinyali ile analog gerilim retmek ve bekleme srelerini bir periyot iinde deitirirsek k derilimi de 0-5V arasnda deitirilebilir. Aadaki gibi bir gecikme alt program ile i ve bekleme sreleri belirlenebilir.
GECIKME MOVWF SAYAC TEKRAR DECFSZ SAYAC,1 GOTO TEKRAR RETURN
8 bitlik bir DA evriminde, olabilecek en byk dijital deer hFF olacandan bu deer bir evrim periyodu oluturan say olarak alnmaldr. Yani PWM k periyodu SAYAC deerinin hFF=d256olmas durumunda oluur. Bu durumda i ve bekleme srelerini,
83 256 says 5V oluursa
Say i V analog oluur.
Say i x 5V = 256 x V analog
Say i =(256x V analog )/5 , V analog = (Say i x 5)/ 256 , Say bek =256 - Say i
formlleri bulunur.
rnein, 0.5 Vluk analog gerilim elde etmek iin GECIKME altprogramnda SAYAC kaytsna yklenecek i ve bekleme saylar bulunsun. Say i =(256x V analog )/5=(256 x 0.5)/5=25.6=26 =h1Ave Say bek =256 - Say i =256-26=230=hE6 olur. Bu kadar basit. imdi de bir programla PWM yntemi ile analog sinyal retelim: rnek: B portunun 1. bitinden 2 Vluk analog deer reten program yaznz. zm: nce i ve bekleme saylarn bulalm. Say i =(256x V analog )/5=(256 x 2)/5=102.4= 103 = h67ve Say bek =256 - Say i =256-103=153=h99 olur.
ekil 1.29: rnek progamn algoritmas
84 Programda B portunun 1.biti nce 1 yaplyor. Daha sonra i zamann belirleyen deer (h67) W kaytsna yklenip GECIKME alt progamna dallanlyor. GECIKME alt progamnda h67 deeri 0 olana kadar B portunun 1.biti 1 olarak kalyor. SAYAC deeri 0 olduunda ise anaprograma dnlyor. Bylece i zaman bitmi oluyor. Ana progamda B portunun 1.biti bu el 0 yaplyor. Daha sonra bekleme zamann belirleyen deer (h99) W kaytsna yklenip GECIKME altprogramna dallanlyor. GECIKME alt programnda h99 deeri 0 olana kadar B portunun 1.biti 0 olarak kalyor. SAYAC deeri 0 olduunda ise anaprograma dnlerek tekrar B portunun 1.biti 1 yaplyor. Bylece bekleme zaman da bitmi oluyor. Bu olay silsilesi sonunda B portunun 1.bitine bal voltmetrede 2 V oluuyor.
imdi de program yazlsn.
;######DAC.asm######### LIST P=16F84 INCLUDE P16F84.INC IS EQU h0C BEKLE EQU h0D SAYAC EQU h0E ORG h00 BSF STATUS,5 CLRF TRISB BCF STATUS,5 CLRF PORTB MOVLW h67 MOVWF IS MOVLW h99 MOVWF BEKLE TEKRAR BSF PORTB,1 MOVF IS,W CALL GECIKME BCF PORTB,0 MOVF BEKLE,W CALL GECIKME GOTO TEKRAR GECIKME MOVWF SAYAC DONGU DECFSZ SAYAC,1 GOTO DONGU RETURN
85 1.6.18.2. Analog Dijital evirici
PIC16F84 kontrolcsnde dhil ADC olmad iin bu i PIC16FF877 kullanarak gerekletirilecek.
16F877 analog giri iin A portunda 5, E portunda ise 3 pini kullanr (ekil 1.30u inceleyiniz.). Yani 8 kanall ADC olarak kullanlabilir. Bu pinlere balanacak scaklk, ses, k sensrleri veya potansiyometrelerden analog veri alnabilir. evrim sonucu 10 bitliktir.
ekil 1.30: 16F877 denetleyicisi pin diyagram ADC uyuma modunda da alabilir ve kendi i devre saatini (RC osilatrn) kullanr. ADC modl bu i iin 4 kayt kullanr: ADRESH, ADRESL, ADCON0 ve ADCON1. ADRESH ve ADRESL kaytlar, ADC dnm sonucunun st ve alt baytlarn tutar. ADCON0, ADC ileminin kontrolnde ADCON1 ise port pinlerinin konfigrasyonunda kullanlan kaytlardr. ADCON0 ve ADCON1 kaytlarnn i yaps ekil 1.31 ve ekil 1.32de verilmitir.
86
ADCS1 ADCS0 CHS2 CHS1 CHS0 GO/DONE - ADON 1=Dnm 1=AD alyor Osc modu; Analog kanal balad 0= AD kapal. 00:Fosc/2 seim bitleri 0=Bitti 01: Fosc/8 ( 000:AN0111:AN7) 10: Fosc/32 11: F RC
ekil 1.31: ADCON1 kayts
ADFM - - - PCFG3 PCFG2 PCFG1 PCFG0 AD sonu seim biti 0:Saa yanak AD PORT konfigrasyon bitleri 1:Sola yanak ekil 1.32: ADCON0 kayts
ekil 1.33: AD PORT konfigrasyon bitleri
ADC dnm yapmak iin u sra izlenir:
AD biriminin konfigrasyononu yap. Analog giri portunu belirle (ADCON1). Anlog giri kanaln se (ADCON0). AD dnm osilatrn se(ADCON0).
87 AD birimini aktifletir. PIC16877de ayrca AD kesmesi yaplabilir. stenirse AD kesme kullanlarak kesme altprogram da yazlabilir. Bu durumda ADIF bitinin silinip ADIE, PEIE, GIE yetkilerinin 1 yaplmas gerekir. Bunu yapmak iin aadakilerin bilinmesi gerekir.
ADIE biti 16F877nin PIE1 kaytsnda bulunur. PIE1 16F877nin kesme yetki durumlar hakknda iinde kontrol bitleri barndrr.
ADIE=1 AD kesmesi aktif. ADIE=0 AD kesmesi pasif.
PEIE ve GIE biti 16F877nin INTCON kaytsnda bulunur. INTCON 16F877nin kesme durumlar hakknda iinde kontrol bitleri barndrr. Burada sadece PEIE ve GIE biti bayraklar ile ilgileniliyor.
Gereken dolum sresini bekle (evrim zaman). GO/DONE bitini 1 yaparak evrime bala. evrimin bitmesini bekle. GO/DONE biti 0sa evrim bitmitir ya da AD kesmesini bekle. AD sonu yazma iftini oku (ADRESH:ADRESL). ADIF bayran 0 yap.
ADIF biti 16F877nin PIR1 kaytsnda bulunur. PIR1 16F877nin kesme durumlar hakknda iinde kontrol bitleri barndrr. Burada sadece ADIF bayra ile ilgileniliyor.
ADIF=1 ise AD evrimi tamamland. ADIF=0ise AD evrimi tamamlanmad.
Sonraki evrim iin 1 yada 2. basamaa git.
rnek: 16F877 denetleyicisinin AN0 kanalna bal bir potansiyometrenin oluturaca analog sinyal, 8 bit dijital kelimeye dntrlerek C portundaki ledlerde gsterilsin.
Bunun zm iin kaytlarn hangi banklarda bulunduunu gsteren 16F877nin kayt haritasna ihtiya olacaktr (ekil 1.34). Zaman gecikmesi iin TMR0 donanm zamanlaycsnn kullanldna dikkat edilir.
88
ekil 1.34: 16F877nin kayt haritas
89 ;********************************************************** ;* ADC.ASM ;********************************************************** ;* Microchip Technology Incorporated ;* 16 December 1998 ;* Assembled with MPASM V2.20 ;********************************************************** ;* Bu program A/D ;* A/D dnm iin kanal 0 seilmi, analog sinyal bir ;* potansiyometre zerinden salanmakta ve sonu ;* PORTCdeki ledlerde gsterilmektedir. ;********************************************************** list p=16f877 include "p16f877.inc" org 0x000 nop clrf PORTC ;Clear PORTC movlw B'01000001' ;Fosc/8, A/D etkin olacak ekilde movwf ADCON0 ; ADCON0 ayarla. bsf status,5 ; Bank1e ge. movlw b'10000111' ; TMR0 etkin, prescaler 1:256 olacak movwf OPTION_REG ;ekilde OPTION_REGi ayarla. clrf TRISC ;PORTC k. movlw B'00001110' ;sola yanak k format, 1 analog kanal movwf ADCON1 ; (AN0)girii ve VDD ve VSS referans ;olacak ekilde ADCON1i ayarla. bcf status,5 ;Bank0a ge. BASLA btfss INTCON,T0IF ; Timer0 tamas gerekleti mi? goto BASLA ;hayr.Tamay bekle. bcf INTCON,T0IF ;evet.T0IF bayran sil. bsf ADCON0,GO ; A/D evrimini balat. BEKLE btfss PIR1,ADIF ;evrim bitti mi? goto BEKLE ;hayr.Bitirmesini bekle. movf ADRESH,W ;Evet sonucu PORTCdeki movwf PORTC ;ledlere gnder. goto BASLA ;tekrarla. End
90 UYGULAMA FAALYET 8 ledin portlar ile kontroln yapnz.
lem Basamaklar neriler B Portuna bal 8 led , A portunun 0.bitine bal bir butona basldnda birbirine eklenerek aadaki gibi 1 sn. arayla sola doru kayarak yansn.
Program ak diyagramn iziniz. Programlama dilini seiniz. Programlama dilinin yazm kurallarnna dikkat ederek assemler komutlara gre programnz yaznz. Program MPASM ile derleyiniz. Derleme sonucunda oluan HEX dosyasn, programlama kart ile mikrodenetleyiciye yaznz. Ak diyagram sembollerini amacna uygun kullannz. Programn balk ksmnda gerekli tanmlamalar yapnz (LIST, INCLUDE). Programda kullandnz mikrodenetleyici komutlarnn say ve karakterlerin yazlna dikkat ediniz. Programn tamamn ya byk ya da kk harfle yazmak yazm hatalarn azaltacaktr. Program banda giri/k portlarn kurduktan sonra B portunu ve C (elde) bayran silerek programa balaynz. Programn derlenmesi sonucunda oluan HEX dosyas ASM dosyanzn bulunduu dizindedir (MPASM program dizininde deildir).
UYGULAMA FAALYET
91
KONTROL LSTES
Bu faaliyet kapsamnda aada listelenen davranlardan kazandnz beceriler iin Evet, kazanamadklarnz iin Hayr kutucuklarna ( X ) iareti koyarak rendiklerinizi kontrol ediniz.
Deerlendirme ltleri Evet Hayr 1. Kontrol probleminin tanmlanmas ifade edilmesiyle kada dkebildiniz mi?
2. Sorunun zm iin gerekli program veya fonksiyonlar belirleyebildiniz mi?
3. Programn ak diyagramn izebildiniz mi?
4. Program yazabildiniz mi?
DEERLENDRME
Deerlendirme sonunda Hayr eklindeki cevaplarnz bir daha gzden geiriniz. Kendinizi yeterli grmyorsanz renme faaliyetini tekrar ediniz. Btn cevaplarnz Evet ise lme ve Deerlendirmeye geiniz.
92
LME VE DEERLENDRME Aadaki sorular dikkatlice okuyunuz ve doru seenei iaretleyiniz.
1. LIST ve INCLUDE ifadeleri bir assabmler programn hangi blmnde bulunur?
A) Balk B) Atama C) Program D) Sonlandrma
2. A Portu ynlendirme kayts aadakilerden hangisidir?
A) PORTA B) TRISA C) STATUS D) INTCON
3. Kesme bit ve bayraklarn iinde barndran kayt aadakilerden hangisidir?
A) OPTION_REG B) INTCON C) TMR0 D) STATUS
4. Bank deitirme ilemini hangi kayt salar?
A) PORTB B) OPTION_REG C) STATUS D) ADCON0
Aadaki program parasna gre 5-15. sorulardaki boluklar tamamlaynz. ;====rnek.asm====== LIST P=16F84 INCLUDE P16F84.INC ORG h000 GOTO BASLA BASLA BSF STATUS,5 CLRF TRISB MOVLW hFF MOVWF TRISA BCF STATUS,5 TEKRAR CLRF PORTB BCF STATUS,C KONTROL BTFSS PORTA,0 GOTO KONTROL MOVLW h35 MOVWF TEST INCF TEST,1 RRF TEST,1 COMF TEST,1 RLF TEST,0 MOVWF PORTB GOTO TEKRAR END 5. Programn balang adresi h.......dr.
Cevaplarnz cevap anahtaryla karlatrnz. Yanl cevap verdiiniz ya da cevap verirken tereddt ettiiniz sorularla ilgili konular faaliyete geri dnerek tekrarlaynz. Cevaplarnzn tm doru ise bir sonraki renme faaliyetine geiniz.
94 RENME FAALYET-2
Uygun ortam salandnda microdenetleyici programn derlemesini yapabilecek, derleme sonunda oluan dosyalar tanyabilecek ve oluan dosyalardan faydalanarak programnz hakknda yorum yapabileceksiniz.
MPASM programnn menlerini tanyp ayarlarnn nasl yaplmas gerektiini aratrnz. Yazdmz program derleme olayna neden ihtiya duyduumuzu aratrmalsnz.
MPASM programnn menlerini tanyp ayarlarnn nasl yaplmas gerektiini renme Faaliyetleri-1den renebilirsiniz. Ayrca internet ortamndan ve mesleki kitaplarn bulunduu ktphaneler ile bu ii yapan sektrde alanlardan daha ayrntl bilgi bulabilirsiniz. Aratrma iin arkadalarnzla i blm yapabilirsiniz.
2. MKRODENETLEYC KONTROL PROGRAMININ MAKNE DLNE EVRLMES
MPASM derleyici program assmbly programn makine kodunu retir. MPASM derleyici programnn nasl kurulacan, ayarlarnn nasl yaplacan Mikrodenetleyici iin gerekli yazlmn kullanm konusunda anlatlmt. Burada ise derleme ileminin yaplmas ve derleme sonucunda oluturulan dosyalar anlatlacaktr.
2.1. Programn Derlenmesi
2.1.1. Derleme leminin Yaplmas
Bir assembly dosyasn derlemek iin aadaki sra izlenir.
MPASM program altrlarak Resim 2.1deki gibi ayarlanr. Burada mikrodenetleyici olarak 16F84A seilmitir. RENME FAALYET-2
ARATIRMA AMA
95
Resim 2.1: MPASM derleyici program arabirimi Daha nceden yazlp kaydedilmi .asm uzantl kaynak dosyas Browse ile alr (Resim 2.2).
Resim 2.2: ASM dosyann seilmesi
96 Assemble komut tuuna baslarak derleme ilemi bitirilir. Sonu, derleme baarl olduysa Resim 2.3teki, baarl olmadysa Resim 2.4teki pencere ile programcya bildirilir.
Resim 2.3: Baarl ASM derleme Resim 2.4: Baarsz ASM derleme 2.1.2. Derleme Sonucu Elde Edilen Dosyalar
Derleme sonunda LST dosyas, ERR dosyas, HEX dosyas, WAT dosyas, PJT dosyas, LST dosyas dosyalar MPASM programnn bulunduu dizinde oluur.
2.1.2.1. ERR Dosyas
ERR dosyas metin editr kullanlarak alabilecek bir dosyadr. ASM dosyas konusunda rnek olarak verilen tersle.asm dosyas derlendikten sonra hi hata olumad iin tersle.err dosyas alrsa bo bir sayfa grlecektir. Fakat hata kmas durumunda MPASM bunu programcya ekil 2.4teki pencere ile bildirecektir. Bu pencerede hata , uyar ve mesaj saylarna ait bilgiler bulunur. Errors:4 ifadesi 4 satrda hata bulunduunu ifade etmektedir. Bu hatalar bir ERR dosyas olarak ASM dosyasnn bulunduu dizinde oluturulur.
imdi de 1LEDYAK.ERR dosyasnn hatalar bulunup dzeltilsin. ERR uzantl dosyay bir metin editr ile ap iinde hatalarn olduu satrlar arnr. Hatalar bulduktan sonrada tekrar ASM dosyas alp ilgili hatalar birer birer giderilir. Eer programda kod satrlar oksa biraz zor olabilir ama gene de zm var. Dosyada metin arama zelliini kullanlarak Error kelimesi aranarak bulunabilir.
97
ekil 2.5: rnek hata dosyas 1.satrda bir hata var, hata olan kod EQUa =>hlbuki bu deiken tanmlama iin kullandmz equ olmalyd. Gidip onu EQU yaplarak dzeltilir. 2.satrda bir hata var. Illegal opcode (PORTB)=> Yalnz bu PORTBnin yazlnda bir hata yok, burada baka bir hata olmal, gidip 12inci satra baklsn. Grlyor ki 12. satr CLRF PORTB olmas gerekirken CLRFg PORTB olarak girilmi, burada ERR dosyasnda CLRFg ifadesi warning olarak bir st satrda grlr. CLRF yazldnda bu assembler kodu olur ama CLRFg yazldnda bu ifade satrn banda olduu iin bunu ETIKET olarak tanmaya alr. Bu yzden bu satrda PORTBde hata gsterdi. 28 ve 40. satrlarda iki hata var fakat esas hata burda deil. Error dosyasnda aklamaya baklrsa "Symbol not previously defined (SAYAC1)" yazyor. Burada MPASM diyor ki: "Sayac1 deikenini daha nce tanmlamadnz. O zaman retilecek demektir. Gidip asm dosyasnda tanmlamalar yaplan blme baklr ve grlr ki aslnda bu hata az nce dzeltilmitir. nk az nce 6.satrda bulunan hata, SAYAC1 deikeni tanmlarken bulunan hatayd ve dzeltilmiti. Not: Bu hataya dmeyiniz. Bir hata baka bir hatann sebebi olabilir.Yani derleme sonucunda eer 20 hata uyars aldysanz derleme yaplrken 20 defa sorunla karlalm anlamna gelir yoksa 20 tane hata var anlamna gelmez (ama olabilir de tabii). Hatta yukardaki rnee benzer ekilde bir hata olup ok hata uyars alabilirsiniz. rnein bir deikenin tanmlanmasnda hata varsa ve bu deikeni biz 20 yerde kullandysak hatamz bir yerde olmasna ramen 20 tane hata uyars alrz. stteki hatay dzelttiinizde unutup 2 dk. sonra aalarda bulduunuz hatadan dolay tekrar ayn hatay ararsanz bulamazsnz, en gzeli birka dzeltme yaptnzda bir karmaa oluursa MPASMla tekrar derleme yapnz ve ERROR dosyasn tekrar anz. Bu durumda en son hatalar grm olacanzdan sorun yaamazsnz, uzun uzun hata aramazsnz.
98 2.1.2.2. ASM Dosyas
ASM dosyas aslnda derleme sonunda oluan bir dosya deildir. Bizim program kaynak dosyasdr. Fakat derleme sonunda oluan kaynak dosyalarla ayn dizinde bulunduu iin listeye dahil edildi.
Bit pozisyonlarn tersleme konusundaki tersle.asm program aada grlyor. ;====tersle.asm====== LIST P=16F84 INCLUDE "P16F84.INC" SAYAC1 EQU h'0C' SAYAC2 EQU h'0D' CLRF PORTB BSF STATUS,5 CLRF TRISB BCF STATUS,5 MOVLW h'0F' ;ilk deeri ykle ve MOVWF PORTB ;B portundan kar. TERSLE CALL GECIKME ;Yeni deer iin bekle. COMF PORTB,F ;PORTB'yi tersle. GOTO TERSLE ; saa kaydr. GECIKME ;GECIKME alt program balangc. MOVLW h'FF' MOVWF SAYAC1 DON1 MOVLW h'FF' MOVWF SAYAC2 DON2 DECFSZ SAYAC2,F GOTO DON2 DECFSZ SAYAC1,F GOTO DON1 RETURN ;GECIKME alt program sonu END
2.1.2.3. HEX Dosyas
HEX dosyas metin editr kullanlarak alabilecek bir dosyadr. ASM dosyas konusunda rnek olarak verilen tersle.asm dosyas derlendikten sonra oluan tersle.hex dosyas aada grlmektedir. Denetleyiciye bu dosyadaki veriler yklenir.
WAT dosyas MPASM programnn derlemesi sonucu oluan bir dosya deildir.
2.1.2.5. PJT Dosyas
PJT dosyas metin editr kullanlarak alamayacak bir dosyadr. Bu dosya proje dosyasdr ve hangi program kullanarak proje oluturulmu ise o program tarafndan alr. rnein MPLAB kullanarak oluturacanz projeler vb. Programc iin bilgilendirici bir dosya deildir sadece var olan almay amak iin kullanlr.
2.1.2.6. LST Dosyas
LST dosyas metin editr kullanlarak alabilecek bir dosyadr. Bu dosya birka sayfadan oluabilir. ASM dosyas konusunda rnek olarak verilen tersle.asm dosyas derlendikten sonra oluan tersle.lst dosyas aada grlmektedir. Dikkatli incelendii zaman aadaki bilgileri ierdii grlmektedir.
Bir lst dosyas birka sayfadan oluur. Bu rnekte PAGE1, PAGE2 ve PAGE3 eklinde 3 sayfa var. Komutlarn hex kodlar (PAGE1 ierisinde) Komutlarn bellekteki adresleri ( PAGE1 ierisinde LOC OBJECT CODE ), Kaynak program ve satr numaralar (PAGE1 ierisinde LINE SOURCE TEXT), Programda kullanlan etiketler ve tanmlar (PAGE2 ierisinde SYMBOL TABLE) OPTION_REG tanmlamalar (PAGE3 ierisinde) Bellek kullanm haritas (PAGE3 ierisinde, x =kullanlan, - kullanlmayan alanlar belirtir) Bellekte durumu (PAGE3 ierisinde kullanlan 18 , kullanlmayan 1006 bayt, toplam 1KB) Oluan hata ve uyar says (PAGE3 sonunda hata says 0, uyar says 7, uyarlar ise PAGE1 ierisinde bulunuyor. )
100
MPASM 02.30.11 Intermediate tersle.ASM 8-6-2005 19:02:47 PAGE 1 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00001 ;====TERSLE.asm====== 00002 LIST P=16F84 Warning[205]: Found directive in column 1. (INCLUDE) 00003 INCLUDE "P16F84.INC" 00001 LIST 00002 ; P16F84.INC Standard Header File, Version 2.00 Microchip Technology, Inc. 00136 LIST 0000000C 00004 SAYAC1 EQU h'0C' 0000000D 00005 SAYAC2 EQU h'0D' 0000 0186 00006 CLRF PORTB 0001 1683 00007 BSF STATUS,5 0002 0186 00008 CLRF TRISB 0003 1283 00009 BCF STATUS,5 0004 300F 00010 MOVLW h'0F' ;ilk deeri ykle ve Warning[203]: Found opcode in column 1. (MOVWF) 0005 0086 00011 MOVWF PORTB ;B portundan kar. 0006 00012 TERSLE 0006 2009 00013 CALL GECIKME ;Yeni deer iin bekle. Warning[203]: Found opcode in column 1. (COMF) 0007 0986 00014 COMF PORTB,F ;PORTB'yi tersle. 0008 2806 00015 GOTO TERSLE ; saa kaydr. 00016 0009 00017 GECIKME Warning[203]: Found opcode in column 1. (MOVLW) 0009 30FF 00018 MOVLW h'FF' Warning[203]: Found opcode in column 1. (MOVWF) 000A 008C 00019 MOVWF SAYAC1 000B 00020 DON1 Warning[203]: Found opcode in column 1. (MOVLW) 000B 30FF 00021 MOVLW h'FF' Warning[203]: Found opcode in column 1. (MOVWF) 000C 008D 00022 MOVWF SAYAC2 000D 00023 DON2 000D 0B8D 00024 DECFSZ SAYAC2,F 000E 280D 00025 GOTO DON2 000F 0B8C 00026 DECFSZ SAYAC1,F 0010 280B 00027 GOTO DON1 0011 0008 00028 RETURN 00029 END MPASM 02.30.11 Intermediate ABD.ASM 8-6-2005 19:02:47 PAGE 2 SYMBOL TABLE LABEL VALUE
0000 : XXXXXXXXXXXXXXXX XX-------------- ---------------- ---------------- All other memory blocks unused. Program Memory Words Used: 18 Program Memory Words Free: 1006 Errors : 0 Warnings : 7 reported, 0 suppressedMessages : 0 reported, 1 suppressed
103 UYGULAMA FAALYET Yaptnz ve yapacanz bir mikrodenetleyici programn makine diline evirerek ASM, HEX, LST, COD, ERROR dosyalarn inceleyiniz. lem Basamaklar neriler Mikrodenetleyici derleme programn (MPASM) bilgisayarnza kurunuz. MPASM program ayarlarn yapnz. Uygulama faaliyetleri-1 Uygulamalar blmnde yazm olduunuz program derleme programnda anz. Komut dilinde yazlm programnz derleyerek makine diline heksadesimal kodlara eviriniz (HEX dosyas). Eer derleme sonucunda hatalar olutuysa hata dosyasn ap hatalar gideriniz. LST dosyasn ap denetleyicinin bellek durumunu (bo ve dolu bellek alanlar) reniniz. Derleme yapmadan nce mutlaka MPASM programnda kullanacanz denetleyici tipi, k format ayarlarn yapnz. Derleme sonucunda hata olutuysa btn hatalar birden bulmak yerine, tek tek bulmaya alnz ve bir hatay bulduktan sonra o hatay giderip program tekrar derleyiniz. nk bir hata baka hatalarn nedeni olabilir.
KONTROL LSTES
Bu faaliyet kapsamnda aada listelenen davranlardan kazandnz beceriler iin Evet, kazanamadklarnz iin Hayr kutucuklarna ( X ) iareti koyarak rendiklerinizi kontrol ediniz.
Deerlendirme ltleri Evet Hayr 1. Program ak diyagramn izdiniz mi?
2. Programlama dilini sediniz mi?
3. Programlama dilinin yazm kurallarn bildiniz mi?
4. Mikrodenetleyicinin komut listesini ve komut yazlm kuraln ve grevlerini bildiniz mi?
5. Program derlediniz mi?
6. Programlama kart ile mikrodenetleyiciye program yazdnz m?
DEERLENDRME
Deerlendirme sonunda Hayr eklindeki cevaplarnz bir daha gzden geiriniz. Kendinizi yeterli grmyorsanz renme faaliyetini tekrar ediniz. Btn cevaplarnz Evet ise lme ve Deerlendirmeye geiniz.
UYGULAMA FAALYET
104 LME VE DEERLENDRME
Aadaki sorular dikkatlice okuyunuz ve doru seenei iaretleyiniz.
1. Bir assembly program MPASM ile derlendikten sonra aadaki dosyalardan hangisi olumaz?
A) ERR dosyas B) LST dosyas C) HEX dosyas D) PPT dosyas
2. MPASM ile derleme sonucu oluan hata dosyas aadakilerden hangisidir?
A) LST B) ERR C) PJT D) ASM
3. MPASM ile derleme sonucu oluan dosyalar hangi dizinde bulunur?
A) Belgelerim B) ASM dosyasnn bulunduu dizin C) MPASM program dizininde D) C (sabit disk)
4. Aadaki hata mesaj ekranna gre ka assembly satrnda hata var?
A) 4 B) 177 C) 1 D) 7
5. Aadaki dosyalardan hangisini bir metin editr ile ap programmz hakknda bilgi alamayz?
A) ERR dosyas B) LST dosyas C) ASM dosyas D) PJT dosyas
LME VE DEERLENDRME
105
Aadaki cmlelerin banda bo braklan parantezlere, cmlelerde verilen bilgiler doru ise D, yanl ise Y yaznz.
1.( ) ASM dosyas MPASM programnn derleme sonucunda oluturduu bir dosya deildir.
3.( ) LST dosyasndan denetleyici belleiniN ne kadar kullanld renilebilir.
4.( ) Error [113] C:\prog\test.asm 20 :illegal opcode (PORTA) hata satr bize test.asm programnn 20. satrnda bir komut yazlm hatas olduunu syler.
5.( ) Hatasz program mutlaka beklediimiz gibi alr.
DEERLENDRME
Cevaplarnz cevap anahtaryla karlatrnz. Yanl cevap verdiiniz ya da cevap verirken tereddt ettiiniz sorularla ilgili konular faaliyete geri dnerek tekrarlaynz. Cevaplarnzn tm doru ise Modl Deerlendirmeye geiniz.
106 MODL DEERLENDRME
Bu modl kapsamnda aada listelenen davranlardan kazandnz beceriler iin Evet, kazanamadklarnz iin Hayr kutucuklarna ( X ) iareti koyarak rendiklerinizi kontrol ediniz.
Deerlendirme ltleri Evet Hayr 1. Ak diyagram sembollerini bir problemin zmnde kullanabildiniz mi?
2. Mikrodenetleyici assembler program ve yazm kurallarna uygun program yazabildiniz mi?
12. Mikrodenetleyici programn yazdnz m? 13. Portlarn giri ve k olarak ynlendirebildiniz mi? 14. Konfigrasyon bitlerinin yazabildiniz mi? 15. W kaytsnn kullanabildiniz mi? 16. Bitleri test ederek ilem yapabildiniz mi? 17. Status kaytsn kullanabildiniz mi? 18. Zaman geciktirme dngleri dzenleyebildiniz mi? 19. Bit pozisyonlarn sola/saa kaydrma, tersleme ilemlerini yapabildiniz mi?
20. stenen bitleri sfrlamak, bire evirmek ve terslemek ilemlerini yapabildiniz mi?
21. Bir bytlk iki veriyi birbiriyle veya 0 ile karlatrabildiniz mi? 22. 8 ve 16 bitlik toplama yapabildiniz mi? 23. 8 ve 16 bitlik karma yapabildiniz mi? 24. evrim tablolarn kullanabildiniz mi? 25. INTCON kaytsn kullanabildiniz mi? 26. Kesme kaynaklarn bildiniz mi? 27. Kesme alt programlarn dzenlenleyebildiniz mi? 28. TMR0 ve WDT sayclarn kullanabildiniz mi? 29. Option kaytsn kullanabildiniz mi? 30. Mikrodenetleyici ile dijital /analog evirmesini yapabildiniz mi? MODL DEERLENDRME
107 31. Mikrodenetleyici ile analog /dijital / evirmesini yapabildiniz 32. Mikrodenetleyici kontrol programn makine diline evirdiniz mi? 33. Assembly programn derleyebildiniz mi? 34. Derleme sonucunda oluan dosyalardan faydalanarak kan hatalar giderebildiniz mi?
DEERLENDRME
Deerlendirme sonunda Hayr eklindeki cevaplarnz bir daha gzden geiriniz. Kendinizi yeterli grmyorsanz renme faaliyetlerini tekrar ediniz. Btn cevaplarnz Evet ise bir sonraki modle gemek iin retmeninize bavurunuz.
108 CEVAP ANAHTARLARI RENME FAALYET-1N CEVAP ANAHTARI
1 A 2 B 3 B 4 C 5 000 6 P16F84 7 A,B 8 0 9 0. 10 00 11 C8 12 E4 13 C8 14 1 15 tekrar
RENME FAALYET-2NN CEVAP ANAHTARI
1 D 2 B 3 B 4 A 5 D 6 Y 7 Y 8 D 9 D 10 Y
CEVAP ANAHTARLARI
109 KAYNAKA
ALTINBAAK Orhan, Mikrodenetleyiciler ve PIC Programlama, stanbul, 2000.