You are on page 1of 117

T.C.

MLL ETM BAKANLII

MEGEP
(MESLEK ETM VE RETM SSTEMNN GLENDRLMES PROJES)

ELEKTRK ELEKTRONK TEKNOLOJS

MKRODENETLEYC PROGRAMLAMA

ANKARA 2006

Milli Eitim Bakanl tarafndan gelitirilen modller;


Talim ve Terbiye Kurulu Bakanlnn 02.06.2006 tarih ve 269 sayl Karar ile onaylanan, Mesleki ve Teknik Eitim Okul ve Kurumlarnda kademeli olarak yaygnlatrlan 42 alan ve 192 dala ait ereve retim programlarnda amalanan mesleki yeterlikleri kazandrmaya ynelik gelitirilmi retim materyalleridir (Ders Notlardr). Modller, bireylere mesleki yeterlik kazandrmak ve bireysel renmeye rehberlik etmek amacyla renme materyali olarak hazrlanm, denenmek ve gelitirilmek zere Mesleki ve Teknik Eitim Okul ve Kurumlarnda uygulanmaya balanmtr. Modller teknolojik gelimelere paralel olarak, amalanan yeterlii kazandrmak koulu ile eitim retim srasnda gelitirilebilir ve yaplmas nerilen deiiklikler Bakanlkta ilgili birime bildirilir. rgn ve yaygn eitim kurumlar, iletmeler ve kendi kendine mesleki yeterlik kazanmak isteyen bireyler modllere internet zerinden ulaabilirler. Baslm modller, eitim kurumlarnda rencilere cretsiz olarak datlr. Modller hibir ekilde ticari amala kullanlamaz ve cret karlnda satlamaz.

NDEKLER
AIKLAMALAR ...................................................................................................................iii GR ....................................................................................................................................... 1 RENME FAALYET-1 ..................................................................................................... 3 1. MKRODENETLEYC PROGRAMI YAZMA................................................................. 3 1.1. Ak Diyagram Oluturma ve Sembolleri ..................................................................... 3 1.2. Mikrodenetleyici Assembler Program ve Yazm Kurallar ........................................ 4 1.2.1. Noktal Virgl........................................................................................................ 5 1.2.2. Balk ..................................................................................................................... 5 1.3. Mikrodenetleyici Komutlar........................................................................................ 11 1.3.1. Byte Ynlendirmeli Komutlar ............................................................................. 12 1.3.2. Bit Ynlendirmeli Komutlar................................................................................ 22 1.3.3. Sabit leyen Komutlar ........................................................................................ 24 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............................................................................................................ 65 1.6.17. Donanm Sayclar ............................................................................................ 72 UYGULAMA FAALYET .............................................................................................. 91 LME VE DEERLENDRME .................................................................................... 92 RENME FAALYET-2 ................................................................................................... 94 2. MKRODENETLEYC KONTROL PROGRAMININ MAKNE DLNE EVRLMES ................................................................................................................................................ 94 2.1. Programn Derlenmesi ................................................................................................ 95 i

2.1.1. Derleme leminin Yaplmas .............................................................................. 95 2.1.2. Derleme Sonucu Elde Edilen Dosyalar ............................................................... 97 UYGULAMA FAALYET ............................................................................................ 104 LME VE DEERLENDRME .................................................................................. 105 MODL DEERLENDRME ............................................................................................ 107 NERLEN KAYNAKLAR................................................................................................ 110 KAYNAKA ....................................................................................................................... 111

ii

AIKLAMALAR AIKLAMALAR
KOD ALAN DAL/MESLEK MODLN ADI MODLN TANIMI SRE N KOUL YETERLK 523EO0020 Elektrik Elektronik Teknolojisi Mikrodenetleyiciler Mikrodenetleyici Programlama Mikrodenetleyici programnn yazlmas ve derlenmesi ile ilgili bilgi ve becerilerin kazandrld renme materyalidir. 40/32 Mikroilemci ve mikrodenetleyiciler modln tamamlam olmak. Mikrodenetleyici programnn yazlmas ve derlenmesi ile ilgili yntem ve teknikleri renmek. Genel Ama Bu modl ile eitim retim ortamlar ve donannmlarnda belirtilen ortam salandnda , yaplacak ileme gre gerekli teknikleri kullanarak mikrodenetleyici programn hatasz yapabileceksiniz. Amalar Kurulacak devre iin mikrodenetleyici programlama yazlmn eksiksiz olarak kullanabileceksiniz. Yaplan mikrodenetleyici (heksadesimal kodlara) evirebileceksiniz. ETM RETM ORTAMLARI VE DONANIMLARI programn makine diline hatasz olarak

MODLN AMACI

Atlye ortam, 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 . Her faaliyet sonrasnda o faliyetle ilgili deerlendirme sorular ile kendi kendinizi deerlendireceksiniz. retmen modl sonunda size lme arac (uygulama, soru-cevap) uygulayarak modl uygulamalar ile kazandnz bilgi ve becerileri lerek deerlendirecektir.

LME VE DEERLENDRME

iii

iv

GR 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 ok 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 mikroilemcilerin yerini almtr. Gnmzde Texas ins. , NSC, Atmel ve Microchip gibi birok firma mikrodenetleyici retmekte ve bunlar donanm tasarmclarnn kullanmna sunmaktadr. Biz, bundan nceki modldeki olduu gibi, bu modlde de Microchip firmasnn rettii mikrodenetleyicileri anlatacaz. Konular genelde bu firmann rettii PIC16F84 mikrodenetleyicisi zerinden ilenecektir. Bu ekilde, modl sonunda artk siz de bir mikrodenetleyiciyi tanm ve amaca gre programnn yazabilme seviyesine km olacaksnz.

Bir PIC mikrodenetleyicisi programlayc ve deneme kart

RENME FAALYET-1
AMA

RENME FAALYET-1
mikrodenetleyici programn

Uygun ortam salandnda kurulacak devre iin eksiksiz olarak yapabileceksiniz.

ARATIRMA
Bu faaliyet ncesinde yapmanz gereken ncelikli aratrmalar unlardr: Mikrodenetleyici eitlerini (Microchip firmasnn rettii PIC serisi ) aratrnz. Mikrodenetleyici komutlarn aratrnz. Mikrodenetleyicilerin donanmsal farkllklarn aratrnz. 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 bahsedeceiz) 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 ). imdi bir denetleyicinin assembly program yapmadan nce , karlacak ak diyagramnda kullanlan sembolleri grelim.

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;

Balang ve sonlandrc

Hazrlk

Karar verme (sorgulama)

lem Alt program.


ekil 1.1: Ak diyagram sembolleri

Bu modl ierisindeki ak diyagramlarn inceleyiniz.

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 bir ka 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 kullanrlar. Biz bu yzden btn bu programlara da temel tekil eden assembly dilini kullanacaz. 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 4

Komutlarn ve etiketlerin neler olduu Programn biti yeri imdi bir assembly programnda bunlarn nasl yazldna bakalm.

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.=====

1.2.2. Balk
Programn bandaki bilgilere balk blm denilir. ;= = = = PROGRAM1. ASM = = = = = = = = = = = = = = = = = = = = = = = = LIST P=16F84 ;--------------------------------------------------------------------------------------------INCLUDE P16F84.INC 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 kullanrz. Assembler tarafndan tannmas iin program giriinde tanmlanr. rnein PORTB, STATUS ve TRISB kaytlarn kullanan bir program yazdnz varsayalm. Eer programnzn balk ksmnda INCLUDE P16F84.INC

eklinde bir ifade kullanrsanz programnzda kaytlar kendiniz tantmak zorunda kalmazsnz. Aksi hlde aadaki gibi bellek adreslerini kendiniz tantmalsnz. 5

PORTB EQU STATUS TRISB

h06 h03 h86

Aada PIC16F84 mikrodenetleyicisi iin, Microchip Technology, Inc. tarafndan hazrlanm INC dosyasn gryorsunuz. Burada kaytlarn bellek adreslerinin ve kayt bitlerinin tek tek tanmlandna dikkat ediniz. LIST ; P16F84.INC Standard Header File, Version 2.00 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 Microchip Technology, Inc.

;================================================================= ========= ; ; 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 ;================================================================= ========= 6

; ;
;

Verify Processor

;================================================================= ========= IFNDEF __16F84 MESSG "Processor-header file mismatch. Verify selected processor." ENDIF ;================================================================= =========
;

;
;

Register Definitions

;================================================================= ========= W EQU H'0000' F EQU H'0001' ;----- Register Files-----------------------------------------------------INDF TMR0 PCL STATUS FSR PORTA PORTB EEDATA EEADR PCLATH INTCON OPTION_REG TRISA TRISB EECON1 EECON2 EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU H'0000' H'0001' H'0002' H'0003' H'0004' H'0005' H'0006' H'0008' H'0009' H'000A' H'000B' H'0081' H'0085' H'0086' H'0088' H'0089'

;----- STATUS Bits -------------------------------------------------------IRP RP1 RP0 NOT_TO NOT_PD Z DC EQU EQU EQU EQU EQU EQU EQU H'0007' H'0006' H'0005' H'0004' H'0003' H'0002' H'0001' 7

C EQU H'0000' ;----- INTCON Bits -------------------------------------------------------GIE EEIE T0IE INTE RBIE T0IF INTF RBIF EQU H'0007' EQU H'0006' EQU H'0005' EQU H'0004' EQU H'0003' EQU H'0002' EQU H'0001' EQU H'0000'

;----- OPTION Bits -------------------------------------------------------NOT_RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 EQU EQU EQU EQU EQU EQU EQU EQU H'0007' H'0006' H'0005' H'0004' H'0003' H'0002' H'0001' H'0000'

;----- EECON1 Bits -------------------------------------------------------EEIF WRERR WREN WR RD EQU EQU EQU EQU EQU H'0004' H'0003' H'0002' H'0001' H'0000'

;================================================================= ========= ; ; RAM Definition ; ;================================================================= ========= __MAXRAM H'CF' __BADRAM H'07', H'50'-H'7F', H'87' ;================================================================= ========= ; ; Configuration Bits ; 8

;================================================================= ========= _CP_ON EQU H'000F' _CP_OFF EQU H'3FFF' _PWRTE_ON EQU H'3FF7' _PWRTE_OFF EQU H'3FFF' _WDT_ON EQU H'3FFF' _WDT_OFF EQU H'3FFB' _LP_OSC EQU H'3FFC' _XT_OSC EQU H'3FFD' _HS_OSC EQU H'3FFE' _RC_OSC EQU H'3FFF' LIST

1.2.3. Sabitler
PIC assembly dilinde heksadesimal saylar birer sabittir. Sabitler MOVLW ve baz mantksal ve aritmetik ilem komutlarnda kullanlrlar. 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. ORG ORG 0 x 000 0 x 004 ; ilk program komutunun bellek adresi ; 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.

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. PIC e 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 aldnzda, program ierisine yazlan aklamalar ihtiyacnz olan hatrlatmalar yapacaktr. imdi de bu blmleri grelim. 1.2.5.1. Balk Blou Programnn bandaki bilgilere balk blm denilir. Bu blm daha nce balk konusunda grdmz iin geiyoruz. 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 incelerek program blounu bulmaya alnz. 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 biz de bu komutlar greceiz. Bu komutlarn yazl biimini drt grupta toplayabiliriz . Byte-ynlendirmeli komutlar. Bit-ynlendirmeli komutlar. Sabit ileyen komutlar. Kontrol komutlar. 11

Komutlarn yazl biimlerini aklarken baz tanmlama harfleri kullanacaz. nce bu harflerin anlamlarn verelim: 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. imdi bu komutlar grelim: 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. ANDWF Wyi f ile mantksal ANDle. Dizim: [etiket] ANDWF f,d Operandlar: 0f127 d[0,1] lem: (W).AND.(f) (hedef) 12

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 ediniz. 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; SAY = h00 Z =1 CLRW W Kaytsn Sil. Dizim: [etiket] CLRW Operandlar: Yok lem: 00h (W) 1 Z 13

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 ediniz. test = h13=b0001 0011 terslenirse; b1110 1100=hEC ve test = h13 W= hEC 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 14

olur.

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 ediniz. 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. 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, 15 rnek:

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 ediniz. 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 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 16

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 ediniz. 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 17

Saat pals: 1 rnek: MOVF FSR, 0 Komuttan sonra; d=0 olduundan sonucun Wde olduuna dikkat ediniz. 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 ediniz. OPTION = h4F W = h4F 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. 18

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. C F kayts

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. 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. C

F kayts

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

19

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 rnek 1: SUBWF REG1,1 Komuttan nce; REG1 = 3 W=2 C=? Z=? Komuttan sonra; REG1 = 1 W=2 C = 1, sonu pozitif Z=0 rnek 2: Komuttan nce; REG1 = 2 W=2 C =? Z=? Komuttan sonra; REG1 = 0 W=2 C = 1,sonu sfr Z=1 rnek 3: Komuttan nce; REG1 = 1 W=2 C =? Z=? Komuttan sonra; REG1 = FF W=2 C = 0,sonu negatif Z=1 20

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. 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 21

1.3.2. Bit Ynlendirmeli Komutlar


Bit Ynlendirmeli komutlarda dikkat edilirse hedef (d) belirtilmemitir. Sonu her zaman f kaytsnn iersindedir. imdi bu komutlar grelim; 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 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 22

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) 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.

23

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 ediniz. imdi bu komutlar grelim; 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. 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 edin. Hafza alan (Bayt): 1 Saat palsi: 1 rnek: ADDLW h15 Komuttan nce; W = h10 Komuttan sonra; W = h25 olur. 24

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 ediniz. Tanm:W kaytsnn ierii 8-bitlik sabit k ile ORlanr. Sonu, W kaytsna geri konur. Hafza alan (Bayt): 1 Saat pals: 1 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 ediniz. 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 ediniz. 25

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 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 ediniz. 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 26

C = 0, sonu negatif Z=1 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 ediniz. 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. Altprogram arma, artsz dallanma ve uyku moduna geme gibi olaylar bu komutlarla gerekleir. Bu komutlarda hedef genelde bir adres deeridir. imdi bu komutlar grelim; CALL Altprogram 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 ediniz. 27

Tanm: Altprogram arr. lk olarak, geri-dn adresi (PC+1) yna itilir. Onbir bitlik altprogramn balang adresi , PC bitleri <10:0> ierisine yklenir. PCn st bitleri 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. CLRWDT Beki kpei zamanlaycsn (Watchdog Timer) sil. Dizim: [etiket] CLRWDT Operandlar: Yok lem: 00h WDT 0 WDT n-lcs 1 T0 1 PD Etkilenen bayraklar:T0 ,PD Kodlama: 00 0000 0110 0100

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 baknz. Hafza alan (Bayt): 1 Saat pals: 1 rnek: CLRWDT Komuttan nce; WDT sayac = ? Komuttan sonra; WDT sayac = h00 WDT n-blc deeri = 0 T0 =1 PD = 1 GOTO Adrese git Dizim: [etiket] GOTO k Operandlar: 0k2047 28

lem: k (PC<10:0>) (PCLATH <4:3>) (PC<12:11>) Etkilenen bayraklar: Yok Kodlama: 10 1kkk kkkk kkkk Tanm: GOTO, koulsuz bir sapma komutudur. K nn 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. 29

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 karlatnzda bunlar okuyabilmeniz 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 EQU EQU 0x03 03h 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 kullanacaz.

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 30

1.4.3. Desimal Saylar


Desimal saylarn bana d harfi konularak trnak ierisinde yazlrlar. 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 yazlrlar. RETLW RETLW A 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 programn veya MPLAP ierisindeki kendi editrn de kullanabilirsiniz. Resim 1.1de MPLAPnin ASM editr arabirimini gryorsunuz.

31

Resim 1.1: MPLAPnin ASM editr arabirimi

Donanm olarak ise IBM uyumlu bir bilgisayara ve kullandmz mikrodenetleyiciyi programlayabilecek programlayc karta ihtiya vardr. Bu kartn yaplmas ve programlaycnn nasl kullanacan mikroilemci ve mikrodenetleyiciler modlnde grdnzden bu modlde bunlardan bahsetmeyeceiz. Biz burada sadece derleme (compiler) olaynn nasl yapldna deineceiz.

1.5.1. Programn Kurulmas


Microchip firmasnn MPASM derleyicisi ile yazm olduumuz assembly dosyalarmz , mikrodenetleyiciye yklemek zere .HEX uzantl dosyalara evirebiliriz. Bu program Microchip firmasnn internet sitesinden cretsiz datt MPLAB programnn iinde bulabilirsiniz. Bu program yaklak 30MBlk dosyadr. (MPLAB710.zip) Gelen zip dosyasn an ve iindeki Setup.exe dosyasn altrarak ykleyin. Resim 1.2de kurulumu gryorsunuz.

32

Resim 1.2: MPLAB kurulumu

Ykleme ilemi bittikten sonra, balat mensnden porgramlarm iinde MPASM programn atnzda karnza Resim 1.3deki pencere gelecek .

Resim 1.3: MPASM derleyici program arayz

33

1.5.2. Menlerin Tantlmas


imdi de MPASM derleyicisinin ayarlarn grelim; 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 seviyesini ayarlayabileceimiz 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 yazarsanz derleme sonucunda HEX dosyas ile beraber TEST.LST dosyasnn da olutuunu grrsnz.

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 vs. birbirinden farkldr. Bu yzden ncelikle kullanlacak mikrodenetleyici seilmelidir. Bunun iin mikrodenetleyicilerin kataloglar incelenmelidir. Microchip firmasnn sitesinde retilen tm mikrodenetleyicilerin (PIC serisi) kataloglarna ulaabilirsiniz. Biz bu modlde daha ok PIC16F84 mikrodenetleyicisinin programlanmasn greceiz. Yalnz Analog/dijital dnm konusunda, PIC16F84 denetleyicisinin dhil ADC modl olmadndan, bunun iin 16F877 denetleyicisini kullanacaz. ekil 1.3 ve ekil 1.4te en ok kullanlan denetleyicilerin baz teknik verileri verilmitir.

34

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. Programlar iin evrensel bir (Header) balk kullanlmaldr. Bu, i ykn hafifletir, tutarl bir format yaratr ve hatrlanmas gereken deiken saysn azaltr. 35

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 BCF STATUS,5 ; Bank 1 seilir. STATUS,5 ; Bank 0 seilir.

36

ekil 1.5: PIC 16F84 denetleyicisinin bank ve kayt yaps

37

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. rnek 1: Port A nn ilk 4 bitini giri 5.bitini k olarak kuralm (PIC16F84de A portu 5 bitlik bir porttur.) CLRF BSF MOVLW MOVWF PORTA ; PORTAy sfrla. STATUS, 5 ; Bank 1e ge. nk TRISA bank1de. h0F ; TRISAya yklemek iin deer hazrla. 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.

rnek 2: PortAnn tamam giri, Port Bnin tamamn k olarak kuralm (PIC16F84de B portu 8 bitlik bir porttur.) CLRF BSF CLRF PORTB ; PORTBy sfrla. STATUS, RP0 ; Bank1e ge.nk TRISA ve TRISB bank1de. 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 yazalm;

38

Bala ;=====yak.asm====

LIST=16F84

LIST P=16F84

PortByi sil.

CLRF BSF

PORTB STATUS, RP0

Bank1e ge. PORTByi k olarak ynlendir.

CLRF TRISB

Bank 0a ge. PORTB<1>=1 yap.

BCF STATUS, 5

BSF PORTB,1 son END

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 tipini , WDTin aktif/pasif yapma, PORi (Power-On-Reset) aktif/pasif yapma, Kod korumay aktif/pasif yapma.

39

Bu konfigrasyon bitlerini program ierinde yazabileceimiz programlaycnn kendi programndaki fuses penceresinden de yapabiliriz. imdi konfigrasyon bitlerini belirleyen tanmlar grelim; _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 cmlesini yazarken unlara dikkat etmeliyiz: 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.

gibi

PIC

Aadaki rnei inceleyiniz; __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 ulamabiliriz. 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.
W kayts

Port A

Port B

ekil 1.6: W kayts kullanm

40

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 ilevini ksaca hatrlarsak ; 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. imdi bir rnekle bu komutun kullanmn grelim; rnek : A portunun 0.bitine bal olan bir butona basldnda B portuna bal 8 ledi yakacak program yazalm. zm: nce programn ak diyagramn karalm; Bala PIC16F84

Tant.

PortByi sil.

PORTA giri PORTB k

PORTA<0>=1 mi?
evet PORTBdeki ledleri yak.

Tekrar test et. hayr

son
ekil 1.7: rnek progamn algoritmas

41

imdi de programmz yazalm; ;====led.asm====== LIST P=16F84 INCLUDE P16F84.INC

tanmlamalarn yapld 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. imdi de bu olaylarn ak diyagramn izelim. Ak diyagramnn komut listesi; TEKRAR DECFSZ SAYAC,F GOTO TEKRAR BSF PORTB,1 Tekrar test et. hayr

SAYAC=SAYAC-1

SAYAC=0 m? evet PORTBnin 1.bitini 1 yap.

ekil 1.8: DECFSZ komutu ile yaplan sayacn algoritmas

42

Bilindii gibi DECFSZ komutu , kaytdan 1 kart eer sonu 0 ise bir sonraki komuta dallan ilevini yapmaktadr. Detayl bilgi iin mikrodenetleyici komutlar konusunda DECFSZ komutunu inceleyiniz. Zaman geciktirme dngleri konusunda saya kullanarak yaplan dngleri inceleyiniz.

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 baknz. 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 yada baka bir yere dallandrlr. imdi de bu olaylarn ak diyagramn izelim. Ak diyagramnn asm kodlar SAYAC=h00 CLRF SAYAC TEKRAR INCF MOVLW SUBWF BTFSS GOTO BSF SAYAC,F dtekrar says SAYAC,W STATUS,Z TEKRAR PORTB,1

SAYAC=SAYAC+1

We tekrar saysn ykle.

W=SAYAC-W

hayr STATUS<2>=0 m? evet PORTBnin 1.bitini 1 yap. Tekrar test et.

ekil 1.9: SUBWF komutu ile yaplan sayacn algoritmas

43

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 dtekrar 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.

44

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.bit in g reseti durumundaki lojik deeri 1dir. 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 mikrodenetleyicilerde kullanlmaz.


Bit 6-5:

kullanlmaktadr.

16CXX,

16F8X

serisi

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 bitini kullanarak yaparz. 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.

45

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 GOTO RETURN CALL PCye veri yazan komutlar DECFSZ RETLW RETFIE INCFSZ BTFSC BTFSS Komut saykl 2 2 2 2 1 (Kayt iindeki deer 0 deilse) 2 (Kayt iindeki deer 0 ise) 2 2 1 (Kayt iindeki deer 0 deilse) 2 (Kayt iindeki deer 0 ise) 1 (Kayt iindeki deer 0 deilse) 2 (Kayt iindeki deer 0 ise) 1 (Kayt iindeki deer 1 deilse) 2 (Kayt iindeki deer 1 ise)

Tablo 1.1: 2 komut saykl eken komutlar

imdi de tek dng ile gecikme altprogramnn ak diyagramn izip programn yazalm ve maksimum ne kadarlk bir zaman gecikmesi yaptn hesaplayalm. SAYAC=hFF=d255 Bu yol GOTO komutu ile icra edilir ve 254 defa tekrarlanr. Sonuta 2x254 tane komut saykl eker.

SAYAC=SAYAC-1 SAYAC=0 m? evet RETURN

hayr

ekil 1.11: Tek dnglk zaman gecikmesi algoritmas

46

GECIKME MOVLW SAY

hFF MOVWF DECFSZ GOTO RETURN

;1 saykl SAYAC ;1 saykl SAYAC,F ;1x254+2 saykl SAY ;2x254 saykl ;2 saykl TOPLAM: 766 komut saykl.

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 PICC16F84de ne kadar srelik bir gecikme yaptn bulalm. 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 altprogramnn 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.

47

GECIKME
SAYAC1=hFF=d255

SAYAC2= hFF

SAYAC2=SAYAC2-1

SAYAC2=0 m? evet SAYAC1=SAYAC1-1

hayr

SAYAC1=0 m? evet RETURN

hayr

ekil 1.12:ift dnglk zaman gecikmesi algoritmas

imdi de GECKME altprogramnn assembly programn yazp geen zaman bulalm.

M N

ekil 1.13: ift dnglk zaman gecikmesi assembly program

48

Burada SAYAC1 deerine M, SAYAC2 deerine N dersek toplam saykl saysn yaklak TSS=3MN+5M+4 kadar buluruz. Buradaki 4 deeri rahatlkla ihmal edilebilir. Hatta ok hassas bir zamandan bahsedilmiyorsa 5M deeri de ihmal edilebilir. Eer M=N alnrsa TSS=3M2 olarak sadeletirebiliriz. Maksimum zaman gecikmesi yapmak iin sayalara d225 yklenmitir. Yani M=N=255dir. Bu durumda toplam komut saykl says yaklak olarak; TSS=3x255x255+5x255+4=196.354 kar. Eer sadelemi forml kullanrsak;

TSS=3M2=3x2552=195.075 kar. 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. imdide istenen bir gecikme deeri iin sayalara yklenecek deerin nasl bulunacan grelim. rnein 2 dngl bir gecikme ile 40mSlik bir zaman gecikmesi yapmak iin kaytlara hangi deerleri ykleyeceimizi bulalm.Kolaylk bakmndan saya deerlerinin ayn say ile ykleyelim.(PIC 16F84in osc frekans 4Mhz kabul edilecek.) zm: 40mS=40000S yapar. Bu da dhil komut saykl sresi 1S olan bir PIC iin TSS=40000yapar. TSS=3M2 , 40000=3M2 ve M=(4000/3=116 desimal deeri bulunur. Eer PICimizin 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=3M2 , 100000=3M2 ve M=(100000/3=183 desimal deeri bulunur. Bu bilgiler nda Min bulunmas iin genel bir forml yazarsak;

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 olduunu grnz. imdi de 3 dngl bir gecikme altprogram yazalm. Fosc=4 Mhz iin toplam 50.070.529 mikrosaniye ve yaklak 50 saniye eder.

49

ekil 1.14: ift dnglk zaman gecikmesi assembly program

Demek ki 3'l dng ile yeteri kadar zaman elde edebiliriz. Eer 4'l bir dng dzenlersek o zaman saatlerce srecek bir zaman gecikmesi elde etmek mmkn olur. imdi de bir tablo izerek drtl bir dng hlinde ne olabileceini grelim.

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 girerseniz 100X50 saniye yani 5000 saniye elde edersiniz 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 50

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.

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 altprogramlar , Kesme alt programlarnn dzenlenmesi konusunda ilendiinden burada ilenmemitir. Bir altprogramn almasn ematik olarak ekil 1.16' daki gibi gsterebiliriz; Ana program

CALL SAYAC

PC=>TOS (Yn) ve SAYAC adresi=>PC gerekleir.

SAYAC

Altprogram

TOS (Yn) =>PC yaplarak Ana programa dnlr.

RETURN
ekil 1.16: Altprogram kurgusu

51

Yukardaki ekilde unlar dikkatinizi ekmi olmaldr: CALL komutundan sonra altprogramn isimini yazarak altprogram arrz. Burada altprogrammzn ismi SAYACtr. Altprogram 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. nceleyiniz.

1.6.12. Bit Kaydrma


1.6.12.1. Bit Pozisyonlarn Sola Kaydrma Bit pozisyonlarn sola kaydrmak iin RLF komutunu kullanrz. Bu komut belirlenen bir kayt ierisindeki bitleri her defasnda 1 bit sola kaydrr. Detayl bilgi iin mikrodenetleyici komutlar konusunda RLF komutunu inceleyiniz. imdi bu komutun kullanmna bir rnek verelim. 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.

52

;====led.asm====== LIST INCLUDE SAYAC1 SAYAC2

P=16F84 P16F84.INC EQU h0C EQU h0D CLRF PORTB BSF STATUS,5 CLRF TRISB BCF STATUS,5 STATUS,0 h01 PORTB GECIKME PORTB,F STATUS,0 TEKRAR BASLA

tanmlamalarn yapld blm B portu k olarak ayarland. Ana Program

BASLA BCF MOVLW MOVWF TEKRAR CALL RLF BTFSS GOTO GOTO GECIKME MOVLW MOVWF SAYAC1 DON1 MOVLW MOVWF DON2 DECFSZ GOTO DECFSZ GOTO RETURN END SAYAC2,F DON2 SAYAC1,F DON1 hFF SAYAC2 GECKME altprogram. hFF ;2.deer iin bekle. ;sola kaydr ;C=1 mi? ;hayr.TEKRARa dallan. ;evet.BASLAya dallan. ;Elde biti sfrland. ;ilk deeri ykle ve ;B portundan kar.

1.6.12.2. Bit Pozisyonlarn Saa Kaydrma Bit pozisyonlarn saa kaydrmak iin RRF komutunu kullanrz. Bu komut belirlenen bir kayt ierisindeki bitleri her defasnda 1 bit saa kaydrr. Detayl bilgi iin mikrodenetleyici komutlar konusunda RRF komutunu inceleyiniz. imdi bu komutun kullanmna bir rnek verelim. 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. 53

;====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 RRF BTFSS GOTO GOTO GECIKME MOVLW MOVWF DON1 MOVLW hFF MOVWF SAYAC2 DON2 DECFSZ GOTO DECFSZ GOTO RETURN END SAYAC2,F DON2 SAYAC1,F DON1 GECKME altprogram. hFF SAYAC1 GECIKME PORTB,F PORTB,0 SAG SOL ;evet. Yeni deer iin bekle. ; saa kaydr. ; PORB<0>=1 mi? ;hayr.SAGa dallan. ;evet.SOLa dallan,

1.6.12.3. Bit Pozisyonlarn Tersleme COMF komutu bir kayt ierisindeki bitleri tersine evirir (complement) . Detayl bilgi iin mikrodenetleyici komutlar konusunda COMF komutunu inceleyiniz. Bu komut, 2li tmleme yntemiyle karma ilemi yaparken , baz mantksal devre zmlerine ,k ovlar tasarlarken iimize yarayabilir. imdi bu komutun kullanmna bir rnek verelim. 54

rnek: PORTBye bal 8 ledleri dnml olarak ilk nce ilk 4 bitindeki, sonrada son 4 bitindeki ledleri yakan program yazalm. ;====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. GECIKME MOVLW hFF MOVWF SAYAC1 DON1 MOVLW hFF MOVWF SAYAC2 GECIKME altprogram. 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 kullanlrlar. Bu komutlar ANDLW, ANDWF, IORLW, IORWF, XORLW, XORWF ve COMF komutlardr. Detayl bilgi iin mikrodenetleyici komutlar konusunda bu komutlar inceleyiniz. imdi bu komutlar grelim. 1.6.13.1. stenen Bitleri Sfrlamak ANDLW komutu W kayt ierisinde bulunan istenilen (maskelemek) iin kullanlr. Burada sonu daima W kaytsndadr. bitleri sfrlamak

rnein W kaytsndaki 3. ve 4. bitlerini dier bitleri deitirmeden sfrlamak (meskelemek) istiyoruz Bunun iin kullanacamz komut satr; 55

ANDLW

hE7 ; olmaldr.

Burada sabiti hE7 olarak kurduk. nk; W =b(xxxx xxxx) AND hE7=b1110 0111 W=bxxx0 0xxx olur. Sonuta W kaytsndaki 3. ve 4. bitlerini dier bitleri deitirmeden sfrlam (meskelemek) olduk. 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 programnda da bu komutun kullanmn grebilirsiniz. 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. verilen hex.asm

Burada sabiti h18 olarak kurduk. nk; W =b(xxxx xxxx) OR h18=b0001 1000 W=bxxx1 1xxx olur. Sonuta W kaytsndaki 3. ve 4. bitlerini dier bitleri deitirmeden sfrlam (meskelemek) olduk. 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.

56

1.6.13.3. stenen Bitleri Terslemek XORLW komutu W kayt ierisinde bulunan istenilen kullanlr. Burada sonu daima W kaytsndadr. bitleri terslemek iin

rnein W kaytsndaki deer h4Colsun. Wnin 3. ve 4. bitlerini dier bitleri deitirmeden terslemek istiyoruz . Bunun iin kullanacamz komut satr; XORLW h18 ; olmaldr.

Burada sabiti h18 olarak kurduk. nk; W = b0100 1100 XOR h18=b0001 1000 W= b0101 0100 olur. Sonuta W kaytsndaki 3. ve 4. bitlerini dier bitleri deitirmeden sfrlam (meskelemek) olduk. 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. 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 edebiliriz. rnein B portundaki deerin h4C olup olmadn test etmek iin gereken program parasn yazalm. Bunun iin kullanacamz 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 testini yapabiliriz. Bu ilem iin istenirse SUBLW ve SUBWF komutlar da kullanlabilir. Ayrca bu iki komutla , byk / kk m? Testleride yaplabilir. 57

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 ynlendirebiliriz. rnein W kaytsnn 0 olup olmadn aadaki gibi test edebiliriz; TEST_W DEVAM IORLW BTFSS GOTO . h00 ;W=(W OR h00) STATUS,Z ;Sonu sfr m? (Z=1 mi?) TEST_W ;hayr.Tekrar kontrol et. ;evet.Programn devam..

1.6.14. Aritmetik lemler


PICler baz aritmetik ilemlerin yaplmasna da izin verirler. Biz bu modlde 8 ve 16 bitlik saylarn toplanmas ve karlmasn grceiz. Bunun iin ADDLW, ADDWF, SUBLW, SUBWF komutlarn kullanacamzdan, mikrodenetleyici komutlar konusunda ilgili komutlar incelemeniz yerinde olacaktr. 1.6.14.1. 8 Bit Toplama 8 bitlik ( 1 Bayt ) lik iki veri iki ekilde 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. imdi her iki toplamaya da rnekler verelim. rnek: nce W kaytsna h25 deerini ykleyip daha sonrada W ile sabitini toplayan program parasn yaznz. Elde bayrann durumunu bulunuz. MOVLW ADDLW C=0da kalr. h25 hA3 hA3

;W= h25 ;W= h25+ hA3= hC8 olur. Tama olmandan

58

rnek: nce W kaytsna h7A deerini, TOPLAM kaytsna da hDD ykleyip daha sonrada W ile TOPLAM kaytlarn toplayan ve sonucu TOPLAM kaytsna kaydeden program parasn yaznz. Elde bayrann durumunu bulunuz. MOVLW hDD ;W= hDD MOVWF TOPLAM ;TOPLAM= hDD MOVLW h7A ;W= h7A ADDWF TOPLAM,1 ;TOPLAM= hDD+ h7A= h57 Tama olduundan C=1 olur.Sonucun C bitinin dikkate alnmamas durumunda yanl olacana dikkat ediniz. 1.6.14.2. 16 Bit Toplama Kaytlar 1 baytlk olduklar iin, 16 bitlik (2 bayt) verilerin toplanmas iin 2 kayt kullanmak gerekecektir. 2 baytlk veri 0-65535 onlu saylar ifade edebilecektir. Bu ilemi yapmak iin; Toplanacak iki saynn nce alt (LSB) baytlar yoplanr. Eer alt baytlarn toplamndan elde oluursa st baytlardan birine 1 eklenir. st baytlar toplanr. Bunu bir rnekte grelim; rnek: A= h33A5 ve B= h8EDE saylarn toplayan sonucu C adnda bir kaytya atan program parasn yazalm. 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. MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF TOPLA MOVF ADDWF MOVWF BTFSC INCF MOVF ADDWF MOVWF hA5 AL h33 AH hDE BL h8E BH AL,0 BL,0 CL STATUS,0 BH,1 AH,0 BH,0 CH ;W= hA5 ;AL= hA5 ; W= h33 ; AH= h33 ; W= hDE ; BL= hDE ; W= h8E ; BH= h8E ;W=AL ;C=0 mi? ;Hayr(C=1) BH 1 arttr. ;Evet. W=AH ;W=BH+W(AH) ;Sonucun yksek bayt. 59

saylar kaytlara ykleniyor.

;W=BL+W(AL) ;Sonucun dk bayt

1.6.14.3. 8 Bit karma 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. imdi her iki karmaya da rnekler verelim; rnek: nce W kaytsna h25 deerini ykleyip daha sonrada hA3sabitinden Wyi karan program parasn yaznz. Elde bayrann durumunu bulunuz. MOVLW SUBLW h25 hA3 ;W= h25 ;W= hA3-h25 = h7E olur.

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 parasn yaznz. Elde bayrann durumunu bulunuz. MOVLW MOVWF MOVLW SUBWF h40 FARK h35 FARK,1 ;W= h40 ;FARK= h40 ;W= h35 ;FARK= h40- h35= hF5 ;Yukardaki rnekteki ;gibi PIC 2li tmleyen ile ;hF0sonucunu buldu. ;(C=0 sonu negatif).

60

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. Bunu bir rnekte grelim; rnek: A= h33A5 ve B= h8EDE saylarn karan (B-A) sonucu C adnda bir kaytya atan program parasn yazalm. 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. MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF CIKAR MOVF SUBWF MOVWF BTFSS DECF MOVF SUBWF MOVWF hA5 AL h33 AH hDE BL h8E BH AL,0 BL,0 CL STATUS,0 BH,1 AH,0 BH,0 CH ;W= hA5 ;AL= hA5 ; W= h33 ; AH= h33 saylar kaytlara ykleniyor. ; W= hDE ; BL= hDE ; W= h8E ; BH= h8E ;W=AL ;W=BL-W(AL) ;Sonucun dk bayt ;C=1 mi? ;Hayr (C=0) BH 1 Azalt. ;Evet. W=AH ;W=BH-W(AH) ;Sonucun yksek bayt.

1.6.15. evrim Tablolar


1.6.15.1. evrim Tablolar evrim tablolar sral deer alma ilemleri gereken yerlerde kullanlr. Bu ekilde bir kodu baka bir koda evirebiliriz. rnein B portuna baladmz 7 segment display zarinde hexadesimal karakterleri grmek istiyoruz. evrim tablosunda hexadesimal koda karlk gelen uygun kodu B portuna gndermemiz gerekir. Ya da bir adm motorunu belirli bir ekilde dndrmek iin porta balanm step motoruna sral ikili deerleri gndermemiz gerekir. Bu tip durumlarda evrim tablolarndan faydalanlr. 61

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

ekil 1.18: GOTO ve CALL komutlarnn PCyi yklemesi

GOTO ve CALL komutlaryla kullanlan 11 bitlik adreslemeler 2KBlk program bellei bulunan PIClerde (16FCxxx ve16Fxx) herhangi bir adrese eriim iin yeterlidir (211=2KB). 1KB bellei olanlarda (16F84) ise 10 bit yeterlidir (210=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. imdi de bir rnek ile evrim tablolarnn nasl kullanldn grelim; rnek: B portunun ularna bal 7 sagment display in 0-F arasnda saydran program yaznz. 62

zm: ncelikle Hexadesimal koddan 7 sagment display koduna dnm tablosunu karmalyz; 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 imdi de program yazalm. 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 altprogramna dallanr. ;====hex.asm====== LIST P=16F84 INCLUDE P16F84.INC SAYAC1 EQU h0C SAYAC2 EQU h0D SAYAC EQU h0E CLRF PORTB BSF STATUS,5 CLRF TRISB BCF STATUS,5 MOVLW h00 MOVWF SAYAC

tanmlamalarn yapld blm B portu k olarak ayarland. SAYAC sfrland.

63

TEKRAR MOVF ANDLW CALL MOVWF INCF CALL GOTO SAYAC,W b00001111 HEX_7SEGMENT PORTB SAYAC,F GECIKME TEKRAR tablodan deer al ve gecikme altprogramna dallan.

HEX_7SEGMENT ADDWF PCL,F RETLW h3F RETLW h06 RETLW h5B RETLW h4F RETLW h66 RETLW h6D RETLW h7D RETLW h07 RETLW h7F RETLW h6F RETLW h77 RETLW h7C RETLW h39 RETLW h5E RETLW h79 RETLW h71 GECIKME MOVLW MOVWF DON1 MOVLW MOVWF DON2 DECFSZ GOTO DECFSZ GOTO RETURN END

;PCL= W(SAYAC) ;0 ;1 ;2 ;3 ;4 ;5 ;6 ;7 hexadesimalden 7 segment ;8 displaye dnm tablosu. ;9 ;A ;B ;C ;D ;E ;F hFF SAYAC1 hFF SAYAC2 SAYAC2,F DON2 SAYAC1,F DON1 GECKME altprogram.

64

1.6.16. Kesmeler
Mikrodenetleyicilerle yeni almaya balayanlar kesme (interrupt) kelimesini duymalarna ramen, kullanmlarnn zor olduu dncesiyle programlar iersinde kullanmaktan ekinirler. 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 Nedir? 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. Altprogramn almas bittikten sonra ana program kald yerden itibaren tekrar almasna devam eder. ekil 1.19u inceleyiniz.

Ana program PC=>TOS(Yn) ve Kesme vektr (h004)=>PC gerekleir.

Kesme_altprogram

Altprogram TOS(Yn) =>PC yaplarak Ana programa dnlr. RETFIE


ekil 1.19: Kesme altprogram kurgusu

65

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/Wx 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 . bit 5: TOIE:TMR0 sayc tama (Overflow) kesmesi yetki biti. 1=TMR0 kesmesini yetkilendirir. 0=TMR0 kesmesine yetkiyi kaldrr. INTE: RB0/INT hric kesmesi yetki biti. 1=RB0/INT kesmesine yetki verir. 0=RB0/INT kesmesine yetkiyi kaldrr. 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. T0IF: TMR0 saycs tamas durum bayra. 1=TMR0 tamtr (yazlmn iinden silinmesi gerekiyor). 0=TMR0 tamamtr. Zaman am yok. INTF: RB0/INT hric kesme durum bayra. 1=RB0/INT kesmesi meydana gelmitir. 0=RB0/INT kesmesi meydana gelmemitir. 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. 66

bit 4:

bit 3:

bit 2: bit 1: bit 0:

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 2 ey gereklidir; yazlm ve donanm.Yazlm aracl ile B portunun RB0 ucu, dardan gelebilecek kesmeyi alabilecek ekilde hazrlanmaldr. Bunun iin iki ilem yaplr; RB0 ucu giri olarak ynlendirilmeli. INTCON kayts ierisindeki ilgili bayrak (INTE bayra) kullanlarak hric kesme ilemi iin yetkilendirilmeli.

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. Kesme altprogramn 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 deiiklii; 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. 67

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. Yukarda anlatlan kesme kaynaklar mant ekil 1.20de verilmitir.

ekil 1.20: PIC16F84n kesme kaynaklar ve bayraklar

1.6.16.4. Kesme Altprogramlarnn Dzenlenmesi 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 inceleyiniz. 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 GOTO ORG GOTO h000 BASLA h004 KESME ;Reset vektr adresi. ;Ana program balangc. ;Kesme vektr adresi

68

BASLA ;Ana program komutlar . . . KESME ;kesme altprogram komutlar Kesme alt program . buraya yazlmaldr. . RETFIE ;Ana programa dn. INTCON 1 GIE kesme Ana program buraya yazlmaldr.

GIE INTCON 0

PC= TOS PC (program sayc) deeri yna itilir. h004= PC PC reset vektrne dallanr. Burada GOTO komutu kesme alt programna dallanlr.

Kesme altprogram altrlr. lgili kesme bayra kontrol edilir.

RETFIE komutu ile ana programa geilir.

INTCON

GIE

ekil 1.21: Kesme ileminde oluan olaylar

69

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. 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). imdi bu ilemleri yapacak rneimizi yazalm. rnek1: 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. ; ; Kesme altprogram ; buraya yazlmal. SWAPF STATUS_TEMP , W MOVWF SWAPF STATUS W_TEMP , F ; STATUS_TEMP ieriini yeniden ;SWAPla ve Wye ykle. ; Wyi STATUS Registerine ykle. ; W_TEMP ieriini SWAPla sonucu ;W_TEMPe SWAPF W_TEMP , W ;Wye tekrar tekrar ykle. ;ykle. ; W_TEMP ieriini SWAPla sonucu

Yukardaki ilem iin neden MOVF komutunu kullanmadmz aklnza gelmi olabilir. Kullanamayz, nk MOVF komutu, STATUS kaytsndaki Z bayran deitireceinden, programda bu bayran kontrol ile yaplan ilemlerde hatalara neden olacaktr.

70

rnek2: 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 algoritmay izebiliriz; Bala KESME

PIC16F84 tant. PORTA k PORTB giri

PORTAdeki ledleri sndr.

OPTION kaytsn kur.

RETFIE

INTCON kaytsn kur.

PORTAy sfrla.

PORTB<1>=1 mi?

Tekrar test et.

PORTAdeki 4 ledi yak.

son
ekil 1.22: rnek 2deki programn algoritmas

71

imdi de asm programmz yazlm; ;====kesme.asm====== LIST INCLUDE ORG h000 GOTO BASLA ORG h004 GOTO KESME BASLA P=16F84 P16F84.INC

tanmlamalarn yapld blm

BSF STATUS,5 CLRF TRISA MOVLW hFF MOVWF TRISB MOVLW b10111111 MOVWF OPTION_REG BCF STATUS,5 CLRF PORTA BCF INTCON,1 BSF INTCON,7 BSF INTCON,4 BTFSS GOTO MOVLW MOVWF GOTO END

A portu k, B portu giri olarak ayarland. ;den kenarda kesme pals , ;gelecek ekilde OPTION_REGi kur. ;Bank0a ge. ;A portunu sfrla. ;INF bayran sil. ;Global kesmeyi etkinletir. ;Hric kesmeyi aktifletir.

TEST_PORTB PORTB,0 ;PORTA<0>=1 mi? TEST_PORTA ;hayr.Tekrar test et. hFF ;evet. W=hff ykle. PORTA ;A portundaki tm ledleri yak. TEST_PORTB ;INTF bayran sil. ;W=h00 ykle. ;A portundaki tm ledleri sndr.

KESME BCF RETFIE END INTCON,1 MOVLW h00 MOVWF PORTA

1.6.17. Donanm Sayclar


Zaman geciktirme dngleri konusunda, port klarna gndereceimiz sinyaller arasnda bir gecikme olmasn istediimiz zaman bunu yazlm (software) ile nasl yapacamz grdk. Burada ise ayn ilemi donanm zamanlaycsn (hardware) kullanarak nasl yapacamz greceiz. Bunun iin donanm zamanlaycsn (TMR0) kullanacaz. Bu zamanlayc / sayclarn says kullanlan mikrokontrolre gre deimekle beraber, biz genel olan TMR0n kullanmn greceiz. 72

1.6.17.1. Donanm Saycs ( zamanlaycs ) Nedir? 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 ) 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. imdi de TMR0 ve WDT zamanlayclarn kontrolnde kullanlan OPTION kaytsn grelim. 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. R/W-1 RBPU bit7
ekil 1.23: Option kayts ierii

R/W-1 INTEDG

R/W-1 R/W-1 T0CS T0SE

R/W-1 PSA

R/W-1 PS2

R/W-1 R/W-1 PS1 PS0 bit0

73

it 7:

bit 6:

RBPU:PORTB Pull-up direnleri yetki biti. 1=PORTB Pull-uplar pasif durumundadrlar (yetki vermeme). 0=PORTB Pull-uplar aktif durumundadrlar (yetki verme). Pull-Up direnleri aktif yapldnda B portu pinleri 50K luk direnlerle +Vccye balanr. 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. TOCS:TMR0 sinyal kayna seim biti. 1=RA4/T0CKI pini zerinden hric sinyal. 0=Dhil komut palsleri (CLKOUT). T0SE: TMR0 sinyal kayna kenar seim biti. 1=RA4/T0CKI pini zerindeki sinyalin ykselen kenarnda. 0=RA4/T0CKI pini zerindeki sinyalin den kenarnda. PSA: Frekans blc seim biti. 1= Frekans blc says ,WDTa tayin edilir. 0= Frekans blc says ,TMR0a tayin edilir. PS2:PS0:n-lc oran seim bitleri

bit 5:

bit 4:

bit 3: bit 2-0:

Bit 2-0 Deeri TMR0 Oran WDT Oran 000 1:2 1:1 001 1:4 1:2 010 1:8 011 1 : 16 1:8 100 1 : 32 1 : 16 101 1 : 64 1 : 32 110 1 : 128 1 : 64 111 1 : 256 1.6.17.4. TMR0 Saycsnn zellikleri

1:4

1 : 128

TMR0n almas ve zelliklerini anlamak iin ekil 1.24deki blok emay incelemeniz faydal olacaktr.

ekil 1.24:TMR0 yaps

74

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 ediniz. Frekans blme deerleri TMR0a atandnda ,TMR0a yazmak iin kullanlan tm komutlar frekans blme deerini siler (CLRF , MOVWF, BSF.gibi). 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, Saycnn hffden h00a geiinde oluan tamadan dolay INTCON kaytsnn T0IF bayrana 1 yazlmas durumunda. 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 (fosc)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 ;

75

Fkomut= fosc / 4 Tkomut = 1 / Fkomut TMR0 sayma aral zaman= Tkomut 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 birletirirsek; (256-TMR0 ilk deeri) x ( TMR0 oran)-1 Kesme gecikmesi = S olur. fosc / 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; TMR0 ilk deeri = 256- [(Kesme gecikmesi x fosc ) / 4 x ( TMR0 oran)-1 ] olur. rnek 1: 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. Fkomut= fosc / 4 = 4Mhz / 4 = 1 Mhz Tkomut = 1 / Fkomut = 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 76

Kesme gecikmesi = 2 S x 256 oluur. Veya; Kesme gecikmesi =

= 512 Slik periyotlarla kesme olay

(256-TMR0 ilk deeri) x ( TMR0 oran)-1 fosc / 4 (256-0) x 2

Kesme gecikmesi = 4 Mhz / 4

= 512 S olur.

rnek 2: 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 fosc ) / 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. 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. STATUS RP0 TMR0 STATUS, RP0 bxxxx1xxx OPTION STATUS, RP0 ; Bank 0a ge. ; TMR0 ve prescaler silinir. ; Bank 1e ge. ; WDT silinir. ; Yeni prescaler WDT iin seilir. ; OPTION kaytsna yaz. ; Bank 0a ge.

BCF CLRF BSF CLRWDT MOVLW MOVWF BCF

77

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 yazalm. Sinyal kayna olarak dhil sinyal kaynan kullanalm ve TMR0 orann 1 / 256 olacak ekilde prescaler deerini ayarlayalm. k sinyali PICin RB1 bitine osilaskobun balanmasyla izlenecektir. ekil 1.26deki ak diyagramn inceleyiniz. Bu diyagramda; TMR0 <6>=1 ifadesiyle TMR0n 6.biti 1 mi? Sorgusu yaplmtr. GECIKME etiketi ile altprograma dallanlmtr. Burada Trke karakterlerinin kullanlman hatrlayn. Program iindeki ayarlanmtr; MOVLW b11010111 ve MOVWF OPTION_REG komut satrlar ile OPTION kayts aadaki gibi

PortB pull-up direnleri geersiz.


1 1 0 1 0 1 Option kayts 1 1

Harici kesme ykselen kenarda 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.

ekil 1.25: Program iin OPTION kaytsnn kurulmas

78

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 altprogramnn sresini aadaki gibi bulabiliriz; Fkomut= fosc / 4 = 4Mhz / 4 = 1 Mhz Tkomut = 1 / Fkomut = 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.

Bala WDT sil. PIC16F84 tant PortB=k PortByi sil. GECIKME

1 seviyesini olutur
hayr

TMR0 <6>=1
evet

GECIKME

0 seviyesini olutur Dn (RETURN) GECIKME


ekil 1.26: Programn ak diyagram

79

imdi de algoritmay programa dkelim; LIST P=16F84 INCLUDE P16F84.INC BSF STATUS,5 CLRF TRISB CLRWDT MOVLW b11010111 MOVWF BCF CLRF PALS BSF CALL BCF CALL GOTO GECKME CLRF TEST_BIT BTFSS GOTO RETURN END

;Bank1e ge. ;B portunun tm k. ; WDT ve prescalar sil. ;TMR0, yeni prescalar deerini ve sinyal ;kaynan se ve OPTION_REG ;OPTION kaytsna yaz. STATUS,5 ;Bank0a ge. PORTB ;B portunun tm ularn 0 yap. PORTB,1 ;PortB 1.bit lojik 1 yap. GECIKME ;GECIKME altprogramn ar. PORTB,1 ; PortB 1.bit lojik 0 yap. GECKME ;GECIKME altprogramn ar. PALS TMR0 TMR0,6 TEST_BIT

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. ekil 1.27de WDT zamanlaycs blok diyagram grlmektedir. imdi de WDTn birka zelliinden bahsedelim; 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. 80

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 dnp ilgili bitleri inceleyiniz. Eer WDT ile, kontrolden km bir program tekrar resetleyerek, kontrol ele almay planladysanz , ana program banda STATUS kaytsnn bu bitlerini kontrol etmelisiniz. Daha sonra da reset gerekletikten hemen sonra da bu bitleri kontrol etmelisiniz. Bylece WDTn zaman am sresi dolduunda program akn baka bir yere dallandrabilirsiniz. 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 bitlerini yazarken belirleyebiliriz. Bu konfigrasyon bitlerini program ierinde aadaki gibi yazabiliriz. _CONFIG Bu ifadede ; _CP_OFF _WDT_ON _ PWRT_ON _RC_OSC _HS_OSC) _CP_OFF & _WDT_ON &_ PWRT_ON & _RC_OSC ;kod koruma yok. ;WDT aktif ;Power-On-Reset var. ;RC osilatr kullnlyor. (Dier seenekler _LP_OSC, _XT_OSC,

81

stenirse konfigrasyon bitlerini PIC programlaycnn kendi programndaki fuses penceresinden de yapabiliriz.WDT programn almas esnasnda geersiz yapmak mmkn deildir.

ekil 1.27: WDT Blok diyagram

Not : T0CS , T0SE , PSA , PS2:PS0 bitleri OPTION registeri iindedir.

1.6.18. D/A ve A/D evirme


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 Microchip firmasnn kataloglar incelendiinde, 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. 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 gerekmediinden (zaten denetleyicilerin kullanma amalarndan biri de budur. Biz de bu yntemi kullanacaz. 82

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

Eer i ve bekleme srelerini bir periyot iinde deitirirsek k derilimini de 0-5V arasnda deitirebiliriz. Aadaki gibi bir gecikme alt program ile i ve bekleme srelerini belirleyebiliriz. GECIKME MOVWF TEKRAR DECFSZ GOTO RETURN SAYAC,1 TEKRAR SAYAC

8 bitlik bir DA evriminde, olabilecek en byk dijital deer hFF olacandan bu deeri biz bir evrim peryodunu oluturan say olarak almalyz.Yani PWM k periyodu SAYAC deerinin hFF=d256olmas durumunda oluur. Bu durumda i ve bekleme srelerini,

256 says
Sayi Sayi x 5V = 256 x Vanalog

5V oluursa;
Vanalog oluur.

Sayi=(256x Vanalog )/5 , Vanalog = (Sayi x 5)/ 256 , Saybek =256 - Sayi formlleri bulunur.
rnein 0.5Vluk analog gerilim elde etmek iin GECIKME kaytsna yklenecek i ve bekleme saylarn bulalm. 83 altprogramnda SAYAC

imdi de bir programla PWM yntemi ile analog sinyal retelim: rnek: B portunun 1.Bitinden 2Vluk analog deer reten program yaznz. zm: nce i ve bekleme saylarn bulalm; Sayi=(256x Vanalog )/5=(256 x 2)/5=102.4= 103 = h67ve Saybek =256 - Sayi =256-103=153=h99 olur. Bala GECIKME PIC16F84 Tant. PortB k SAYAC deerini Wden ykle.

Sayi=(256x Vanalog )/5=(256 x 0.5)/5=25.6=26 =h1Ave Saybek =256 - Sayi =256-26=230=hE6 olur. Bu kadar basit.

PORTB<1>=1 IS saysn W yeykle GECIKME

SAYAC=SAYAC-1

SAYAC=0 m? RETURN

PORTB<1>=0

BEKLE saysn W yeykle

GECIKME
ekil 1.29: rnek progamn algoritmas

Programda B portunun 1.biti nce 1 yaplyor. Daha sonra i zamann belirleyen deer (h67) W kaytsna yklenip GECIKME altprogamna dallanlyor. GECIKME altprogamnda h67 deeri 0 olana kadar B portunun 1.biti 1 olarak kalyor. SAYAC deeri 0 olduunda ise anaprograma dnlyor. Bylece i zaman bitmi oluyor. Anaprogamda B portunun 1.biti bu el 0 yaplyor. Daha sonra bekleme zamann belirleyen deer (h99) W kaytsna yklenip GECIKME altprogramna dallanlyor. GECIKME altprogramnda 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 2V oluuyor. 84

imdi de programmz yazalm. ;######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 ii PIC16FF877 kullanarak gerekletireceiz. 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 iyaps ekil 1.31 ve ekil 1.32de verilmitir.

86

ADCS1 ADCS0

CHS2 CHS1 CHS0

Osc modu; Analog kanal 00:Fosc/2 seim bitleri 01: Fosc/8 ( 000:AN0111:AN7) 10: Fosc/32 11: FRC

GO/DONE 1=Dnm balad 0=Bitti

ADON 1=AD alyor 0= AD kapal.

ekil 1.31: ADCON1 kayts

ADFM AD sonu seim biti 0:Saa yanak 1:Sola yanak

PCFG3

PCFG2

PCFG1

PCFG0

AD PORT konfigrasyon bitleri


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). AD birimini aktifletir. 87

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 aadakileri bilmemiz gerekir. ADIE biti 16F877nin PIE1 kaytsnda bulunur. PIE1 16F877nin kesme yetki durumlar hakknda iinde kontrol bitleri barndrr. Burada biz sadece ADIE yetki biti ile ilgileniliyoruz. 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 biz sadece PEIE ve GIE biti bayraklar ile ilgileniliyoruz. PEIE=1 evresel kesmeler aktif. PEIE=0 evresel kesmeler pasif. GIE=1 tm kesmeler aktif. GIE=0 tm kesmeler pasif. Kullanlmayacaksa bu basamak geilir. 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 biz sadece ADIF bayra ile ilgileniliyoruz. ADIF=1 ise AD evrimi tamamland. ADIF=0ise AD evrimi tamamlanmad. Sonraki evrim iin 1 yada 2. basamaa git. imdi de bir rnekle AD dnmn grelim. 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 ihtiyacmz olacaktr (ekil 1.34). Zaman gecikmesi iin TMR0 donanm zamanlaycsnn kullanldna dikkat ediniz.

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 UYGULAMA FAALYET


LEM BASAMAKLARI
B Portuna bal 8 led , A portunun 0.bitine bal bir butona basldnda birbirine eklenerek aadaki gibi 1 sn. arayla sola doru kayarak yansn.

NERLER
Ak diyagram sembollerini amacna uygun kullannz. Programn balk ksmnda tanmlamalar yapnz ( INCLUDE). gerekli LIST,

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; 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. Programn derlenmesi sonucunda oluan HEX dosyas ASM dosyanzn bulunduu dizindedir (MPASM program dizininde deildir).

91

LME VE DEERLENDRME LME VE DEERLENDRME


OBJEKTF TESTLER (LME SORULARI)
1. LIST ve INCLUDE ifadeleri bir assabmler programn hangi blmnde bulunur? A) Balk 2. B) Atama C) Program D) Sonlandrma

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 92

5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.

Programn balang adresi h.......dr. Programda ..........................mikrodenetleyicisi kullanlmtr. Programda .. ....portu giri,........ portu k olarak kurulmutur. A Portunun ........bitine bal bir buton ile programn ak konrol edilmektedir. A Portuna bal buton baslmad srece PORB kaytsnn deeri h......dir. Butona basldktan sonra BCF STATUS, C komut satrnda C (elde) bayrann deeri olur. Butona basldktan sonra, program sonunda W kaytsnn deeri h......dir. Butona basldktan sonra, program sonunda TEST kaytsnn deeri h......dir. Butona basldktan sonra, program sonunda PORTB kaytsnn deeri h......dir. Butona basldktan sonra program sonunda C (elde) bayrann deeri ......dir. GOTO komutuna PCye(program saycya) ...............etiketinin adresi yklenir.

DEERLENDRME
Cevaplarnz cevap anahtar ile karlatrnz. Doru cevap saynz belirleyerek kendinizi deerlendiriniz. Yanl cevap verdiiniz ya da cevap verirken tereddt yaadnz sorularla ilgili konular faaliyete dnerek tekrar inceleyiniz. Tm sorulara doru cevap verdiyseniz dier faaliyete geiniz.

93

RENME FAALYET-2 RENME FAALYET-2


AMA
Uygun ortam salandnda microdenetleyici programn derlemesini yapabilecek, derleme sonunda oluan dosyalar tanyabilecek ve oluan dosyalardan faydalanarak programnz hakknda yorum yapabileceksiniz.

ARATIRMA
Bu faaliyet ncesinde yapmanz gereken ncelikli aratrmalar unlar olmaldr: MPASM programnn menlerini tanyp ayarlarnn nasl yaplmas gerektiini renmelisiniz. 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


Bildiimiz gibi MPASM derleyici program assmbly programmzn makine kodunu retiyordu . MPASM derleyici programnn nasl kurulacan, ayarlarnn nasl yaplacan Mikrodenetleyici iin gerekli yazlmn kullanm konusunda anlatmtk. Burada ise derleme ileminin yaplmas ve derleme sonucunda oluturulan dosyalar greceiz.

94

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.

Resim 2.1: MPASM derleyici program arabirimi

95

Daha nceden yazlp kaydedilmi .asm uzantl kaynak dosyas Browse ile alr (Resim 2.2).

Resim 2.2: ASM dosyann seilmesi.

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

96

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. imdi de bu dosyalarn ne anlama geldiini grelim. 2.1.2.1. ERR Dosyas ERR dosyas metin editrn kullanarak aabileceiniz 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. imdide 1LEDYAK.ERR dosyamzn hatalarn bulup dzeltelim. ERR uzantl dosyay bir metin editr ile ap iinde hatalarn olduu satrlar aryoruz. Hatalar bulduktan sonrada tekrar ASM dosyamz ap ilgili hatalar birer birer gidereceiz. Eer programnzda kod satrlar oksa biraz zor olabilir, ama gene de zm var; dosyada metin arama zelliini kullanarak Error kelimesini arayarak bulabilirsiniz. imdi dosyay aalm ve hatalar bulalm.

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 yaparak dzeltiyoruz. 2.satrda bir hata var. Illegal opcode (PORTB)=> Yalnz bu PORTBnin yazlnda bir hata yok; burada baka bir hata olmal gidip 12 inci satra bakalm. Gryoruz ki 12. satr CLRF PORTB olmas gerekirken, CLRFg PORTB olarak girilmi, burada ERR dosyasnda CLRFg ifadesini warning olarak bir st satrda gryoruz.CLRF yazdmzda bu assembler kodu olur, 97

ama CLRFg yazdnzda 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 bakarsak "Symbol not previously defined (SAYAC1)" yazyor. Burada MPASM diyor ki: "Sayac1 deikenini daha nce tanmlamadnz.O zaman reteceiz demektir, gidip asm dosyamzda tanmlamalar yaptmz blme bakyoruz ve gryoruz ki aslnda bu hatay az nce dzeltmiiz. nk az nce 6.satrda bulunan hata , SAYAC1 deikenini tanmlarken bulduumuz hatayd ve dzeltmitik. 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 olacanzdansorun yaamazsnz, uzun uzun hata aramazsnz.

98

2.1.2.2. ASM Dosyas ASM dosyas aslnda derleme sonunda oluan bir dosya deildir. Bizim program kaynak dosyamzdr. Fakat derleme sonunda oluan kaynak dosyalarla ayn dizinde bulunduu iin listeye dahil edildi. Bit pozisyonlarn tersleme gryorsunuz. konusundaki tersle.asm programn aada

;====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

99

2.1.2.3. HEX Dosyas HEX dosyas metin editrn kullanarak aabileceiniz bir dosyadr. ASM dosyas konusunda rnek olarak verilen tersle.asm dosyas derlendikten sonra oluan tersle.hex dosyas aada grlmektedir. Denetleyiciye bu dosyadaki verileri ykleriz. :1000000086018316860183120F3086000920860937 :100010000628FF308C00FF308D008D0B0D288C0BD7 :040020000B280800A1 :00000001FF 2.1.2.4. WAT Dosyas WAT dosyas MPASM programnn derlemesi sonucu oluan bir dosya deildir. Bu yzden bunun zerinde durmayacaz. 2.1.2.5. PJT Dosyas PJT dosyas metin editrn kullanarak aamayacanz bir dosyadr. Bu dosya proje dosyasdr ve hangi program kullanarak proje oluturulmu ise o program tarafndan alr. rnein MPLAB kullanarak oluturacanz projeler gibi Programc iin bilgilendirici bir dosya deildir sadece var olan almay amak iin kullanlr. 2.1.2.6. LST Dosyas LST dosyas metin editrn kullanarak aabileceiniz 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)

100

Oluan hata ve uyar says (PAGE3 sonunda hata says 0, uyar says 7, uyarlar ise PAGE1 ierisinde bulunuyor. ) MPASM 02.30.11 Intermediate LOC OBJECT CODE 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 101 tersle.ASM 8-6-2005 19:02:47 PAGE 1

LINE SOURCE TEXT

MPASM 02.30.11 Intermediate ABD.ASM 8-6-2005 19:02:47 SYMBOL TABLE LABEL VALUE C DC DON1 DON2 EEADR EECON1 EECON2 EEDATA EEIE EEIF F FSR GECIKME GIE INDF INTCON INTE INTEDG INTF IRP NOT_PD NOT_RBPU NOT_TO OPTION_REG PCL PCLATH PORTA PORTB PS0 PS1 PS2 PSA RBIE RBIF RD RP0 RP1 SAYAC1 SAYAC2 STATUS T0CS T0IE T0IF 00000000 00000001 0000000B 0000000D 00000009 00000088 00000089 00000008 00000006 00000004 00000001 00000004 00000009 00000007 00000000 0000000B 00000004 00000006 00000001 00000007 00000003 00000007 00000004 00000081 00000002 0000000A 00000005 00000006 00000000 00000001 00000002 00000003 00000003 00000000 00000000 00000005 00000006 0000000C 0000000D 00000003 00000005 00000005 00000002 102

PAGE 2

T0SE 00000004 TERSLE 00000006 TMR0 00000001 TRISA 00000085 TRISB 00000086 W 00000000 WR 00000001 WREN 00000002 WRERR 00000003 Z 00000002 MPASM 02.30.11 Intermediate SYMBOL TABLE LABEL _CP_OFF _CP_ON _HS_OSC _LP_OSC _PWRTE_OFF _PWRTE_ON _RC_OSC _WDT_OFF _WDT_ON _XT_OSC __16F84 VALUE

ABD.ASM 8-6-2005 19:02:47

PAGE 3

00003FFF 0000000F 00003FFE 00003FFC 00003FFF 00003FF7 00003FFF 00003FFB 00003FFF 00003FFD 00000001

MEMORY USAGE MAP ('X' = Used, '-' = Unused) 0000 : XXXXXXXXXXXXXXXX XX-------------- ---------------- ---------------All other memory blocks unused. Program Memory Words Used: 18

Program Memory Words Free: 1006 Errors : Warnings : 0 7 reported, 0 suppressedMessages : 0 reported, 1 suppressed

103

UYGULAMA FAALYET UYGULAMA FAALYET


Yaptnz ve yapacanz bir mikrodenetleyici programn makine diline evirerek ASM, HEX, LST, COD, ERROR dosyalarn inceleyiniz.

LEM BASAMAKLARI
Mikrodenetleyici derleme programn Derleme (MPASM) bilgisayarnza kurunuz. MPASM program ayarlarn yapnz. Uygulama faaliyetleri-1 Uygulamalar blmnde yazm olduunuz program derleme programnda anz. Komut dilinde yazlm programnz

NERLER
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.

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.

104

LME VE DEERLENDRME LME VE DEERLENDRME


Aadaki sorular cevaplayarak faaliyette kazandnz bilgi ve becerileri lnz.

OBJEKTF TESTLER (LME SORULARI)


1. Bir assembly program MPASM ile derlendikten sonra aadaki dosyalardan hangisi olumaz? A) ERR dosyas 2. B) LST dosyas C) HEX dosyas D) PPT dosyas

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 5.

B) 177

C) 1

D) 7

Aadaki dosyalardan hangisini bir metin editr ile ap programmz hakknda bilgi alamayz? A) ERR dosyas B) LST dosyas C) ASM dosyas 10 nu.lu sorular doru/yanl olarak cevaplandrnz. 105 D) PJT dosyas

6. 7. 8. 9. 10.

ASM dosyas MPASM programnn derleme sonucunda oluturduu bir dosya deildir. Denetleyiciye ykleyeceimiz veriler ASM dosyas iindedir. LST dosyasndan denetleyici belleini ne kadar kulladmz renebiliriz. Error [113] C:\prog\test.asm 20 :illegal opcode (PORTA) hata satr bize test.asm programnn 20. satrnda bir komut yazlm hatas olduunu syler. Hatasz program mutlaka beklediimiz gibi alr.

DEERLENDRME
Cevaplarnz cevap anahtar ile karlatrnz. Doru cevap saynz belirleyerek kendinizi deerlendiriniz. Yanl cevap verdiiniz ya da cevap verirken tereddt yaadnz sorularla ilgili konular faaliyete dnerek tekrar inceleyiniz. Tm sorulara doru cevap verdiyseniz dier faaliyete geiniz.

106

MODL DEERLENDRME MODL DEERLENDRME


PERFORMANS TEST (YETERLK LME)
Mikrodenetleyici programlama modl, faaliyetleri ve aratrma almalar sonunda kazandnz bilgi ve becerilerin llmesi ve deerlendirilmesi iin kendinizi deerlendirme leine gre deerlendiriniz. Bu deerlendirme sonucuna gre bir sonraki modle geebilirsiniz.

DEERLENDRME KRTERLER
Ak diyagram sembollerini bir problemin zmnde kullanabilir misiniz? Mikrodenetleyici assembler program ve yazm kurallarna uygun program yazabilir misiniz? Mikrodenetleyici komutlarnn ilevlerini biliyor musunuz? Programda say ve karakterleri kullanmak; Heksadesimal saylar kullanabilir misiniz? Binary saylar kullanabilir misiniz? Desimal saylar kullanabilir misiniz? ASCII karakterler kullanabilir misiniz?

Evet

Hayr

Mikrodenetleyici iin gerekli yazlmn kullanmak;


MPASM derleyici programn kurabilir misiniz? MPASM programnn kullanacanz denetleyiciye gre ayarlarn yapabilir misiniz? Mikrodenetleyici programn yazmak; Portlarn giri ve k olarak ynlendirebilir misiniz? Konfigrasyon bitlerinin yazabilir misiniz? W kaytsnn kullanabilir misiniz? Bitleri test ederek ilem yapabilir misiniz? Status kaytsn kullanabilir misiniz? Zaman geciktirme dngleri dzenleyebilir misiniz? Bit pozisyonlarn sola/saa kaydrma ,tersleme ilemlerini yapabildiniz mi? stenen bitleri sfrlamak, bire evirmek ve terslemek ilemlerini yapabilir misiniz? Bir bytlk iki veriyi birbiriyle veya 0 ile karlatrabilir misiniz? 8 ve 16 bitlik toplama yapabilir misiniz? 8 ve 16 bitlik karma yapabilir misiniz? evrim tablolarn kullanabilir misiniz? INTCON kaytsn kullanabilir misiniz? Kesme kaynaklarn biliyor musunuz? Kesme alt programlarn dzenlenleyebildiniz mi? TMR0 ve WDT sayclarn kullanabilir misiniz? 107

Option kaytsn kullanabilir misiniz? Mikrodenetleyici ile dijital /analog evirmesini yapabilir misiniz? Mikrodenetleyici ile analog /dijital / evirmesini yapabilir misiniz? Mikrodenetleyici kontrol programn makine diline evirmek; Assembly programn derleyebilir misiniz? Derleme sonucunda oluan dosyalardan faydalanarak kan hatalar giderebilir misiniz?

DEERLENDRME
Yaptnz deerlendirme sonucunda eksikleriniz varsa renme faaliyetlerini tekrarlaynz. Modl tamamladnz, tebrik ederiz. retmeniniz size eitli lme aralar uygulayacaktr. retmeninizle iletiime geiniz.

108

CEVAP ANAHTARLARI CEVAP ANAHTARLARI


RENME FAALYET -1 CEVAP ANAHTARI
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 A B B C 000 P16F84 A,B 0 0. 00 C8 E4 C8 1 TEKRAR

RENME FAALYET-2CEVAP ANAHTARI


1 2 3 4 5 6 7 8 9 10 D B B A D Y Y D D Y

Cevaplarnz cevap anahtarlar ile karlatrarak kendinizi deerlendiriniz.

109

NERLEN KAYNAKLAR NERLEN KAYNAKLAR


ALTINBAAK Orhan, Mikrodenetleyiciler ve PIC Programlama, stanbul, 2000. http://www.antrak.org.tr http://www.Microchip.com

110

KAYNAKA KAYNAKA
ALTINBAAK Orhan, Mikrodenetleyiciler ve PIC Programlama, stanbul, 2000. BODUR Yaar, Adm Adm PICmicro Programlama, stanbul. Microchip Technology Inc.,PIC16F84 Data Sheet 18-Pin Enhanced Flash/Eprom 8-bit Microcontrollers, 2001. GNE Abdullah, Mikrodenetleyici Ders Notlar, Bursa, 2004. http://www.antrak.org.tr http://www.ramay.net http://www.Microchip.com

111

You might also like