You are on page 1of 143

T.C.

FIRAT NVERSTES TEKNOLOJ FAKLTES YAZILIM MHENDSL BLM

YMT216 MKROLEMCLER VE PROGRAMLAMA


(Ders Notlar)

brahim TRKOLU

ELAZI 2012

NDEKLER
BLM 1. GR BLM 2. MKROLEMC VE MKROBLGSAYARLAR BLM 3. MMARLER BLM 4. BAARIM LTLER BLM 5. VON NEUMAN VE CISC MMARL MKROLEMC BLM 6. HARVARD VE RISC MMARL MKROLEMC

BLM 1. GR
Gnmzde hzla gelien teknoloji bilgisayarla kontrol edilen cihazlar bizlere ok yaklatrd. yle ki gnlk hayatmzda ska kullandmz bir ok elektronik cihaz (cep telefonu, faks, oyuncaklar, elektrikli sprge, bulak makinas, vs.) artk ok kk saysal bilgisayarlarla (mikro denetleyiciler) ilev kazandrlabilmektedir. Benzer iler, ilk zamanlarda mikroilemci tabanl bilgisayar kartlar ile yaplabilmekteydi. Mikroilemci ile bir cihaz kontrol etme ilemi Giri/k ve hafza eleman gibi ek birimlere ihtiya duyar. Bylesi bir tasarm kolay olmamakla birlikte, maliyet ve programlama asndan da dezavantajlara sahiptir. te mikrodenetleyiciler bu sorunlar ortadan kaldrmak ve bir ok fonksiyonu tek bir entegrede toplamak zere tasarlanm olup, gnmzde hemen hemen bir ok elektronik cihazda farkl tipleri bulunmaktadr. Mikroilemci, sakl bir komut dizisini ardl olarak yerine getirerek veri kabul edebilen ve bunlar ileyebilen saysal bir elektronik eleman olarak tanmlanabilir. Mikroilemci temelde mantk kaplar, flip-floplar, sayc ve saklayclar gibi standart saysal devrelerden oluur. Genel olarak bilgisayar ile iki ekilde ilgilenilir : 1. Yazlm (Software) : Bilgisayarn fiziksel paralarn iler hale getiren bileenlerdir. 2. Donanm (Hardware) : Bilgisayar oluturan fiziksel paralarn tmdr. Her ikisi de birbirinin tamamlaycsdr.Birisi olmazsa dieri de olmaz.Sistem ncelikli olarak tasarlanrken nce sistemi meydana getirecek elemanlar ,yani donanm paralar gz nne alnr.Daha sonra yazlm bu yapya baklarak yazlr.Yazlm,donanmn hangi ynteme gre nasl alacan gsteren bir sanal uygulamadr. Hangi zamanda hangi elemann devreye girerek zerindeki bilgiyi ilemesini salamaktadr. Basit bir bilgisayarn ana elemanlar ekil 1.1.de grlmektedir. Tm saysal bilgisayarlar ekilde gsterilen elemanlara sahiptirler. Bunlarn dndaki eleman ya da cihazlar seimliktir.

Adres yolu

CPU

Bellek

Giri/k

Kontrol yolu Veri Yolu

ekil 1.1: Genel Bilgisayar yaps Bilgisayar oluturan bu sistemdeki elamanlar; mikroilemci(CPU), bellek ve giri/k(G/) birimleridir. Mikroilemcinin ileyecei komutlar ve veriler geici veya kalc belleklerde tutulmaktadr. Bilgiyi oluturan komut ve veriler bellekte karmak veya farkl alanlarda tutulabilir.Yazan kiinin karakterini veya setii yolu gsteren eitli algoritmalardan meydana gelen program ilemciyi kullanarak verilerin ilenmesini salar.Bilginin ilenmesi srasnda ortaya kabilecek ara deerler ,en sonunda sonular bellekte bir yerde depolanmak zorundadr.Btn bu yaplan ilemler bir hesaba dayanmaktadr.Bilgisayarn bilgiyi ilemedeki ana karar vericisi sistemin kalbi saylan mikroilemcidir.CPU tarafndan gerekletirilen iki temel ilem vardr.Birincisi komutlarn yorumlanarak doru bir srada gereklemesini salayan kontrol ilevi,dieri toplama,karma vb zel matematik ve mantk ilemlerinin gerekletirilmesini salayan icra ilevidir. Bilgisayarda altrlan yazlmlar kendi aralarnda ikiye ayrlr.Bunlar, programc tarafndan yksek dzeyde yazlan programlardr ki insanlar tarafndan anlalabilir dzeydedir ve bu yazlan programlarn makine tarafndan anlalmasn salayan badatrc (interface) yazlmlardr ki iletim sistemi(OS) olarak anlrlar.Mikroilemci mantksal 0 ve 1 esasna gre alt ndan,verilen komutlarn da bu esasa dayanmas gerekmektedir.Ksaca saysal bilgisayarlarn kulland doal dile makine dili denir.Programc tarafndan yksek dzeyde yazlan programlar ancak yine insanlar tarafndan anlalabilir.Bu programlarn makine tarafndan anlalabilmesi iin derleyici,yorumlayc ve assembler gibi arac programlarn kullanlmas gerekir. Demek ki, yazlm denildiinde akla, iletim sistemi, st dzey diller vastasyla yazlan eitli uygulama programlar gelir. Bu diller; - Yksek seviyeli diller - Orta seviyeli diller - Dk seviyeli diller olmak zere snfa ayrlabilir.Bu yksek, orta, dk kelimelerinin anlam donanmn yazlma ne kadar yakn olduunu gsterir. Yksek seviyeli dillerin kontrol sistemlerinde kullanm zordur. Yksek seviyeli bir dilde yazlan program derleyici tarafndan derlendiinde bilgisayar bunu dk seviyeli dile (makina diline) evirerek anlar. Orta seviyeli dillerin (assembly) kontrol sistemlerinde kullanm uygundur. Assembly dilini kullanrken donanm bilmemiz zorunludur. rnein Intel 8085 ve Motorola 6800 mikroilemcilerinin assembly dilleri farkldr. nk donanmlar farkldr. Orta seviyeli diller

makina dilinde, yani ikili say sistemi ile program yazma zor ve zahmetli bir itir. Bunun iin makina dilinin komutlar eklinde verilmesini salayan assembly diller gelitirilmitir. Assembly dilinde program yazmak makina diline gre daha kolay ve anlalrdr. Fakat fazla miktarda komut ierir. Bunun iin anlama ve kullanm belli bir zaman alr. Assembly makinaya ynelik dillerdir. Programc kulland bilgisayarn donanmn ve adresleme tekniklerini ok iyi bilmelidir. Assembly programlar standart deildir. Ayn model olmayan her mikroilemcinin kendine zg assembly dili vardr. Programc bu dille makinayla en basit ekilde iletiim kurar. Assembly dilinde yazlan her program bellekte saklanrken veya ilenirken 0 veya 1ler formuna evrilmeye gerek duyar. Bu evirme ii programc tarafndan retici firmann databook kitabna baklarak elle veya bir assembler (Assembly derleyicisi) yardmyla yaplr. Tek tek komut kodu karlna baklarak ikili komut kodlar bulunuyorsa ve eer program ok uzun veya tekrarlamal ise ,kaynak program ama programa evirmek ok zor ve hata yapma pay yksek olacaktr. Bu gibi durumlarda iyi bir assembler program kullanlmaldr. Bazen programclar Assembly dili ile assembleri kartrmaktadrlar. Assembly dili, konuma dilinde emir eklindeki cmleden zenle seilerek alnm ve says genelde en fazla drt olabilen harflerden meydana gelen ve bir komut anlam ifade eden hatrlatclar ierir. Assembly dilinde program yazmak makine dilinde yazmaktan daha kolay ve takibi daha basittir. Fakat bu programn bellee konulmadan nce makine diline evrilmesi gereklidir,ite bu ii assembler denilen (bir nevi paket programda denilen) evirici program yapar.Bu evirme ilemine kaynak programn ama programa evrilmesi denir. Assembly dilinde yazlm bir programn ama programa evirmede en ok kullanlan yntem elle yaplan ilemdir.Bu yntemde her satrdaki hatrlatcya karlk gelen kodlar retici f irma tarafndan yaynlanan databooka baklarak bulunur. Bylece ama program bulunmu olur. Assembly Dilinin Dezavantajlar Assembly dilinde bir program yazmak iin zerinde allan bilgisayarn zellikleri hakknda detayl bilgi sahibi olunmaldr. Mesela bunlar,bilgisayar mikroilemcisinde bulunan kaydediciler ve says,komut kmesi ve adresleme trleri gibi deiik zelliklerdir. Assembly dilinin dier bir mahsuru elastiki olmamasdr. Deiik firmalarca retilen her mikroilemcinin kendisine has bir programlama dili olmasdr.Bundan dolay bir mikroilemci iin yazlan bir assembly dilindeki program dier bir mikroilemcide almayabilir.

Assembly Dilinin Avantajlar Assembly dilinde program yazanlar,donanmn almasn ok iyi anlamak ve ona gre iyi programlar gelitirmek zorunda olduklarndan kendilerine birok kazanmlar salarlar.Yksek dzeyli dillerde program yazarken bilgisayar donanmnn grnmeyen baz yanlarna assembly dilinde sahip olunur. Assembly dilinde yazlan programlar yksek dzeyli dillerle yazlan programlara nazaran daha hzl ve kk boyutludur. Assembly dili,program byklnde ve alma hznda ideal optimizasyon salar. Dk seviyeli diller ise, makina dilleridir. Yine makinaya zg bir dildir. Bu dilde programlama ok zor, hata yapma oran ok yksek ve program kontrol etme imkan nerede ise yoktur. Assembly ve makina diline uygun uygulamalar : - Hesaplamalardan daha ok giri/k gerektiren uygulamalar - Gerek zaman denetimi ve uygulamalar - Fazla veri ilemesi gerekmeyen uygulamalar - Hzllk istene uygulamalar

BLM 2. MKROLEMC VE MKROBLGSAYARLAR


2.1. BLGSAYAR MMARS Bilgisayar mimarisi, komut kmesinin,donanm elamanlarnn ve sistem organizasyonunun dahil olduu bir bilgisayarn tasarmdr. Mimari iki farkl yaklamla tanmlanmaktadr: ISA - Komut kmesi mimarisi HSA - Donanm sistem mimarisi ISA, bir bilgisayarn hesaplama karakteristiklerini belirleyen komut kmesinin tasarmdr. HSA; CPU, depolama ve G/ sistemlerinin dahil olduu alt sistem ve bunlarn balant ekilleridir. Komut kmesinin yazlm ve donanmla ilikisi ekil 2.1.de grlmektedir.

Yazlm

Komut Kmesi

Donanm

ekil 2.1.: Komut kmesinin yazlm ve donanmla ilikisi Bilgisayar sistemlerinde btn mesele,bu iki kavram yerli yerine oturtmaktr. Mimari bir kavram olarak HSAnn ne olduu ve hangi elemanlardan meydana geldii yukarda aklanmtr. ISA ise, programcnn bu elemanlara yn verecek program yazmas durumunda nasl bir kabul greceidir.Farkl irketler tarafndan retilen farkl bilgisayarlarn fiyat/performans asndan elbette farkl mimarileri olabilir. zel bilgisayar sistemleri(gnmzde bir eit oyun konsollar )iin programc kodlarn makinann dorudan zel donanmna gre yazmaktayd.Bylece bir makine iin yazlan program ayn firma tarafndan retilse bile,ne rekabet ettii bir makinasnda ne de dier makinasnda alabilmekteydi. Mesela, A makinas iin yazlan bir oyun B makinasnda veya C makinasnda almayacaktr. Programc tarafndan yazlan kodlar donanm ama anahtar olarak dnlebilir (ekil 2.2..).
7

Yazlm

Yazlm

Komut Kmesi Mimarisi

Donanm

Donanm

ekil 2.2.: Komut Kmesi mimarisinin yazlm ve donanmla ilikisi Programsal yaklam Bilgisayar sistemlerinde btn mesele sistemi meydana getiren tm elemanlarn bir komutla nasl devreye sokulacadr.Ufak tefek ayrcalklar olsa da birbirine benzer yapdaki bilgisayarlar iin farkl programlar yazmak olduka maliyetli olduundan ,programcnn yazd komutlarn her bilgisayar tarafndan alglanarak yrtlmesi esas hedeftir. Ortaya atlan ilk zm mikrokod yaklam daha sonralar iki standarttan biri olmutur. Donanm devreye sokacak z bilgilerin yani komut kmesinin yer ald bu yere (blgeye) mikrokod motoru denilmektedir. (ekil 2.3.). Buras,CPU iinde CPU olarak da ifade edilebilir.Programcnn yazd kodlar ilemcinin daha abuk anlayabilecei veya altrabilecei kk mikrokodlara dntren bu mikrokod motoru,ilemci ROM bellek vastasyla yerletirilmitir. Mikroprogram ve icra birimi tarafndan meydana gelen mikrokod ROMun grevi,zel komutlarn bir dizi kontrol sinyallerine evirerek sistem elemanlarnn denetlenmesini salar. Ayn zamanda, mikrokod CISC tipi ilemcilerdeki temel ilevi, alt dzey komut kmesiyle programcnn alt st dzey komutlar arasnda soyutlama dzeyi oluturmaktr.

Ana Bellek

CPU
Mikrokod ROM

n bellek

Kontrol Birimi

Kaydediciler

Kaydediciler

ekil 2.3.: Bir mikrokod ROMun sistemdeki yeri

Mikroilemci

reticileri,sistem

tasarmnda

iki

ynl

dnmek

zorundadrlar.

Birincisi,mimariyi meydana getiren elemanlarn ilevleri,ikincisi bu elemanlarn nasl devreye sokulacadr. Elemanlar devreye sokmak iin program yazmak gerekecektir.Bu iin bir yan; dier yan ise donanmdr.Donanmla tasarm mhendisleri ilgilenir.Fakat programc yle bir program yazmal ki,sistem tarafndan alglanarak doru zamanda doru eleman devreye sokulabilsin. Donanm mimarisini programcya aktaracak en iyi yol ona kullanabilecei komut kmesini hazr vermektir.Bilgisayar sisteminin donanmsal tm zelliklerini ieren sisteme komut kmesi mimarisi denildiine gre, programc bu kmeye bakarak veya bu kmeyi kullanabilen derleyicileri kullanarak hibir endieye gerek duymaz. Programcnn yazd bir komut iletildiinde, mikrokod ROM bu komutu okur ve sonra o komuta karlk gelen uygun mikrokodlar ykler ve altr. Donanmsal Yaklam Mikrokod kullanlarak ISA sisteminin yrtlmesinin balca sakncas balangta komutlarn dorudan altran sisteme gre yava olmasdr. Mikrokod, ISA tasarmclarna programcnn ara sra kulland her eit komutlarn komut kmesine eklenmesini ister. Daha ok komut demek daha fazla mikrokod, ekirdek bykl ve g demektir. ISA mimarisinin yaanan aksaklklarndan dolay daha sonralar ,komutlarn dorudan donanm elemanlar tarafndan yorumlanarak sistemin denetlendii dier bir mimari yaklamda donanmsal alma modelidir..Komutlarn anlalr standart bir boyuta getirilerek alld sisteme RISC modeli denilmektedir.Yani komutlarn donanmsal alma modeline sahip RISC tipi bilgisayarlarda, komut kmesindeki komutlarn says azaltlm ve her bir zel komutun boyutu drlmtr.

2.2. MKROLEMCLER VE MKRODENETLEYCLER


MKROLEMC, sakl bir komut dizisini ardl olarak yerine getirerek veri kabul edebilen ve bunlar ileyebilen saysal bir elektronik eleman olarak tanmlanabilir. Gnmzde basit oyuncaklardan, en karmak kontrol ve haberleme sistemlerine kadar hemen her ey mikroilemcili sistemlerle kontrol edilmektedir. Mikrodenetleyici veya saysal bilgisayar temel ksm (CPU, Giri/k Birimi ve Hafza) ile bunlara ek olarak baz destek devrelerinden oluur. Bu devreler en basitten, en karmaa kadar eitlilik gsterir.

evresel niteler monitr, klavye, yazc, modem

Giri/k nitesi

CPU M ikroilemci

RAM
bellek

ekil 2.4 : Bir mikroilemci sisteminin temel bileenleri

Giri / k (Input / Output) : Saysal, analog ve zel fonksiyonlardan oluur ve mikroilemcinin d dnya ile haberlemesini salar. CPU (Central Processing Unit Merkezi lem Birimi) : Sistemin en temel ilevi ve organizatrdr. Bilgisayarn beyni olarak adlandrlr.Komutlar yrtmek, hesaplar yapmak ve verileri koordine etmek iin 4, 8, 16, 32 ve 64 bitlik szck uzunluklarnda alr. Hafza : RAM, ROM, PROM, EPROM, EEPROM veya bunlarn herhangi bir birleimi olabilir. Bu birim, program ve veri depolamak iin kullanlr. Osilatr : Mikroilemcinin dzgn alabilmesi iin gerekli olan elemanlardan biridir. Grevi; veri ve komutlarn CPU 'ya alnmasnda, yrtlmesinde, kayt edilmesinde, sonularn hesaplanmasnda ve ktlarn ilgili birimlere gnderilmesinde gerekli olan saat darbelerini retmektir. Osilatr, farkl bileenlerden oluabilecei gibi hazr yaplm bir modl de olabilir. Dier devreler : Mikroilemci ile balantl dier devreler; sistemin kilitlenmesini nlemeye katkda bulunan Watchdog Timer, mantk aamalarn bozmadan birden fazla yongann bir birine balanmasn salayan adres ve veri yollar (BUS) iin tampon (buffer), ayn BUS 'a balanm devrelerden birini semeyi salayan, adres ve I/O iin kod zc elemanlar (decoder). Mikroilemcinin almas: Bir mikroilemcinin almasnda ,kontrol birimi tarafndan yerine getirilen ve ekil 2.5de gsterilen temel iki ilem vardr. Komut okuma (fetch) ve komut yrtme (execute). Komut okuma,mikroilemcinin hafzadan bir ilem kodu (operation codeopcode) alp komut saklaycsna (Instruction Register IR) getirme ilemine denir. Komut saklaycsna gelen komut ile hangi ilemin yaplaca komut kod zcs tarafndan belirlenir.Gereken sinyalleme kontrol birimi tarafndan retilir.Eer komut ile belirlenen ilem iin,baz ilem verisine (operand) gerek var ise,bu veriler hafzadan okunur.

10

Son olarak komutun yrtlmesi gerekletirilir. Bir komutun yrtlmesi bittikten sonra, benzeri ekilde; tekrar komut okuma ve yrtme ilemleri,sonsuz bir evrim iinde, bir durma (halt) komutu yrtlnceye kadar yaplr. Mikroilemcinin almasnn durduran bu komut ile ilemci bir nc duruma girer ve bu durumdan kabilmesi iin bir donanm sfrlamas (reset) gerekir.

Komut mikroilemcide

Komut Okuma (Fetch)

Yrtme (Execute)

Komut yrtmesi biter

RESET

Durma(Halt) Komutu

Donanm sfrlamas olmad srece dur

Durma (Halt)

RESET

ekil 2.5:Bir mikroilemcideki komut okuma ve yrtme evrimleri rnek: Bir mikroilemcinin program hafzasnda bulunan programn altrlmas

adres 0022 0023 0024

op-code 4F 5F

Program Hafzas
ekil-2.6. Program ykl bulunan hafza 1. Program sayac o anda alan komutun adresini zerine alr. PC =[0022] 2. Komut kayts, o anda alan komutu zerinde bulundurur. Ir = 4F 3. Kontrol nitesi bu komuta gre uygun elektronik sinyalleri uygun yere gndererek komutu altrr. 4F iin A akmlatrn sfrlayc iaret gnderir. 4. Daha sonra PC bir sonraki adrese geer ve ayn ilemler tekrarlanr.

11

MKROBLGSAYAR (MKRODENETLEYC, chip(yonga) zerinde retilmi biimine denir.

MCROCONTROLLER)

bir

bilgisayar ierisinde bulunmas gereken temel bileenlerden Hafza, I/O nitesinin tek bir

EVRES EL NTELER Lamba, motor, LCD, s,k sensr vb.

PIC M ikrodenetleyicisi

I/O

Bellek

ekil 2.7 : Bir mikrodenetleyici sisteminin temel bileenleri Mikroilemci ile kontrol edilebilecek bir sistemi kurmak iin en azndan u niteler bulunmaldr; CPU, RAM, Giri/k nitesi ve bu niteler arasnda veri/adres al veriini salamak iin bilgi iletim yollar (DATA BUS) gerekmektedir. Bu niteleri yerletirmek iin bask devre organizasyonu da nemli bir aamadr. Mikrodenetleyici ile kontrol edilebilecek sistemde ise yukarda saydmz nitelerin yerine tek bir yonga (mikrodenetleyici) kullanmak yeterli olacaktr. Tek bir yonga kullanmak ile, maliyet decek, kullanm ve programlama kolayl salanacaktr. Bu avantajlardan dolay son zamanlarda bilgisayar kontrol gerektiren elektronik uygulamalarda gelimi mikroilemci (Embeded processor) kullanma eilimi gzlenmitir.

Tek chip

Veri yolu
Seri, Paralel, port

CPU
(Genel amal Mikroilemci)

RAM

ROM

G/ Portu

Timer

Adres yolu a) Genel amal mikroilemci sistemi Tek chip CPU RAM ROM
Seri, G/ Timer Paralel, Portu port

b) M ikrodenetleyici sistemi
ekil 2.8. Mikroilemcili sistem ile mikrodenetleyici sistemler
12

Gnmz mikrodenetleyicileri otomobillerde, kameralarda, cep telefonlarnda, fax - modem cihazlarnda, fotokopi, radyo, TV, baz oyuncaklar gibi saylamayacak kadar pek ok alanda kullanlmaktadr. Mikrodenetleyiciler 1990l yllardan sonra aadaki ihtiyalara cevap verebilmek iin gelimeye balamlardr. Geliim sebepleri; Karmak cihazlar da daha yksek performansa ihtiya duyulmas Daha geni adres alanna sahip olmas C gibi yksek seviyedeki dillerde programlama desteinin salanmas Windows altnda alan gelimi zelliklere sahip program gelitirme ortamlarnn olmas Daha az g tketimi ve grltnn olmas Byk gelitirme yatrmlar ve yazlm gvenlii asndan varolan eitli programlarn kullanlmas Sistem fiyatlarnn ucuz olmas

DATA

Giri/k ADC DAC PWM


ADRES

Hafza
RAM EPROM EEPROM

CPU
4 bit 8 bit 16 bit 32 bit

ADRES

Zamanlayc

Osilatr

ekil 2.9: Mikrodenetleyici sistem

Teknolojik gelimelerle birlikte mikroilemcilerde zamanla gelimeye balamlardr. Belirli bir srede ele alnan bit saysna baklarak mikroilemcinin gl olup olmad belirlenir. Bit uzunluklarna gre 8 bit, 16 bit, 32 bit ve 64 bitlik mikroilemciler bulunur.

13

2.3. Basitten Karmaa Mikroilemci Yaps


2.3.1. 8-Bitlik Mikroilemciler: Basit bir ilemci kaydediciler, aritmetik-mantk birimi ve denetim birimi olmak zere 3 ana blmden meydana gelmitir.

Adres yolu Dahili adres yolu MAR Bellek DAR PC

Dahili veri yolu

MBR

Veri yolu

IR DR ALU A

Komut kod zc

Dier CPU elemanlarna

Zamanlama ve kontrol birimi


R/W

Kontrol yolu

ekil 2.10 : Basit bir 8-bitlik ilemcinin yapsn oluturan ana birimler Kaydediciler: Flip-floplardan oluan birimlerdir. lemci ierisinde olduklarndan belleklere gre daha hzl alrlar. lemci eitlerine gre kaydedicilerin ad ve tipleri deimektedir. Kaydediciler genel amal ve zel amal olmak zere iki grupta incelenmektedir.Genel amal kaydediciler grubuna A, B ve X gibi kaydediciler girer. A kaydedicisi Akmlatr teriminden dolay bu ad almtr. ndis kaydedicilerinin grevleri ise; hesaplamalar srasndaki ara deerlerin zerinde tutulmas, dnglerde saya olarak kullanlmasdr. zel amal kaydediciler ise; PC (Program Counter, Program Sayac), SP (Stack Pointer- Yn aretisi) ve Flags (Bayraklar) verilebilir. Bunlarn dnda ilemcide programcya grnmeyen kaydediciler vardr. Bu kaydedicileri alt dzey program yazan programclarn mutlaka bilmesi gerekir. Bunlar;

IR(Instruction Register-Komut kaydedicisi), MAR (Memory Address Register- Bellek adres

14

kaydedicisi), MBR (Memory Buffer Register- Bellek veri kaydedicisi), DAR(Data Address Register- Veri adres kaydedicisi) ve DR (Data register- Veri kaydedicisi) olarak ele alnabilir. Aritmetik ve Mantk Birimi:ALU mikroilemcilerde aritmetiksel ve mantksal ilemlerinin yapld en nemli birimdir. Aritmetiksel ilemler denilince akla bata toplama, karma, arpma ve blme gelir. Komutlarla birlikte bu ilemleri, mantk kaplar, bu kaplarn oluturduu toplayclar, karclar ve flipfloplar gerekletirir. Mantksal ilemlere de AND, OR, EXOR ve NOT gibi ilemleri rnek verebiliriz.

BELLEK

Dahili veri yolu

DR

ALU

ALU
Bayraklar

ekil 2.11 : Aritmetik ve mantk birimi Zamanlama ve Denetim Birimi: Bu ksm sitemin tm ileyiinden ve ilemin zamannda

yaplmasndan sorumlu olan birimdir. Bu birim bellekte program blmnde bulunan komut kodunun alnp getirilmesi, kodunun zlmesi, ALU tarafndan ilenip, sonucun alnp bellee yklenmesi iin gerekli olan denetim sinyalleri retir. letiim yollar: Mikroilemci mimarisine girmese de ilemciyle ayrlmaz bir para olut uran iletiim yollar kendi aralarnda e ayrlr. Adres yolu; komut veya verinin bellekte bulunduu adresten alnp getirilmesi veya adres bilgisinin sakland yoldur. Veri yolu ise ilemciden bellee veya Giri/k birimlerine veri yollamada yada tersi ilemlerde kullanlr. Kontrol yolu ise sisteme bal birimlerin denetlenmesini salayan zel sinyallerin oluturduu bir yapya sahiptir.

15

2.3.2. 16-Bitlik

Mikroilemciler: 16-bitlik

mikroilemciler basit olarak 8- bitlik

mikroilemcilerde olduu gibi , Kaydediciler, ALU ve Zamanlama-Kontrol birimine sahiptir. Fakat mimari yaps oklu grev ortamna uygun hale getirildiinden, ilemci ierisindeki blmlerde fonksiyonel adan 2 mantksal blmden oluurlar. Bu birimler Veri Yolu Badatrma Birimi (BIU) ve cra Birimi (EU) dir. BIU birimi, EU birimini veriyle beslemekten sorumluyken, icra birimi komut kodlarnn altrlmasndan sorumludur. BIU blmne segment kaydedicileriyle birlikte IP ve komut kuyruklar ve veri alp getirme birimleri dahilken, EU blmne genel amal kaydediciler, kontrol birimi, aritmetik ve mantksal komutlarn ilendii birim dahildir.

CRA BRM (EU)

Genel amal kaydediciler AH AL BH CH DH SI DI BP SP BL CL DL

VER YOLU BADA TIRMA BRM (BIU) Segment kaydedicileri CS DS SS ES IP

Veri Yolu kontrolu ve adres retimi

Sistem veriyolu

Komut kuyruu

ALU ALU

Bayraklar Kontrol Birimi

ekil 2.12: 16- bitlik mikroilemci mimarisi 2.3.3. 32-Bitlik Mikroilemciler: 3. kuak mikroilemcilerdir. Dierlerinden farkl olarak ierisine FPU (Floating Point Unit- Kayan nokta birimi) denilen ve matematik ilemlerinden sorumlu olan bir birim eklenmitir. Bu gelimi ilemci 64-bitlik geni bir harici veri yoluna sahiptir. Geni veri yolu, ilemcinin bir evrimlik zamanda daha ok veri tamas ve dolaysyla yapaca grevi daha

16

ksa zamanda yapmas demektir. Bu, ilemcinin bir tklanmasyla, ilemci ile bellek arasnda veya ilemci ile G/ birimleri arasnda, 8-bitlik bir ilemciye gre 8 kat fazla bilgi tanmas demektir.

Dallanma tahmini

Komut n bellei 8KB

Algetir tamponu Komut kod zc

64 bit

Veri Yolu Badatrma Birimi

Tamsay ALU-U

Tamsay ALU-V

veri yolu 32 bit adres yolu

FPU

Kaydediciler Veri n Bellei 8 KB

ekil 2.13 : 32-bitlik mikroilemci mimarisi

2.4. Mikrodenetleyicilerin (Mikrobilgisayarlarn) Geliimi


CPU, Bellek ve Giri/k birimlerinin bir arada bulunmas mikrodenetleyiciyi zellikle endstriyel kontrol uygulamalarnda gl bir dijital ilemci haline getirmitir. Mikrodenetleyiciler zellikle otomobillerde motor kontrol, elektrik ve i panel kontrol; kameralarda, k ve odaklama kontrol gibi amalarda kullanlmaktadr. Bilgisayarlar, telefon ve modem gibi eitli haberleme cihazlar, CD teknolojisi, fotokopi ve faks cihazlar, radyo, TV, teyp, oyuncaklar, zel amal elektronik kartlar ve saylmayacak kadar ok alanda , mikrodenetleyiciler kullanlmaktadr. Bu kadar geni bir uygulama alan olan mikrodenetleyiciler aada sralanan eitli zelliklere sahiptirler. Programlanabilir saysal paralel giri / k Programlanabilir analog giri / k Seri giri / k (senkron, asenkron ve cihaz denetimi gibi) Motor/servo kontrol iin darbe iaret k (PWM gibi) Harici giri ile kesme Zamanlayc (Timer) ile kesme Harici bellek arabirimi Harici BUS arabirimi (PC ISA gibi) Dahili bellek tipi seenekleri (ROM, PROM, EPROM ve EEPROM)
17

Dahili RAM seenei Kesirli say (kayan nokta) hesaplamas D/A ve A/D eviricileri Bu zellikler mikrodenetleyicileri reten firmalara ve mikrodenetleyicilerin tipine gre

deimektedir. Mikrodenetleyici uygulamalarnda dikkate alnmas gereken en nemli zellikler gerek zaman (real time) ilemi ve ok grevlilik (multi-tasking) zellikleridir. Gerek zaman ilemi, mikrodenetleyicinin ihtiya annda alma ortamna, gereken kontrol sinyallerini gndermesi ve ortam bekletmeyecek kadar hzl olmasdr. ok grevlilik ise mikrodenetleyicinin birok grevi ayn anda veya ayn anda gibi yapabilme kapasitedir. Mikrodenetleyici zet olarak kullanld sistemin birok zelliini ayn anda gzleme (monitoring), ihtiya annda gerek-zamanda cevap verme (real-time response) ve sistemi denetlemeden (control) sorumludur. Bir ok firma tarafndan mikrodenetleyiciler retilmektedir. Her firma retmi olduu mikrodenetleyici yongaya farkl isimler ve zelliklerini birbirinden ayrmak iinde para numaras vermektedir. Bu denetleyicilerin mimarileri arasnda ok kk farklar olmasna ramen aa yukar ayn ilemleri yapabilmektedir. Her firma rettii chipe bir isim ve zelliklerini biri birinden ayrmak iinde para numaras vermektedir. Gnmzde yaygn olarak 8051(intel firmas) ve PIC ad verilen mikrodenetleyiciler kullanlmaktadr. Bunlardan baka Phillips, Dallas, Siemens, Oki, Temic, Haris, Texas gibi eitli firmalarda retim yapmaktadr. rnein; bunlardan Microchip firmas retmi olduklarna PIC adn verirken, para numaras olarak da 12C508, 16C84, 16F877 gibi kodlamalar vermitir, Intel ise rettii mikrodenetleyicilere MCS-51 ailesi adn vermitir, Texas Ins. ise iaret ilemeye ynelik olarak Digital Signal Processing (DSP) mikrodenetleyici yongas retmektedir. PIC mikrodenetleyicileri elektronik cihazlarda ok yaygn olarak kullanlmaktadr. nk her amaca uygun boyut ve zellikte mikrodenetleyici bulmak mmkndr. eitli tiplerde mikrodenetleyiciler kullanlabilir fakat, uygulamada en kk, en ucuz, en ok bulunan ve yaplan iin amacna ynelik olmasna dikkat edilmelidir. Bunun iinde mikrodenetleyicilerin genel zelliklerinin iyi bilinmesi gerekir. Mikrodenetleyicili bir sistemin gerekletirile bilinmesi iin, mikrodenetleyicinin i yapsnn bilinmesi kadar, sistemin yapaca i iin mikrodenetleyicinin programlanmas da byk bir nem arz eder. Mikrodenetleyicili sistemler ile bir oda scakln, bir motorun hzn, led k gibi birimlerini kontrol edebiliriz. Btn bu ilemleri nasl yapacan mikrodenetleyiciye tarif etmek, aklamak gerekir. Bu ilemlerde mikrodenetleyicili sistemin program belleine yerletirilen programlar vastasyla gerekletirilir. Mikrodenetleyiciler iin programlar asembly veya C gibi bir programlama dilinde yazlabilir. Assembly dilinde yazlan bir program assembler ad verilen bir derleyici ile makine diline evrildikten sonra mikrodenetleyiciye yklenir. C dilinde yazlan programnda bir evirici ile makine diline evrilmesi gerekmektedir. Makine dilindeki bir

18

programn uzants .HEX dir. PIC mikrodenetleyicisi iin program yazarken editr ismi veri len bir programa ihtiya vardr. En ok kullanlan editr program ise MPLABtr. MPLAB da yazlan programlar proje dosyalarna dntrlerek, ayn editr ierisinde derlenebilmektedir. Btn bu zellikler dikkate alnarak en uygun mikrodenetleyici seimi yaplmaldr. nk mikrodenetleyiciler ticari amal birok elektronik devrede yaygn olarak kullanlmaktadr.

2.5. Mikrodenetleyici Seimi


Mikrodenetleyici seimi kullanc iin olduka nemlidir, nk mikrodenetleyiciler ticari amal bir elektronik devrede yaygn olarak kullanlmaktadr. Bu sistemlerin ncelikle maliyetinin dk olmas iin mikrodenetleyicinin de ufak ve ucuz olmas istenir. Dier taraftan rnn piyasada bol miktarda bulunmas da nemlidir. Tm bu hususlar dikkate alnarak, kullanclar ncelikle hangi firmann rnn kullanacana karar veririler. Daha sonra da hangi seriden, hangi rnn kullanacaklarna karar verirler. Burada mikrodenetleyicinin belleinin yazlm iin yeterli byklkte olmas, kullanlmas dnlen ADC (Analog Dijital Dntrc) kanal, port says, zamanlayc says ve PWM (Pulse Widht Modulation- Darbe Genilik Modlasyonu) kanal says nemlidir. Ayrca tasarmc yaplacak i iin uygun hzda mikrodenetleyici kullanmaldr. Tm bu hususlar dikate alnarak uygun mikrodenetleyiciye karar verilir. rn gelitirmek iin pencereli (EPROM) veya FLASH tipinde olan bellei silinip, yazlabilen mikrodenetleyici kullanlr. nk rn gelitirme aamasnda mikrodenetleyici defalarca silinip, yazlabilmektedir. Ayrca bellei daha hzl silinip, yazlabilen FLASH mikrodenetleyiciler renmeye yeni balayanlar iin cazip olmaktadr. Seimi etkileyen bu noktalar ksaca aklarsak; Mikrodenetleyicinin lem Gc: Her uygulamada farkl bir ilem gcne gereksinim duyulabilir. Bunun iin yaplacak uygulamada kullanlacak mikrodenetleyicinin alabilecei en yksek frekans aral seilmelidir. Bellein Kapasitesi ve Tipi: Gelitirilecek olan uygulamaya gre program bellei, veri bellei ve geici bellek kapasitesi dikkate alnmaldr. Kullanlacak olan bellein tipide uygulama iin nemli bir faktrdr. Giri/k Ular: Mikrodenetleyicinin evre birimler ile haberlemesinin salayan ulardr. Bu nedenle giri/ k ularnn says olduka nemlidir. Yaplacak olan uygulamaya gre bu faktrde dikkate alnmaldr. zel Donanmlar: Yaplacak olan uygulamann eidine gre mikrodenetleyiciye farkl evre birimleri de eklenebilir. Mikrodenetleyici evre birimleri ile iletiim kurarken kullanaca seri, I2C, SPI, USB, CAN gibi veri iletiim protokollerini destekleyen veya ADC, analog karlatrc gibi analog verileri ileyebilecek donanmlara sahip olmas dikkate alnmaldr.

19

Kod Korumas: Mikrodenetleyicinin sahip olduu kod korumas zellikle ticari uygulamalarda program kodunun korunmasna olanak salamaktadr.

2.6. Blm Kaynaklar


O. Altnbaak, 2001. Mikrodenetleyiciler ve PIC Programlama, Atla Yaynclk, stanbul. N. Gardner, 1998. PIC Programlama El Kitab, Bileim Yaynclk, stanbul. O. Urhan, M.Kemal Gll, 2004. Her Ynyle PIC16F628, Birsen Yaynevi, stanbul. N. Topalolu, S. Grgnolu,2003. Mikroilemciler ve Mikrodenetleyiciler, Sekin Yaynclk, Ankara. 5. Y. Bodur, 2001. Adm Adm PICmicro Programlama,nfogate. 6. M. Kemal Gngr,2003. Endstriyel Uygulamalar in Programlanabilir Kontrol nitesi . 1. 2. 3. 4.

20

BLM 3. MMARLER 3.1. Mikrodenetleyici / Mikrobilgisayar Tasarm Yaplar

Bilgisayarn yklenen tm grevleri ok ksa zamanda yerine getirmesinde yatan ana unsur bilgisayarn tasarm mimarisidir. Bir mikroilemci, mimari yetenekleri ve tasarm felsefesiyle ekillenir. 3.1.1. Von Neuman (Princeton) Mimarisi Bilgisayarlarda ilk kullanlan mimaridir. lk bilgisayarlar Von Neuman yapsndan yola klarak gelitirilmitir. Gelitirilen bu bilgisayar be birimden olumaktayd. Bu birimler; aritmetik ve mantksal birim, kontrol birim, bellek, giri-k birimi ve bu birimler arasnda iletiimi salayan yolardan oluur.

BELLEK Veri Komut

Adres ve Kontrol

G/ Birimi

ALU Durum Bilgisi

KONTROL BRM

CLK

ekil 3.1. Von Neuman mimarili bilgisayar sistemi Bu mimaride veri ve komutlar bellekten tek bir yoldan mikroilemciye getirilerek ilenmektedir. Program ve veri ayn bellekte bulunduundan, komut ve veri gerekli olduunda ayn iletiim yolunu kullanmaktadr. Bu durumda, komut iin bir algetir saykl, sonra veri iin dier bir algetir saykl gerekmektedir.

Program ve Veri Bellei

8 bit

CPU

ekil 3.2. Von Neuman mimarisi

21

Von Neuman mimarisine sahip bir bilgisayar aadaki sral admlar gerekletirir. 1. Program saycsnn gsterdii adresten (bellekten) komutu algetir. 2. Program saycsnn ieriini bir artr. 3. Getirilen komutun kodunu kontrol birimini kullanarak z. Kontrol birimi, bilgisayarn geri kalan birimlerine sinyal gndererek baz operasyonlar yapmasn salar. 4. 1. adma geri dnlr. rnek 3.1: Mov acc, reg 1. cp : Komut okur 2.,.. cp : Veriyi okur ve acc ye atar. Von Neuman mimarisinde, veri bellekten alnp iledikten sonra tekrar bellee gnderilmesinde ok zaman harcanr. Bundan baka, veri ve komutlar ayn bellek biriminde depolandndan, yanllkla komut diye veri alanndan kod getirilmesi skntlara sebep olmaktadr. Bu mimari yaklama sahip olan bilgisayarlar gnmzde, verilerin ilenmesinde, bilginin derlenmesinde ve saysal problemlerde olduu kadar endstriyel denetimlerde baarl bir ekilde kullanlmaktadr.

3.1.2. Harvard Mimarisi Harvard mimarili bilgisayar sistemlerinin Von Neuman mimarisinden fark veri ve komutlarn ayr ayr belleklerde tutulmasdr. Buna gre, veri ve komut aktarmnda iletiim yollar da bir birinden bamsz yapda bulunmaktadrlar.

Veri Bellei

8 bit

CPU

14 bit

Program Bellei

ekil 3.3. Harvard Mimarisi Komutla birlikte veri ayn saykl da farkl iletiim yolundan ilgili belleklerden alnp ilemciye getirilebilir. Getirilen komut ilenip ilgili verisi veri belleinden alnrken sradaki komut, komut belleinden alnp getirilebilir. Bu nden alp getirme ilemi, dallanma haricinde hz iki katna karabilmektedir.

22

Veri Bellei Veri G/ Birimi ALU

Adres ve Kontrol

Komut Bellei Komut KONTROL BRM

Durum Bilgisi
CLK

ekil 3.4. Harvard Mimarili bilgisayar sistemi rnek 3.2: Mov acc, reg 1. cp : ncelikle move acc, reg komutunu okur. 2. cp : Sonra move acc, reg komutunu yrtr. Bu mimari gnmzde daha ok saysal sinyal ilemcilerinde (DSP) kullanlmaktadr. Bu mimaride program ierisinde dngler ve zaman gecikmeleri daha kolay ayarlanr.Von Neuman yapsna gre daha hzldr. zellikle PIC mikrodenetleyicilerinde bu yap kullanlr.

3.2. Mikroilemci Komut Tasarm Mimarileri


3.2.1. CISC (Complex Instruction Set Computer) Mimarisi Bu mimari, programlanmas kolay ve etkin bellek kullanm salayan tasarm felsefesinin bir rndr. lemci zerinde performans dkl ve ilemcinin karmak bir hale gelmesine neden olsa da yazlm basitletirmektedir. Bu mimarinin en nemli iki zellii, deiken uzunluktaki komutlar dieri ise karmak komutlardr. Deiken ve karmak uzunluktaki komutlar bellek tasarrufu salar. Karmak komutlar birden fazla komutu tek bir hale getirirler. Karmak komutlar ayn zamanda karmak bir mimariyi de oluturur. Mimarideki karklk ilemcinin performansn da dorudan etkilemektedir. Bu sebepten dolay eitli istenmeyen durumlar ortaya kabilir. CISC komut seti mmkn olabilen her durum iin bir komut iermektedir. CISC mimarisinde yeni gelitirilen bir mikroilemci eski mikroilemcilerin assembly dilini desteklemektedir.

23

Yksek Dzeyli Dil Yazlm Derleme M akina Dili zme Donanm M ikro-kod leme Kaydediciler, ALU ve dierleri

ekil 3.5. CISC tabanl bir ilemcinin alma biimi CISC mimarisi ok kademeli ileme modeline dayanmaktadr. lk kademe, yksek seviyeli dilin yazld yerdir. Sonraki kademeyi ise makine dili oluturur. Burada yksek seviyeli dilin derlenmesi ile bir dizi komutlar makine diline evrilir. Bir sonraki kademede makine diline evrilen komutlarn kodlar zlerek , mikrokodlara evrilir. En son olarak da ilenen kodlar gerekli olan grev yerlerine gnderilir. CISC Mimarisinin Avantajlar Mikroprogramlama assembly dilinin yrtlmesi kadar kolaydr ve sistemdeki kontrol biriminden daha ucuzdur. Yeni gelitirilen mikrobilgisayar bir ncekinin assembly dilini desteklemektedir. Verilen bir grevi yrtmek iin daha az komut kullanlr. Bylece bellek daha etkili kullanlr. Mikroprogram komut kmeleri, yksek seviyeli dillerin yaplarna benzer biimde yazldndan derleyici karmak olmak zorunda deildir. CISC Mimarisinin Dezavantajlar Gelien her mikroilemci ile birlikte komut kodu ve yonga donanm daha karmak bir hale gelmitir. Her komutun evirim sresi ayn deildir. Farkl komutlar farkl evrim srelerinde altklar iin makinann performansn drecektir. Bir program ierisinde mevcut komutlarn hepsi kullanlamaz.

24

Komutlar ienirken bayrak bitlerinin dikkat edilmesi gerekir. Buda ek zaman sresi demektir. Mikroilemcinin almasn etkilemektedir.

3.2.2. RISC ( Reduced Instruction Set Computer) Mimarisi RISC mimarisi IBM, Apple ve Motorola gibi firmalarca sistematik bir ekilde gelitirilmitir. RISC mimarisinin taraftarlar, bilgisayar mimarisinin gittike daha karmak hale geldiini ve hepsinin bir kenara braklp en bata yeniden balamak fikrindeydiler. 70li yllarn banda IBM firmas ilk RISC mimarisini tanmlayan irket oldu. Bu mimaride bellek hz arttndan ve yksek seviyeli diller assembly dilinin yerini aldndan, CISCin balca stnlkleri geersiz olmaya balad. RISCin felsefesi temel prensibe dayanr. Btn komutlar tek bir evrimde altrlmaldr: Her bir komutun farkl evrimde almas ilemci performansn etkileyen en nemli nedenlerden biridir. Komutlarn tek bir evrimde performans eitliini salar. Bellee sadece load ve store komutlaryla eriilmelidir. Eer bir komut direkt olarak bellei kendi amac dorultusunda ynlendirilirse onu altrmak iin birok saykl geer. Komut alnp getirilir ve bellek gzden geirilir. RISC ilemcisiyle, bellee yerlemi veri bir kaydediciye yklenir, kaydedici gzden geirilir ve son olarak kaydedicinin ierii ana bellee yazlr. Btn icra birimleri mikrokod kullanmadan donanmdan altrlmaldr. Mikrokod kullanm, dizi ve benzeri verileri yklemek iin ok sayda evrim demektir. Bu yzden tek evirimli icra birimlerinin yrtlmesinde kolay kullanlmaz.
Ana bellek Ana bellek

n bellek

Komut n bellei

Veri n bellei

Komut ve Veri yolu

Veri yolu

Kontrol Birimi

Donanm Kontrol Birimi M ikrokod ROM

a)

b)

ekil 3.6. a) Mikrokod denetimli CISC mimarisi; b) Donanm denetimli RISC mimarisi
25

RISC mimarisi kltlen komut kmesi ve azaltlan adresleme modlar says yannda aadaki zelliklere sahiptir. Bir evrimlik zamanda komut ileyebilme Ayn uzunluk ve sabit formatta komut kmesine sahip olma Ana bellee sadece load ve store komutlaryla eriim; operasyonlarn sadece kaydedici zerinde yaplmas Btn icra birimlerinin mikrokod kullanmadan donanmsal almas Yksek seviyeli dilleri destekleme ok sayda kaydediciye sahip olmas

RISC Mimarisinin stnlkleri Hz: Azaltlm komut kmesi, kanal ve sperskalar tasarma izin verildiinden RISC mimarisi CISC ilemcilerin performansna gre 2 veya 4 kat yksek performans gsterirler. Basit donanm: RISC ilemcinin komut kmesi ok basit olduundan ok az yonga uzay kullanlr. Ekstra fonksiyonlar, bellek kontrol birimleri veya kayan noktal aritmetik birimleri de ayn yonga zerine yarletirilir. Ksa Tasarm Zaman: RISC ilemciler CISC ilemcilere gre daha basit olduundan daha abuk tasarlanabilirler. RISC Mimarisinin Eksiklikleri: CISC starm stratejisinden RISC tasarm stratejisine yaplan gei kendi problemlerin de beraberinde getirmitir. Donanm mhendisleri kodlar CISC ilemcisinden RISC ilemcisine aktarrken anahtar ilemleri gz nnde bulundurmak zorundadrlar. CISC ve RISC Tabanl lemcilerin Karlatrlmas CISC ve RISC tabanl ilemcilerin karlatrlmasnda iki nemli faktr farkllklarn ortaya karmada yeterlidir. Hz: Genelde RISC ipleri kanal teknii kullanarak eit uzunlukta segmentlere blnm komutlar altrmaktadr. Kanal teknii komutlar kademeli olarak iler ki bu RISCin bilgi ilemini CISCden daha hzl yapmasn salar RISC ilemcisinde tm komutlar 1 birim uzunlukta olup kanal teknii ile ilenmektedir. Bu teknikte bazlar hari komutlar, her bir basamanda ayn ilemin uyguland birimlerden geerler. Kanal teknolojisini aklamak iin herhangi bir komutun ilenmesindeki admlar ele alnrsa: Komut kodu ve ilenecek veriler dahil btn bilgilerin MIBdeki kaydedicilerde olduu dnlrse, birinci admda yaplacak iin kaydedicide bulunan komut kodu zlr, ikinci admda zerinde allacak veri (ilenen) kaydediciden alnp getirilir, nc admda veri, komuta gre
26

Aritmetik ve Mantk Biriminde ileme tabii tutulur ve drdnc admda da sonu kaydediciye yazlacaktr. Bylece bir komutun ilemesi iin her bir basamak bir saat evrimi gerektirirse, drt evrimle (admda) gereklemi olmakta ve bir adm bitmeden dieri balayamamaktadr. Kanal teknii ile alan ilemcilerde birinci admda komut kodu zlr, ikinci admda birinci komutun zerinde alaca veri (ilenen) kaydediciden alnrken, sradaki ikinci ilenecek olan komutun kodu zlr. nc admda ilk komutun grevi ALUda yerine getirilirken, ikinci komutun ileyecei ilenen alnp getirilir. Bu anda sradaki nc komutun kodu zlr ve ilem bylece devam eder. Kanal (Pipeline) tekniinde evrim zamann dmesi iin komut kodlarnn hzl zlmesi gereklidir. RISC mimarisinde tm komutlar 1 birim uzunlukta olduklar iin komut kodunu zme ilemi kolaylar. Sistemde kullanlan kaydedicilerin simetrik bir yapda olmas, derleme ilemini kolaylatrmaktadr. RISC ilemcilerde bellee yalnz ykle ve depola komutlaryla ulalr. Baz eski CISC mimarisinde de olmasna ramen RISC mimarisinin sabit uzunluktaki basit komutlarla almas pipeline sistemini daha iyi kullanmasna sebep olmaktadr. Bu yzden hesaplama oranlarnn birinci ncelik arz ettii yerlerde i-istasyonlar ve datclarda ok tercih edilmektedir. Transistr says: CISC mimarisinde kullanlan transistor says RISCe nazaran daha fazladr. Transistr saysnn bir yerde ok olmas fazla yerleim alan ve ayrca fazla s demektir. Bundan dolay da fazla s retimi soutma olayn gndeme getirmektedir. CISC tabanl Pentium ilemcilerde kark s datcs veya soutma fanlar kullanlmaktadr. RISC mimarisindeki nemli stnlklere kar baz mahzurlar ortaya kmaktadr. RISC mimarisi, CISCin gl komutlarndan yoksundur ve ayn ilemi yapmak iin daha fazla komut ilenmesini gerektirir. Bundan dolay da RISCin bant genilii artar. Bu sistemde gl komutlarn yokluu ikinci bir yardmc ilemciyle ya da ilemci iinde oluturulacak ayr bir pipeline blmyle giderilebilir. Komut n-belleinin kullanlmas yksek komut alp getirme ilemini azaltmaktadr. RISC mimarisi dierine nazaran daha kompleks yazlmlara ihtiya duyar.

RISC (Hard-wired Control Unit) Hzl Ucuz Yeniden dizayn zor Daha az komut (instruction) Daha fazla saklayc bellek (register)

CISC (Microprogrammed Control Unit) Nispeten yava Pahal Esnek Daha fazla komut (instruction) Daha az saklayc bellek (register)

27

3.2.3. EPIC Mimarisi Bu mimari RISC ve CISC mimarisinin stn ynlerinin bir arada bulutuu bir mimari trdr. EPIC mimarisi, ilemcinin hangi komutlarn paralel alabildiini denetlemesi yerine, EPIC derleyicisinden ak olarak hangi komutlarn paralel alabildiini bildirmesini ister. ok uzun komut kelimesi (VLIW) kullanan bilgisayarlar, yazlmn paralelliine ilikin kesin bilgi salanan mimari rneklerdir. EPIC varolan VLIW mimarisinin dallanma sorunlarn zmeye alarak daha tesine gitmeyi hedeflemektedir. Derleyici programdaki paralellii tanmlar ve hangi ilemlerin bir bakasndan bamsz olduunu belirleyerek donanma bildirir. EPIC mimarisinin ilk rnei, IA -64 mimarisine dayal Itanium ilemci ailesidir. EPIC Mimarisin stnlkleri Paralel altrma ( evrim bana birden ok komut altrma) Tahmin kullanm Speklasyon kullanm Derleme annda paralelizmi tanyan derleyiciler Byk bir kaydedici kmesi Dallanma tahmini ve bellek gecikmesi problemlerine kar stn baar Gelime ile birlikte eskiye kar uyumluluk

3.2.4. DSP (Dijital Signal Processing -Dijital Sinyal ileme) Dijital Signal Processing (Dijital Sinyal ileme) szcklerinin bir ksaltmasdr. 1970'lerin sonlarnda mikro-ilemcilerin ortaya kmasyla, DSP kullanm geni bir uygulama alan bulmutur. Kullanm alanlar, cep telefonlarndan bilgisayarlara, video alclardan modemlere kadar ok geni bir alana yaylmaktadr. DSP yongalar, mikro-ilemciler gibi programlanabilir sistemler olup, saniyede milyonlarca ilem gerekletirebilir. DSP kartlar, zerlerindeki DSP'ler sayesinde ayn anda bir ok efekt uygulayabilir. zellikle modemlerde bulunurlar. ok yksek hzlarda kayan nokta matematiksel ilemleri yapmak zere gelitirilmi bir donanmdr. Dier birok eyin yan sra DSP donanm ses ve grnt sinyallerinin gerek zamanl sktrma ve ama ilemleri iin kullanla bilinir.

28

analog veri ADC DAC

analog veri

dijital veri

DSP

dijital veri

Ana Bilgisayar Sistemi

ekil 3.7. DSP sistem ve elemanlar

3.3. Blm Kaynaklar


O. Altnbaak, 2001. Mikrodenetleyiciler ve PIC Programlama, Atla Yaynclk, stanbul. N. Gardner, 1998. PIC Programlama El Kitab, Bileim Yaynclk, stanbul. O. Urhan, M.Kemal Gll, 2004. Her Ynyle PIC16F628, Birsen Yaynevi, stanbul. N. Topalolu, S. Grgnolu,2003. Mikroilemciler ve Mikrodenetleyiciler, Sekin Yaynclk, Ankara. 5. Y. Bodur, 2001. Adm Adm PICmicro Programlama,nfogate. 6. .Kalnl, 2001. Signal Processing With DSP. 1. 2. 3. 4.

29

BLM 4. BAARIM LTLER


Farkl tr bilgisayarlarn performansn deerlendirebilmek, bu makineler arasnda en iyi seim veya anahtar etmendir. Performans lmndeki karklk birok temel etmenden doar. Komut takm ve bu komutlar tamamlayan donanm nemli ana etmenlerdir. Ayn donanma ve komut takmna sahip iki bilgisayar bile bellek ve giri/k rgtlenmesi, ve de iletim sistemleri nedeniyle ya da sadece testlerde farkl iki derleyici kullanldndan dolay farkl baarmlar verebilir. Bu etmenlerin baarm nasl etkilediini belirlemek, makinenin belirli ynlerinin tasarmnn dayana olan ana gdy anlamak asndan ok nemlidir. Yolcu uaklaryla ilgili bir rnek verelim. Aada mevcut uaklarla ilgili bilgiler verilmitir. Buna gre; 5000 yolcuyu New Yorktan Parise (1500 km) tamamz gerektiine gre hangi ua kullanmalyz? Uak Boeing 737-100 Boeing 777 Boeing 747 BAC/Sud Concorde Douglas DC-8-50 P: Yolcu kapasitesi 101 375 470 132 146 R: Uu menzili (km) 1000 7400 6650 6400 14000 S: Uu hz (km/saat) 1000 1000 1000 2200 880 (P*S) Yolcu gnderme hz 101000 375000 460600 290400 128480

Tablo 4.1. Uaklar ve zellikleri Boeing 737-100 uu menzili New Yorktan Parise umaya yetmeyeceinden daha ilk bata listeden elenir. Ardndan, geriye kalanlar arasnda Concorde en hzl olarak grlmektedir. Ancak uan sadece hzl olmas yeterli deildir. Boeing 747 daha yava olmasna karn bir Concorde un tayabileceinden 3 kat daha fazla yolcu tayabiliyor. Uaklarn performanslar iin daha iyi bir lt uaklarn yolcu tama hz olabilir. Yolcu saysnn uan hzyla arpmndan kan say yolcu tama hzdr. Bu durumda 747 nin 5000 yolcuyu tamada daha baarl olduunu grrz, nk onun yolcu tama hz Concorde dan daha yksektir. Dier taraftan, eer toplam yolcu says 132 den az olursa Concorde elbetteki Boeing 747 den daha iyidir. nk onlar 747 den neredeyse iki kat hzl tayacaktr. Yani performans byk oranda yaplacak ie baldr.

4.1. Baarm Tanm


Bir bilgisayarn dierinden daha iyi baarma sahip olduunu sylemekle, tipik uygulama programlarmz asndan o bilgisayarn kastederiz. birim srede dierinden daha ok i bitirebildiini

30

Zaman paylaml ok-kullancl ok- grevli bir bilgisayarda, bir programn balangcndan bitiine kadar geen toplam zamana toplam yrtme sresi denir. Genellikle giri/k ile programmzn ilemesi iin geen sre ayr ayr saylr. Bunlar iimizin CPU sresi ve Giri/ k ilem sresi olarak adlandrlr. Zaman paylaml anabilgisayarlarda dier kullanclarn ileri arasnda alan programn alma sresi CPU sresinden daha uzundur. Kullanclar genelde bu alma sresi ilgilendirirken, bilgisayar merkezinin yneticisi hzyla (throughput) ilgilenir. Programlarn CPU srelerini azaltmak iin eitli yntemler vardr. Bunlardan akla ilk gelen bilgisayar ayn tip daha hzl srmyle deitirmektir. Bu yntem baarm ksmen arttrr. Belli bir grevde , X bilgisayarnn baarm temel olarak programn alma zamanyla ters orantldr. bilgisayarn toplam i bitirme

Xin Baarm =

1 Xin alma sresi

Bu da, X ve Y bilgisayarlarnn baarm alma zamanyla ters orantldr demektir. Ynin alma Sresi > Xin alma Sresi ise Xin Baarm > Ynin Baarm demektir. Nicel olarak,

X in Baarm Y nin alma Sresi = =n Y nin Baarm X in alma Sresi


ise X in Y den n kat hzl olduu sylenir.

4.2. lme Koullar ve lme Birimleri


ok grevli ve ok kullancl bir bilgisayar ortamnda yrtme sresi ve belli bir i iin harcanan ilem sresi farkl kavramlardr. Programn balatlmasna bitiine kadarki zamana toplam yrtme sresi, yant zaman, geen sre yada duvar sresi denir. Program ilemesinde CPU tarafndan harcanan zaman dilimlerinin toplamna CPU yrtme sresi yada basite CPU sresi denir. CPU sresi daha da ayrarak program CPU sresi ve sistem CPU sresine blnr. Sistem CPU sresi iinde giri/k, disk eriimi ve benzeri dier eitli sistem grevleri yaplr. Program CPU zaman ise yalnzca program kodunun yrtlmesi iin geen net sredir. Zaman genellikle saniye(s) birimiyle llr. Ancak saat dn sresi, yani bilgisayarn peryodu ounlukla nanosaniye (nano=1/1 000 000 000 ) kullanlarak llr. Genelde bilgisayarlarn hzlar verirken saat hz (=1/saat-dn) tercih edilir. Saat hznn birimi Hertz (Hz)
31

dir. Hertz saniyedeki dn saysna eittir. Daha hzl saatler iin Kilo-Hertz, Mega-Hertz yada Giga-Hertz terimleri kullanlr. Tablo 4.2. Zaman Birimleri Zaman Birimleri Ksaltmas Saniye edeeri Saniye s 1 Mili-saniye Ms 0.001 Mikro-saniye s 0.000 001 Nano-saniye ns 0.000 000 001

Frekans Birimleri Ksaltmas Saniyedeki dn

Hertz Hz 1

Tablo 4.3. Frekans birimleri Kilo- Hertz Mega- Hertz KHz 1000 MHz 1 000 000

Giga- Hertz GHz 1 000 000 000

Bilgisayarlarn baarmlarn karlatrrken, gerekte kullanlacak uygulama programlarnn i-bitirme hz son derece nemlidir. Bir programn CPU yrtme sresini belirleyen temel ifade; CPU-yrtme-sresi= CPU-saat-dn-says Saat dn sresi; Biimindedir. CPU-saat-dn-says ise; CPU-saat-dn-says = komut says komut bana ortalama dn says Komut bana ortalama dn says genellikle CPI (cycle-per- instruction) diye adlandrlr. RNEK 4.1: A ve B ayn komut takmna sahip iki makine olsun. Herhangi bir program iin Ann saat dn 10ns ve CPI si 2.0 llm, ayn program iin Bnin saat dn 20ns ve CPIsi 1.2 llmtr. Bu program asndan hangi makine ka kat hzldr.? zm 4.1: Programdaki komut saysnn I olduunu varsayalm. Bu durumda; CPU-sresi-A = CPU-saat-dn-says-A saat- dn sresi A =I 2.0 10 ns = 20 I ns CPU sresi B =I 1.2 20 ns = 24 I ns CPU-sresi-A < CPU sresi B , o halde A daha hzldr.

Baarm A alma Sresi B = =n Baarm B alma Sresi A


n = 24 I ns / 20 I ns = 1.2 A makinesi B den 1.2 kat daha hzldr.

32

4.3. Yaygn Kullanlan Yanltc Baarm ltleri


MIPS ve MFLOPS, sistem baarmn karlatrmak iin sk kullanlan baarm ltleridir. Bu iki baarm lt birok durumda yanltc olabilir. 4.3.1. MIPS Baarm lm MIPS saniyede milyon komut iin ksaltmadr. Bir programda,

MIPS =

Komut Says Komut Says 6 = Yrtme Sresi 10 CPU - saat - dn - says saat - dn sresi 10 6 Komut says saat hz Komut says CPI 10 6

burada CPU saat dn says = komut says CPI olduundan


Saat hz (doal MIPS) CPI 10 6 Komut says CPI Komut says alma Sresi = = Saat hz Saat hz 10 6 / CPI 10 6 Komut says alma Sresi = MIPS 10 6 MIPS =

bu eitlie gre hzl makinenin MIPS deeri yksektir diyebiliriz. MIPS lmn Kullanmann Sakncalar Ayn i kullanlan komut saylar farkl olacandan farkl komut takmlarna sahip bilgisayarlar MIPS kullanarak karlatramayz. Ayn bilgisayar da altrlan farkl programlar farkl MIPS deerleri veriri. Bir makinenin tek bir MIPS deeri olamaz. Baz durumlarda MIPS gerek performansa ters ynde deiebilir. 4.3.2.MFLOPS ile Baarm lm MFLOPS saniyede milyon kayan noktal ilem anlamna gelir. Her zaman megaflops diye okunur.
MFLOPS = Bir programdaki kayan noktal ilemler says Yrtme sresi 10 6

MFLOPS programa baldr. Komutlar yerine aritmetik ilemlerin zerinde tanmlandndan, MFLOPS farkl makineleri karlatrmada daha iyi bir lt olma eilimindedir. Ancak, farkl makinelerin kayan noktal ilem takmlar birbirine benzemez ve gerekte ayn i iin gereken kayan noktal ilem says her makinede farkl olabilir.
33

4.3.3.Baarm Deerlendirme Programlarnn Seimi MIPS ve MFLOPS yanltc baarm ltleridir. Bir bilgisayarn baarmn lmek iin,benchmark(karlatrma noktas ad verilen bir grup karlatrma programn kullanarak deerlendiririz. Karlatrma programlar kullancnn gerek i yknn verecei baarm tahmin edecek i ykn oluturur. En iyi karlatrma programlar gerek uygulamalardr, ancak bunu elde etmek zordur. Seilen karlatrma programlar gerek alma ortamn yanstmaldr.rnein;tipik baz mhendislik yada bilimsel uygulama mhendis kullanclarn i ykn yanstabilir.Yazlm gelitirenlerin i yk ise, ounlukla derleyicidir, belge ileme sistemleri ,vb. den oluur. Benchmark sonular rapor edilirken, makinelerin karlatrma lmleri ile birlikte u bilgilerde listelenmelidir. letim sisteminin srm Kullanlan derleyici Programa uygulanan girdiler Makine yaplan(bellek, giri/k hz, vs)

Daha yksek baarm sonular elde edilen makine sisteminin belirlenmesinde; Donanm Model no CPU FPU CPU says nbellek Boyutu Bellek Disk alt sistemi letiim a arayz Yazlm O/S tipi Derleyici srm Dier yazlm Dosya sistemi tipi Bellenim seviyesi Sistem Uyum parametreleri Art alan yk Sitem durumu

Powerstation 550 41.67 MHz POWER 4164 Tmleik 1 64k veri, 8k komut 64 Mb 2-400 SCSI Yok AIX v3.1.5 AIX XL C/6000 ver 1.1.5 AIX XL Fortran ver 2.2 Yok AIX YOK Yok Yok ok kullanc (tek kullanc login)

Tablo 4.3. Daha yksek baarm sonucu elde edilen makine sisteminin betimlenmesi

34

SONU Doru baarm ls parametreyi:komut says,CPI, ve saat hz-n u ekilde iermelidir


Komut says CPI Saat hz

Yrtme Sresi =

Bir tasarm farkl ynlerinin bu anahtar anahtar parametrelerin her birini nasl etkilediini anlamamz gerekir: rnein, -Komut takm tasarm komut saysn nasl etkiler, -Ardk dzen ve bellek sistemleri CPI deerini nasl etkiler, -Saat hz teknoloji ve organizasyona nasl baldr.

Sadece baarma bakmamz yetmez, maliyeti de dnmemiz gerekir. Maliyet unlar kapsar: Para maliyeti Makineyi yapacak i gc Aratrma ve gelitirme giderleri Sat, pazarlama, kar, vs.

4.4. Blm Kaynaklar


1. M. Bodur, RISC Donanmna GR, Bileim Yaynevi

35

BLM 5. VON NEUMAN VE CISC MMARL MKROLEMC 5.1. MC6802 Mikroilemcisinin Yaps Ve Kaytlar
stb E Clock A15 A8 A7 A0

Adres tamponu H

Adres tamponu L

reset IRQ NM I VM A R/W halt BA

Program sayac H Komut dekoder ve kontrol nitesi

Program sayac L

Yn gsterge. H

Yn gsterge. L

ndeks kay ts H
128 RAM/32stb

ndeks kay ts L

B komut kayts A CCR Data Bus D7 D0 ALU

ekil-5.1. 6802 mikroilemcisinin yaps. Mikroilemci resetlendiinde veya enerji verildiinde adres k ilk anda; A0 = 0, A1......A15 = 1 olur. Yani FFFE dir. Bu adresteki bilgi otomotikmen program sayacna (PC) yklenir ve program sayacndaki bu yeni adres deerinden itibaren mikroilemci almasna balar. Yani; [FFFE] = 80 ve [FFFF] = 00 varsa bu deerler program sayacna yklenir PC = 8000. Artk [8000] adresindeki programa gre mikroilemci alr. Program sayac (program counter, PC) : Adres ucu kadar bite (16 bit) sahip kaytdr. O anda alacak olan komutun adresini zerinde bulundurur. Komut altrldktan sonra deerini bir artrr. Komut kayts (instruction register, Ir) : O anda alan komutu zerinde bulundurur. Komut kod zc (instruction decoder) : Komut kaytsndan gelen bilgileri, kontrol sinyalleri oluturacak ekilde kodlar.
36

Akmlatr (accumulator, birike, A, B) : A ve B olmak zere iki tanedir. Data ucu kadar bite sahiptir (8 bit). ALU tarafndan kullanlrlar. Genelde o andaki datalar veya ilem sonularn zerinde bulundururlar. ndis kayts (index register, X) : 16 bitliktir. Kullanlacak gerek hafza yerini belirlemek iin bu kayt iindeki deer, komutla belirtilen adrese eklenir. Yn gstergeci (stack pointer, SP) : 16 bitliktir. Hafzadaki herhangi bir hcre adresini zerinde bulundurur. Herhangi bir dallanma alt programlara gitme ve kesme istekleri annda mikroilemcinin o andaki bilgilerini dn annda kullanmak zere saklamak gerekir. Bunun iinde geici olarak yn gstergecinin RAM zerinde gstermi olduu adresten geriye doru bir data yn oluturulur. SP ise bu data ynnn oluturulaca adres balangcn zerinde tutar. Yna son atlan bilgi ilk alnr. Ynn kapasitesine bal olarak ii ie dallanmalar yaplabilir. Eer ynn kapasitesi yetersiz ise yn tamas (stack overflow) problemi ortaya kar. Yndan bir okuma/yazma yaplacaksa, SPnin iaret etmi olduu hafza hcresinden okunur/yazlr. SPnin deeri mikroilemci tarafndan otomatik olarak arttrlr ya da azaltlr. Yn trleri: - LIFO (Last-In First-Out): Yna son atlan bilgi ilk alnr. - FIFO (First-In, First-Out) : Yna ilk atlan bilgi ilk alnr. Bir PUSH komutuyla veri, yna atlrken, PULL komutu ile veri yndan alnr.

A B PCL PCH SP CCR RAM zerinde

ekil-5.2. Yn Yn ok dzeyli kesmelerin kolayca gereklenmesini, snrsz sayda alt programn i ie geirilebilmesini ve birok veri ileme trlerinin basitletirilmesini salar. Mikroilemcinin ana programdan alt programa gittii zaman ana programa geri dnecei adresi saklad adres gznn adresini ierir. Ana programdan alt programa gidildii zaman PC de o anda ana program komut satrnn adresi vardr.

37

Durum kod kayts (condition code register, CCR) : ALU ile birlikte alr. Bayrak kaydedicisi, btn mikroilemcilerde olduu gibi, tipine bal olarak 8-bit, 16-bit ve 32-bit olmak zere, bir ilemin sonunda sonucun ne olduunu kaydedici bitlerine yanstan bir bellek hcresini oluturur. Bu kaydediciye bayrak denmesinin sebebi, karar vermeye dayal komutlarn yrtlmesinde sonuca gre daha sonra ne yaplacan bit deiimiyle bu kaydedicinin 1 -bitlik hcrelerine yanstmasdr. Kaydedicideki bitlerin mantksal 1 olmas bayrak kalkt, mantksal 0 olmas bayrak indi anlamndadr. Karlatrma ve aritmetik komutlarn ou bayraklara etki eder. MC6802 Mikroilemcisinin CCR kayts 8-bitlik olup, zerinde u bilgiler bulunur:
1 1 H I N Z V C

carry borrow kullanlmyor overflow zero negative interrupt mask half carry

ekil-5.3. Durum kod kayts bayraklar. Z-biti : lem sonucu sfr ise bu bit lojik-1 olur. N-biti : lem sonucu negatif ise bu bit lojik-1 olur. H-yarm elde biti : Yaplan toplam ilemi sonucunda elde biti olumu ise bu bit lojik-1 olur. V-tama biti : Eer bir elde biti varsa ve daha sonra yaplan ilem sonucunda tekrar elde biti olumu ise bu bit lojik-1 olur. C- bor elde biti : Bir karma ileminde kan say karlan saydan byk ise bor alnr. Bu durumda bu bit lojik-1 olur. I-kesme biti : Bu bit lojik-o ise gelen IRQ kesme isteklerine izin verilir. Eer bu bit lojik-1 ise gelen IRQ kesme isteklerine izin verilmez. 6802 Mikroilemcisinin Kontrol Sinyalleri - IRQ (interrupt request) : kesme istei - Reset : al batan - Halt : duraklatma kesmesi - NMI (non-maskable interrupt) : maskelenmeyen kesme - R/W : oku/yaz - VMA (valid memory address) : geerli adres ucu

38

- 3 durumlu kontrol - BA (BUS available) : yol kullanlabilir. - DATA BUS enable Halt : Bu u lojik-0 olduunda 6802 son komutunu (en son yapt ilemi) tamamlar ve almasn durdurur. Bu durumda adres yolu bir adresin komutunu gsterir. BA lojik-1 olur. VMA ucu ise lojik-0 olur. Eer kesme (halt) ilemi yaplmayacaksa, halt ucu +5 volta balanmaldr. R/W : Lojik-0 ise hafzaya yaz. Lojik-1 ise hafzadan oku manasndadr. Bir k ucu olup, hafza ve giri/k nitelerine yazmak ve okumak iin kullanlr. VMA : Adres hatlar zerindeki bilginin adres bilgisi olup olmadn belirlemeye yarar. Buda bir k ucu olup gerekli evre birimlerle balants yaplmaldr. evre birimler; hafza, giri/k nitesi ...v.s. olabilir. BA : Bu k data ve adres yollarnn mikroilemci dndaki kullanclar iin kullanmaya uygun olduunu belirler. rnein halt kesmesi gelince o andaki adresteki bilgilerin kullanlabileceini gsterir. Reset : Bu u lojik-0 yapldnda program FFFE ve FFFF adresindeki yazl olan adrese dallanr ve FFFE ile FFFF nin gsterdii adres mikroilemci programnn balang adresidir. Yani mikroilemci her almasnda bu adrese gre alacaktr. NMI : Bu u lojik-0 olunca mikroilemcinin o andaki bilgileri yn gstergeci vastasyla saklanr. NMI lojik-0 olunca kesme annda yaplmas gereken iler iin FFFC, FFFD adresinde belirtilen adresteki programa dallanr. O adresteki program bitince tekrar almasna kald yerden devam eder. Yani uca gelen kesme beklemeden devreye girer. IRQ : CCR kaytsnda belirtilen kesme (I) biti ile denetlenir. Eer I biti sfr ise gelen kesme isteine cevap verilir. Bu bit lojik-1 ise kesme istei geersizdir. Bir kesme balamsa bir dier kesmeye izin vermemek iin bu bit lojik-1 yaplmaldr. Mikroilemcinin gerekli bilgileri yn gstergeci yardmyla saklanr ve sonra FFF8, FFF9 adreslerinde yazl olan adresteki programa dallanr. SWI : Dier kesmelerin aksine bir yazlm kesmesidir. Bu kesme geldiinde FFFA, FFFB adreslerinde belirtilen adresteki program altrr. ou mikrobilgisayarda bu kesme geldiinde monitr durdurucu ve ayn zamanda mikrobilgisayar duraklatma ilevini yapan bir program altrlr.

39

FFF8 FFF9 FFFA FFFB FFFC FFFD

IRQ IRQ SWI SWI NM I NM I

H L H L H L

H: yksek deerlikli byte L: dk deerlikli byte

FFFE RESTART H FFFF RESTART L


ekil-5.4. Kontrol sinyallerinin adres yerleimi.

5.2. MC6802 le Gerekletirilmi Mikrobilgisayar


A) MNMUM 6802 MKROBLGSAYAR DEVRES Minimum mikrobilgisayar = CPU + Hafza + Giri/k nitesi den oluur. rnek: CPU 6802-1Mhz, Hafza 2764-8KB Eprom Giri/k 6821 PIA olsun. Bunun blok emasn izmek istersek, CPU nun 16 bit adres hatlarn aadaki gibi datmamz mmkndr.
A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0

PIA seer EPROM seer

EPROM adres hatlar

ekil-5.5. CPU adres hatlarnn dalm.

40

seme ucu A15 4 M hz kristal osilatr

adres 13 bit

2764 8KB EPROM

6802 1M hz CPU

data 8 bit

6821 PIA

16 bit giri/k

seme ucu A14


ekil-5.6. Minimum mikrobilgisayar blok diyagram.

- Giri / k nitesi olarak PIA (paralel giri/k) kullanlmtr. Kullanlan MC6821 PIA nn 2 adet 8 bitlik giri/k portu vardr. - MC6802 mikroilemcisinin 16 adres ucu vardr. Bunun 13 adetini 2764 Epromu iin, 2 tanesi de eprom ve PIA y seme ilemi iin kullanld. A15 = 1, A14 = 0 ise EPROM seilir. A15 = 0, A14 = 1 ise PIA seilir. - Seme ularnda dikkat edilmesi gereken, herhangi bir anda sadece bir elemann seilmesidir. - EPROM un herhangi bir hafza blgesinden bilgi okuyacaksak, A15 adres ucunu aktif yapacak ekilde adres vermeliyiz.

2764 EPROM adres 8000 8000 8002

BFFF
ekil-7.3. EPROM seimi ve adresleri.

41

- PIA zerinden giri yada k ilemi yapacaksak, A14 uunu aktif yapacak ekilde bir adres vermeliyiz. rnein; 4000. - MC6802 mikroilemcisinin ierisinde 128 byte lik bir RAM vardr. Bu RAM 0000H adresine yerletirilmitir. Yani 128 bytelik RAM n adres aral 0000-007F dir ve 7 adet adres ucu vardr. Bu RAM n ilk 32 bytelik ksm stand-by (stb) zellii vardr. Bu zellik; mikroilemcinin enerjisi kesilse bile dardan bir pil ...v.s. ile stb li ksm beslenerek zerindeki bilginin silinmesini engeller. Stb gerilimi 4.5 V + %10 dur. - MC6802 mikroilemcisinin iinde bir clock puls nitesi vardr. Bu nitenin almas iin ularna bir kristal osilatr balamak gerekir. Balanacak olan bu osilatrn frekans mikroilemcinin frekansnn 4 kat olmaldr. MC6802-1 Mhz iin 4Mhz lik, MC6802-2 Mhz iin 8Mhz lik bir kristal osilatr balanmaldr. - MC6802 mikroilemcisi 8 bit data bus, 16 bit adres ucu ile 74 assembly komuta sahip bir mikroilemcidir.

5.3. Assembly (Birletirici) Dil Kurallar


Bir assembly satr su ekildedir :

Etiket Alan Komut Alan


Etiket Alan

Veri Alan

Aklayc Bilgi

Etiket kullanlmyorsa, komut bir stn ierden balanmaldr lk stunda * varsa bundan sonraki bilgilerin alama olduunu gsterir. Eer etiket varsa u kurallara uyulmaldr : Etiket 1 ile 6 karakter uzunlua sahip olabilir. lk karakter say ve rakam olmamaldr lk stundan balanlmaldr. Etiket program boyunca ayn isimden bir tane olmaldr. Bir etiket u durumlarda kullanlr. Herhangi bir artl dallanma komutu ile gidilecek yeri belirlemek. Herhangi bir artsz dallanma komutu ile gidilecek yeri belirlemek. Herhangi bir alt programa gitmek iin. Komut Alan Bu alanda ilgili mikroilemcinin assembly komutlar bulunabilir.

42

Komut (assembly) CLR A CLR B

Operasyonel kod (op-code) kilik sistemde 4F 0100 1111 5F 0101 1111

MC6802 mikroilemcisinin 74 komutu bulunmaktadr. Bu komutlar drt guruba ayrabiliriz. a- 8 bitlik kaytlar ile yaplan ilem komutlar ki ilemli aritmetik : ABA, ADD,... Tek ilemli aritmetik : CLR A, INC B, DEC A, ... Karlatrma ve test etme : CMP, BIT A, .... Kaydrma ve dndrme : ASL, ROR, ... Mantksal fonksiyonlar : EOR, AND, COM, .... Ykleme ve depolama ilemleri : LDA, STA, LDX, STS, Transfer : TAB, TBA,TXS, ... b- Atlama ve dallanma komutlar artl dallanma : BNE, BEQ,.... artsz dallanma : BRA, JMP, .... Alt programlara gitme : BSR, JSR, ... Kesme ilemlerinde belirtilen yerlere gitme : WAI, ... c- ndis kayts ve yn gstericisi kontrol yapan komutlar indis kayts ile ilgili ilemler : LDX, INX, STX, DEX, CPX, ... Yn gstericisi ile ilgili ilemler : STS, LDS, INS, .... Transfer ilemleri : TSX, TXS, .... d- Durum kod kayts kontrol yapan komutlar Bit kontrol : CLI, SEI, CLC, .... Byte kontrol : TAP, TPA, Veri Alan Adresleme modlarna gre bilginin girildii alanlardr. Bu blgedeki bilgilere gre komutlar 1, 2 veya 3 bytelik olmaktadr. Eer bir komut 2 veya 3 byteden olumakta ise 2. veya 2. ve 3. byteler bir ilem, bir adres veya adres elde etmekte kullanlacak bilgiyi ierir. Ksaca ilemler ve karakterler veya karakter dizileri bu blgede bulunabilir. Bu blgede bulunan bilgiler assembly derleyicisi tarafndan u ekilde anlalr :

43

Saylarn Temsili say $say sayH @say sayO sayQ %say sayB aretler # (diyes)

Derleyici Tarafndan Anlalmas Desimal 10 Hekzadesimal 16 Oktal 8 Binary 2

Anlam Kendisinden sonra gelenin data olduunu gsterir ve immediate adreslemede kullanlr. Normal matematiksel ilemler iin kullanlr (st seviyeli programlama dillerinde : C, pascal, fortran, ...v.s.).

+, -, *, /

rnek : 60H ile 61H adresindeki bilgileri toplayp 62H adresine yazan bir assembly program yaznz.

Assembly Dil LDA A 60H ADD A 61H STA A 62H

Operasyonel kod 96 60 9B 61 97 62

Makine dili 1001 0110 0110 0000 1001 1011 0110 0001 1001 0111 0110 0010

Programn makine kodundaki halini anlamak olduka zordur. Hekzadesimal haldeki operasyonel kodlarnda kullanc tarafndan anlalmas zordur. Bu nedenlerden dolay daha anlalr olan assembly dili kullanlr. Daha sonra program EPROM a veya mikroilemciye verilirken operasyonel kodlara evrilerek verilir.

5.4. MC6802 Mikroilemcisinin Komut Kmesi ve Adresleme Modlar


A) KOMUT KMES 6802 mikroilemcisinin komut kmesi bir, iki veya bytelik komutlardan oluur. Bir komutun uzunluu komuta ve adresleme eidine bal olup, ilk (veya tek) byte komutu ve kullanlan adresleme eidini belirlemeye yeterlidir. 6802 mikroilemcisinin 74 komutu btn

44

geerli adresleme eitleri iin onaltlk tabanda operasyonel kodlar EK-1,2 deki tablolar da verilmitir. Kullanlabilecek 256 (00...FF) onaltlk saydan 197 si geerli birer makine kodu olduu, 56 snn ise kullanlmad verilen tablodan grlebilir.

B) ADRESLEME MODLARI LDA A 60H gibi bir assembly satrnda; 60H bilgisimi A akmlatrne yklenecek, yoksa 60H adresindeki bilgimi A akmlatrne yklenecek? te bunun gibi durumlar ayrt etmek iin adresleme modlarna gerek vardr. 6802 mikroilemcisinde 7 adresleme modu kullanlabilmektedir. - Immediate (hazr, hemen, derhal, annda, ivedi, ncel) adresleme - Relative (bal, dolayl, greceli) adresleme - Inherent (doal, anlalr, ierilmi) adresleme - Indexed (indisli, sral) adresleme - Akmlatr adresleme (Anlalr adreslemenin zel bir durumudur) - Extended (geniletilmi, mutlak) adresleme - Direct (dorudan) adresleme

Bu adresleme modlar mikroilemciler iin temelde ayn olmasna ramen baz deiiklikler gsterir. 1. Annda adresleme Bu yntemde ilenecek olan bilgi, komutun 2. byte dnda yer alr. Annda adreslemeyi assembly dil yazlmnda belirlemek iin verinin nne # iareti konur. rnek : Assembly op-code yapt i ================================= LDA A #$25 LDX #$1000 LDA A #45 86 25 CE 10 00 86 45 A = 25H X = 1000H A = 45
PC 86 25 Program Hafzas CPU A 25

45

2. ndisli adresleme ndis kayts kullanlarak adreslemenin yaplmasndan dolay, bu ynteme indisli adresleme yntemi denilmitir. Komuttan sonra gelen say indis kaytsndaki sayya eklenerek, gerek data adresi belirlenir. Belirlenen bu adresten data okunur veya yazlr. ndisli adresleme yntemini belirtmek iin komut ve datadan sonra x yazlr. rnek : Assembly op-code yapt i ================================= LDA A $05,X A6 05 A = [X+05]
X+05 210A PC CPU A X 40 2105 40

A6 05 Program Hafzas

3. Dorudan adresleme Dorudan adresleme ynteminde komutun operasyonel kodundan sonra ilenecek olan verinin bulunduu adres yazlr. Bilindii zere 16 bitlik adresler 0000....FFFF arasndadr. Dorudan adreslemede adres 8 bit kullanlarak, 8 bitlik adreslere ulalrken fazladan yer kaplamamak iin 0000....00FF arasndaki adresler, 00....FF eklinde kullanlmaktadr. Yani dorudan adreslemede komuttan sonra gelen adres deeri bir bytedir. rnek : Assembly op-code yapt i ================================= LDA A $70 LDX $70 96 70 DE 70 A = [0070] X = [0070,0071]
PC 96 70 Program Hafzas 0070 CPU A 40

40

4. Geniletilmi Adresleme Bu adresleme, dorudan adreslemenin geniletilmi bir ekli olup $0000.....$FFFF arasnda tm durumlara eriilmesini salar. Bu durumlar iki bytelik olduu iin geniletilmi adresleme komutlar 3 byteden oluur.

46

rnek : Assembly op-code yapt i ================================= LDA A $45 LDA A $0045 LDX $8520 LDA A $8520 96 45 B6 0045 A = [0045] A = [0045]

CPU A

8F

8520

8F

FE 8520 X = [8520,8521] B6 85220 A = [8520]

PC

B6 85 20 Program Hafzas

5. Anlalr adresleme Bu adreslemede ilenecek olan veri (data, bilgi) komutun kendisi ile birlikte verilir. Bylece ilenecek olan bilgi herhangi bir bellek blgesinde aranmaz. Bu ekilde 6802 mikroilemcisinde 25 komut vardr. rnek : Assembly op-code yapt i ================================= ABA CLC 1B 0C A=A+B C=0

6. Akmlatr adresleme Bu yntem akmlatrn ilenen bilgiyi ierdii, anlalr adreslemenin zel bir durumudur. 6802 mikroilemcisinde 13 tane komut bu yntemle adreslenebilmektedir. Bu adresleme dorudan komuttan sonraki A ve B harfleri ile A akmlatr veya B akmlatr eklinde tanmlanr. rnek : Assembly op-code yapt i ================================= CLR A COM A 4F 43 A acc. sil. A = A

7. Relatif Adresleme Sadece dallanma komutlarnda kullanlan bu adresleme trnde, ulalmas gereken adres program saycsnn o andaki ieriine bal olarak bulunur. Dallanma komutlar iki byte den oluur. Birinci byte ilem bytedir. kinci byte ise teleme (salnm, sapma, offset, dallanma) byte olup, program sayacna eklenir.

47

Bir dallanma srasnda ileriye gidilebilecei gibi, geriye de gidilmesi gerekebilir. Dolaysyla teleme says iaretli bir saydr. teleme says 8 bitlik bir say olup, bununla (00...FF) 256 durum ifade edilir. aret dikkate alnnca +127 ileriye (00...7F), -128 geriye (80...FF) gidilebilir. Fakat teleme says okunduunda PC dallanma komutunun olduu yerden 2 ilerisini gsterecei dnlecek olursa, +129 ileri 126 geri dallanlabilir. (PC + 2) 128 TELEME MKTARI (PC + 2) +127 - leri doru sapma
PC = 5008
PC PC +2 PC+2+Sap ma Komut Sapma Komut

BEQ 15 Komut
H GOTO 500A

PC = 500A

Z=1

PC = 501F
Komut

Komut
E GOTO 501F

Program Hafzas

Program Hafzas

- Geriye doru sapma leri doru sapma yntemiyle ayn prensiplere sahip bu yntemde tek fark bal adresin negatif bir say olarak girilmesidir.
PC+2 -Sapma Komut

PC PC + 2

Komut Sapma Komut Program Hafzas

Adres op-code assembly ================================ A057 ----A058 ----A059 ----A05A ----A05B ----A05C ----A05D 20 BRA F9 A05E F9 A05F -----

Geriye doru sapma miktarn u ekilde de bulunabilir : Sapma komutundan itibaren FF den balayarak geriye doru saylr, FF, FE, FD, FC,.....F9... saplacak yere gelince durulur.

48

Problem: Aadaki programda DNG1 ve DNG2 sapma miktarlarn 16 lk say sistemi tabannda veriniz. DNG1 CLR A INC A NOP CMP A #$10 BNE DNG1 BRA DNG2 DEC A NOP WAI

DNG2

5.5. MC6802 Assembly Uygulamalar


A) BR ASSEMBLY PROGRAMIN YAZILIMDA ZLENECEK YOL 1. Probleme ait giri/k verileri ile istenen sonu gnlk dilde ak bir ekilde yazlmal ve ak emas karlmal 2. Kullanlacak olan bilgisayarn (mikroilemcinin) kapasite ve zelliklerinin probleme cevap verip veremeyeceinin belirlenmesi ve buna uygun mikroilemci seiminin yaplmas. 3. Programn algoritmada belirtilen kurallara (adresleme modlarna) uygun olarak kodlanmas. 4. Arzu edilen sonularn elde edilip edilmediinin kontrol edilmesi. B) RNEK PROGRAMLAR 1. Komut ADD A #$33 ADD A $33 ADD A $0133 ADD A $06,X ABA LDA B #$FF LDA B $55 STA A $1235 INC A LDX #$0011 LDX $50 JMP $0180 JMP $02,X Adresleme Modu Annda Dorudan Geniletilmi ndisli Anlalr Annda Dorudan Geniletilmi Akmlatr (Anlalr) Annda Dorudan Geniletilmi ndisli Operasyonel Kodu Yapt 8B 33 9B 33 BB 01 33 AB 06 1B C6 FF D6 55 B7 12 35 4C CE 00 11 DE 50 7E 01 80 6E 02 A = A + 33 A = A + [33] A = A + [0133] A = A + [X + 06] A=A+B B = FF B = [55] [1235] = A A=A+1 X = 0011 X = [0050, 0051] [0180] adresine git [X + 02] adresine git

49

DEX CMP A #$50 CMP $50 CMP A $0250 ADC A #$05 AND A #$1C ASL A ASL $0D80 ROR $004E NOP BCC xx

Anlalr Annda Dorudan Geniletilmi Annda Annda Akmlatr (Anlalr) Geniletilmi Geniletilmi Anlalr Relatif

09 81 50 91 50 B1 02 50 89 05 84 1C 48 78 0D 80 76 00 4E 01 24

X=X-1 A ile 50 i karlatrr A ile [0050] i karla. A ile [0250] i karla. A = A + C + 05 A = A x 1C A sola kaydrlr [0D80] sola kaydrlr [004E] saa dndrlr 2 cp zaman geiktirir C = 0 ise xx kadar sapar

2. 55 adresinde CA says ve B akmlatrnde 13 says vardr. ADD B #$55 ADD B $55 Annda Dorudan CB 55 DB 55 B = B + 55 = 68 B=B+[0055]=13+CA=DD

3. Aadaki programn almas sonucunda A akmlatrnde hangi say vardr. LDA A #$22 STA A $01C3 LDX #$0123 ADD A $A0,X 86 22 B7 01C3 CE 01 23 AB A0 A = 22 [01C3] = A = 22 X = 0123 A=A+[X+A0]=22+[0123+A0]=22+[01C3]=22+22 = 44

4. 8000H adresine yerletirilmi bir PIA nn PA0 ucundan aadaki ekilde bir kare dalga alnmak isteniyor. Gerekli assembly program yaznz.
PA0 L-1 t 3 ms 4 ms

zz

LDA A #$01 STA A $8000 LDX #$0000 xx INX NOP CPX #$00E7 BNE xx CLR A STA A $8000 LDX #$0000 yy INX NOP CPX #$0134 BNE yy BRA zz

dev : Yandaki programn operasyonel kodlarn karnz

xx etiketindeki 3 mslik dngnn deeri, bu dng ierisinde bulunan komutlarnn alma srelerinden karlr :
50

INX 4 + NOP 2 + CPX 3 + BNE 4 = 13 cp; CPU 1 Mhz ise 13cp = 13 s xx dng miktar = 3ms/13 s = (231)10 =(00E7)16 Benzer ekilde 4ms lik yy dngsnn deeri : yy dngs miktar = 4 ms / 13 s = (308)10 = (0134)16 5. Kopyalama program : 1000H...2000H arasndaki bilgileri 3000H....4000H arasna kopyalayan bir assembly program yaznz. LDX #$1000 STX $80 LDX #$3000 STX $82 xx LDX $80 LDA A $00,X INX STX $80 LDX $82 STA A $00,X INX STX $82 CPX #$4001 BNE xx SWI CE 10 00 DF 80 CE 30 00 DF 82 DE 80 A6 00 08 DF 80 DE 82 A7 00 08 DF 82 8C 40 01 26 ED 3F X = 1000 [80] = X = 1000 X = 3000 [82] = X = 3000 X = [80] A = [X+00] X=X+1 [80] = X X = [82] [00 + X] = A X=X+1 [82] = X X 4001 durumu CCR ye setler. Z = 0 ise xx e dallanr Dur

6. Aadaki programn almas sonucu durum kod kaytsndaki H ve V bitlerinin durumu nedir? LDA A #$E0 LDA B #$09 ABA TAP SWI 86 E0 C6 09 1B 06 3F A = E0 B = 09 A = A+B = E9 CCR = E9 H=1 V=0 CCR = 1 1 H I N Z V C CCR = 1 1 1 0 1 0 0 1

7. Bilindii zere SWI kesmesi IRQ, NMI kesmelerinin aksine bir yazlm kesmesidir ve birok mikrobilgisayarda mikroilemciyi durdurucu bir ilev yapmaktadr. Bir SWI yazlm kesmesi program yaznz. xx NOP BRA xx 01 20 FD Sonsuz dng

51

8. Aadaki programn almas sonucu indis kaytsnda hangi say vardr? LDS #$007F LDA A #$23 LDA B #$34 PSH A PSH B LDX $7E SWI 8E 00 7F 86 23 C6 34 36 37 DE 7E 3F SP = 007F A = 23 B = 34 [007F] = 23 [007E] = 34 X = [007E, 007F] =3423

9. ki tane iki byte lk sayy toplamak iin assembly program yaznz. Saylardan biri 80 H ve 81H adreslerine, dieri ise 60H ve 61H adreslerinde sakldr. Sonucu indis kaytsna ykleyiniz. LDA A $81 LDA B $61 ABA STA A $91 LDA A $60 ADC A $80 STA A $90 LDX $90 SWI 96 81 D6 61 1B 97 91 96 60 99 80 97 90 DE 90 3F A = [81] B = [61] A=A+B [91] = A A = [60] A = A + C + [80] [90] = A X = [0090,0091]

10. Aadaki programn her komutunun almasndan sonra A birikecinde bulunan deeri yaznz. LDA A #$23 AND A #$F0 COM A NEG A DEC A INC A ORA A #$34 ASL A LSR A SUB A #$43 SWI A = 23 A = 20 A = DF A = 21 A = 20 A = 21 A = 35 A = 6A A = 35 A = F2

52

dev : Aada operasyonel kodlar verilen programn assembly dil karln yazarak ne i yaptn bulunuz? CE 00 00 DF 50 4F 5F 9B 51 D9 50 08 DF 50 8C 01 2C 26 F4 97 53 D7 52 3F C) ALT PROGRAM
Ana program ------------------------------------------BSR / JSR --------------END

1. Alt programa giderken geri dnlecek adres deeri yna atlr. 2. Alt program kullanlacaksa yn gstergecinin (SP) balang adresini ana programn banda mutlaka vermeliyiz ve verilen bu adresin RAM zerinde olmasna

Alt Program ------------------------------------------RTS

dikkat edilmelidir.

rnek : 0300H ....0600H adresleri arasna 02 yazan ve bir alt programda ise bunlar toplayarak sonucu 0800H adresine kayt eden bir assembly program operasyonel kodlaryla birlikte veriniz.

53

LDS #$007F LDX #$0300 LDA A #$02 DONGU1 STA A $00,X INX CPX #$0601 BNE DONGU1 BSR DONGU2 SWI

8E 00 7F CE 03 00 86 02 A7 00 08 8C 06 01 26 F8 8D 01 3F

DONGU2

CLR A CLR B LDX #$0300

4F 5F CE 03 00 AB 00 C9 00 08 8C 06 01 26 F6 B7 08 01 F7 08 00 39

DONGU3

ADD A $00,X ADC B #$00 INX CPX #$0601 BNE DONGU3 STA A $0801 STA B $0800 RTS

D) KESME ALT PROGRAMI 1. Kesme alt programna giderken geri dnlecek adres deeri yna atlr.

Ana program ----------------------------CLI WAI --------------END

2. Kesme

alt

program

kullanlacaksa

yn

gstergecinin (SP) balang adresini ana programn banda mutlaka vermeliyiz ve verilen bu adresin RAM zerinde olmasna dikkat edilmelidir. 3. IRQ kesme alt program kullanlacak ise FFF8, FFF9 adreslerine IRQ kesme alt programnn balang adresi nceden yazlmaldr. 4. NMI kesme alt program kullanlacak ise FFFC, FFFD adreslerine NMI kesme alt programnn balang adresi nceden yazlmaldr.
[FFF8, FFF9]

Kesme Alt Pro.

------------------------------------------RTI

54

5. IRQ kesmesi kullanlacak ise, CCR deki I biti 0 yaplmaldr. Bir IRQ kesmesi geldikten sonra, ikinci bir IRQ kesmesine izin vermemek iin I biti 1 yaplmaldr. rnek : Bir nceki alt program rneini IRQ kesme alt program ile yapnz. LDS #$007F LDX #$0300 LDA A #$02 DONGU1 STA A $00,X INX CPX #$0601 BNE DONGU1 CLI WAI SWI 8E 00 7F CE 03 00 86 02 A7 00 08 8C 06 01 26 F8 0E 3E 3F

[FFF8, FFF9] CLR A CLR B LDX #$0300 DONGU2 ADD A $00,X ADC B #$00 INX CPX #$0601 BNE DONGU2 STA A $0801 STA B $0800 RTI

4F 5F CE 03 00 AB 00 C9 00 08 8C 06 01 26 F6 B7 08 01 F7 08 00 3B

55

5.6. Mikrobilgisayarlarda Giri/k lemi


A) PIA (Peripheral Interface Adapter) Paralel giri / k portudur. 68 serisi PIA: MC6821. PIA nn ilev tarz (G/ portlarnn ne kadar giri, ne kadar biti k olduu) assembly programn balangcnda programlanmaldr. Yani PIA nn her bir veri yolu giri veya k olarak programlanabilmektedir.

Reset E R/W A0 (RS0) A1 (RS1) IRQ A IRQ B CS2 CS1 CS0 D0.....D7 MKROLEMCYE

CA1 CA2 A Portu

A portunun kontrol hatlar

PA0....PA7

M C6821 PIA
PB0....PB 7 CB1 CB2 B Portu

B portunun kontrol hatlar

SRC DEVRELERNE

MC6821 de 3 tane 8 bitlik kayt tipi vardr ; 1-) Veri kayts (Data Register DRA, DRB) : Bu kayt giri yada ka ait veri yi saklar. 2-) Veri yn kayts (Data Direction Register DDRA, DDRB) : Bu kaytdaki her bir bit, buna karlk gelen veri kaytsndaki bitin giri yada k olduunu belirler. DDRA, DDRB de 0 giri, 1 k olarak tanmldr. 3-) Kontrol kayts (Control Register CRA, CRB) : El skma (handshake) iin gerekli durum sinyallerini ve mantk balantlarn seen bitleri zerinde tamaktadr PIA CS sinyalleri ile seilmektedir. Seilme yapldktan sonra alt kaytdan (DRA-DRB, DDRA-DDRB, CRA-CRB) her birine ulalabilir. Alt kayt olmasna ramen, bunlar seen iki adres yolu (RS0-A0, RS1-A1) vardr.

B) ACIA (Asychronous Communication Interface Adapter) Asenkron olarak seri bilgi iletimi gerekletirir. 68 serisi ACIA MC6850 entegresidir. ACIA, bir mikroilemcinin veri hattndan ald paralel bilgiyi yazc, modem, gibi evre birimlere seri biimde olarak aktarabilen veya bu birimlerden ald seri biimdeki bilgiyi mikroilemcinin veri hatlarna paralel olarak verebilen eleman olup, UART (Universal Asynchronous Receiver
56

Transmitter Evrensel Asenkron Alc Verici) olarak ta bilinir. Veri formatlama ve asenkron seri aralarn balanabilmesi iin kontrol sinyallerine sahiptir. Genel zelliklere ise aadaki ekilde gsterilmitir.

E RS R/W

Tx data Rx data Tx clock Rx clock

IRQ CS2 CS1 CS0 D0.....D7 MKROLEMCYE

M C6850 ACIA

CTS DCD RTS SRC DEVRELERNE MODEM

ACIA veri anayoluna ait paralel veriyi uygun format ve hata kontrol ile seri olarak gnderebilmekte ve alabilmektedir. Drt tane kaytya sahiptir. ki kayt sadece okunabilir : Receiver (alc) ve Status (durum). Dier ikisi ise sadece yazlabilir : Transmitter (gnderici) ve Kontrol kaytlar. Bu kaytlara RS ve R/W sinyallerinin kombinasyonu ile ulalabilmektedir. C) SSDA (Synchoronous Serial Data Adapter Senkron Seri Veri Adaptr ) Senkron olarak seri bilgi iletimi iin kullanlr. 68 serisi olarak MC6852 mevcuttur. Bu birim birok bakmdan ACIA ya benzer. D) PTM (Programmable Timer Module Programlanabilen Zamanlayc Modl) Mikroilemcilerin endstriyel uygulamalarnda ok sk karlalan bir gereksinim belirli olaylar balatma, bitirme ve uygun aralklarla tekrarlamak iin sre lmektir. Bir baka gereksinim de belirli olaylar takip edip saymak ve belirli saylarda belirli baz ilemleri yapmaktr. Her iki ilem iinde mikroilemci kullanlabilir. rnein sre lmek iin mikroilemci, balama iareti ile birlikte bir dngye sokulur ve durma iaretinde dngden klr. Dng ka defa yrtlmse, bir dngy yrtmek iin gerekli sre o dngdeki komutlarn yrtme srelerinden bulunulabileceine gre, toplam sre de bulunabilir. Ayn ekilde olay saymak iin mikroilemci bir bekleme durumuna sokulabilir, her bir olayda retilen bir kesme, belirli bir

57

saklaycnn

ieriinin

bir

artrlmasn

salayabilir.

Fakat

bu

yntemlerin

sakncas,

mikroilemcinin bu ilemleri yapabilmesi iin zamannn byk bir ksmn ayrmas ve hatta baz durumlarda baka hibir i yapmamasdr. Dolaysyla sre lme ve olay sayma iin genellikle ayr bir donanm kullanlr. 68 serisinde bu amala kullanlabilecek MC6840 zamanlayc (timer) entegresi mevcuttur. Aadaki ekilde MC6840 verilmitir.
Reset E R/W RS0 RS1 RS2 IRQ CS0 CS1 O1 O2 D0.....D7 MKROLEMCYE O3 SRC DEVRELERNE G1 C1 C2 C3

Clock girileri

M C6840 PTM

G2 G3

Gate girileri

Timer klar

MC6840 ta 3 tane 16 bit ikili sistemde saya ve bunlar kontrol eden kayts ile bir tane durum (status) kayts vardr. Kayt seici yollar RS0, RS1, RS2 ve R/W yollar ile kaytlara, sayalara ve tutuculara (latch) ulaabilmektedir. Zamanlaycnn (timer) ileyi ekli kontrol kaytsna yazlan veri ile ynlendirilmektedir. 6840 deiik uygulama alanlarnda kullanlacak ekilde tasarmlandrlmtr.

58

BLM 6. HARVARD VE RISC MMARL MKROLEMC 6.1. PIC MKRODENETLEYCLERN TANITIMI


Mikrodenetleyicilerin kullanm yaygnlatka Atmel, Philips, Renesas, NEC, Microchip gibi firmalar mikrodenetleyicilerle piyasa kmaya baladlar. Bu firmalardan Microchip, 1990 ylndan itibaren 8-bitlik mimari zerine yapt zel donanm eklentileri ile gnmzde onlarca eit mikrodenetleyici retmektedir. Bu firma ayn zamanda 2004 yl ierisinde dsPIC ad verdii 16-bit mimarili yeni mikrodenetleyicisini karmtr. 8 bitlik mikrodenetleyiciler 8-bitlik veri yolu, 16-bitlik mikrodenetleyiciler ise 16-bitlik veri yolunu kullanrlar. Microchip gibi baz frmalar dierlerinden farkl olarak uygulamalar iin gerekli olabilecek eitli donanmlar (ADC, DAC, RTC v.b.) mikrodenetleyici ierisine eklemektedir. Bylece bu donanmlar harici olarak kullanmann getirecei ek maliyet azaltlabilir. PIC mikrodenetleyicilerinin salad avantajlar ; Piyasada kolay bulunabilmeleri ve birok eidinin olmas. Programlama iin gerekli donanmlarn ok basit olmas ve cretsiz devre emalarnn kolaylkla bulunabilmesi Programlama iin gerekli olan yazlm gelitirme aralarnn Microchip tarafndan cretsiz olarak sunulmas Sahip olduu RISC mimarisinin, az sayda komut ile kolayca programlanmasna olanak salamas Basic, C gibi yksek ve orta seviyeli dillerde programlanmalarn salayan cretli/cretsiz yazlmlarnn bulunmas. Yaygn kullanmn bir sonucu olarak ok miktarda rnek uygulama ve kaynan bulunmas Microchip tarafndan yazlan uygulama notlarnn uygulama gelitirmede kolaylklar salamas DIP klf yaps ile de retilmesinin kart tasarmnda kolaylk salamas. Bu avantajlar ile PIC mikrodenetleyicileri, giri seviyesindeki kullanclar iin uygun bir balang noktasdr. Birok karmak uygulama iin bile farkl modeldeki PICler ile zmler retebilmektedir.

A) PIC Mimarisi
Microchip firmas tarafndan retilen mikrodenetleyicilerde Harvard mimarisi (RISC yaps) kullanlmaktadr. Bu nedenle PIC mikrodenetleyicilerinin program ve veri bellei birbirinden ayrdr. RISC yaps nedeniyle PICler olduka az komut (35 komut) ile programlanmaktadr. Microchip, PIC mikrodenetleyicilerinin snfndaki dier 8-bitlik mikrodenetleyicilere gre ayn ii

59

yapacak program kodunun 2 kat daha az yer kapladn ve bu program kodunun 4 kat daha hzl altrdn ileri srmektedir. PIC mikrodenetleyicilerinin program veri yolunun uzunluu ise deikendir. PIC mikrodenetleyicileri d dnya ile haberleirken 8-bitlik veri yolu kullanlr. Microchip firmas mikrodenetleyicilerini ailelere ayrrken kelime uzunluu kriterini kullanmaktadr. PIC aileleri de kendi aralarnda kullanlan bellek yaps, alma frekans, giri/k u says ve zel amal donanm gibi zellikleri ile birbirlerinden ayrlrlar. Bu teknolojik farkllklardan ncelikli olarak bilinmesi gereken bellek yapsdr.

B) PIClerin Dier Mikrodenetleyicilere Gre stn Klan zellikleri


Kod Verimlilii : PIC, Harvard mimarisi temelli 8 bitlik bir mikrodenetleyicidir. Bu, program ve veri iin ayr ayr BUS 'larn bulunduu anlamna gelir. Bylelikle ileyi miktar veriye ve program belleine ezamanl eriim sayesinde arttrlm olur. Geleneksel mikrodenetleyicilerde veri ve program tayan bir tane BUS bulunur. Bu, PIC 'le karlatrldn da ilem hzn en az iki kat yava olmas demektir. Gvenilirlik : Tm komutlar 12 veya 14 bitlik bir program bellek szcne sar. Yazlmn, programn VER ksmna atlamaya ve VER 'yi komut gibi altrmasna gerek yoktur. Bu 8 bitlik BUS kullanan ve Harvard mimarisi temelli olmayan mikrodenetleyicilerde gereklemektedir. Komut Seti : 16C5x ailesi yazlm oluturmak iin 33 komuta sahip iken, l6Cxx paralar iinse bu say 35 dir. PIC tarafndan kullanlan komutlarn hepsi kayt (register) temellidir ve 16C5x ailesinde 12 bit, 16Cxx ailesindeyse 14 bit uzunluundadr. CALL, GOTO ve bit test eden BTFSS, INCFSZ gibi komutlar dnda her bir komut, tek bir evrimde alr. Hz : PIC, osilatr ve yerleik saat yolu (clock bus) arasna bal yerleik bir) 4l blnmeye sahiptir. Bu, zellikle 4 MHz lik kristal kullanldnda komut srelerinin hesaplanmasnda kolaylk salar. Her bir komut dngs 1 s dir. PIC olduka hzl bir mikroilemcidir. rnein 5 milyon komutluk bir programn, 20 MHz lik bir kristalle rneklenmesi yalnz 1 sn srer. Bu sre Intel 386SX 33MHz 'in hznn neredeyse 2 katdr. Statik ilem : PIC tamamyla statik bir mikroilemcidir. Baka deyile saati durdurduunuzda, tm kayt ierii korunur. Pratikte bunu tam olarak gerekletirmek mmkn deildir. PIC uyuma (standby) moduna alndnda, saat durur ve PIC i uyutma ileminden nce hangi durumda olduunu kullancya hatrlatmak iin eitli bayraklar kurulur. PIC uyuma modunda yalnzca 1 A den kk bir deere sahip bekleme (standby) akm eker. Src Kapasitesi : PIC yksek bir src kt kapasitesine sahiptir.

60

Seenekler : PIC ailesinde her tr ihtiyac karlayacak eitli hz, scaklk, klf, I/0

hatlar, zamanlama (timer) fonksiyonlar, seri iletiim portlar, A/D ve bellek kapasite seenekleri bulunur. Gvenlik : PIC endstride en stnler arasnda yer alan bir kod koruma zelliine sahiptir. Koruma bitinin programlanmasndan itibaren, program belleinin ierii, program kodunun yeniden yaplandrlmasna olanak verecek ekilde okunamaz. Gelitirme: PIC, gelitirme amacyla yeniden programlanabilen (EPROM, EEPROM) ve seri retim amacyla OTP (one time programmable - bir kere programlanabilir) iin pencereli yapda bu1unabilir. Gelitirme aralarnn temini mmkndr ve fiyatlar bir ev kullancs iin bile satn alnabilir dzeydedir.

C) PIC Donanm zellikleri


PIC eitleri : Microchip rettii mikrodenetleyicileri 4 farkl aileye ayrarak isimlendirmitir. PIC ailelerine isim verilirken szck uzunluu gz nne alnmtr. Bir CPU dahili veri yolu uzunluuna szck uzunluu denir. Microchip PIC 'leri 12/14/16 bitlik szck uzunluklarnda retilmektedir ve buna gre aadaki aile isimlerini verilmektedir: PIC16C5XX ailesi 12-bit szck uzunluu, PIC16CXXX ailesi 14-bit szck uzunluu, PIC17CXXX ailesi 16-bit szck uzunluu, PIC12CXXX ailesi 12-bit/14-bit szck uzunluuna sahiptir. Tablo 6.1. PIC 12,16,17 ve 18XXX serilerinin genel zellikleri Seri Program OTP/FLASH EEPROM RAM Ad Bellei Bellei Bellei Bellei 3568 204812 bit 16 128 12XXX 16XXX 17XXX 18XXX 14336 32768 32768 819214 bit 1638416 1638416 256 368 902 1536 ADC Kanal 4(8bit) 10(12bit) 16(10bit) 8(10bit) G/ Seri PWM Hz Port Port Kanal MHz 6 10 52 66 34 var var var 2 3 2 24 33 40

Bir CPU, yonga dndaki harici nitelerle veri alveriini ka bitle yapyorsa buna veri yolu (DATA BUS) bit says denir. PIC 'ler farkl szck uzunluklarnda retilmelerine ramen harici veri yolu tm PIC ailesinde 8-bittir. Yani bir PIC, I/O portu aracl ile evresel nitelerle veri alverii yaparken 8-bitlik veri yolu kullanr. PIC programlayclar, program kodlarn yazarken bir komutun ka bitlik bir szck uzunluundan olutuuyla pek fazla ilgilenmezler. Seilen bir yongay programlarken uyulmas gereken kurallar ve o yongayla ilgili zelliklerin bilinmesi yeterlidir. Bu zellikler; PIC 'in bellek

61

miktar, I/O portu says, A/D dntrcye sahip olup olmad, kesme fonksiyonlarnn bulunup bulunmad, bellek tipinin ne olduu (Flash, EPROM, EEPROM vb.) gibi bilgilerdir. PIC 'lerin D Yaplar

PIC Yaps

62

Zamanlayc TM R0 ve WDT

Veri Bellei EEPROM Veri Bellei GPR-RAM

CPU

Program Bellei FLASH

PORT A

PORT B

ekil 6.1. PIC 16F8X mikrodenetleyicilerinin genel blok diyagram

PROG EPROM

PC

STACK

STATUS ALU

RTCC

WDT GENEL KAYITI DOSYASI A/D EEPROM PORT C

PORT A

PORT B

OSC

Konfigrasyon Sigortalar

ekil 6.2. Temel PIC Blok Diyagram

63

13 Flash/ROM Program Bellei PIC16F83/CR83 512 x 14 PIC16F84/CR84 1K x 14 Program veri yolu

Program Sayac

Veri yolu

EEPROM Veri Bellei EEPROM Veri Bellei 64 x 8

8 Dzeyli Yn (13-bit)

14

RAM Dosya Kaydedicileri PIC16F83/CR83 36 x 8 PIC16F84/CR84 68 x 6 7 RAM adres

EEDAT A

EEADR

Komut Kay dedicisi


5 Dorudan Adresleme

Adres MUX 7
Dolayl Adres

TMR0 FSR Kaydedicisi


RA4/T0CKI

Durum Kaydedicisi

MUX Power-up Timer Komut Kod zcs & kontrol Osilatr Start-up Tim er Power-on Reset Watchdog Timer
W kaydedicisi

G/ portlar

ALU

RA3:RA0 RB7:RB1 RB0:INT

Zamanlama retici

OSC2/CLKOUT OSC1/CLKIN

MCLR

VDD,V SS

ekil 6.3. PIC mikrodenetleyicilerinin genel blok diyagram D) PIClerin Temel Elemanlar Aritmetik Mantk Birimi (Arithmetic Logic Unit - ALU) : CPU 'nun kalbi olup, adndan da anlald gibi komut szcne (Instruction Word) gre aritmetik ve mantk ilemlerini yapar. Komut szcnn balca drt biimi olup, komut szcn bu biimlere gre ayrtrp, uygularken W kaytsn ve gerekiyorsa dier kaytlar da kullanr. ALU ierisinde toplama (ADD), kartma (SUB), bir kaytsnn sa ve sol bitlerinin yerini deitirme (SWAP), kaydrma (SHIFT) ve dndrme (ROTATE), ... gibi ilemleri yapan birimler vardr. Ayrca AND, OR, XOR mantksal ilemlerini gerekletiren birimler de bulunmaktadr. ALU, veri iletiim hatt araclyla verileri alr, komuta gre iler ve ilgili birimleri uyararak sonucu, W ya veya komutta belirtilen hedef kaytsna ykler. Bu durum yine, mikrodenetleyiciye gre deiir. nk, baz mikrodenetleyiciler sonucu yalnz W, yani akmlatre yazarken, bazlar hem akmlatre hem de kaytya yazabilir. rnek olarak, PIC16F87X ailesinin, toplama, karma ve benzeri ilemlerin sonucunu istenirse W da veya istenirse kaytda tutma esneklii vardr. PIC, dier mikroilemcilerden, aritmetik ve mantk ilemleri iin bir tek ana kaytya sahip oluuyla farkldr.
64

Akmlatr/Working Register : Genel amal bir kaytdr. W kayts 8 bit geniliindedir ve CPU daki herhangi bir veriyi transfer etmek zere kullanlr. ACC / A / W olarak ksaltlr. Tm aritmetik ve mantk ilemlerinde, ilenenlerin ve baz mikroilemcilerde de hem ilenen hem de ilem sonularnn tutulduu bir kaytdr. Verilerle ilgili kaydrma, dndrme, eksiltme, arttrma, karlatrma ve tersini alma ilemlerinin gerekletirilmesi ile bu ilemlerin sonularnn tutulmasnda kullanlr. Akmlatrn bu zellikleri, mikroilemciden mikroilemciye deiebilir. zellikle mikrodenetleyicilerde akmlatre (W kaytsna) baz ek iler yklenebilir. Microchip firmas, kendi rnlerinde akmlatr yerine working register (W) ismini kullanmaktadr. Veri Kayt Dosyalar (Data Register Files) : CPU alannda bulunur ve iki kategoriye ayrlr: I/O ve Kontrol eklinde alanlar ve tamamen RAM gibi alanlar. BUS : Harvard Mimarisi temeli mikrodenetleyicilerde, veri ak miktarn hzlandrmak ve yazlm gvenliini arttrmak amacyla ayr BUS 'lar kullanlr. Bu mimari, veri ve p rogram belleine ezamanl eriimi olanakl klar. Program Sayac (Program Counter, PC) : Mikroilemci (CPU) tarafndan yrtlecek komutun, program belleindeki adresini tutar. PC kaytsnn iinde, bulunulan yeri gsteren adres olduu iin, kendisi bir gstergedir (Pointer). Program sayacnda, ilk komut altrldktan sonra, ikinci komutun bulunduu adres oluur. Bylece program sayac, srekli bir sonra altrlacak komutun adresini gsterir. Stack (Yn) : PC, altprogram tamamlandnda, yani altprogramn btn komutlar altrlp bitince, altprogramn balatlmasndan hemen nceki adrese geri dner. Bunun iin, altprogramn altrlmasndan bir nceki adres, yn (stack) ismi verilen bir dizinin en stne konur (push). Bu ilemden sonra, PC altyordamn iindeki ilk komutun adresini alr ve altyordamn her komutunda, birer birer artmay srdrr. Altyordamdan dn komutu Return 'e geldiinde, ynn en stne konan adres PC 'ye geri yklenir. Bylece programda, altyordamn arld n oktaya geri dnlm olur. Bir altprogram iinden, baka bir altprogram ardmzda da yine ayn ilemler yaplarak, PC ve yn araclyla arld altyordama geri dnebilir. Geri dn salayan mekanizma, yine yndr. Yn, FILO (First In Last Out - lk Giren Son kar) mantna gre ileyen bir kayt alandr. Mikrodenetleyiciye gre deien ynn boyutu, o mikrodenetleyicinin i ie yrtebilecei, arlabilecek altprogramlarn saysn belirler. Yn veya ynn herhangi bir elemanna, programc tarafndan hibir yolla eriilemez, ierii okunamaz veya zerine yazlamaz. PIC16F8X ve 16F87X ailelerinde, yn boyutu sekizdir. Bunlarda, i ie en fazla sekiz altprogram kullanlabilir. Ynda kesme (interrupt) ilemleri de, altprogramlar gibi bir yer tutar. Programda

65

yn tamas (stack overflow) hatasna dmemek iin, i ie arlan altprogram ve kesme altprogramlarnn saysn, programcnn denetlemesi gerekir. Ynn her eleman 13 bit uzunluundadr. PIC16F8X, 16F87X ailelerinde kaytlara yada veri, program belleine, dorudan veya dolayl eriilebilir. Status (Processor Status Register - lemci Durum Yazmac): Ksa ad PS veya STATUS olan bu yazma, sekiz bitliktir. inde eitli durumlar bildiren uyar bitleri bulunduu iin, bayrak (flag) kaytsda denir. Mikroilemcinin o andaki durumunu bildirir. Bu kaytya baklarak, yaplan ilemin sonucu hakknda bilgi alnabilir. Aritmetik ilemlerde; elde olup olmad, sonucun sfr olup olmad, status kaytsnn ilgili bitlerine baklarak renilir. Status kaytsnda, dolayl adresleme ve dorudan adresleme bilgileri de bulunur. Program, status kaytsndan renilen bilgilere gre ynlendirilir. reticiler kendi mikrodenetleyicilerindeki status kaytlarnda, baka zel durumlar iinde bitler ayrmlardr. PIC16F87X serisi iin bu yazma ilerde ayrntl olarak tanmlanacaktr. PIC 'lerde bunlarn dnda, dolayl eriim iin INDF ve FSR; kesmeler iin INTCON; zamanlama iin TMRO, TMR1-2 ve girdi ile ktlar iin TRISA, TRISB,...,TRISE ile PORTA, PORTB,,PORTE gibi pek ok kayt vardr. Bunlar, ilerdeki blmlerde daha ayrntl olarak greceiz. OSC (Zamanlama ve Denetim Blm): Mikrodenetleyicinin kendisine verilen komutlar ileyebilmesi iin, saat (clock) denilen, kare dalga iareti gerekir. Bu iareti, mikrodenetleyici ierisinde bulunan bir osilatr devresine, dardan ba1anan bir kristal retir. retilen iaret, komutlarn ilenmesinde zamanlamay salar. Hassas zamanlamann gerekli olmad uygulamalarda, RC osilatr kullanmak maliyeti azaltr. RC osilatrn rezonans frekans besleme voltajna, alma scaklna, R direncinin ve C kondansatrnn deerlerine baldr. RC osilatr tasarmnda diren deeri 5-100 K aralnda olmaldr. 500 K gibi yksek R deerleri osilatr grlt, nem ve szntya duyarl duruma getirir. R deerleri 2.5 K altnda ise kararszla hatta osilasyon kaybna yol aabilmektedir. Osilatr frekans mikrodenetleyicide 4e blnr ve dier devrelerle senkronizasyonu salamak iin kullanlr.

C1

OSC1 OSC2

PIC

C2

ekil 6.4. OSCnin Balanmas

66

Program Bellei : nce bellek kullanmnda ska bavuracamz baz terimleri tanmlayalm. Bu terimleri, program bellei ve veri belleinin anlatlaca kesimlerde kullanacaz. Bunlar: Bellek bykl (Memoy size): Bellekte tutulabilen veri miktardr Eriim sresi/Okuma evrim sresi (Acces time): Bellekten okuma ileminin balangcndan, gerekli bilginin alnna kadar geen sredir. Eriim evrim sresi (Acces cycle time) : Bellekten ard arda iki okuma arasndaki sredir. Yazma evrim sresi (Write cycle time) : Bellee ard arda iki yazma arasndaki sredir.

Program bellei mikrobilgisayar uygulamas iin verilen komutlardan oluan programn, yerletii alandr. Programn bulunduu ilgili adresler program sayacnda tutulur. P16F87X ailesinde bellek bloku bulunur. Bunlar program bellei, veri bellei (RAM) ve EEPROM veri belleidir. Program ve veri belleinin eriim yollar ayrdr.Program bellei de kendi iinde sayfalara ayrlr. Program bellei 16F877 de 8 szck uzunluudur. 16F87X ailesinde her bir sayfa iki szck uzunluu byklndedir. Bellek sayfa says arttnda, adresleme iin yalnz PC kaytsnn kullanlmas yetmez. Buna ek olarak, bellek sayfalarna eriim saysnn da tutulmas gerekir. 16F87X ailesinde, PCLATH kayts, doru sayfadaki adrese erimek iin PC ile birlikte kullanlr. lerde PC ve PCLATH birlikte daha ayrntl incelenecektir. Veri Bellei : Programn almas iin, veri belleindeki kaytlar kullanlr. Dosya kaytlarnn uzunluu 8 bittir. Yalnz, PCLATH kayts 5 bit uzunluundadr. Dosya kaytlar zel veri bellek alanndadr. Yani bunlarn adresleri nceden belirlenmitir. Bunlarn dndaki veri alanlar program iinde kullanlmak istenen geici deikenler iin atanabilir. EEPROM: 16F877 nin veri alanlar drde ayrlr. Bunlarn her birine bank denir ve bank0 dan balayarak bank3 'e kadar ulaan veri bellei vardr. Her EEPROM veri bellei blou, 000 H dan 07FH adresine kadardr (128 Byte). Aadaki tabloda 16F877 nin veri bellei haritas gsterilmitir. Kaytlar ilerideki blmlerde daha ayrntl anlatlacaktr. Giri/k Birimi : Giri birimi mikrodenetleyici dndaki devreler ve sistemlerden gelen iaretleri, mikrodenetleyiciye aktaran tmleik bir devre (Integrated Circult - IC) dir. Benzer ekilde, k birimi de yongann k iaretlerini, mikrodenetleyici dndaki devrelere aktaran tmleik bir devredir. Uygulamada iki IC, ayn yonga iinde retilir. Bu nedenle, iki IC nin de denetlenmesi amacyla, bir de kontrol devresi eklenmitir. Mikrodenetleyicinin d dnyayla iletiimi, giri/k (I/O) portlar ile kurulur. Portlarn iletiim zellikleri, seilen PIC 'e gre farkllklar gsterir. P1C16F877 'de Giri/k portlar A dan E ye kadar harflerle belirtilir. lerdeki blm giri k birimi ayrntlar belirtilip; hangi pinlerle, ne tr giri ve k zellikleri saland tablolar yardmyla gsterilecektir. Bu bacaklar yoluyla, uygulama iin gelitirilen elektronik kartlara bal olarak, potansiyometre, rle, sensr, klavye, yazc, LCD, 7SD, ... gibi bir

67

birimi balayarak, PIC 'e girdi verilebilir veya PIC 'ten kt alnabilir. Bu elemanlar kullanlarak haberleirken PIC 'in A/D evirici, Paralel Slave Port, USART, MSSP, Capture/Compare/PWM, ... gibi modlleri kullanlabilir. RTCC (Real Time Clock Counter Gerek zamanl saya) : RTCC iin gerekli olan saat darbeleri bir dahili veya harici iaretle salanr. Harici iaretler, yanl saymlarn mmkn olduunca nlenmesi iin tamponlanr. Hz kontrol, oran gstergeleri veya frekans sayalar gibi uygulamalarda RTCC bir harici saat besleyiciyle kullanlr. Dahili saat besleyici, multitasking (ok grevlilik) uygulamalarn (veri iletiimi gibi) yrten bir yazlm olan RTOS (Real Time Operating System - Gerek Zamanl letim Sistemi) nin bir blm olarak kullanlabilir. RTCC, girdi iaretini yazlmn daha rahat tayabilecei bir orana getirilmek zere ortalamaya eken veya yavalatan bir pre-scalarla ayarlanabilir. WDT (Watch-dog Timer - Zamanlayc) : WDT 'nin kullanm amac, PIC 'i veya herhangi bir ilemciyi bir dngde kilitlenmekten uzak tutmaktr. Byle bir durum yazlmda bir hata veya harici bir elektriksel kvlcmlar nedeniyle ortaya kabilir. WDT, PIC 'e bir eit kalp at salar ve eer WDT yazmacn dzenli aralklarla temizlenmezse bu kalp atlar PIC 'i resete zorlar. Bu mkemmel bir zelliktir ve Gvenlik Sistemleri gibi ana kontrol panelinde bir kilitlenmenin asla sz konusu olmamas gereken uygulamalar iin birebirdir. G korumas gereken ve yalnzca periyodik olarak almas gereken rnlerde WDT 'den faydalanrlar.

6.1. Blm Kaynaklar


1. O. Altnbaak, 2001. Mikrodenetleyiciler ve PIC Programlama, Atla Yaynclk, stanbul. 2. N. Gardner, 1998. PIC Programlama El Kitab, Bileim Yaynclk, stanbul. 3. O. Urhan, M.Kemal Gll, 2004. Her Ynyle PIC16F628, Birsen Yaynevi, stanbul. 4. N. Topalolu, S. Grgnolu,2003. Mikroilemciler ve Mikrodenetleyiciler, Sekin Yaynclk, Ankara. 5. Y. Bodur, 2001. Adm Adm PICmicro Programlama,nfogate. 6. PIC16F87x Data Sheet, Microchip Technology Inc., 2001.

68

6.2. PIC16F877 MKRODENETLEYCS A) Genel zellikleri


PIC 16F87X serisi PIC 16CXX ailesinin zelliklerini tar. PIC- I6CXX de Harvard mimarisi kullanlmtr: veri yolu 8 bit geniliinde, program belleine program yolu yada adres yolu (program bus / address bus) denilen 13 bit geniliindeki dier bir yolla eriilir. PIC 16C87X de komut kodlar (opcode), 14 bittir. 14 bitlik program belleinin her bir adresi, bir komut koduna (Instruction code/word) karlk gelir.

Program adresi
13 bit

Kayt adresi
8 bit

zel Amal kaydediciler +

Program Hafzas Komut


14 bit

CPU Veri
8 bit

Veri Hafzas (RAM ...)

ekil 6.5: PIC16F877 nin Harvard Mimarisi Her komuta bir evrim sresinde (saykl, cycle) eriilir ve komut yazmacna yklenir. Dallanma komutlar dndaki btn komutlar, ayn evrim sresinde altrlrlar. Bu srada program sayac, PC bir artar. Dallanma yada sapma komutlar ise, iki ardk periyotta altrlr ve program sayac PC, iki arttrlr. RISC mimarisine gre tasarlanmlardr. D mimarisi : 40 pin

69

ekil 6.6 : PIC16F87X D Mimarisi 35 tek szck uzunluunda (bir szck uzunluu =14-bit) komuta sahiptir. Clock hz : 20 MHz olup, bir komut saykl tcp = 1/ (20/4) = 0.2 sn = 200 nsn

B) Mimarisi
Aadaki ekilde PIC16F877 yongasnn temel donanm yaps grlmektedir.

70

ekil 6.7: PIC16F87X Mimarisinin Blok diyagram

Blok emadan; 1. Aritmetik ve mantk biriminin (ALUnun) fonksiyonel birimlerle, W yazmac bata olmak zere ilikisini ve dier birimlerle bilgi al-veriini; 16F87X serisi mikrodenetleyicilerde, komutun sonuna konan 1 veya 0 saysyla (d), sonucun W de ya da baka bir yazmata tutulaca mikroilemciye bildirilir. Bunun hangi komutlar iin ve nasl yapld komut setinde anlatlmtr.

71

8-bit literal (Komut Szcnden)

Yazma dosyas

W Yazmac
8

8-bit yazma deeri (Komutun dorudan 8 veya dolayl adresinden)

zel Fonksiyon Yazmalar (SFR) ve Genel Amal RAM (GPR)

ALU
8 d bit komutlar

d='0' or
Literal Komutlar

d='1'

ekil 6.8. ALUnun almas

2. Aritmetik ve mantk biriminin (ALU) almas sonucunda, STATUS durum yazmac ile ilikisini altrlan komuta bal olarak ALU, Carry (C), Digit Carry (DC) ve Zero (Z) bitlerini deitirir. 3. Program sayacnn; yn, program, veri bellei ile almasn, 4. Eriim trlerinde kullanlan yazmalar, 5. Osilatr yani zamanlayclarla, komut yrtme ilikileri, 6. Adres yolunun (Program bus) komutlar iin nasl alt ve veri yollarnn (data bus) veri bellei ve giri-k birimleri ile nasl ilem grd, 7. evresel giri-k birimleri, portlar ve pin tanmlar gibi saylabilecek pek ok nemli konu izlenebilmektedir.

C) 16F87x Mikrodenetleyicisi Mimarisinin Temel zellikleri


Veri yolu (databus) 8 bittir. 32 Adet SFR (Special Function Register) olarak adlandrlan zel ilem yazmac vardr ve bunlar statik RAM zerindedir. 8 Kx14 szce (words) kadar artan FLASH program hafzasna sahiptir (1 milyon kez programlanabilir).

72

368x8 Bytea kadar artan VER hafzasna (RAM) sahiptir. 256x8 Bytea kadar artan EEPROM VER hafzas vardr. 14 Kaynaktan kesme yapabilir. Donanmsal yn derinlii 8 dir. Dorudan, dolayl ve bal (relatif) adresleme yapabilir. Enerji verildiinde sistemi resetleme zelliine (Power-on Reset, POR) sahiptir. Enerji verilmesi ile zamanlayc (Power-up Timer, PWRT) ve Osilatr (Oscilator Start-up Timer, OST) balatma Gvenilir ilemler iin yonga iindeki RC osilatr ile zamanlama (Watch-dog Timer-zel tip zamanlayc, WDT) Program kodunun gvenliini salayabilme Enerji tasarrufu salayan uyku (SLEEP) modu Seimli osilatr zellikleri Dk gle, yksek hzla eriilebilen, CMOS/FLASH/EEPROM teknolojisi Tamamen statik tasarm 2 pin vastas ile devre iin seri programlanabilme (ICSP) zellii Yalnz 5 V girile, devre ii seri programlanabilme yetenei ki pin vastas ile devre ii hata ayklama (In-Circuit Debugger) zellii lemcisinin program belleine, okuma/yazma zellii ile eriimi 2 - 5 Volt arasnda deien geni iletim aral 25 mA 'lik (Sink/Source) giri/k akm Geni scaklk aralnda alabilme zellii Dk gle alabilme deerleri : < 0.6 mA, 3V, 4 Mhz. < 20 A, 3V, 32 kHz < 1 A, standby akm

D) evresel zellikler
Timer0 (TMR0) : 8 bit n-lekleme ile 8 bitlik zamanlayc/sayc Timer1 (TMR1) : n-leklemeli 16 bitlik zamanlayc/sayc; harici bir clock ile uyuma modunda iken arttrlabilir. Timer2 (TMR2) : 8 bitlik peryod kayt, n-blme ve son blme ile 8 bitlik zamanlayc ki Capture, Compare ve PWM modl (CCP1,2) Capture 16 bitlik, maksimum hz 12.5 ns Compare 16 bitlik, maksimum hz 200ns PWM maksimum hz 10-bit
73

10 bit ok kanall (8) A/D dntrc SPI (Master mod) ve I2C (Master Slave) ile birlikte Senkron seri port (SSP) 9 bit adres belirlemeli USART/SCI (niversal senkon-asenkron alc/verici) 8 bit genilikte ve d RD, WR, CS kontrolleri ile Paralel Slave Port (PSP) BOR Reset (Brown-out Reset) zellii

E) PIC Hafza Organizasyonu


PIC16F877 mikrodenetleyicisinin hafza yaps iki ayr bellek bloundan oluur: Program bellei RAM veri bellei (Kayt Dosya Bellei-Regiter File Memory)

Program Bellei altrlacak komut kodlarn tutmak iin kullanlr. Her bir satr 14 bit uzunluundadr. Her komut 14 bitlik bir szck uzunluuna sahiptir. PC 13 bitlik adres uzunluuna sahip olduu iin 8Kxszck uzunluuna kadar adresleyebilir.

74

PC<12;8> Call, Return Retfie, Retlw

PCL
13 bit

Yn Seviyesi 1

Yn Seviyesi 8

Reset Vektr

0000h

2K 4K 6K 8K

Kes me Vektr Program Hafzas 0. Sayfa Program Hafzas 1. Sayfa Program Hafzas 2. Sayfa Program Hafzas 3. Sayfa

0004h 0005h

08FFh 0800h

0FFFh 1000h

17FFh 1800h

1FFFh

ekil 6.9: Adresleme ve Program bellei Burada: 1. 000H - 004H adresleri zel amalar (reset, kesme,, gibi) iin ayrlmtr. 2. Hafza blou drt sayfadan (0000H 07FFH, 0800H 0FFFH, 1000H 17FFH, 1800H 1FFFH) olumaktadr. Veri Bellei (RAM File Register) Veri bellei kendi iinde, bank ad verilen sayfalara blnmtr. Bunlarn her birinin banda, zel fonksiyonlu kayt (Special Function Register-SFR) alan ve daha sonra da genel amal kayt (General Purpose Registers-GPR) alan bulunur. zel ilem yazmalar, mikrodenetleyicinin iletimini kontrol eder ve bir ilemin sonucunu renebileceimiz, zel durum bitlerini bulundurur : rnein STATUS yazmacnn, 5 ve 6. bitleri olan RP0, RP1 adl bitler; bank seimi bitleri olarak, bu bellek blmlerini semede kullanlr. Her bank 07FH adresine dek geniletilmitir (128 Byte).
75

ekil 6.10.: Bank seimi Banklarn bandaki adresler, zel ilem yazmalarna ayrlmtr. zel ilem yazmalarnn altndaki adresler ise genel amal yazmalara ayrlmtr. Bunlar statik RAM zerindedir. Baz zel ilem yazmalar bir banktan, daha ok bankta yer alr. Bu yntem, eriimi hzlandrma amal olup, ok kullanlan yazmalarn grnts ayna gibi dier banklara yanstlmtr. Bylece bu yazmalara erimek iin sk sk bank deitirilmesi gerei ortadan kaldrlm ve programlamaya kolaylk salanmtr. Veri bellei olarak kullanlmak zere, klfn ierisinde bir de EEPROM bellek alan vardr. Bu bellek, dier veri bellei gibi dorudan adreslenemez. EEPROM veri belleine dolayl eriilir. Toplam 92 byte olan bu bellee nasl eriebileceimizden ilerde daha ayrntl bahsedeceiz. Aadaki ekilde mikrodenetleyicilerde bulunan nemli bir ksm zel ilem kaytlar gsterilmitir : Kayt Adresi 00H 01H 02H 03H 04H 05H 06H 07H 08H 09H 0AH 0BH 0CH Kayt Adresi 80H 81H 82H 83H 84H 85H 86H 87H 88H 89H 8AH 8BH 8CH

BANK0 Kayt ad INDF TMR0 PCL STATUS FSR PORTA PORTB PORTC EEDATA EEADR PCLATH INTCON

BANK1 Kayt ad INDF OPTION PCL STATUS FSR TRISA TRISB TRISC EECON1 EECON2 PCLATH INTCON

(GPR) 7FH FFH

(GPR)

ekil 6.11. Bellek Haritas

76

F) Kaytlarn levleri
INDF (Indirect File Register): Dolayl adresleme yazmacdr. Birbiri ard sra yaplacak eriim ilemlerinde, GPR-Genel amal yazmalarla (statik RAM alannn) kullanm hzlandrlr ve yazlacak program kltr. TMR0 (Timer): Mikrodenetleyici iinde bulunan zamanlayc ve saya olarak altrlan blm denetleyen yazmatr. PCL (Program Counter Low Byte): Bir sonra altrlacak komutun program belleindeki adresini tutar. STATUS: Mikrodenetleyici iindeki aritmetik ilem birimi (ALU), ilem sonularna ait baz bilgileri durum yazmacnda tutar. Bank seme bitleri de bu yazmatadr. Programa isteine gre bu birimleri ynlendirir. FSR (File Select Register): Dolayl adreslemede INDF ile birlikte kullanlr. Mikrodenetleyicinin iindeki RAM adresinde yaplacak ilemlerde, RAM adresini tutar. Bu durumda INDF ye yazlacak her veri, aslnda adresi FSR de bulunan RAM a yazlmtr. Ayn ekilde INDF den okunan veri de adresi FSR de bulunan RAM dan okunmutur. PORTA - PORTE: Portlar, mikrodenetleyicinin d dnyadan bilgi almas ve kendi dndaki devrelere veri aktarabilmesi amacyla kullanlr. P1C16F877 nin be portu vardr. A Portu 6 bit geniliindedir. B, C, D portlar 8 bit, E portu ise 3 bit geniliindedir. TRISA - TRISE: Portlarn ynn (yongaya veri girii mi, yoksa yongadan veri k m yaplacak?) belirleyen yazmalardr. Eer portlarn herhangi bir pininden mikrodenetleyici dna veri gnderilecekse, nce ilgili portun yn yazmacnn ayn numaral biti, 0 yaplr. Eer o pinden mikrodenetleyiciye veri girilecekse, yine nceden, o portun yn yazmacnn ayn numaral biti 1 yaplr. zetle ilgili TRIS yazmac pini k iin 0, giri iin l yaplr. EEDATA ve EEADR: Mikrodenetleyici iindeki EEPROM (ksaca E2 veri belleine ulamakta kullanlrlar. Sonuta EEDATA yazmacndaki veri EEADR yazmacnda adres numaras bulunan EEPROM belleine yazlr. Ya da EEADR yazmacnda adres numaras bulunan veri, EEPROM veri belleinden okunarak EEDATA yazmacna getirilir. PCLATH: Program sayacnn yksek ncelikli byte yani, st 5 biti iin kullanlr. INTCON: Kesme (interrupt) ilemlerinde kullanlr. GPR (General Purpose Register): Genel amal yazmalarn adresleri ilgili emalarda gsterilmitir. Programc buradaki adresleri istedii gibi, kendi deikenleri iin kullanabilir. Bu adresleri isterse programnn iinde, aadaki rnekte grld gibi adlandrabilir. ISI_1 EQU 20H : GPR alanndaki 20H adresine ISI_1 ad verildi. ISI_2 EQU 21H : GPR alanndaki 21H adresine ISI_2 ad verildi.

77

ekil 6.12. PIC16F877 Kayt dosya haritasnn tam listesi SFR adyla tanmlanan zel ilem yazmalarn tm, adresleri, adlar, srasyla btn bitlerine verilen isimleriyle ve power-on-reset ile brown-on-reset durumunda alaca deerleriyle birlikte aadaki tablolarda verilmitir. Bu yazmalarn bir ksm ilerdeki blmlerde anlatlacaktr.

78

Reset Ve Kesme Durumu Reset (balama) vektr: Enerji uygulandnda (Power-on) mikroilemcinin iinde veya dnda olan bir elektronik devre ile yeniden balatlmas olay reset ilemidir. Bu devre power-on reset ad ile klf ierisine yerletirilmitir. almaya balatlan mikroilemci, kendi program sayacn zel bir say ile ykler. te bu say, o mikroilemci iin, reset vektr adresidir. rnek olar ak, 16F877 reset vektr adresi 0000H dr. Kesme (Interrupt) vektr: Mikroilemci program belleindeki program altrrken, sras belirsiz, acilen yaplmas gerekli yordamlar da altrabilir. Sras ve ne zaman ortaya kaca bilinemeyen bu ileri yapmak iin mikroilemci, bir yolla dardan veya kendi iinden uyarlmaldr. Gelen uyardan mikroilemcinin baz birimleri etkilenir. Bu birimlerden biri olan program sayacna, zel bir say yklenir. Bu say, o mikroilemcinin kesme (interrupt) vektr adresidir. rnek olarak, 16F877 iin kesme vektrnn adresi 0004H dr. Kesme srasndaki uyardan etkilenen dier birim, yndr. Yn, program iinde bir altpogram kullanldnda, bu alt programdan, asl program blokuna dnlecek adresi tutar. Kesme de bir altprogram gibi ele alnr. Kesmeye sapldnda (kesmenin bir arma komutu yoktur, herhangi bir anda devreye girebilir), kesme blmnden sonra dnlecek adres PC den yna yerletirilir. Daha sonra kesme yordamnn komutlar ilenir. Kesmeden k komutu olan RETFIE, altprogramdan k komutu RETURN gibi alr. RETFIE komutu ile, programda dnlecek yerin adresi yndan alnp, PC ye geri yklenir. Bylece kesmeden sonra, program blou iinde ilemeyi brakt yere dner ve kalan komutlar ilemeye devam eder. ie kullanlan altprogramlarn en ok sekiz olabileceini sylemitik. Bunlara kesme blmleri de dahildir. Kesmeleri dahil etmezseniz, yn tamasna neden olursunuz. Yn tamas olutuunda bizi uyaracak, herhangi bir uyar-flag yazmac bulunmamaktadr.

G) Durum (Status) Kayts


STATUS kayts ALU biriminin, aritmetik ilem sonucundaki durumunu, CPU test durumlarn ve veri belleine ait kme (bank) seme bitlerini tutar. Herhangi bir kayt gibi, STATUS da bir komuta hedef olabilir. Yani, ierii okunabilir, deitirilebilir. Ancak, TO ve PD isimli bitler sadece okunabilir, deitirilemez. Eer, bu kaytnn ierii CLRF STATIJS komutuyla, silinmek istenirse; sadece st bit 0 olur. Bu komut sonunda STATUS un ierii 000d d1dd deerini alr. Burada d:deimeyen anlamndadr. BCF, BSF, SWAPF, MOVWF komutlar ile TO ve PD bitleri hari, dier bitlerin ierii deitirilebilir. STATUS kaytsnn Kayt dosyasndaki adresleri: 03H, 83H, 103H, 183H

79

ekil 6.13: STATUS Kayts Bit 7 IRP: Kayt Bank Seme Biti (dolayl adreslemede kullanlr) 0 = Bank 0, 1 (00H - FFH) 1 = Bank 2, 3 (100H - 1FFH) Bit 6-5 RP1: RP0: Kayt Bank Seme Biti (dorudan adreslemede kullanlr). Her bir bank 128 byte dir. 00 = Bank 0 (00H - 7FH) 01 = Bank 1 (80h - FFH) 10 = Bank 2 (100H - 17FH) 11 = Bank 3 (180H - 1FFH) Bit 4 TO : Sre am (Time-out) biti 0 = WDT sre am gereklemi ise 0 olur. 1 = Power-up, CLRWDT veya SLEEP komutu ilemlerinden sonra, g verme durumuna geilmi ise 1 olur. Bit 3 PD : G kesme (Power-down) biti 0 = SLEEP komutu altrlnca 1 = CLRWDT komutu altrlnca veya g verme durumunda Bit 2 Z: Sfr biti 0 = Aritmetik veya lojik ilemin sonuu sfr deil ise 1 = Aritmetik veya lojik ilemin sonuu sfr ise Bit 1 DC: nemsiz Basaman tasma / bor ( carry / borrow ) biti (ADDWF, ADDLW,SUBLW,SUBWF komutlar iin) 0 = lem sonucunda dk 4-bitlik ksmdan tama (carry) eldesi yoksa 1 = lem sonucunda dk 4-bitlik ksmdan tama (carry) eldesi varsa Bit 0 C: nemli Basaman tasma / bor biti (ADDWF, ADDLW,SUBLW, SUBWF komutlar iin) 0 = lem sonucunda en nemli bitte tama yoksa 1 = lem sonucunda en nemli bit taarsa NOT: Bit 0 ve 1 de; dn alma (borrow) ilemleri iin ters kutup kullanlmtr. karma (SUB) ve dndrme (RLF, RRF) ilemlerinde bunun etkisi anlatlacaktr.

80

H) Seenek Kayts (OPTION_REG)


Option kayts, okunabilir ve yazlabilir bir kaytdr. Kapsamnda TMR0/WDT zamanlayclarnn konfigrasyon bitleri, d kesme denetim bitleri, TMR0 zamanlaycs kesme denetim bitleri ve PORTB iin ekme (pull-enable) direnlerinin kullanlmasn salayan bit bulunur. OPTION kaytsnn Kayt dosyasndaki adresleri: 81H, 181H

ekil 6.14: OPTION Kayts Bit 7 RBPU: PORTB, ekme (pull-up) ilemini mmkn klma biti 0 = PORTB ekme aktif ise 1 = PORTB ekme pasif ise Bit 6 INTEDG: Kesme kaynann tetikleme kenarnn seim biti 0 = RB0/INT uunun den kenarnda kesme 1 = RB0/INT uunun ykselen kenarnda kesme Bit 5 TOCS: TMR0 saat kaynan seme biti 0 = Dahili komut evrim clocku kullanlr (CLKOUT) 1 = RA4/TOCK1 pininden (uundan) gelen darbeler clock kayna olur Bit 4 TOSE: TMR0 kaynak kenar seme biti (Eer TOCS = 1 ise) 0 = RA4/TOCK1 pininden gelen her ykselen kenar iin bir artrlr 1 = RA4/TOCK1 pininden gelen her den kenar iin bir artrlr Bit 3 PSA: nblc / nlekleme yaplacak birimi seme biti 0 = nblc TMR0 modl iin ayrlr 1 = nblc WDT iin ayrlr Bit 2,1,0; PS2, PS1, PS0: nblc oran seme bitleri

PS2 PS1 PS0 Bit Deerleri 000 001 010 011 100 101 011 111

TMR0 Blme Oran 1:2 1:4 1:8 1:16 1:32 1:64 1:128 1:256

WDT Blme Oran 1:1 1:2 1:4 1:8 1:16 1:32 1:64 1:128

ekil 6.15. n blme seme bitleri

81

I) Kesme Kayts (INTCON)


INTCON kayts, okunabilir ve yazlabilir bir kaytdr. Kapsamnda TMR0/WDT kaytlarnn tama uyar bitleri, RB port deiim ve d kesme (RB0/INT pin interrupt) denetim bitleri, TMR0 kesme denetim bitleri bulunur. Kesme bitleri yle kullanlr; 1-) Bir kesme durumu oluturulacaksa, programc nce GIE (Global Interrupt Enable) (INTCON <7>) bitini set eder. 2-) Bu bit set edildikten sonra, programcnn kullanmak istedii kesme veya kesmeler aktifletirilir. Programc kullanmak istedii her kesme iin, ilgili kesmeyi aktifletirme bitinide kullanmaldr (Aktifletirme bitlerinin adlarnn sonunda (Bit 6-5, 4-3) Interupt Enable szcklerinin ba harfleri bulunur). 3-) Kesme oluturulduktan sonra ise kesmeyle ilgili uyar yada bayrak (Interrupt Flag) bitini programc kontrol etmelidir. 4-) Programc kesme ile uyar/bayrak bitlerini kontrol ederse (kesme yordamnda), bunlarn tama durumunda l, aksi halde 0 olduunu grecektir. 5-) Programcnn, program alt srece, kesmeyi srdrebilmesi iin, kulland kesmeyle ilgili uyar bitini (Interrupt Flag Bit) kendisinin sfrlamas gerekir. Kesme uyars yada bayrak biti denilen bu bitler programc tarafndan, temizlenmez (sfrlanmaz) ise bir daha kesme oluturulamaz. INTCON kaytsnn Kayt Dosyasndaki adresleri: 0BH, 8BH, 10BH, 18BH

ekil 6.16. INTCON Kayts Bit 7 GIE: Btn kesmeler geerli (Global Interrupt Enable) biti 0 = Kesmelere izin vermez. 1 = maskelenmemi kesmelere izin verir. Bit 6 PEIE: evresel kesme geerli biti 0 = evresel kesmelere izin vermez. 1 = Maskelenmemi evresel kesmelere izin verir. Bit 5 TOIE: TMR0 tama kesmesi geerli biti 0 = TMR0 kesmesine izin vermez. 1 = TMR0 kesmesine izin verir. Bit 4 INTE: RB0/INT (pininden gelen) d kesme geerli biti 0 = RB0/INT d kesmeye izin vermez. 1 = RB0/INT d kesmeye izin verir. Bit 3 RBIE: RB Port deiim kesmesi geerli biti
82

0 = RB port deiim kesmesine izin vermez. 1 = RB port deiim kesmesine izin verir. Bit 2 TOIF: TMR0 tama kesmesi bayrak biti 0 = TMR0 kayts tamad. 1 = TMR0 kayts tat (tatktan sonra program iinden temizlenir). Bit 1 INTF: RB0/INT d kesme bayrak biti 0 = RB0/INT d kesme yok. 1 = RB0/INT d kesme oldu (program iinden temizlenir). Bit 0 RBIF: RB Port deiim kesmesi bayrak biti 0 = RB4:RB7 pinlerinin hibiri durum deitirmedi. 1 = RB4:RB7 pinlerinin en az biri durum deitirdi (Programda kontrol edilir).

J) evresel Kesme Kayts (PIE1)


PIE1, evresel kesmelerle ilgili bitleri ieren bir kaytdr. Bir evresel kesmenin geerli olabilmesi iin, PEIE (INTCON <6>) biti de set edilmelidir. PIE1 kaytsnn Kayt Dosyasndaki adresi: 8CH

ekil 6.17. PIE1 Kayts Bit 7 PSPIE: Paralel Slave Port (PSP) okuma/yazma kesmesi geerlilik biti 0 = PSP R/W kesmesine izin verilmez. 1 = PSP R/W kesmesine izin verilir. Bit 6 ADIE: A/D evirici kesmesi geerlilik biti 0 = A/D evirici kesmesine izin verilmez. 1 = A/D evirici kesmesine izin verilir. Bit 5 RCIE: USART alma (receive) kesmesi geerlilik biti 0 = USART alma kesmesine izin verilmez. 1 = USART alma kesmesine izin verilir. Bit 4 TXIE: USART gnderme (transmit) kesmesi geerlilik biti 0 = USART gnderme kesmesine izin verilmez. 1 = USART gnderme kesmesine izin verilir. Bit 3 SSPIE: Senkron Seri Port (SSP) kesmesi geerlilik biti 0 = SSP kesmesine izin verilmez.
83

1 = SSP kesmesine izin verilir. Bit 2 CCP1IE: CCP1 kesmesi geerlilik biti 0 = CCP1 kesmesine izin verilmez. 1 = CCP1 kesmesine izin verilir. Bit 1 TMR2IE: TMR2 ile PR2 uyum kesmesi geerlilik biti 0 = TMR2 ile PR2 uyum kesmesine izin verilmez. 1 = TMR2 ile PR2 uyum kesmesine izin verilir. Bit 0 TMR1IE: TMR1 tama kesmesi geerlilik biti 0 = TMR1 tama kesmesine izin verilmez. 1 = TMR1 tama kesmesine izin verilir.

K) evresel Kesme Kayts (PIR1)


PIR1 kayts evresel kesmelerle ilgili uyar bitlerini tayan bir kaytdr. Programc kesmenin oluup olumadn ve kesmeyle ilgili oluan olaylar, bu uyar bitlerini denetleyerek anlar. Kesmenin tekrar oluturulabilmesi iin, ilgili uyar yada bayrak biti yazlmla temizlenmelidir. PIR1 kaytsnn Kayt Dosyasndaki adresi: 0CH

ekil 6.17. PIR1 Kayts Bit 7 PSPIF : Paralel Slave Port okuma/yazma kesme uyars geerlilik biti 0 = Okuma yada yazma yok. 1 = Okuma yada yazma ilemi gerekleti (yazlmda temizlenmeli). Bit 6 ADIF : A/D evirici kesmesi uyar biti 0 = A/D dnm tamamlanmad. 1 = A/D dnm tamamland. Bit 5 RCIF : USART alma kesmesi uyar biti 0 = USART alma tamponu bo. 1 = USART alma tamponu dolu. Bit 4 TXIF : USART gnderme kesmesi uyar biti 0 = USART gnderme tamponu bo. 1 = USART gnderme tamponu dolu. Bit 3 SSPIF : Senkron seri port (SSP) kesme uyar biti 0 = SSP kesme artlar salanmad. 1 = SSP kesme artlar saland (kesme hizmet programndan geri
84

dnmeden nce yazlmla temizlenmeli) Bit 2 CCP1IF : CCP1 kesmesi uyar biti : Capture ve Compare modunda kullanlr. PWM modunda kullanlmaz. 0 = TMR1 kayts capture/compare vuku buldu. 1 = TMR1 kayts capture/compare vuku bulmad. Bit 1 TMR2IF : TMR2 - PR2 uyum kesmesi uyar biti 0 = TMR2 - PR2 uyum yok. 1 = TMR2 - PR2 uyum var. (yazlmla temizlenmeli) Bit 0 TMR1IF : TMR1 tama kesmesi uyar biti 0 = TMR1 kayts tama olmad. 1 = TMR1 kaytsnda tama oldu.(yazlmla temizlenmeli)

L) PIE2 evresel Kesme Kayts


PIE2 kayts, CCP2 (Capture/Compare/PWM 2) evresel biriminin kesme bitlerini, SSP (Senkron Seri Port) veri yolu arpma (bus-collision) bitini ve EEPROM yazma kesmesi bitini tar. PIE2 kaytsnn Kayt Dosyasndaki adresi: 8DH

ekil 6.18. PIE2 Kayts Bit 7: Bu bit kullanlmaz, 0 okunur. Bit 6 Reserved: Bit sonra kullanlmak iin ayrlmtr. Temizlenmelidir (set 0). Bit 5: Bu bit kullanlmaz, 0 okunur. Bit 4 EEIE: EEPROM yazma ilem kesmesi geerlilik biti 0 = EEPROM yazma kesmesine izin verilmez. 1 = EEPROM yazma kesmesine izin verilir. Bit 3 BCLIE: arpma (Bus collision) kesmesi geerlilik biti 0 = BUS arpma kesmesine izin verilmez. 1 = BUS arpma kesmesine izin verilir. Bit 1-2: Bu bitler kullanlmaz, 0 okunur. Bit 0 CCP2IE: CCP2 kesme geerlilik biti 0 = CCP2 kesmesine izin verilmez. 1 = CCP2 kesmesine izin verilir.

85

M) PIR2 evresel Kesme Kayts


PIE2 kayts, CCP2 evresel biriminin kesme bitlerini, SSP arpma bitini ve EEPROM yazma kesmesi uyar bitini tar. PIR2 kaytsnn Kayt Dosyasndaki adresi: 0DH

ekil 6.19. PIR2 Kayts Bit 7: Bu bit kullanlmaz, 0 okunur. Bit 6 Reserved: Bit sonra kullanlmak iin ayrlmtr. Temizlenmelidir (set 0). Bit 5: Bu bit kullanlmaz, 0 okunur. Bit 4 EEIF: EEPROM yazma ilemi kesme uyar biti 0 = yazma ilemi tamamlanmad. 1 = yazma ilemi tamamland. Bit 3 BCLIF: arpma (Bus collision) kesmesi uyar biti 0 = SSP de arpma oldu, (12C Master mod olarak yaplandrlmsa) 1 = arpma olmad. Bit 1-2: Bu bitler kullanlmaz, 0 okunur. Bit 0 CCP2IF : CCP2 Kesme uyar biti : Capture ve Compare modunda kullanlr. PWM modunda kullanlmaz. 0 = TMR1 kayts capture/compare vuku buldu. 1 = TMR1 kayts capture/compare vuku bulmad.

N) PCON G Kayna Kontrol Kayts


G kontrol kayts PCON, yazlmda ve reset durumlarnda kullanlr. Reset durumlar; devrenin dardan MCLR ile, gerilim yada akmn ar dme ve ykselmesi Brown-Out Reset (BOR), Wath-Dog Timer, ve son olarak Power-on Reset (POR) durumlarnda kullanlabilir. BOR biti, Power-on Resette bilinemez. Reset sonrasnda 1 yaplmaldr ki, bir sonraki BOR durumu renilebilsin. BOR durumunun baka trl renilebilmesi mmkn deildir. BOR biti temizlendiinde, Brown-out devresini kullanmdan kaldrr (disable). PCON kaytsnn Kayt Dosyasndaki adresi: 8EH

ekil 6.20: PCON Kayts


86

Bit 2-7: Bu bitler kullanlmaz, 0 okunur. Bit 1 POR: Power-On Reset durum biti 0 = POR olutu (POR olutuktan sonra yazlmla set edilmeli). 1 = POR olumad. Bit 0 BOR: BOR durum biti 0 = BOR durumu var (BOR olutuktan sonra yazlmda set edilmeli). 1 = BOR durumu yok.

O) PCL ve PCLATH Adres Kaytlar


Program Counter-PC olarak adlandrlan adresleme kaytsnn 13 bit genilikte olduunu sylemitik. Bunun dk ncelikli byte PCL kaytsndan gelir. stteki bitler ise, PC <12:8> arasndaki 5 bittir, bunlar PCLATH kaytsndan alnr. PCL okunabilir ve yazlabilir bir kaytdr. Ancak st bitleri (PCH) dorudan okunamaz. Dolayl olarak PCLATH yoluyla yazlabilir veya okunabilir. RESET durumunda st bitler temizlenir. Aada ekilde PC kaytsnn deiik durumlarda nasl yklendii gsterilmitir. Bunlardan ilki PC yazmacnn dk ncelikli (low) byte ve yksek ncelikli (high) bytelarnn nereden ve nasl yklendiini, ikincisi ise GOTO komutunda nasl yklendiini aklar. CALL komutunda ise PCL, PCH ve PCLATH ilikisini gsterdii gibi, ynla PC ilikisini de vurgulanmaktadr. CALL komutu, ynn her zaman en tepesine, PCL yazmacnn iindeki adres deerini yazar. RETURN, RETFIE ve RETLW komutlar ise ynn en tepesindeki elemann ieriini PCL ye aktarr. Sayfa (bank) numaralarnn PCLATH kaytsndan PC ye aktarlabildiini program yazarken de unutmamalyz.

87

ekil 5.20: Hedef iin PCL komutlar PCH


12 8 7

Stack(13 bits x 8) STACK Ba 0

PCL

PC
5
PCLATH <4:0>

8 ALU result

PCLATH ekil 5.21: GOTO komutu PCH


12 11 10 8 7 Stack(13 bits x 8)

PCL
0

STACK Ba

PC
2
PCLATH <4:3>

11 OPcode<10:0>

PCLATH ekil 5.22: CALL komutu PCH


12 11 10 8 7

13

Stack(13 bits x 8) STACK Ba

PCL
0

PC
2
PCLATH <4:3>

11 OPcode<10:0>

PCLATH ekil 5.23: RETURN,RETFIE yada RETLW komutu


13

Stack(13 bits x 8) STACK Ba

PCH
12 11 10 8 7

PCL
0

PC
11 OPcode<10:0>

PCLATH
ekil 6.21. Program Sayacnn Kullanm Biimleri PCLATH kaytsnn ierii, altyordama girildikten sonra sabit kalr, bir RETURN yada RETFIE benzeri komut gelse de deimez. Programc, CALL veya GOTO komutlarndan nce, PCLATH kaytsn gncellemelidir. PCH daima PCLATH kayts yoluyla gncellendiinden
88

(tersi yaplamaz), altyordam veya gidilen kesimin hangi sayfada olduu, aadaki rnee benzer bir yolla belirtilmelidir.

ORG 0x500 Bcf PCLATH, 4; Bsf PCLATH, 3;

0. Sayfada PCLATH kaytsnn 4. biti temizlendi PCLATHin 3. biti set edildi, 1. sayfaya geildi. (800H-FFF H adres aral) 1. sayfadaki altyordam arld

call SUB1_P1; .

ORG 0x900; (800 H -FFF H), 1. Sayfada SUB1_P1 . RETURN; Altyordam 800 H ile FFF H aralna yerletirildi. returnden sonra 0. sayfaya dnlecek.

Hesaplanm GOTO (Computed goto) Computed goto (ADDWF PCL), PC ye PCL nin eklenmesiyle oluur. Eer computed goto yntemiyle alacaksanz, bellek snr ierisinde kalmaya zen gstermelisiniz (her blok 256 byte ile snrldr).

) Yn (Stack)
Yn 8 elemanldr. Elemanlar 13-bitliktir ve donanmn bir parasdr. Veri veya program alanlarnda yer almaz. Yn gstergesi (pointer) yazlabilir ve okunabilir deildir. Yn, dairesel bir dizin gibi alr. Eer i ie 9. kez altprogram arldysa; 9. adres, ynn ilk elemannn zerine yazlacaktr. Bu durumda stack overflow denen, yn tamas oluur. PIC lerde yn tamasn denetleyebileceiniz bir uyar biti bulunmadndan, bunu kendi yazlmnz yoluyla kontrol etmelisiniz. Yn ilemi komutlar POP ve PUSH tur. Her PUSH ileminde (CALL komutuyla ve kesme devreye girdiinde), ynn en tepesindeki adrese, PC nin ierii yklenir. Her POP ileminde (RETURN, RETFIE, RETLW komutlarnda) ynn en tepesindeki adres PC nin iine geri yklenir. Programcnn yna erimesi ve POP, PUSH ilemlerini yapabilmesi olanakszdr. Yn, LIFO (FILO) son giren ilk kar tekniiyle alr.

P) INDF ve FSR Dolayl Eriim Kaytlar


INDF, fiziksel bir kayt deildir. Mikrodenetleyicideki RAM adresini tutar. INDF e yazlan her veri, adresi FSR de bulunan RAM a yazlr. INDF ten okunan veriler de adresi FSR de bulunan RAM dan okunmutur.
89

Aada rnek olarak, RAM da 20H - 2F H arasndaki yerleri, dolayl adresleme kullanarak silme ilemi yapan program blm gsterilmitir: . Temizle; 20H-2F H arasn temizler. movlw 0x20; Gstergeye balang deerini (adresi) ver . movwf FSR; RAMa git Sonraki: clrf INDF; incf FSR, F; INDF yazmacn temizle Gstergeyi bir arttr. (d = 1)

btfss FSR, 4; Hepsi yapld m? goto Sonraki; Temizlenecek alan bitmedi, sonrakine git. Baka_Ksma_Ge; . ekilde, dorudan ve dolayl adresleme nasl oluur gsterilmektedir.
Dorudan adresleme
RP1:RP0 6 komut kodundan 0 IRP 7

Temizlenecek alan bitti.

Dolayl adresleme
FSR yazmac 0

Bank seimi

Adres belirleme

Bank seimi

Adres belirleme

00 00h 80h

01

10 100h

11 180h

Veri Bellei

7Fh Bank 0

FFh Bank 1

17Fh Bank 2

1FFh Bank 3

ekil 6.22. Dorudan ve dolayl adreslemede INDF ve FSR kullanm

R) Konfigrasyon Szc (CPU zel Fonksiyonlar)


PIC 16F87x yongasnn, aada saylan zelliklerinin nasl kullanlaca belirlenmelidir. Buna PIC in konfigrasyonunu belirleme ilemi de denir. Konfigrasyon, MPASM derleyicisinin CONFIG komutuyla belirtilebilir. Konfigrasyon tanmnda, her yongann kendi konfigrasyon szc (1 word boyunda, 14 bitliktir) iindeki bitlerinin (0-13. bitler) nasl kullanlaca, program iinden seilebilir. PIC16F877 iin aada saylan zellikler, program iinde seilmediyse, sonradan PICe programn yklenmesi srasnda da seilebilir. Programlayclarn da konfigrasyon belirlemek iin zel komutlar vardr. Konfigrasyon program iinde yaplmadysa,
90

programlayclar programn yklenmesinden nce, konfigrasyonun yaplmadna ilikin uyar verir. Konfigrasyon bitlerinde hibir deiiklik yapmadnz takdirde, retici tarafndan belirlenmi, n koullara baml kalnr. PIC 16F877 nin konfigrasyon bitleri, ilevleriyle aada saylmtr. - Power-on reset (POR) - Power-up timer (PWRTE) - Osilatr start-up timer - BOR (Brown Out Reset) - Yonga iindeki bir RC osilatr devresi ile belirli bir frekansta almas denetlenen WDT(Watchdog timer) birimi - Kesmeler - Kod koruma gvenlii - Id yerleimleri - G harcamasnn azaltlmas istendii durumlar iin uyku (sleep) modu - stee bal osilatr seenekleri: -RC / -XT / -HS / -LS - Devre ii seri programlama (iki pin ile seri olarak programlanabilme zellii) - Devre ii dk gerilimde programlama, - Devre ii hata arayc (Debugger) Aada P1C16F877in, program belleinde 2007H adresindeki konfigrasyon szckleri, bit alm ve deerleri aklanmaktadr.

ekil 6.23. Konfigrasyon szcnn bit alm (adresi: 2007H) Bit 12-13 CP0, CP1: Flash Program bellei kod koruma biti Bit 4-5 : 11 Kod korumas yok 10 1F00H - 1FFFH aras kod korumal blge 01 1D00H - 1FFFH aras kod korumal blge 00 0000H - 1FFFH aras kod korumal blge Bit 11 DEBUG : Devre ii hata arama modu (In-Circuit Debugger Mode) 1= Devre ii hata arama pasif 0= Devre ii hata arama aktif
91

Bit 10 : Bu bit kullanlmaz, 1 okunur. Bit 9 WRT: Flash program belleine yazma biti 1 = Kod korumasz program belleine EECON denetimi ile yazlabilir. 0 = Kod korumasz program belleine EECON denetimi ile yazlamaz. Bit 8 CPD : Veri EE Belei kod koruma biti 1 = Kod korumas yok 0 = Veri EEPROM bellei Kod korumal Bit 7 LVP : Dk gerilim devre ii seri programlama biti 1 = RB3/PGM (36.pin) Pini PGM ilevlidir, dk gerilimle programlanabilir. 0 = RB3 saysal I/O tanml, MCLR ye (1.pin) programlama iin yksek gerilim uygulamaldr. Bit 6 BODEN : Gerilim alt ve st limitleri aarsa, program yeniden balatabilen (Brown out Reset Enable) bit 1 = BOR yeniden balatlabilir 0 = BOR yeniden balatlamaz Bit 3 PWRTE: Power-up zamanlayc (PWRT) biti 1 = PWRT pasif 0 = PWRT aktif Bit 2 WDTE : Beki kpei zamanlaycs (Watch dog timer, WDT) biti 1 = WDT aktif 0 = WDT pasif Bit 1-0 FOSC1, FOSC0: Osilatr seme biti. 11 RC (diren kapasite) osilatr seildi 10 HS (yksek hzl kristal) osilatr seildi 01 XT (kristal) osilatr seildi 00 LP (dk gl kristal) osilatr seildi.

6.2. Blm Kaynaklar


1. O. Altnbaak, 2001. Mikrodenetleyiciler ve PIC Programlama, Atla Yaynclk, stanbul. 2. O. Urhan, M.Kemal Gll, 2004. Her Ynyle PIC16F628, Birsen Yaynevi, stanbul. 3. N. Topalolu, S. Grgnolu,2003. Mikroilemciler ve Mikrodenetleyiciler, Sekin Yaynclk, Ankara. 4. Y. Bodur, 2001. Adm Adm PICmicro Programlama,nfogate. 5. www.microchip.com

92

6.3. PIC PROGRAMLAMA VE ASSEMBLY DL A) PIC Programlama iin Gerekenler


PIC serisi mikrodenetleyicileri programlamak iin baz yazlm ve donanm elemanlarna gerek duyulur. Bunlar; Kiisel bilgisayarlar (PC) Programlama Devreleri Metin Editr Programlar Assembly kodu derleyicileri (assembler) Program ykleme yazlmlardr.

PIC programlamann ilk aamasnda program kodlarnn yazlmas ve PICin anlayabilecei makine kodlarna (HEX) yani 0 ve 1 lere dntrlmesi ge rekmektedir. Bunun iin ncelikle bir bilgisayar ve metin editr programna ihtiya duyulur. Metin editr program olarak genellikle Windows iletim sistemi ile birlikte yklenen Not defteri program kullanlabilir. DOS iletim sistemi ile alan bilgisayarlarda ise EDT programnda da ayn ilemler yaplabilir. Yazlan bu assembly program kodlar, Microchip tarafndan cretsiz olarak verilen MPSAM program ile PICin ilem yapabildii HEX kodlarna dntrlr. Bu HEX kodlarnn PICe yklenmesi iin bir programlayc devreye ve bu devrenin yazlmna ihtiya duyulmaktadr. Programlayc devre eitleri olarak ta paralel, seri veya USB portlarn kullanan programlayclar kullanlmaktadr. Paralel port zerinden ilem yapacak olan devreler harici olaraktan bir g kaynana ihtiya duyarlar. Dier devreler g kaynana ihtiya duymazlar. Bununla birlikte assembly komutlar yazlmadan yksek ve orta seviyeli diller kullanlarak da PIC program yazabiliriz. rnein; PICBasic PRO program ile BASC temelli bir dilde ve PIC C program ile C temelli bir dilde PIC program yazabiliriz. Yksek ve orta seviyeli diller ile program yazmaya olanak salayan yazlmlar genelde cretlidir. Kstl srmleri cretsiz olarak kullanlmaktadr.

93

Yksek&orta Seviyeli Diller (PIC Basic Pro. PIC C)

M etin Editr (program.asm)

DERLEYC

prg.asm

ASSEM BLER (M PASM )

prg.asm

MPLAB prg.hex PROGRAM LAYICI

PIC

ekil 6.24 PIC programlama admlar

B) PIC Assembly Dili


Assembly dili, bir PICe yaptrlmas istenen ilerin belirli kurallara gre yazlm komutlar dizisidir. Assembly dili komutlar ngilizce dilindeki baz ksaltmalardan meydana gelir. Bu ksaltmalar genellikle bir komutun almasn ifade eden cmlenin ba harflerinden oluur. Bylece komut, bellekte tutulmas kolay hale gelir. PIC mikrodenetleyicileri RISC mimarisi ile retildiklerinden az sayda komut ile programlanrlar. PIC mikrodenetleyici si 35 komuta sahip olduu iin programlanmas kolaydr. Assembly dilinin temel bileenleri; Etiketler (Labels) Komutlar (Instructions) lenecek veriler (Operands) Bildirimler (Direktifler-Directives) Yorumlar (Comments) Etiketler PICin program ve veri belleindeki belirli bir adresi isimlerle ifade etmeyi salar. zellikle alt program arlmasnda kullanlr. Assembler, program derlerken etiketi grd anda ilgili etiketin adresini otomatik olarak yerine koyup ilemi yapacaktr. Etiketler bir harfle veya _ karakteri ile balamaldr. Program yazlrken Trke karakter kullanmamaya dikkat etmeliyiz. Ayn
94

zamanda etiketler byk- kk harf ayrmna kar duyarldr ve en fazla 32 karakter uzunluundadr. Komut kullanmnda dikkate alnmas gereken bir noktada yazm hatalarnn yaplmamasdr. Program kodunun aklanmas iin kullanlan yorumlar ; iaretinden sonra yazlr. Yani ba tarafna ; konulan satrlar, assembler tarafndan hex. kodlara dntrlmezler. Bu satrlar programn gelitirilmesi esnasnda hatrlatc aklamalarn yazlmasnda kullanlr. Text editrlerinde birbirlerinden farkl uzunlukta girintiler veren TAB zellii vardr. Bu zellikten yararlanarak assembly komutlar kolona blnerek yazlr. Bir assembly program temel olarak drt blme ayrlmaktadr. Bunlar; Balk Atama Program Sonu blmleridir.
Assembler bildileri

Balk blou

LIST

P=16F877

Etiket

Atama Komutu

Hex adres

Atama blou

STATUS

LIST

0x03

Etiket

Komut

Sabit, etiket veya Hex. adres

ORG
Program blou

0x00 PORTB 0x0F

START

CLRF M OVLW
Assembler bildileri

Sonlandr ma blou

DONGU

GOTO END

DONGU

ekil 6.25. Assembler komut kolonlar

95

C) PIC Assembly Dilinde Sk Kullanlan fadeler


# DEFINE Birka dizini ayn ad altnda tutmak iin kullanlr. Program yazmay kolaylatran ifadelerden biridir. Ayn zamanda program kodu ierisinde bir metni baka bir metin ile deitirir. Definela balayan tanmlar program banda yaplmaldr. rnek : #define #define AC LED 1 PORTB,2

Bu program satr ile artk programn herhangi bir yerinde AC ifadesi kullanldnda bu, 1 anlamna gelir. Ayn ekilde program kodunda LED ifadesi kullanldnda bu , PORTB nin 2. ucu anlamna gelir. #INCLUDE Programa ek bir dosya ilave edip komutlarn altrlmasn salar. rnek : #include <P16F877.inc> #include degisken.h Bu komut satr, program kodunun daha iyi grnmesi iin baz tanmlamalar her programn bana yazmak yerine bu komutlar ayr bir dosyada yazp, yeni yazacamz programmza eklemeyi salar. rnein; PIC16F877 iin gerekli olan tanmlamalar her programn bana yazmak yerine bir dosyaya atp, yeni bir program yazarken include tanm yazlarak bu tanmlar kullanlr. < > ifadesi sistem dosyalarnda, ifadesi de kullanc tarafndan yazlan dosyalarda kullanlarak programa eklenir.

CONSTANT Metin tr olan bir ifadeye saysal bir deer atamay salar. rnek : Constant Constant MIN=50 MAX=9600

Programmzn derlenmesi yaplrken yukarda yazlan metin tr ifadelerle karlaldnda bu ifadelere atanan saysal deerler ileme alnr. VARIABLE Metinsel bir ifadeye deitirilebilir bir saysal deer atamay salayan ifadedir. rnek : Variable Variable Variable SICAKLIK=25 DEGER=10 ORTALAMA=50
96

SET nceden tanmlanan bir deikenin deerini deitirip yeni bir ifade atamamz salar. rnek : SICAKLIK DEGER set set 35 40

EQU Program ierisinde sabit tanmlamamz salayan ifadedir. rnek : SAYAC EQU 0x20 Bir etikete veri belleinin bir adresini atamamz salar. ORG Yazlan programmzn, mikrodenetleyicinin veri belleinin hangi adresinden balanp ykleneceini belirler. rnek : ORG 0x000 IF, ELSE, ENDIF IF art deyimidir. Belirlenen koul salandnda IF deyimini takip eden program kodlar ileme koyulur. Eer art salanmyorsa ELSE deyiminden sonraki komut satrlar ileme girer. Eer IF bildiriminden sonra ELSE kullanlmazsa ENDIF bildiriminden sonra gelen komutlar ileme koyulur. Kullanlan IF bildiriminden sonra mutlaka ENDIF bildirimide kullanlmaldr. rnek : IF MAX==1000 movlw h 01 else movlw h 02 endif Bu ifadeye gre MAX deeri 1000e eitse movlw h 01 komutu, deilse movlw h 02 komutu yklenir. END Program sonunu belirten ifadedir. rnek : End

97

WHILE, ENDW While ifadesinden sonra yazlan koul salanncaya kadar WHILE ile ENDW ifadeleri arasndaki program kodlar derlenir. rnek : While SAY<15 SAY=SAY+2 ENDW Bu komut satrna gre SAY deikeninin deeri 15den kk olduu srece 2 arttrlr.

IFDEF #Define ile atanan metnin tanml olduu durumda ifdef bildirimine kadar olan program kodunun derlenmesini salar. rnek : #define led 1 ifdef led _CONFIG Bildirimi takip eden aklamalar ilemcinin konfigrasyon bitlerine aktarmay salayan ifadedir. rnek : _CONFIG h FFFF

98

D) PIC Komut Seti


PIC16F877 nin 14-bit szck uzunluuna sahip toplam 35 komut vardr. Komutlar 3 grupta incelenir. Komutlarn ou, bir saat evrimlik srede uygulanr. Bir saat evrim sresi; osilatrn frekansnn kadar olan bir sreye eittir. Call, goto gibi baz komutlar 2 saat evrimi srede ilenir. Komut Formatlar Baz komutlar alrken, komutun ve ilemesi srasnda oluan durumlara bal olarak, STATUS kaytsnn gerekli olan bitleri deiir. BYTE Ynlendirmesi Yapan Yazma lemleri: d=0 iin hedef W, d=1 iin hedef f, 13 8 7 D lem Kodu f=7 bit yazma adresi 6 f (yazma) 0

Bit Ynlendirmesi Yapan Yazma lemleri: b=3 bit adres f=7 bit yazma adresi 13 10 9 7 6 f (yazma) 0 lem Kodu

b (bit no)

Denetim ve Sabit/Saysal (literal) lemler: 13 8 7 k (literal) 0 lem Kodu

k= 8 bit hazr (immediate) deer Yalnz call ve goto komutlarnda kullanlan biim: 13 11 10 k (literal) 0 lem Kodu

k=11 bit hazr (immediate) deer Komutlarn tm, ilem biimi tablolarnda da gsterildii ekilde; bit ynlendirmeli, byte ynlendirmeli ve son olarak da, literal ve kontrol komutlar olarak blmde snflandrlr.

99

PIC16F877 Komut Kmesi PIC16F877 komut tablosu ve komut tablosunda kullanlan semboller, aadaki komut tablosunda yer almaktadr.
Komut Yazlm ADDWF ANDWF CLRF CLRW COMF DECF DECFSZ INCF INCFSZ IORWF MOVF MOVWF NOP RLF RRF SUBWF SWAPF XORWF BCF BSF BTFSC BTFSS ADDLW ANDLW CALL CLRWDT GOTO IORLW MOVLW RETFIE RETLW RETURN SLEEP SUBLW XORLW f, d f, d f -f, d f, d f, d f, d f, d f, d f, d f -f, d f, d f, d f, d f, d f, b f, b f, b f, b k k k -k k k -k --k k Komut Tanmlamas evrim Sresi 14-bitlik Opcode MSb LSb
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 01 01 01 11 11 10 00 10 11 11 00 11 00 00 0111 0101 0001 0001 1001 0011 1011 1010 1111 0100 1000 0000 0000 1101 1100 0010 1110 0110 00bb 01bb 10bb 11bb 111x 1001 0kkk 0000 1kkk 1000 00xx 0000 01xx 0000 0000 dfff dfff lfff 0xxx dfff dfff dfff dfff dfff dfff dfff lfff 0xx0 dfff dfff dfff dfff dfff bfff bfff bfff bfff kkkk kkkk kkkk 0110 kkkk kkkk kkkk 0000 kkkk 0000 0110 ffff ffff ffff xxxx ffff ffff ffff ffff ffff ffff ffff ffff 0000 ffff ffff ffff ffff ffff ffff ffff ffff ffff kkkk kkkk kkkk 0100 kkkk kkkk kkkk 1001 kkkk 1000 0011

STATUS Etkisi C,DC,Z Z Z Z Z Z Z Z Z

BYTE Ynlendirmeli Komutlar W ile f yi topla 1 W ile f yi AND le 1 f yi sil 1 W y sil 1 f nin tersini al 1 f yi bir azalt 1 f yi bir azalt, f = 0 ise bir komut atla 1 (2) f yi bir arttr 1 f yi bir arttr, f = 0 ise bir komut atla 1 (2) W ile f yi XOR la 1 f yi ta 1 W y f ye ta (W f) 1 lem yapma 1 f yi birer bit sola dndr 1 f yi birer bit saa dndr 1 f den W y kart 1 f nin drtl bitlerinin yerini deitir 1 W ile f yi XOR la 1 BIT Ynlendirmeli Komutlar f nin b. bitini sil 1 f nin b. bitini bir yap 1 f nin b. biti 0 ise bir komut atla 1 (2) f nin b. biti 1 ise bir komut atla 1 (2) Literal ve Kontrol Komutlar k 'y W 'ya ekle 1 k 'y W ile AND 'le 1 k alt programn ar 2 WDT yi sil 1 k adresine git k ile W 'y OR 'la k 'y W 'ya ta Kesmeden geri dn k y W ya ykle ve geri dn Alt programdan geri dn Uyku moduna ge W 'y k 'dan kart k ile W 'y XOR 'la

C C C,DC,Z Z

C,DC,Z Z
TO, PD

2 1 1 2 2 2 1 1 1

TO , PD

11 110x kkkk kkkk 11 1010 kkkk kkkk

C,DC,Z Z

Sembol Tanmlamalar :
f Register File Adress: kayt ad veya adresi (0x00 ile 0x7F) w Akmlatr, alma kayts b Bit tanmlaycs; 8 bitlik kaytnn 0~7 arasndaki bir biti veya etiket (EQU komutu ile adresi tanmlanm olmas gerekir) d Destination : Gnderilecek yer; komutun altrlmasndan sonra sonucun nereye yazlacan belirler. d = 0 W kaytsna, d = 1 dosya kaytsna k Sabit bir say (0x0C veya 0CH, 00001100B, 10D) veya adres etiketi x 0 yada 1 nemli deil TO Zaman am biti (Time-out bit) PD G kesimi biti (Power-down)

100

NOT: Eer kaynak ilenen I/O portu ise mikrodenetleyici pinlerindeki durum okunur. Eer bu komut TMR yazmac zerinde uygulanrsa ve d=1 ise bu zamanlaycya atanan nlekleyici otomatik olarak 0 olur. Eer PC modifiye edilmise veya test sonucu 1 ise komut iki saat evriminde ilenir. C (Carry) DC (Digital Carry) 2, TO (Time Out) PD (Power Down) yaplan ilemler sonucu etkilenen bayraklardr. Bu bayraklar birok uygulamada kontrol edilerek sistemin almas deitirilebilir. Kayt Adresleme Modlar PIC lerde balca tip adresleme modu vardr: 1. Annda(Immediate) Adresleme: rnek : MOVLW H0F ; W = OF Komut Szc : 11 0000 0000 1111 =300F

2. Dorudan (Direct) Adresleme : 14 bitlik komut szcnn 7 biti kayt adresini tanmlar. 8. ve 9. bitler STATUS un RP0 ve RP1 bitlerinden elde edilir. rnek : Z EQU d2 // Status kaytsnn 2. biti Z (zero) dur. BTFSS STATUS, Z Komut Sz. : 01 1101 0000 0011=1D03 3. Dolayl (Indirect) Adresleme : 8 bitlik kayt adresi FSR (zel fonksiyonlu kayt) kaytsna yazlr. FSR nin iaret ettii adresin ierii iin INDF kullanlr. INDF = [FSR]; okuma [FSR] = INDF; yazma

rnek: h20 h 2F RAM blgesini temizleyen (sfrlayan) bir program. Temizle; 20H-2F H arasn temizler. movlw 0x20; movwf FSR; Sonraki: clrf INDF; incf FSR, F; btfss FSR, 4; goto Sonraki; INDF yazmacn temizle Gstergeyi bir arttr. (d = 1) Hepsi yapld m? Temizlenecek alan bitmedi, sonrakine git. Gstergeye balang deerini (adresi) ver . RAMa git

Baka_Ksma_Ge; Temizlenecek alan bitti.

101

PIC Assemblyde Saylarn ve Karakterlerin Yazm Heksadesimal Saylar Heksadesimal saylar 0x, 0 veya h harfleriyle balamaldr. rnein, STATUS kaytsna 03 adresi atamak iin ; STATUS EQU EQU EQU EQU EQU 0x03 3 03 03h h 03

kullanlr. MOVLW komutu kullanlarak w kayts ierisine yklenecek olan FF heksadesimal sabitler ise ; MOVLW 0xFF h FF Binary Saylar Binary saylar yazlrken b harfi ile balamaldr. rnein 00001010 binary says W kaytsnn ierisine yklenirken aadaki gibi yazlmaldr. MOVLW b 00001010

Desimal Saylar Desimal saylarn bana d harfi koyularak trnak ierisinde yazlr. rnein 15 desimal saysnn W kaytsnn ierisine yklerken aadaki gibi yazlmaldr. MOVLW d 15

ASCII Karakterler ASCII karakterler yazlrken RETLW komutu ile yazlr. RETLW RETLW A T

F) Komutlarn Kullan
Komut seti tablolar, assembler derleyicisinin kabul ettii komut szckleri ve bunlarn sz dizimi kurallar hakknda bilgi salamaktadr. Bu blmde ise her komut, kendisini oluturan temel elemanlaryla birlikte incelenip, rneklendirilmektedir. Ayrca kullanlabilecek her bir komut iin; uygulad ilem (operation) ve neyi yada neleri iledii; yani ileler (operands) hakknda bilgi verilmektedir. lem sonucunda, STATUS yazmac da etkileniyorsa belirtilmitir. Komutun yazld satrdaki, keli parantez iinde belirtilmi olan etiket ad yazlabilir, ancak yazlmas zorunlu deildir. lev satrlarnda parantez iine alnan kayt rnein (W) gibi, o yazmacn

102

ieriini gstermektedir. Bir yazmacn belirli bitlerinin deerleri, (kayt_ad<>) ile gsterilmitir. Her komut satrndaki etiket birinci, komut ikinci, komutun kulland ileler ise nc bloka yazlmaktadr. Bir say/sabit ile W nin ieriini topla : [etiket] ADDLW : 0 k 255 : (W) + k (W) : C, DC, Z : W'nin ieriini 8 bitlik k literali ile toplar ve sonucu W' ye aktarr. k

1-) ADDLW Sz dizim kural ileler ilevi Status etkisi Tanm

rnek : ADDLW h'FF' Komuttan nce k=h'FF' ve w=h'01' ise, komut altktan sonra W = 00h olur. Toplam sonucu, FFh' tan byk olduu zaman, elde biti W yazmacna smaz. Elde biti, STATUS yazmacnn iinde C Carry bitinde (STATUS, 0) tutulur. W yazmacnn ierii (deeri) sfrsa, status yazmacnn zero biti de 1(set-zero-flag) yaplr. Yani Z = 1; C =1 olur. 2-) ADDWF Bir yazma ierii (f) ile W nin ieriini topla Sz dizim kural ileler ilevi Status etkisi Tanm : [etiket] ADDWF : (W) + f (hedef) : C, DC, Z : W'nin ieriini, 7 bitlik adresi olan f kaytsnn ierii ile toplar ve sonucu f,d : 0 f 127 ve d (0,1)

d = 0 ise W'ye d=1 ise f ye aktarr. rnek : ADDWF f,0 Bu komuttan nce W=h'10', f=h'10' ise komuttan sonra W=h'20' ve f=h'10' olur. rnek : ADDWF f,1 Bu komuttan nce W=h'10', f=h'10' ise komuttan sonra W=h'10' ve f=h'20' olur. Toplama sonucu h'FF' deerini aarsa, Status yazmac, ayn literalle toplama komutundaki gibi etkilenir. 3-) ANDLW Bir say ile W nin ieriine AND lemini Uygula Sz dizim kural ileler ilevi Status etkisi Tanm : [etiket] ANDLW : 0 k 255 : W AND k (W) :Z : W'nin ieriini k ile AND 'le, sonucu W ye aktar.
103

rnek : ANDLW h'03' Bu komuttan nce W=h'01' ise, Komut .VE. ilemini uygular. Komut sonucu W=h'01' olur. 4-) ANDWF Yazma ieriini W nin ierii ile AND' le Sz dizim kural leler levi Status etkisi Tanm : [etiket] ANDWF : 0 f 127 f,d ve d (0,1)

: W AND f (hedef) :Z : W'nin ieriim f yazmacnn ierii ile AND 'le ve sonucu d=0 ise W 'ye

ykle, d=1 ise f ye ykle. rnek : ANDWF

f,0

Bu komut almadan nce W=h'03', f=h'07' ise ilem yaptktan sonra W=h'03', f=h'07' olur. rnek : ANDWF f,1 Komut almadan nce W=h'03', f=h'07' ise ilem yaptktan sonra W=h'03', f=h'03' olur. STATUS 'n etkilenmesi : AND ilemi sonucu, h'00' olsayd, STATUS registerin 2. biti olan Z biti 1(set) yaplrd. MASKELEME zellii : AND mantksal ileminin maskeleme zellii vardr. Mantksal durumunun deimesini istemediimiz bitleri, 1 ile AND 'lersek, dier bitler 0 olurken maskelediimiz bitler deimez. 5-) BCF leler ilevi Status etkisi Tanm Yazmacn belirlenen bitini sfrla (clear) : [etiket] BCF : 0f(b) : Yok : f yazmacnn b. bitini 0 yap. f,b : 0 f 127 ve 0 b 7

Sz dizim kural

rnek : BCF PORTD,0 Komutu alnca PORTD yazmacnn ilk biti 0 yaplr. PORTD 'nin 0. bitine bal bir led yanyorsa, bu komutla sndrlr.

104

6-) BSF Yazmacn belirlenen bitini bir (set) yap Sz dizim kural leler ilevi Status etkisi Tanm rnek : BSF PORTD,0 Komutu alnca PORTD yazmacnn ilk biti 1 yaplr. PORTD'nin 0. bitine bal bir led yanmyorsa, bu komutla yaklabilir. BCF ile BSF komutlar ard ardna kullanlarak, bir kare dalga sinyali elde edilir. Yazmacnn belirlenen biti 0 ise, bundan sonraki komutu atla : [etiket] BTFSC : 0f(b) : Yok : Yazmacnn b. bitinin 0 olup olmad kontrol edilir. Eer sfr ise bu f,b : 0 f 127 ve 0 b 7 : [etiket] BSF f,b : 0 f 127 ve 0 b 7 : 1 f(b) : Yok : f yazmacnn b. bitini 1(set) yap.

7-) BTFSC leler levi Status etkisi Tanm uygulanr. rnek : Basla

Sz dizim kural

komutun altndaki komut ilenmez, bir sonraki komuta saplr. Aksi durumda ise sradaki komut

BTFSC PORTB,0

; komut alnca PORTB yazmacnn ilk bitinin ; 0 olup-olmad kontrol edilir. Eer sfr ise bu ; komutun hemen altndaki komut ilenmez, bir ; sonraki komuta saplr. Aksi durumda ise ; sradaki komut uygulanr. ; PORTB'nin 0. biti 0 deilse ilenecek, tekrar ; baa dnecek. ; PORTB'nin 0. biti 0 olunca ilenecek, ayn bit ; bu komutla 1 yaplacak. Eer pinde led varsa ; yanacak. Bylece pinde bir kare dalga sinyali ; oluur.

GOTO Basla

BSF PORTB,1

105

8-) BTFSS Yazmacn belirlenen biti 1 ise, bundan sonraki komutu atla Sz dizim kural leler ilevi Status etkisi Tanm uygulanr. rnek .a. Basla BTFSS PORTA,0 ; komut alnca PORTA yazmacnn ilk bitinin ; 1 olup-olmad kontrol edilir. Eer bir ise bu ; komutun hemen altndaki komut ilenmez, bir ; sonraki komuta saplr. Aksi durumda ise ;sradaki komut uygulanr. Porta'nn ilk bitine bir ; buton bal olsun. Butona baslp, baslmad ; bu komutla kontrol edilebilir. GOTO Basla ; PORTA'nin 0. biti 1 deilse ilenecek, tekrar ; baa dnecek. BSF PORTB,1 rnek .b. BTFSC STATUS,0 ; Bu komutla, ilem sonucunun h'FF' saysndan ; byk olup olmadm denetleyebilir. Status ; yazmacnn 0. biti (C) 0 ise bir komut atla ; anlamna gelen bu komut sk kullanlr. rnek .c. BTFSC STATUS,2 ; Bu komut ise, toplama ileminin sonucunun 1 ; olup-olmadn, status yazmacnn 2. bitinin 1 ; olup olmadna bakarak denetler. Yazmacn ; 2. biti (Z) 1 ise bir komut atlar. 9-) CALL ileler ilevi Altprogram ar : [etiket] CALL k : 0 k 2047 : (PC) + 1 TOS, TOS: Ynn st (Top of Stack), k (PC<10:0>), PCLATH<4:3> PC<12:11> Sz dizim kural ; PORTA'nin 0. biti 1 ise ilenecek, bu komutla ; PortB'nin 2. bitine bal led yanar. : [etiket] BTFSS : 1 f(b) : Yok : Yazmacnn b. bitinin 1 olup olmad kontrol edilir. Eer bir ise bu f,b : 0 f 127 ve 0 b 7

komutun altndaki komut ilenmez, bir sonraki komuta saplr. Aksi durumda ise sradaki komut

106

Status etkisi Tanm

: Yok : Altprogram arr. nce PC' yi bir arttrr ve ynn stne koyar. Sonra

altprogram adresi PC' nin <10:0> bitlerine yklenir. PCLATH' in <4:3> bitlerindeki deerler, PC' nin st bitleri olan <12:11> arasndaki bitlere yklenir. CALL ilemi iki saat evrimi srede uygulanan bir dallanma komutudur. rnek : REF1 CALL Gnder Bu komuta gelindiinde PC bir arttrlarak TOS 'a konur. TOS 'da REF1 'in adresi var. Bylece, TOS 'da komut uygulandktan sonra dnlecek adres oluturulmu olur. Bundan sonraki aamada PC'ye Gnder altprogramnn adresi oluturulur, yani altprograma saplr. Alt program komutlar sras geldike uygulanacak altprogram sonlandran RETURN ile birlikte, TOS 'daki deer PC' ye geri yklenecektir ki bundan sonraki komut uygulanabilsin. Bir CALL komutuyla saplan komut takmnn bulunduu adresten dn iin, mutlaka altprogramn sonlandrcs RETURN gerekir.RETURN ileride de anlatlacak. RETURN uygulandnda TOS deki adres PC'ye yklenir. PCLATH<4:3> bitleri ise bellek sayfalarnn deerini ierdii iin st bitlere yklenerek altprogramn bulunduu doru adrese saplmas salanr. Yazma eriini sil : [etiket] CLRF f : 0 f 127 : h'00' (f) ve 1 Z :Z : f yazmacnn ierii sfrlanr ve deeri sfr olduu iin status yazmacnn

10-) CLRF ileler ilevi Status etkisi Tanm

Sz dizim kural

zero biti 1 (set) yaplr. rnek : CLRF TRISD D Portunun ynlendiricisi olan TRISD yazmacnn tm bitleri sfr yaplmtr. Bylece D Portu k olarak belirlenmitir. Bu portta ledler, veya LCD, 7SD ...vb. birimler olabilir. TRISD 'nin sfrlanmas sonucu, status yazmac zero biti de set edilmitir. W yazmacnn ieriini sil : [etiket] CLRW : Yok : h'00' (W) ve 1 Z :Z

11-) CLRW ileler ilevi Status etkisi

Sz dizim kural

107

Tanm

: W yazmacnn ierii sfrlanr ve deeri sfr olduu iin status yazmacnn zero

biti 1 (set) yaplr. rnek : CLRW 12-) CLRWDT Sz dizim kural leler ilevi ; W yazmac temizlendi. Status Z biti 1 oldu. WDT zamanlayc ieriini sil : [etiket] CLRWDT : Yok : h'00' WDT 0 WDT nblc sabit(prescaler), 1 TO, 1 PD Status etkisi rnek : CLRWDT Komut uygulanmadan nce WDT'nin ierii ne olursa olsun, komut altrldktan sonra WDT sayac ve nblcs 0 'lanr. Ayn zamanda TO ve PD bitleri 1 olur. 13-) COMF Sz dizim kural leler ilevi Status etkisi Tanm f yazmacna yklenir. rnek : COMF f,0 Yazma ieriinin tersini al (fnin tmleyeni) : [etiket] COMF : (f ) (hedef) :Z : f yazmacnn ierii terslenir ve d deeri sfr ise sonu W yazmacna, bir ise f,d : 0 f 127 d (0.1) : TO, PD

Bu komuttan nce W=h'02' ve f=h'01'ise, komuttan sonra W=h'FE' ve f=h'01' olur. Sonu ters alma ileminde sfr olmu ise Z bit de 1 yaplr. rnek : COMF f,1 Bu komuttan nce W=h'02' ve f=h'01 'ise, komuttan sonra W=h'02' ve f=h'FE' olur. Z bit sfrlanmaz sonu 0 'dan farkl. 14-) DECF Sz dizim kural leler levi Status etkisi Tanm Yazma ieriini bir azalt : [etiket] DECF f,d : 0 f 127 ve d (0,1) : (f) -1 (hedef) :Z : f yazmacnn ierii bir azaltlr ve d deeri sfr ise sonu W yazmacna, bir

ise f yazmacna yklenir.


108

rnek : DECF SAYAC,0 Sayacn iindeki deer her ne ise, bir azaltlr ve sonu, d' nin 0 olmas durumunda W 'ye, aksi halde ise SAYA yazmacna yklenir. Sonu 0 ise status'n Z biti 1 yaplr. Yazma ieriini bir azalt, 0 ise bir komut atla : [etiket] DECFSZ f,d : 0 f 127 ve d (0,1) : (f)-1 (hedef) ve Sonu = 0 ise atla : Yok : f yazmacnn ierii 1 azaltlr ve sonuta oluan deer sfr ise, bu komutu

15-) DECFSZ Sz dizim kural leler levi Status etkisi Tanm

izleyen komut atlanr. Sonuta d=0 ise W ' ye 1 ise f' ye yklenir. Komut atlamayla sonulanrsa, ikinci evrim sresinde NOP uygulayarak, toplam iki saat evrim sresinde ilenir. Atlama olmad durumda uygulanmas bir saat evrimi sredir. rnek : Azalt DECFSZ GOTO Azalt BSF PORTB,1 SAYAC,1 ; SAYA 1 azaltlr, sonu 0 ise GOTO komutu atlanr. ; Sonu 0 deilse Azalt etiketine saplr. ; Sonu 0 ise PORTB'nin RB1=1 edilir.

SAYAC = 10
SAYAC' in balang deeri 10 ise yukardaki azalt dngs, 10 kez tekrar edilir. 10. tekrarda SAYA deeri sfrlanmtr. Goto sapma komutundan sonraki komutla devam edilir.

DECFSZ SAYAC = SAYAC -1

hayr

SAYAC = 0 m?

evet BSF PORTB,1

16-) GOTO leler levi

Adrese git : [etiket] GOTO k : 0 k 2047 : k PC<10:0> PCLATH<4:3> PC<12:11>

Sz dizim kural

Status etkisi

: Yok
109

Tanm

: GOTO koulsuz bir sapma komutudur, k' nin adresi neyse PC'ye <10:0>

bitlerine yklenir. Belek sayfas neyse PCLATH<4:3> bitleri PC'nin st bitlerine yklenir ve adrese saplr. Bu komut, iki saat evrimi srede uygulanr. rnek : Basa_Tas GOTO Bas

Komuttan nce PC' da Basa_Tas etiketinin adresi vardr. Komut altrldktan sonra is e PC 'de Bas etiketinin adresi oluur. 17-) INCF Yazma ieriini bir arttr Sz dizim kural leler ilevi Status etkisi Tanm : [etiket] INCF f,d : 0 f 127 ve d (0,1) : (f) + 1 (hedef) :Z : f yazmacnn ierii bir arttrlr ve d deeri sfr ise sonu W yazmacna, bir

ise f yazmacna yklenir. rnek : INCF SAYAC,0 W = SAYAC + 1; Sayacn iindeki deer her ne ise bir arttrlr ve sonu d'nin 0 olmas durumunda W ye, aksi halde ise f yazmacna yklenir. Yazma ieriini bir arttr, 0 ise bir komut atla : [etiket] INCFSZ f,d : 0 f 127 ve d (0,1) : (f)+1 (hedef) sonu=0 ise atla Status etkisi Tanm : Yok : f yazmacnn ierii bir arttrlr ve sonuta oluan deer sfr ise, bu komutu

18-) INCFSZ Sz dizim kural leler ilevi

izleyen komut atlanr. Sonu, d=0 ise W 'ye, 1 ise f 'ye yklenir. Komut atlamayla sonulanrsa, ikinci evrim sresinde NOP uygulayarak, toplam iki saat evrim sresinde ilenir. Atlama olmad durumda uygulanmas bir saat evrimi sredir. rnek : Art INCFSZ SAYA, 1 GOTO Art BCF PORTB,1 ; SAYA 1 artar, sonu 0 ise BCF komutu atlanr. ; Sonu 0 deil ise Art' a gidilir. ; Sonu 0 ise PORTB 'nin 1. biti 0 edilir.

110

19-) IORLW Sz dizim kural levi Status etkisi Tanm

Bir say ile W'nin ieriine OR ilemini uygula : [etiket] IORLW k : (W ) OR k (W) :Z : W yazmacnn ierii k literali ile OR' lanr. Sonu W ya yklenir.

Mantksal ilem sonunda oluan deer sfr ise, status Z biti 1 yaplr. rnek :

IORLW h'0F'

Komut ncesi W=h'F0' ise, komut sonras W=h'FF'olur. Yazma ierii ile W nin ieriine OR ilemini uygula : [etiket] IORWF f,d : 0 f 127 ve d (0.1) : (W ) OR f (hedef) :Z : W yazmacnn ierii k literali ile OR' lanr ve sonu d=0 ise W 'ya, d=1 ise

20-) IORWF Sz dizim kural leler levi Status etkisi Tanm

f ye yklenir.Mantksal ilem sonunda oluan deer sfr ise, status Z biti 1 yaplr. rnek : IORWF

f,0

Komuttan nce W=h'10' ve f=h'01' ise, komuttan sonra W= h'11', f=h'01 'olur. rnek : IORWF f,1 Komuttan nce W=h'10" ve f=h'01' ise,komuttan sonra W=h'10',f=h'11'olur. W ya bir say/sabit ykle : [etiket] MOVLW : 0 k . 255 : k (W) : Yok : W yazmacnn ierii k olur. k

21-) MOVLW Sz dizim kural leler levi Status etkisi Tanm rnek : MOVLW k

Komut ncesi W nin deeri ne otursa olsun, komuttan sonra k literalinin deeri ile ykl enir.

111

22-) MOVF Yazma ieriini hedefe tas (fyi ykle) Sz dizim kural leler levi Status etkisi Tanm : [etiket] MOVF f,d : 0 f 127 ve d (0,1) : (f) (Hedef) :Z : f yazmacnn ierii; d 0 ise W yazmacna, 1 ise kendisine yklenir,

zellikle d=1 olduu durumda, f nin ieriinin 0 olup olmadna baklmas yararl olur. nk bu durumda status'n Z biti deiir. rnek : MOVF f,0 Komuttan nce W=h'0F ve f=h'01' otsun, komuttan sonra W=h'01'vef=h'01'olur. rnek : MOVF f,1 Komuttan nce W=h'0F ve f=h'01'olsun, komuttan sonra W=h'0F'vef=h'01'olur. W nin ieriini f yazmacna ta : [etiket] MOVWF f : 0 f 127 : (W) (f) : Yok : W yazmacnn ierii f yazmacna tanr.

23-) MOVWF Sz dizim kural leler levi Status etkisi Tanm

rnek : MOVWF SAYAC Komutu uygulanmadan nce, SAYA yazmacnn ierii ne olursa olsun komut uygulandktan sonra W yazmacnn ierii SAYA' a yklenir. lem yok : [etiket] NOP : Yok : Yok : Yok : Hibir ey yaplmadan bir saat evrimi sre alr. ;Hibir ilem yaplmadan, bir evrimlik sre geirir.

24-) NOP leler ilevi Status etkisi Tanm rnek : NOP

Sz dizim kural

112

25-) RETFIE Kesme altprogramndan geri dn Sz dizim kural leler ilevi Status etkisi Tanm : [etiket] RETFIE : Yok : TOS PC ve : Yok : Kesme altprogramndan, dnmek iin kullanlr. Dn hazrlndan baka 1 GIE

bir ilem yapmaz. Dn yaplacak adres TOS 'de olduu iin, TOS deeri PC' ye yklenir. INTCON kesme yazmacnn, GIE biti set edilir. Komut iki saat evriminde ilenir. rnek : RETFIE ; Bu komut uygulannca PC=TOS ve GIE=1 olur. Altprogramndan W'ye bir say/sabit ykle ve geri dn : [etiket] RETLW : 0 k 255 : k W ve TOS PC : Yok : Altprogramdan, W ' ye k literali yklenmi olarak dnmek iin kullanlr. k

26-) RETLW Sz dizim kural leler levi Status etkisi Tanm

Dn hazrl TOS deerinin PC' ye aktarlmasyla yaplr. Komut iki saat evrimi srede i lenir. | rnek : RETLW h'21' Bu komut uygulandktan sonra W yazmacna h21 yklenir. PC' ye TOS deeri yerletirilir. zellikle altprogramdan deerler dizisinden biri ile dnmesi istendiinde kullanlr. ;SAYAC 'n ald deer ka ise, o RETLW ye sapar. ;W nceden h'01 'se komuttan sonra W=h'21' le ;W nceden h'02'se komuttan sonra W=h'22' le ;W nceden h'03'se komuttan sonra W=h'23' le ;W nceden h'04'se komuttan sonra W=h'24' le

TABLO

ADDWF SAYAC RETLW 21h RETLW 22h RETLW 23h RETLW 24h

dner. W' nin tablo kesimine sapmadan nceki deerine gre ilem grr. 27-) RETURN Sz dizim kural leler levi Status etkisi Tanm srede ilenir.
113

Altprogramdan geri dn : [etiket] RETURN : Yok

: TOSPC : Yok : Altprogramndan TOS 'daki adresle geri dner. Komut iki saat evrimi

rnek : RETURN Bu komut uygulandktan sonra PC' ye TOS deeri yerletirilir. Yazma bitlerini sola doru dndr : [etiket] RLF f,d : 0 f 127 ve d (0,1) : Tanm ksmnda ayrntlandrlmtr. :C

28-) RLF leler levi Status etkisi

Sz dizim kural

Tanm : f yazmacndaki bitleri bir bit sola doru yerletir. Bylece 0. bitin deeri 1. bite, 1. bitin deeri 2. bite, ....,6. bitin deeri 7. bite yerleir. Yazma 8 bitlik olduundan 7. bitin deeri status yazmacnn C bitine yerletirilir. Daha sonra C bitteki deer, f yazmacnn 0. bitine aktarlr. Bylece hibir bit bozulmadan sola doru kaym olur. d=0 ise, sonucu W ye, aksi durumda d=1 f ye tar. C biti f yazmacnn en st bilinin deerini tar.

Kayt f

rnek : RLF SOL,1 ;komuttan nce SOL=H'01', ve C=1 ise, komut alnca SOL=b'0000 0011' = 03h ve C=0 olur. RLF SOL,1 ;komut bir kez daha alnca, SOL=b'0000 0110' ve C=0 olur. 29-) RRF leler levi Status etkisi Tanm Yazma bitlerini birer bit saa aktar : [etiket] RRF f,d : 0 f 127 ve d (0,1) : Tanm ksmnda ayrntlandrlmtr. :C : f yazmacndaki bitleri bir bit saa doru yerletirir.
C Kayt f

Sz dizim kural

rnek : RRF SAG,1 ; komuttan nce SAG=H'02', ve C=0 ise, komut alnca ; SAG=b '0000 0001'=01h ve C=0 olur. RRF SAG,1 ; komut bir kez daha alnca, SAG=b '0000 0000' ve C=1 olur.

114

30-) SLEEP Standby (uyku) moduna gir Sz dizim kural ileler ilevi : [etiket] SLEEP : Yok : h'00' WDT, 0 WDT n blc sabiti (prescaler), 1TO ve 0PD Status etkisi Tanm : TO,PD : PD , g kesim biti temizlenir. TO , sre am biti 1 olur.WDT ve n

blc Sabit de sfrlanr. Osilatrn de durmasyla, ilemci uyuma oduna geer. PIC bu durumda ok az g harcar. Sadece Timer1 SLEEP modunda iken harici cp ile altrlabilir. rnek : Uyu SLEEP ;PIC bu durumda ok az g harcar. Arada bir kontrol ;gereken gvenlik ilerinde, ya da belirli srelerde ;yaplacak iler bittiinde PIC, uyuma moduna sokulur. 31-) SUBLW Bir say/sabitten W nin ieriini kar Sz dizim kural leler ilevi Status etkisi Tanm ye yklenir. rnek : SUBLW h'02' ;Komuttan nce W=h'01' ise, komuttan sonra W=01 h ve C=0 ;olur (sonu pozitif). W = 02 01 = 01. SUBLW h'01' ; kinci komut altnda W=h'00' ve C=0 ve Z=1 olur. ; (sonu pozitif). W = 01 01 = 00. SUBLW h'01' ;W=h02 olsun, 3.komutda altnda W=h'FF' ve C=1 olur ;(sonu negatif). W = 01 02 = FF ve C = 1. 32-) SUBWF f 'den W y kar Sz dizim kural leler ilevi Status etkisi Tanm : [etiket] SUBWF f,d : 0 f 127 ve d (1,0) : (f) - (W) (Hedef) : C, DC, Z : f yazmacnn ieriinden, W karlr (kiye tamamlama yntemiyle). d=0 : [etiket] SUBLW k : 0 k 255 : (k W) W : C, DC, Z : k dan akmlatr ierii karlr.(kiye tamamlama yntemiyle). Sonu W

ise sonu W ye, d=1 ise f yazmacna yklenir.


115

rnek : SUBWF f, 1 ; komuttan nce W=h'01' ve f=h'02' ise, komuttan sonra ; f=01h ve C=0 olur (sonu pozitif). SUBWF f, 0 ; ikinci komut altnda W=h'00' ve C=0, Z=1 olur ; (sonu pozitif). SUBWF f, 1 ; nc komut da altnda f=h'01've C=0 olur ; (sonu pozitif). 33-) SWAPF Yazma ieriinde 4 'llerin (digit) verini deitir Sz dizim kural ileler ilevi Status etkisi Tanm : [etiket] SWAP f,d : 0 f 127 ve d [0,1] : (f<3:0>) (Hedef<7:4>) ve (f<7:4>) (Hedef<3:0>) : Yok : f yazmacnn st drtl biti ile alt drt biti yer deitirirler. Sonu d=0 ise

W ye, d=1 ise f yazmacna yklenir. rnek : SWAPF CAPRAZ,1 ; komutundan nce CAPRAZ=h'03', W=h'02' ise, ; komuttan sonra CAPRAZ=h'30', W=h'02' olur. SWAPF CAPRAZ,0 ; komutundan nce CAPRAZ=h'03', W=h'02' ise, ; komutu tekrarlannca CAPRAZ=h'03', W=h'30' olur. 34-) XORLW Sz dizim kural leler ilevi Status etkisi Tanm W yazmacna yklenir. rnek : XORLW h'03' Say ile W nin ieriini XOR la : [etiket] XORLW : 0 k 255 : (W) XOR k (W) :Z : W nin ierii ile k literaline mantksal XOR ilemi uygulanr. Sonu k

Komutundan nce W=h'01' ise; komuttan uygulandktan sonra W=h'02' olur.

116

35-) XORWF Sz dizim kural ileler ilevi Status etkisi Tanm

Yazma ierii ile W nin ieriini XOR' la : [etiket] XORWF f,d : 0 f 127 ve d [0,1] : (W) XOR f (Hedef) :Z : W nin ierii ile f yazmacna mantksal XOR ilemi uygulanr. d=0 ise

sonu W yazmacna, d=1 ise f yazmacna yklenir. rnek : XORWF

f, 0

Komutundan nce f=h'0F', W=h'09' ise, komuttan sonra f=h'0F' ve W=h'06' olur.

G) MPLAB Program ve Genel zellikleri


MPLAB microchip firmas tarafndan gelitirilmi olan bir programdr. MPLAB, assembly kodlarn yazmak iin metin editr, MPASM derleyicisi ve yazdnz program simlasyon yaparak grselletirebildiimiz MPSIM simlatr gibi picsoftware iin gerekli olan her eyi zerinde bulundurur. Bizim iin nemli olan PIC e .hex dosyasn yklemektir. Ama yazdmz programn doru alp almadn, hatalarn grp dzeltmemizi salar. nk her PIC zerinde Flash bellek yoktur. Yani baz PICler bir kez programlanabilirler. Bu yzden yazdnz programn hatasz olmas gerekir. MPLAB programn www.microchip.com adresinde cretsiz olarak indirebilirsiniz.

6.3. Blm Kaynaklar


1. O. Altnbaak, 2001. Mikrodenetleyiciler ve PIC Programlama, Atla Yaynclk, stanbul. 2. O. Urhan, M.Kemal Gll, 2004. Her Ynyle PIC16F628, Birsen Yaynevi, stanbul. 3. N. Topalolu, S. Grgnolu,2003. Mikroilemciler ve Mikrodenetleyiciler, Sekin Yaynclk, Ankara. 4. Y. Bodur, 2001. Adm Adm PICmicro Programlama,nfogate. 5. . Akpolat, 2005.PIC Programlama, Pusula Yaynclk.

117

6.4. PIC PROGRAMLAMA A) Veri Transferi


PIC ierisinde veri transferi ilemini kaytlar yardmyla yaparz. W kayts, RAM bellek ierisindeki dosya kaytlarndan bamsz olarak bulunmakta ve veri transfer ilemi yapmada kullanlr. rnein; PORT B ierisinde var olan veriyi PORT A ierisine transfer etmek iin aadaki komutlar yazmak gerekir.

W Kayts

PORT B

PORT B

MOVF MOVWF

PORTB,W PORTA

; PortBnin ieriini W kaytsna ta ; W kaytsnn ieriini PortAya gnder

rnein; PortBye bal 8 adet LED bulunsun. Bu ledlerden ilk drt tanesini yakmak istersek aadaki komutlar yazlmaldr. H0F PORTB ; W kaytsna h0F ykle ;W kaytsnn ieriini PortBye gnderir.

MOVLW MOVWF

Burada W kaytsna gnderilen h 0F verisini binary karl b00001111 dir. Bu veriye gre PortBnin ilk 4 biti bal olan ledler yanar. Eer bir kaytnn ierisine h 00 bilgisi gnderilmek isteniyorsa onun yerine CLRF komutu kullanlr. W kaytsnn ierii silinmek isteniyorsa da CLRW komutu kullanlr. ; PortB nin ierii temizlenir. ; W kaytsnn ierii temizlenir.

CLRF CLRW rnek :

PORTB

PortAnn ularna bal olan butonlardan hangisi basl tutulursa PortBdeki o butona karlk gelen LEDi sndren program ve ak emas.

118

Bala

PIC16F877 tant

PortB k PortA giri

PortA'y oku

PortB'ye gnder

Son

PORTA PORTB STATUS TRISA TRISB

LIST EQU EQU EQU EQU EQU CLRF BSF CLRF MOVLW MOVWF BCF MOVF MOVWF

P=16F877 h 05 h 06 h 03 h 85 h 86 PORTB STATUS,5 TRISB hFF TRISA STATUS,5 PORTA,W PORTB DONGU

; PortBye bal ledleri sndr ; BANK1e ge ; PortBnin ularn k yap ; W kaytsna hFF i ykle ; PortAnn ularn giri yap ; BANK0a ge ; Portay oku, sonucu Wya yaz ; Butonlarn durumunu PortBde gster ; Sonsuz dng ; Programn sonu

BASLA

DONGU GOTO END

Duraklama komutu olmad iin programda sonsuz dng kullanlmtr. Sonsuz dng ierisine istenirse komut yazlabilir. Bu durumda reset tuuna baslana kadar yada PICn enerjisi kesilene kadar ayn komutlar tekrarlanr. Bir kayt ierisindeki herhangi bir biti test edilmek isteniyorsa BTFSC veya BTFSS komutlar kullanlr. Bu test sonucuna gre program ak istenilen komuta aktarlarak devam edilebilir.

119

rnek : PortBnin 0. bitine bal Ledi, A portunun 1. bitindeki butona baslnca yakan program.

Bala

PIC16F877 tant

PortA, bit1 0 m? Hayr

Evet

PortB'yi sil Tekrar test et PortB k PortA giri

PortB'nin 0.biti 1 yap

Son
LIST EQU EQU EQU EQU EQU CLRF BSF CLRF MOVLW MOVWF BCF TEST_PORTA BTFSC GOTO BSF DONGU GOTO END PORTA PORTB STATUS TRISA TRISB P=16F877 h 05 h 06 h 03 h 85 h 86 PORTB STATUS,5 TRISB h FF TRISA STATUS,5

; PortBye bal ledleri sndr ; BANK1e ge ; PORTBnin ularn k yap ; W kaytsna hFF ykle ; PortAnn ularn giri yap ; BANK0a ge

PORTA,1 ; A portunun 1. bitini test et TEST_PORTA; 0 deilse tekrar test et PORTB,0 ; B portunun 0. bitini 1 yap DONGU

rnek : A portunun 2. bitindeki butona basnca B portuna bal tm ledleri yakan program. PORTA PORTB STATUS TRISA TRISB LIST EQU EQU EQU EQU EQU CLRF BSF CLRF MOVLW P=16F877 h 05 h 06 h 03 h 85 h 86 PORTB STATUS,5 TRISB h FF

; PortBye bal ledleri sndr ; BANK1e ge ; PORTBnin ularn k yap ; W kaytsna hFF ykle
120

MOVWF BCF TEST_PORTA BTFSC GOTO MOVLW MOVWF DONGU GOTO END

TRISA STATUS,5

; PortAnn ularn giri yap ; BANK0a ge

PORTA,2 ; A portunun 2. bitini test et TEST_PORTA; 0 deilse tekrar test et h FF ; W kaytsna b 11111111 ykle PORTB ; W ieriini PortBye gnder. DONGU

rnek: PORTA nn 0. bitine bal butona basldnda B portuna bal ledlerin yanmasn, 1. bitine bal butona basldnda B portundaki ledleri sndren program.

Basla
lk_degerler: 2. adm

Hayr A0 Kontrol Evet Led'leri yak Hayr A1 kontrol Evet Ledleri sndr Son

LIST INCLUDE Org Goto Basla CLRF CLRF BSF BCF CLRF MOVLW MOVWF BCF A0_KONTROL

p=16F877 p16F877 0x00 Basla PORTA ; PORTA yazmacn temizle PORTB ; PORTB yazmacn temizle STATUS,5 ; Bank1 e ge OPTION_REG,NOT_RBPU TRISB ; TRISByi temizle H 03 ; A0 ve A1 giri butonlar bal TRISA STATUS,5

121

BTFSC GOTO MOVLW MOVWF A1_KONTROL BTFSC GOTO CLRF GOTO END

PORTA,0 A0_KONTROL H FF PORTB PORTA,1 A1_KONTROL PORTB A0_KONTROL

;Btn Ledleri yak ; tm k pinleri 1, ledleri yand

rnek: PIC16F877 PortB nin 4-7. bitlerine bal butonlar kullanarak; PortDye bal sekiz ledi aadaki yakan program yazn.
B4 baslrsa: B5 baslrsa: B6 baslrsa: B7 baslrsa: Yanan led Snen led
Balang ilemleri

Basla

B4 Kontrol Evet

Hayr

Kalp 1 gibi ledleri yak

B5 kontrol Evet

Hayr

Kalp 2 gibi ledleri yak

B6 kontrol Evet

Hayr

Kalp 3 gibi ledleri yak

B7 kontrol Evet

Hayr

Kalp 4 gibi ledleri yak

Son

122

KALIP1 KALIP2 KALIP3 KALIP4 #DEFINE #DEFINE #DEFINE #DEFINE

LIST INCLUDE EQU EQU EQU EQU B4 B5 B6 B7 ORG GOTO

p=16F877 p16F877 H C0 H 30 H 0C H 03 PORTB,4 PORTB,5 PORTB,6 PORTB,7 0X03 BASLA

; b 11000000 ; b 00110000 ; b 00001100 ; b 00000011 ; Buton Adlar

BASLA CLRF CLRF BSF BCF MOVLW MOVWF CLRF BCF ANA_PROGRAM B4_KONTROL BTFSC GOTO MOVLW MOVWF B5_KONTROL BTFSC GOTO MOVLW MOVWF B6_KONTROL BTFSC GOTO MOVLW MOVWF B7_KONTROL BTFSC GOTO MOVLW MOVWF GOTO END B) Dng Dzenlemek Program yazarken baz ilemlerin belirli sayda tekrarlanmas gerekebilir. Bu durumda kaytlardan biri saya olarak kullanlr. Daha sonra her ilem tekrarlandnda saya deeri bir azaltlr. Azaltma ilemini DECFSZ komutu ile yaplr. PORTB PORTD STATUS,RP0 OPTION_REG,7 F0 TRISB ; PortBnin 4-7 bitleri ynlendirildi. TRISD ; Portd k STATUS,RP0

B4 B5_Kontrol KALIP1 PORTD B5 B6_Kontrol KALIP2 PORTD B6 B7_Kontrol KALIP3 PORTD

; B4 butonuna basldm? ; hayr B5 butonunu kontrole git

; B5 butonuna basldm? ; hayr B6 butonunu kontrole git

; B6 butonuna basldm? ; hayr B7 butonunu kontrole git

B7 ; B7 butonuna basldm? B4_Kontrol ; hayr B4 butonunu kontrole git KALIP4 PORTD ANA_PROGRAM

123

TEKRAR DECFSZ GOTO BSF SAYAC,F TEKRAR PORTB,0

SAYAC=SAYAC-1

SAYAC=0 MI? Hayr TEKRAR ET

Evet

PORTB'nin 0 bitini 1 yap

rnek : A portunun 1. bitine bal butona 10 defa basldktan sonra B portunun 0. bitine bal olan ledleri yakan program ve ak emas

Bala PIC'i tanmla Hayr PortB'yi sil PortA, bit1 0 m?

PortB'yi k PortA'y giri

Evet NOPx15 Sayac=Sayac-1

W=d'10' Hayr Sayac=W Sayac=0 m?

Evet PortB bit0=1 SON


124

SAYAC

LIST INCLUDE EQU CLRF BSF CLRF MOVLW MOVWF BCF MOVLW MOVWF

p=16F877 p16F877 h 20 PORTB STATUS,5 TRISB h FF TRISA STATUS,5 d10 SAYAC PORTA,1 TEST

; Sayac isimli deiken tanmlanmas ; PortBye bal ledleri sndr ; Bank1 e ge ; PortBnin ularn k yap. ; W kaytsna h FF yklenir ; PortAnn ularn giri yap ; Bank0 a ge ; W kaytsna d10 ykle ; SAYAC deikenine W ta ; PortAnn 1 biti 0 m? ; Deilse, TEST isimli etikete geri dn ; Gecikme zaman iin

BASLA

TEST BTFSC GOTO NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP DECFSZ GOTO BSF END

SAYAC,F TEST PORTB,0

; SAYAC deikenin ierii, 0 m? ; Deilse ;PORTBnin 0. bitini 1 yap

Butona basma says 10a ulamadan PortBnin 0.bitindeki LEDin yand grlmektedir. Burada pull-up olay gereklemitir. Yani butona baslmadnda +5 voltta basldnda ise 0 V olmaktadr. Butona basma ve ekme esnasnda bir ark oluur.
lk basl +5v 0V Butona basnca meydana gelen ark kinci basl

ekilde grld gibi butona basld zaman gerilim dalgalanmalar yaanacaktr. PIC komutlarnn icra sreleri genelde 1 komut sayklnda gereklemektedir. 15 tane NOP komutu sadece 15 cplik bir zaman gecikmesi salamaktadr. Bu sre hesapland zaman elimizi butondan ekmemizden daha ksa bir sreye denk gelmektedir. Her defasnda 0 V seviyesine inite butona
125

arka arkaya defalarca baslm gibi ilem gstererek DECFSZ SAYAC,F komutuyla SAYAC kaytsnn deeri her defasnda 1 olacaktr. Butonun meydana getirecei ilk 0 seviyesine dten sonraki 0 durumlarn eleyip tekrar 5V durumuna kadar belirli bir gecikme oluturmak komutu arkn etkilerini nlemekte yeterli olarak grlmedii takdirde saysn gerekecektir. Bu gecikmeyi NOP komutu kullanlarak oluturulur. Programda kullandmz 15 adet NOP fazlalatrabiliriz. rnek: A portunun 1. bitindeki butona bastka B portundaki ledleri 9dan 0a kadar azaltarak yakan program ve ak emas.

Ba la PIC'i tanmla Hayr PortB'yi sil PortA, bit1 0 m?

PortB'yi k PortA'y giri

Evet SAYAC2= h'FF'

W=h '0A' Sayac1=W

NOPx3

Sayac2=Sayac2-1 Hayr Sayac2=0 m?

Evet Sayac1=Sayac1-1

Evet

Sayac2=0 m?

Hayr W=Sayac1 PortB=W

126

LIST SAYAC1 SAYAC2

P16F877 INCLUDE EQU EQU CLRF BSF CLRF MOVLW MOVWF BCF MOVLW MOVWF

P16F877.INC h 20 ;SAYAC1 e adres atand h 21 ;SAYAC2 e adres atand PORTB ; PortB ye bal ledleri sndr STATUS,5 ; Bank1e ge TRISB ; PortBnin ularn k yap h FF ; W kaytsna h FF ykle TRISA ; Portann ularn giri yap STATUS,5 ;Bank0a ge h 0A SAYAC1 PORTA,1 TEST h FF SAYAC2 ; W kaytsna h 0A saysn ykle ; W ieriini SAYAC1e gnder ; PortAnn 1. biti 0 m? ; deilsei TEST isimli etikete geri dn ; Evet ise, Wnn ieriini h FF ykle ; W ieriini SAYAC2 ye ata. ; gecikme ilemi SAYAC2,F GECIKME SAYAC1,F YAK BASLA ; SAYAC2nin ieriini 0 olana kadar azalt

BASLA

TEST BTFSC GOTO MOVLW MOVWF GECKME NOP NOP NOP DECFSZ GOTO AZALT DECFSZ GOTO GOTO YAK MOVF MOVWF GOTO END SAYAC1,W ; SAYAC1in ieriini Wya aktar. PORTB ; Wn ieriini PortBye aktar TEST ; TEST isimli etikete geri dn ; ;SAYAC1=0 deilse,YAK isimli etikete geri dn ; SAYAC1=0 ise, BASLA isimli etikete geri dn

Program yazarken baz ilerin belirli saylarda tekrarlanmas istenebilir. Bu durumda da bir kayt saya olarak kullanlr ve sayacn deeri her defasnda 1 arttrlr. Arttrma ilemi INCF komutu ile yaplr. Saya belirlene deer ulat zaman program ak baka komuta geer. CLRF
SAYAC=h '00'

SAYAC

TEKRAR INCF SAYAC,F h 07 SAYAC,W STATUS,2 TEKRAR

SAYAC=SAYAC+1

MOVLW SUBWF BTFSS

W=h'07'

W=SAYAC-W SUBWF Hayr STATUS 2.biti 1 mi? Evet SON

GOTO DONGU GOTO END

DONGU

127

C) Zaman Gecikmesi ve Alt Programlar


Baz ilemlerin yaplmas srasnda belirli bir zaman hibir ey yapmadan beklenmesi gerekir. Zaman geciktirme ilemlerini yazlm dnglerini kullanarak yapabildiimiz gibi, donanmn bize sunduu zel geciktirmeler yapabiliriz. Biz zaman geciktirme dngsnde, gecikme zamann tespit etmek iin komutlarn evrim sreleri dikkate alnr. RC osilatr kullanlan PIC devrelerinde bir komutun evrim sresini hassas olarak hesaplamak kolay deildir. Ancak kristal veya seramik osilatr kullanlan devrelerde hassas gecikme dngleri yapabiliriz. PICin geciktirilmesi iin ilk bata kullanclar NOP komutlarn kullanmay tercih edebilirler. rnein NOP komutu ile 0,1 milisaniyelik bir gecikme yaratmak iin ne kadar NOP komutu gerekir. (Kristal Osilatr 20 Mhz) PIC16F877 iin Bir komutun evrim sresi = 40.05sn = 0.2 sn Ayn gecikme iin NOP komut says ise (0.1103)/(0.2) = 500 adettir. Bu sayda NOP komutunun ardarda yazlmas bellein gereksiz biimde dolmasna yol aar. Bu yntem iyi bir programlama teknii olarak da nerilmez. Bunun yerine daha az sayda komut kullanarak, istenilen gecikmeyi salayabiliriz. rnek: PIC ile yaplan devrede alan ledleri 39 milisaniye arallarla yakp sndren program ve ak emas. (PORTD deki RD3RD0 bal olan ledleri)

Bala Balang tanmlar

lk deerleri ar

Led yak sndr ar

Gecikmeyi ar Son

128

LIST SAYAC1 SAYAC2

P16F877 INCLUDE P16F877.INC EQU 0x20 EQU 0x21 ORG 0x003 GOTO BASLA ORG 0x004

DUR GOTO DUR ILK_DEGERLER CLRF PORTD ; PortD yazmann temizle BCF STATUS,6 ; Bank1e ge BSF STATUS,5 ; Bank1e ge CLRF TRISD ; D Portundaki ledler k seilir BCF STATUS,5 ; Bank0a ge RETURN TEKRAR_YAK CLRF PORTD ; Ledleri sndr CALL GECIKME ; Gecikme alt programn arr MOVLW b00001111 ; W kaytsna b00001111 deeri yklendi MOVWF PORTD ; W ierii PortD ye yklendi RETURN GECKME MOVLW h FF MOVWF SAYAC1 ; SAYAC1= d255 DONGU11 MOVLW hFF MOVWF SAYAC2 ; SAYAC2= d255 DONGU12 DECFSZ SAYAC2,F GOTO DONGU12 DECFSZ SAYAC1,F GOTO DONGU11 RETURN BASLA CALL ILK_DEGERLER DONGU CALL TEKRAR_YAK CALL GECKME GOTO DONGU END

Gecikme programnda i ie iki dng kullanlmtr. Her iki dng kullanldnda oluan toplam komut evrim srelerini hesaplarsak;
KOMUTLAR GECKME MOVLW MOVWF DONGU11 MOVLW MOVWF DONGU12 DECFSZ SAYAC2,F GOTO DONGU12 DECFSZ SAYAC1,F GOTO DONGU11 RETURN 1xMxN 2xMxN 1xM 2xM 2 hFF SAYAC2 ; d255=N 1xM 1xM h FF SAYAC1 KOMUT EVRM SRES ; d255=M 1 1

M ve N yerine 255 yerletirilirse; 196.608 x (0.05 x 4)sn = 39.321 sn 39 msn

Toplam 196.608 evrim sresi

129

Gecikme srelerini sayalara yklediimiz M ve N sabitlerini deitirerek ayarlamak mmkndr. rnein gecikme sresinin 10 milisn olmas iin d ve i dng sayalarnn deerlerinin ne olmas gerektiini bulalm: 10.000/(0.05 x 4) = 3xNxN N=129

bu deer h81 deerine karlk gelir. Bylece 10 milisn gecikme elde edilir. rnek: PortAnn 1. ucuna bal butona 10 defa basldktan sonra PortB deki tm ledleri yakan program. LIST P16F877 INCLUDE P16F877.INC SAYAC1 EQU h 20 SAYAC2 EQU h 21 MEM EQU h 22 CLRF PORTB ; PortByi sil BSF STATUS,5 ; Bank1e ge CLRF TRISB ; PortBnin ular k BSF TRISA,1 ; Portann 1. biti giri CLRF MEM ; MEM kaytsn temizle TEKRAR BTFSC PORTA,1 ; PortAnn 1.biti 0 m? GOTO TEKRAR ; Hayr tekrar test et INCF MEM ; Evet, MEM=MEM+1 MOVF MEM,W ; W=MEM SUBLW d 10 ; W= d 10-W BTFSC STATUS,2 ; STATUSun 2.biti 0 m? GOTO YAK ; Hayr, Z=1 CALL GECKME ; Gecikme altprogramn ar GOTO TEKRAR ; YAK MOMVLW h FF ; W= h FF MOVWF PORTB ; PortBdeki tm ledleri yak DONGU GOTO DONGU ; ;***************GECKME ALTPROGRAMI*********** GECIKME MOVLW h FF MOVWF SAYAC1 DONGU1 MOVLW h FF MOVWF SAYAC2 DONGU2 DECFSZ SAYAC2,F GOTO DONGU2 DECFSZ SAYAC1,F GOTO DONGU1 RETURN END

130

D) Bit Kaydrma
Bit kaydrma komutlar RLF, RRF, COMF ve SWAPF komutlardr. B komutlar kullanlarak farkl uygulamalar yaplabilmektedir. rnek : PortBye bal 8 led zerindeki bir ledin yann LED0dan LED7ye doru kaydran program ve ak emas.
7 6 5 4 3 2 1 0

Bala

PIC16F877 tant PORTB k

PORTB= h'01'

CALL GECKME

RLF PORTB

STATUS, 0.bit 1 mi? Evet SON

Hayr

SAYAC1 SAYAC2

LIST INCLUDE EQU EQU CLRF BCF BSF CLRF BCF MOVLW MOVWF

P16F877 P16F877.INC h 20 ;SAYAC1 e adres atand h 21 ;SAYAC2 e adres atand PORTB ; PortB ye bal ledleri sndr STATUS,0 ; Carry flag sfrla STATUS,5 ; Bank1e ge TRISB ; PortBnin ularn k yap STATUS,5 ;Bank0a ge h 01 PORTB GECIKME PORTB,F STATUS,0 ; b 00000001 saysn Wya ykle ; W kaytsnn ieriini PortBye ykle ; Gecikme yap ; PortBdeki veriyi sola kaydr ; Carry flag 1 mi?
131

TEKRAR CALL RLF BTFSS

GOTO DONGU GOTO GECKME MOVLW MOVWF DONGU11 MOVLW MOVWF DONGU12 DECFSZ GOTO DECFSZ GOTO RETURN END

TEKRAR DONGU h FF SAYAC1 hFF SAYAC2 SAYAC2,F DONGU12 SAYAC1,F DONGU11

; Hayr ; ; SAYAC1= d255 ; SAYAC2= d255

rnek : PortBye bal olan 8 LED zerinde bir LEDin yann saa-sola kaydran ve bu ilemi srekli tekrarlayan program ve ak emas.(Karaimek devresi)

Bala

PIC16F877 tant PORTB k

PORTB= h'01' CALL GECKME RLF PORTB

Hayr STATUS(0)=1 Evet CALL GECKME RRF PORTB

Evet STATUS(0)=1

Hayr

132

SAYAC1 SAYAC2

LIST INCLUDE EQU EQU CLRF BCF BSF CLRF BCF MOVLW MOVWF

P16F877 P16F877.INC h 20 ;SAYAC1 e adres atand h 21 ;SAYAC2 e adres atand PORTB ; PortB ye bal ledleri sndr STATUS,0 ; Carry flag sfrla STATUS,5 ; Bank1e ge TRISB ; PortBnin ularn k yap STATUS,5 ;Bank0a ge h 01 PORTB GECIKME PORTB,F STATUS,0 SOL GECIKME PORTB,F STATUS,0 SAG SOL h FF SAYAC1 hFF SAYAC2 ; b 00000001 saysn Wya ykle ; W kaytsnn ieriini PortBye ykle ; Gecikme yap ; PortBdeki veriyi sola kaydr ; Carry flag 1 mi? ; ; Gecikme yap ; PortBdeki veriyi saa kaydr ; Carry flag 1 mi? ; ; ; SAYAC1= d255 ; SAYAC2= d255

SOL CALL RLF BTFSS GOTO SAG CALL RRF BTFSS GOTO GOTO GECKME MOVLW MOVWF DONGU1 MOVLW MOVWF DONGU2 DECFSZ SAYAC2,F GOTO DONGU2 DECFSZ SAYAC1,F GOTO DONGU1 RETURN END

rnek : PortBdeki LEDleri dnml olarak ilk nce ilk drt biti, daha sonrada son drt bitteki ledleri yakan program ve ak emas.

Bala PIC16F877 tant PORTB k PORTB= h'0F' COMF PORTB CALL GECKME

133

SAYAC1 SAYAC2

LIST INCLUDE EQU EQU CLRF BSF CLRF BCF MOVLW MOVWF COMF CALL GOTO

P16F877 P16F877.INC h 20 ;SAYAC1 e adres atand h 21 ;SAYAC2 e adres atand PORTB ; PortB ye bal ledleri sndr STATUS,5 ; Bank1e ge TRISB ; PortBnin ularn k yap STATUS,5 ;Bank0a ge h 0F ; b 00001111 saysn Wya ykle PORTB ; W kaytsnn ieriini PortBye ykle PORTB,F GECIKME TERSLE h FF SAYAC1 hFF SAYAC2 SAYAC2,F DONGU2 SAYAC1,F DONGU1 ; PortBdeki veriyi tersle ; Gecikme yap

TERSLE

GECKME MOVLW MOVWF DONGU1 MOVLW MOVWF DONGU2 DECFSZ GOTO DECFSZ GOTO RETURN END ; SAYAC2= d255 ; SAYAC1= d255

E) evrim Tablolar
evrim tablolar bir kodu baka bir koda evirmek iin kullanlrlar. rnein PORTBye baladmz 7 segment displayin zerindeki heksadesimal karakterleri grmek istiyoruz. evrim tablosuna yerletirdiimiz heksadesimal koda karlk gelen uygun kodu seip, ka gndermemiz gerekir. evrilecek kod. Hex. say h 00 h 01 h 02 h 03 h 04 h 05 h 06 h 07 h 08 h 09 h 0A h 0B h 0C h 0D h 0E h 0F Nokta evrilen 7 segment kodu (PORTBwye) h 3F h 06 h 5B h 4F h 66 h 6D h 7D h 07 h 7F h 6F h 77 h 7C h 39 h 5E h 79 h 71 h 80 7 segment ularndaki veri 00111111 00000110 01011011 01001111 01100110 01101101 01111101 00000111 01111111 01101111 01110111 01111100 00111001 01011110 01111001 01110001 10000000 7 segment te grlecek say 0 1 2 3 4 5 6 7 8 9 A B C D E F .
134

rnek : 7 segmentli display zerinde 5 saysn gsteren program. LIST INCLUDE CLRF BSF CLRF BCF BASLA MOVLW CALL MOVWF DONGU GOTO TABLO ADDWF RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW END PCL,F h 3F h 06 h 5B h 4F h 66 h 6D h 7D h 07 h 7F h 6F h 77 h 7C h 39 h 5E h 79 h 71 h 80 ; PCL W( h 05) DONGU h 05 TABLO PORTB P16F877 P16F877.INC PORTB ; PortB ye bal ledleri sndr STATUS,5 ; Bank1e ge TRISB ; PortBnin ularn k yap STATUS,5 ;Bank0a ge

; W h 6D

rnek : PORTBnin ularna bal 7 segment displayde 0~F arasnda saydran program. LIST INCLUDE EQU EQU EQU CLRF BSF CLRF BCF MOVLW MOVWF DONGU MOVF ANDLW CALL MOVWF INCF SAYAC,W B 00001111 CEV_TAB PORTB SAYAC,F ; W SAYAC ; Wnin st drt bitini sfrla ; evrim tablosunu ar ; kodu 7 segmentte gster ; SAYAC SAYAC+1
135

SAYAC1 SAYAC2 SAYAC

P16F877 P16F877.INC h 20 ;SAYAC1 e adres atand h 21 ;SAYAC2 e adres atand h 22 PORTB ; PortB ye bal ledleri sndr STATUS,5 ; Bank1e ge TRISB ; PortBnin ularn k yap STATUS,5 ;Bank0a ge h 00 SAYAC ; b 00000000 saysn Wya ykle ; W kaytsnn ieriini SAYACa ykle

BASLA

CALL GOTO CEV_TAB ADDWF RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW GECKME MOVLW MOVWF DONGU1 MOVLW MOVWF DONGU2 DECFSZ GOTO DECFSZ GOTO RETURN END

GECIKME DONGU PCL,F h 3F h 06 h 5B h 4F h 66 h 6D h 7D h 07 h 7F h 6F h 77 h 7C h 39 h 5E h 79 h 71 h FF SAYAC1 hFF SAYAC2 SAYAC2,F DONGU2 SAYAC1,F DONGU1

; ; PCL W( h 05) ;0 ;1 ;2 ;3 ;4 ;5 ;6 ;7 ;8 ;9 ;A ;B ;C ;D ;E ;F

F) Kesmeler
PICin port girilerinden veya donanm ierisindeki bir saycdan gelen sinyal nedeniyle belleinde almakta olan programn kesilmesi olay kesme (interrupts) olarak adlandrlr. Program kesildii andan hemen sonra ana program kald yerden itibaren tekrar almasna devam eder. Kesme ilemi ana programn almasn sadece duraklatr. Ana programn alma ilevini devam ettirmesini engellemez.

Kesme Alt program

Ana Program Komutlar


ekil 9.1. Kesme programnn almas

136

Kesme ile alt programn kartrlmams gerekir. lk bakta arada fark yokmu gibi olsa da farkldr. Normal alt program arma CALL komutu ile yaplr. Ancak kesme alt programlarnn arlmas ise donanmda oluan deiiklikler sonucunda olur. Bir kesme meydana geldiinde o anda almakta olan komut almasn tamamlar. Daha sonra program PIC program belleinin h 0004 adresine atlar ve bu adresteki komutu altrmaya balar. PIC kesme alt program altktan sonra ana program hangi adrese geri gideceini yna kaydeder. Kesme alt programndan ana programa dn komutu olarak RETFIE komutu kullanlr.

EEIE EEIF PSPIE PSPIF ADIE ADIF RCIE RCIF TXIE TXIF SSPIE SSPIF CCP1IE CCP1IF TMR2IE TMR2IF TMR1IE TMR1IF CCP2IE CCP2IF BCLIE BCLIF TOIE TOIF INTE INTF RBIE RBIF PEIE GIE BEKLEME MODU KESME

Device PIC16F876873 PIC16F877874

TOIF + +

INTF + +

RBIF + +

PSPIF +

ADIF + +

RCIF + +

TXIF + +

SSPIF + +

CCP1IF + +

TMR2IF + +

TMR1IF + +

EEIF + +

BCLIF + +

CCP2IF + +

Bir kesme olay meydana geldiinde; Kesme olay meydana geldiinde yn(stack) kaytsnn olduu adrese ( h 23F) atlanr. Ana programn kald adres yna kaydedilir. h 04 adresindeki komut altrlr. Kesme alt programnn olduu adrese atlanr. Kesme alt programn altrlr. Yna geri dnlr. Ana programn kald yerin adresi alnr. Ana programn almasna devam edilir.

137

Kesme kullanlmad zaman ana program, program belleinin h 0000 adresinden itibaren h0004 adresine doru herhangi bir karkla sebep olmadan alr. Kesme kullanlacaksa programc tarafndan baka bir alma sras dzenlemesi gerekecektir.
Reset vektr bu adresi gsterir Kesme vektr bu adresi gsterir

h'000'

h'001'

h'002'

h'003'

h'004'

h'005' Kesme alt programn ilk komutunun yerletii bellek hcresi

Ana programn ilk komutunun yerletii bellek hcresi

ekil . Kesme vektrn dzenlenmesi Programn dzenlenmesi ise u ekilde olmaldr. ORG h 000 GOTO BASLA ; Ana program balangc ORG h 004 GOTO KESME_PROG ;kesme alt program balangc BASLA Ana program komutlar KESME_PROG Kesme alt program komutlar RETFIE Bir kesme olutuu zaman kesme alt program almadan nce gecikme meydana gelir. Bu gecikme sresi 3 yada 4 komut saykl sresindedir. Zamanlamann ok nemli olduu uygulamalarda bu zaman gecikmesi dikkate alnmaldr. Kesme olutuunda, kesme altprogramna saplr. Kesmenin olutuu srada nce ilenmekte olan komut tamamlanr. Komut adresi ayn altprogramlardaki gibi ynn tepesine yerletirilir. Bu adresteki GOTO komutu ise kesme yordamna sapmay salar. Kesme altprogramnn komutlar ilenir ve yna konmu olan adres, program sayacna aktarlarak, kesme olutuu srada ilenen komutun adresi bulunur. Bundan sonra program sayacnn deeri bir arttrlr ve program kald yerden devam eder.

138

Kesme kullanlrken; PCL, Status ve W yazmalarnn iindeki deerleri koruma ii de programlaycya braklmtr. Bu yazmalar korumak iin PIC veri sayfalarnda aadaki komutlar kullanmak yeterlidir. MOVWF SWAPF CLRF MOVWF MOVF MOVWF CLRF . Komutlar . MOVF SWAPF MOVF SWAPF SWAPF W_TEMP STATUS,W STATUS STATUS_TEMP PCLATH,W PCLATH_TEMP PCLATH ; W geici deikene kopyala ; Statusu SWAP ile Wye ykle ; IRP, RP1 ve RP0 temizle ; Statusu Bank0da geici deikene ykle ; ; Geici PCLATH W yazmacna ykle ; PCLATH temizle

PCLATH_TEMP,W STATUS_TEMP,W STATUS W_TEMP,F W_TEMP,W

; ; STATUS_TEMPi Wya ykle ; W yazmacn Statusa aktar ; W_TEMPe SWAP uygula ; W_TEMPe 2. kez SWAP uygula

rnek : RB0/ INT ucundan girilen bir sinyal ile kesme oluturmaya alnz.
+5 V DC

10k 10k RA0 RB0/INT

A1

INT

RB1 RB2 470K LED2

470K LED1

ekilde grld gibi bu programn amac PORTA nn 0.bitine bal olan butonun basl olup olmad gsteren basit bir programdr. RB0/INT ucundan bir sinyal girerek kesme oluturmak iin RB0 ucuna bir buton balanmtr. INT butonuna baslnca kesme oluur ve kesme alt program alarak LED2 in yanma durumunda deiiklik grlr.

139

Bala

PIC16F877 tan t PortA giri PortB 0.biti giri dier ular k

RB0/INT ucundan den kenar alglamay sala

PortB'deki Ledleri sndr

INTF bayra n s frla

Global kesmeleri geerli yap INT harici kesmesini geerli yap

Test

PortA'n n 0. biti 1 mi? Hay r GOTO SONDUR_B1

Evet

PortB=h '01' LED1 yanar GOTO TEST

PortB=h '00'

GOTO TEST LED1 sner

INT_ALT_PROG LED2'nin yanmasn deitir

RETFIE

140

LIST INCLUDE ORG GOTO ORG GOTO BASLA BSF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF BCF CLRF BCF BSF BSF TEST

P16F877 P16F877.INC h 000 BASLA h 004 INT_ALT_PROG STATUS,5 ; bank1 e ge h FF ; Wh FF TRISA ; PortA giri b 00000001 ; Wh 01 TRISB ; PortB 0. bit giri b 10111111 ; W b 10111111 den kenar OPTION_REG; W y Option kaytsna ykle STATUS,5 ; Bank0 a ge PORTB ; PortByi sil INTCON,1 ; INTF bayran sil, kesmeyi hazrla INTCON,7 ; Global kesmeyi aktif yap INTCON,4 ; RB0/INT kesmesini geerli yap

BTFSC PORTA,0 ; PortAnn 1. bitini test et GOTO SONDUR_LED1 YAK_LED1 BSF GOTO SONDUR_LED1 BCF GOTO TEST INT_ALT_PROG BCF MOVLW XORWF RETFIE END PORTB,1 TEST PORTB,1 ; PortBnin 1. bitini 1 yap ; PortBnin 1. bitini 0 yap ; INTF bayran sil ; terslenecek olan biti Wya ykle ; RB2 yi tersle ; Kesme alt programndan dn.

INTCON,1 b 00000100 PORTB,F

RB0 ucundan girilen sinyalin den kenarnda kesmenin olumas programda MOVLW MOVWF h 10111111 OPTION_REG

komutlar kullanlmtr. INTCON kaytsnn 7 biti GIE bayrann bulunduu bittir. Burada tm kesme ilemleri aktif duruma getirilmitir. Bu kaytnn 4. biti INTE bayrann bulunduu bittir ve harici kesmeyi aktif yapmay salar. 1. bit ise harici kesme bayradr. 0 ise kesme var 1 ise kesme yoktur. PICde yazlan programlar mikrodenetleyicinin ilem yapma gc artmaktadr.

G) Zamanlayclar
PIC16F877 ailesinde Timer0, Timer1, Timer2 ve WDT adlar verilen 4 tip zamanlayc bulunmaktadr. Timer0 d olaylarn saylmasnda ve istenen sayda d olay meydana geldiinde, kesme oluturmakta kullanlr. inde PIC in kendi hzndan daha hzl, 50Mhz e kadar varan hzlara uyum salayp haberleebilecek nblcler bulunur. Timer0 istenirse kendi i kristal saatinide kullanabilir. Timer0 temel zellikleri;
141

8 bitliktir. Herhangi bir anda sfrlanabilir. zerine yazlabilir veya okunabilir. Programlanabilir frekans nblc deeri kullanlabilir. indeki veya dndaki devrede bulunan osilatr saatleri kullanabilir. D sinyallerle den veya ykselen kenar tetiklenmesini yapabilir. Sayac hep arttrarak sayma ilemi yapar. Timer0 ana program veya kesme alt program alrken saycsn durdurmaz Uyuma modunda kullanlmaz Timer0 sayarak h FF e geldiinde, INTCON kesme yazmacnn 2. biti uyar bayran b 1 yapar. Bu uyar biti kontrol edilerek zaman am olup olmad anlalr. Programda herhangi bir kesme olutuunda , o anda almakta olan komut ilenir ve H004 adresine sapma gerekleir. H 004 adresi kesme adresi olarak tanmlanr. Bu adreste bulunan komut kesme alt programn altracak olan GOTO komutudur. PIC kesme alt programnn sonunda RETFIE komutuna geldii zaman ana programda son ilenen komutun adresi yndan karlr. karlan bu adres program sayacna yklenir. Bundan sonra program sayac normal almasna devam ederek deerini bir arttrarak ana program komutlarn altrmaya devam eder. rnek: PortBnin 0. bitine bal LEDi flash yaptran program.
Basla

PIC 16F877 tant PortB k

WDT'yi sil

GECIKME

TMR0 kur ve frekans blme saysn ata PORTB yi sil

TMR0 5. biti 1 mi?

Evet

Hayr LED'i yak RETURN GECIKME LED'i sndr GECIKME

142

LIST INCLUDE BSF CLRF BASLA CLRWDT MOVLW MOVWF BCF CLRF YAK BSF CALL SONDUR BCF CALL GOTO GECIKME CLRF TEST_BIT BTFSS GOTO RETURN END

PIC16F877 pic16f877.inc STATUS,5 ; Bank1e ge TRISB ; PORTBnin tm ular k ; Prescaler atama ilemini hazrla b 11010111 ; TMR0 yeni prescaler deerini ve sinyal kayna se OPTION_REG; OPTION registerine yaz STATUS,5 ; Bank0a ge PORTB ; PORTBnin tm klar temizle PORTB,0 GECIKME PORTB,0 GECIKME YAK TMR0 TMR0,5 TEST_BIT ; LEDi yak ; GECIKME alt programn ar ; LEDi sndr ; GECIKME alt programn ar ; yakp-sndrmeye devam et ; TMR0 h 00 dan saymaya bala ; TMR0n 5. bitini test et ; Hayr 5. biti tekrar test et.

PortB pull-up'lar geersiz (kullanlmyor) Harici kesme ykselen kenar (kullanlmyor) TMR0 sinyal kayna dahili komut saykl

OPTION KAYITISI

1 1 0 1 0 1 1 1
prescaler=b'111' TMR0 oran=1/256

Frekans blme deeri T MR0'a atanr TMR0'n say artmas harici sinyalin (RA4/T OCKI) den kenarnda (kullanlmyor)

TMR0 kaytsnn tamam okunabilir bir kaytdr. TMR0n 5. biti 1 olduunda ulalan say 32 dir. Yani burada kullanlan sayc 0dan 32ye kadar saydrlmaktadr. TMR0 ierisindeki saylar TMR0 oran 1/256 olduu iin 256 komut sayklnda bir defa artacaktr. TMR0, 32 ye kadar sayacandan 32ye kadar sayma sresi; 256S x 32 =8192S 8.2 msn (4 MHz kristal osilatr kullanld dnlrse)

143

You might also like