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

Giri/k

Bellek

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 altndan,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 firma
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.

CPU

Ana Bellek

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

op-code

0022
0023

4F
5F

0024

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,

MCROCONTROLLER)

bir

bilgisayar ierisinde bulunmas gereken temel bileenlerden Hafza, I/O nitesinin tek bir
chip(yonga) zerinde retilmi biimine denir.

PIC
M ikrodenetleyicisi

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

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

CPU
(Genel amal
Mikroilemci)

RAM

Veri yolu

ROM

G/
Portu

Timer

Seri,
Paralel,
port

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

Hafza
RAM
EPROM
EEPROM
ADRES

CPU

ADRES

4 bit
8 bit
16 bit
32 bit

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

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 oluturan
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

VER YOLU BADA TIRMA


BRM (BIU)
Segment
kaydedicileri
CS

BH

BL

CH

CL

DS

DL

SS

DH
SI

ES

DI

IP

BP
SP

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.

Komut n bellei
8KB

Dallanma
tahmini

Algetir tamponu
Komut kod zc

veri
yolu
32 bit

Veri Yolu
Badatrma
Birimi

64 bit

Tamsay
ALU-U

adres
yolu

Tamsay
ALU-V

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

Adres ve
Kontrol

BELLEK
Veri

G/
Birimi

Komut

KONTROL
BRM

ALU
Durum Bilgisi

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

Komut
Bellei

Adres ve
Kontrol

Komut
KONTROL
BRM

ALU
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

Komut
n bellei

n bellek

Komut ve Veri yolu

Veri n bellei

Veri yolu

Donanm Kontrol Birimi

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

CISC (Microprogrammed Control Unit)

Hzl

Nispeten yava

Ucuz

Pahal

Yeniden dizayn zor

Esnek

Daha az komut (instruction)

Daha fazla komut (instruction)

Daha fazla saklayc bellek (register)

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

analog
veri
ADC

dijital
veri

DAC

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?
P:
Yolcu
kapasitesi
101

R:
Uu menzili
(km)
1000

S:
Uu hz
(km/saat)
1000

(P*S)
Yolcu gnderme hz

Boeing 777

375

7400

1000

375000

Boeing 747

470

6650

1000

460600

BAC/Sud Concorde

132

6400

2200

290400

Douglas DC-8-50

146

14000

880

128480

Uak
Boeing 737-100

101000

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

birim srede dierinden daha ok i bitirebildiini

kastederiz.

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

bilgisayarn toplam i bitirme

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.

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

Saniye

Mili-saniye

Mikro-saniye

Nano-saniye

Ksaltmas

Ms

ns

Saniye edeeri

0.001

0.000 001

0.000 000 001

Frekans Birimleri

Tablo 4.3. Frekans birimleri


Kilo- Hertz
Mega- Hertz

Hertz

Ksaltmas
Saniyedeki dn

Giga- Hertz

Hz

KHz

MHz

GHz

1000

1 000 000

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

Yrtme Sresi =

Komut says CPI


Saat hz

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

A15
Clock

reset
IRQ
NM I
VM A
R/W
halt

Komut
dekoder
ve
kontrol
nitesi

BA

A8

A7

A0

Adres tamponu H

Adres tamponu L

Program sayac H

Program sayac L

Yn gsterge. H

Yn gsterge. L

ndeks kay ts H

ndeks kay ts L

128 RAM/32stb

B
komut
kayts

A
CCR

Data Bus
D7

ALU

D0

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

IRQ

FFF9

IRQ

FFFA

SWI

FFFB
FFFC

SWI
NM I

L
H

FFFD

NM I

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
adres hatlar

EPROM seer
ekil-5.5. CPU adres hatlarnn dalm.

40

seme ucu A15


4 M hz kristal
osilatr

adres 13 bit

2764
8KB EPROM

data 8 bit

6802
1M hz CPU

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

Veri Alan

Aklayc Bilgi

Etiket Alan
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

Operasyonel kod

Makine dili

LDA A 60H

96
60
9B
61
97
62

1001 0110
0110 0000
1001 1011
0110 0001
1001 0111
0110 0010

ADD A 61H
STA A 62H

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 :

CPU

Assembly
op-code
yapt i
=================================
LDA A #$25

86 25

A = 25H

LDX #$1000

CE 10 00

X = 1000H

LDA A #45

86 45

A = 45

PC

25

86
25
Program
Hafzas

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 :

CPU
A

Assembly
op-code
yapt i
=================================
LDA A $05,X

A6 05

A = [X+05]

40
2105

X+05
210A

40

PC

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 :

CPU
A

Assembly
op-code
yapt i
=================================
LDA A $70

96 70

A = [0070]

LDX $70

DE 70

X = [0070,0071]

40

0070

40

PC

96
70
Program
Hafzas

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 :

CPU
A

Assembly
op-code
yapt i
=================================
LDA A $45

96 45

A = [0045]

LDA A $0045

B6 0045

A = [0045]

LDX $8520

FE 8520 X = [8520,8521]

LDA A $8520

B6 85220

A = [8520]

8F

8520

8F

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

1B

A=A+B

CLC

0C

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

4F

A acc. sil.

COM A

43

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

Komut

PC +2

Sapma
Komut

PC+2+Sap ma

BEQ
15

PC = 500A

Komut

Z=1

H
GOTO 500A

PC = 501F

Komut
E

Komut

Program
Hafzas

Program
Hafzas

GOTO 501F

- 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

Komut

PC + 2

Komut

Sapma
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

DNG2

CLR A
INC A
NOP
CMP A #$10
BNE DNG1
BRA DNG2
DEC A
NOP
WAI

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

Adresleme Modu

Operasyonel Kodu Yapt

ADD A #$33

Annda

8B 33

A = A + 33

ADD A $33

Dorudan

9B 33

A = A + [33]

ADD A $0133

Geniletilmi

BB 01 33

A = A + [0133]

ADD A $06,X

ndisli

AB 06

A = A + [X + 06]

ABA

Anlalr

1B

A=A+B

LDA B #$FF

Annda

C6 FF

B = FF

LDA B $55

Dorudan

D6 55

B = [55]

STA A $1235

Geniletilmi

B7 12 35

[1235] = A

INC A

Akmlatr (Anlalr)

4C

A=A+1

LDX #$0011

Annda

CE 00 11

X = 0011

LDX $50

Dorudan

DE 50

X = [0050, 0051]

JMP $0180

Geniletilmi

7E 01 80

[0180] adresine git

JMP $02,X

ndisli

6E 02

[X + 02] adresine git

49

DEX

Anlalr

09

X=X-1

CMP A #$50

Annda

81 50

A ile 50 i karlatrr

CMP $50

Dorudan

91 50

A ile [0050] i karla.

CMP A $0250

Geniletilmi

B1 02 50

A ile [0250] i karla.

ADC A #$05

Annda

89 05

A = A + C + 05

AND A #$1C

Annda

84 1C

A = A x 1C

ASL A

Akmlatr (Anlalr)

48

A sola kaydrlr

ASL $0D80

Geniletilmi

78 0D 80

[0D80] sola kaydrlr

ROR $004E

Geniletilmi

76 00 4E

[004E] saa dndrlr

NOP

Anlalr

01

2 cp zaman geiktirir

BCC xx

Relatif

24

C = 0 ise xx kadar sapar

2. 55 adresinde CA says ve B akmlatrnde 13 says vardr.


ADD B #$55

Annda

CB 55

B = B + 55 = 68

ADD B $55

Dorudan

DB 55

B=B+[0055]=13+CA=DD

3. Aadaki programn almas sonucunda A akmlatrnde hangi say vardr.


LDA A #$22

86 22

A = 22

STA A $01C3

B7 01C3

[01C3] = A = 22

LDX #$0123

CE 01 23

X = 0123

ADD A $A0,X

AB A0

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

PA0
L-1
t
3 ms

4 ms

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.

xx

LDX #$1000

CE 10 00

X = 1000

STX $80

DF 80

[80] = X = 1000

LDX #$3000

CE 30 00

X = 3000

STX $82

DF 82

[82] = X = 3000

LDX $80

DE 80

X = [80]

LDA A $00,X

A6 00

A = [X+00]

INX

08

X=X+1

STX $80

DF 80

[80] = X

LDX $82

DE 82

X = [82]

STA A $00,X

A7 00

[00 + X] = A

INX

08

X=X+1

STX $82

DF 82

[82] = X

CPX #$4001

8C 40 01

X 4001 durumu CCR ye setler.

BNE xx

26 ED

Z = 0 ise xx e dallanr

SWI

3F

Dur

6. Aadaki programn almas sonucu durum kod kaytsndaki H ve V bitlerinin durumu


nedir?
LDA A #$E0

86 E0

A = E0

CCR = 1 1 H I N Z V C

LDA B #$09

C6 09

B = 09

CCR = 1 1 1 0 1 0 0 1

ABA

1B

A = A+B = E9

TAP

06

CCR = E9

SWI

3F

H=1
V=0

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

8E 00 7F

SP = 007F

LDA A #$23

86 23

A = 23

LDA B #$34

C6 34

B = 34

PSH A

36

[007F] = 23

PSH B

37

[007E] = 34

LDX $7E

DE 7E

X = [007E, 007F] =3423

SWI

3F

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

96 81

A = [81]

LDA B $61

D6 61

B = [61]

ABA

1B

A=A+B

STA A $91

97 91

[91] = A

LDA A $60

96 60

A = [60]

ADC A $80

99 80

A = A + C + [80]

STA A $90

97 90

[90] = A

LDX $90

DE 90

X = [0090,0091]

SWI

3F

10. Aadaki programn her komutunun almasndan sonra A birikecinde bulunan deeri yaznz.
LDA A #$23

A = 23

AND A #$F0

A = 20

COM A

A = DF

NEG A

A = 21

DEC A

A = 20

INC A

A = 21

ORA A #$34

A = 35

ASL A

A = 6A

LSR A

A = 35

SUB A #$43

A = F2

SWI

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

DONGU1

DONGU2

DONGU3

LDS #$007F

8E 00 7F

LDX #$0300

CE 03 00

LDA A #$02

86 02

STA A $00,X

A7 00

INX

08

CPX #$0601

8C 06 01

BNE DONGU1

26 F8

BSR DONGU2

8D 01

SWI

3F

CLR A

4F

CLR B

5F

LDX #$0300

CE 03 00

ADD A $00,X

AB 00

ADC B #$00

C9 00

INX

08

CPX #$0601

8C 06 01

BNE DONGU3

26 F6

STA A $0801

B7 08 01

STA B $0800

F7 08 00

RTS

39

D) KESME ALT PROGRAMI


1. Kesme alt programna giderken geri dnlecek
adres deeri yna atlr.

Kesme Alt Pro.

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

2. Kesme

alt

program

kullanlacaksa

yn

gstergecinin (SP) balang adresini ana programn


banda mutlaka vermeliyiz ve verilen bu adresin
[FFF8, FFF9]

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

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.

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.

DONGU1

LDS #$007F

8E 00 7F

LDX #$0300

CE 03 00

LDA A #$02

86 02

STA A $00,X

A7 00

INX

08

CPX #$0601

8C 06 01

BNE DONGU1

26 F8

CLI

0E

WAI

3E

SWI

3F

[FFF8, FFF9] CLR A

4F

CLR B

5F

LDX #$0300

CE 03 00

ADD A $00,X

AB 00

ADC B #$00

C9 00

INX

08

CPX #$0601

8C 06 01

BNE DONGU2

26 F6

STA A $0801

B7 08 01

STA B $0800

F7 08 00

RTI

3B

DONGU2

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

CA1

CA2

A portunun
kontrol hatlar

R/W
A0 (RS0)
A1 (RS1)
IRQ A

PA0....PA7

A Portu

PB0....PB7

B Portu

M C6821
PIA

IRQ B
CS2
CS1
CS0

CB1

D0.....D7
MKROLEMCYE

CB2

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

Tx data

RS

Rx data

R/W

Tx clock
Rx clock

IRQ

M C6850
ACIA
CS2
CS1
CS0
D0.....D7

MKROLEMCYE

CTS
DCD

MODEM

RTS
SRC DEVRELERNE

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

C1

C2

R/W

C3

Clock
girileri

RS0
RS1
RS2
IRQ

G1

M C6840
PTM

G2

Gate
girileri

G3

CS0
CS1

O1
O2

D0.....D7
MKROLEMCYE

Timer
klar

O3
SRC DEVRELERNE

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

ADC
Kanal
4(8bit)

G/ Seri PWM Hz
Port Port Kanal MHz
6
10

16XXX

14336

819214 bit

256

368

10(12bit)

52

var

24

17XXX

32768

1638416

902

16(10bit)

66

var

33

18XXX

32768

1638416

1536

8(10bit)

34

var

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

Program
Bellei
FLASH

CPU

Veri Bellei
GPR-RAM

PORT A

PORT B

ekil 6.1. PIC 16F8X mikrodenetleyicilerinin genel blok diyagram

PROG
EPROM

PC

STACK

RTCC

STATUS

WDT
GENEL
KAYITI
DOSYASI

ALU

PORT A

OSC

PORT B

A/D
EEPROM
PORT C

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

8 Dzeyli Yn
(13-bit)

14

Veri yolu

Program Sayac

EEPROM Veri Bellei

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

EEDAT A

EEADR

RAM adres

Adres MUX

Komut Kay dedicisi

7
5

Dorudan Adresleme

Dolayl
Adres

TMR0
FSR Kaydedicisi

MUX
Power-up
Timer

Zamanlama
retici

OSC2/CLKOUT
OSC1/CLKIN

RA4/T0CKI

Durum Kaydedicisi

Komut Kod
zcs &
kontrol

EEPROM
Veri
Bellei
64 x 8

ALU

Osilatr
Start-up Tim er
Power-on
Reset

G/ portlar

RA3:RA0
RB7:RB1

W kaydedicisi

RB0:INT

Watchdog
Timer

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 program
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 noktaya 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

PIC

OSC1

C2

OSC2

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

Kayt
adresi

13 bit

8 bit

Program
Hafzas

CPU

zel Amal
kaydediciler
+

Komut

Veri

14 bit

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

Yazma
dosyas

8-bit literal
(Komut Szcnden)

8-bit yazma deeri


(Komutun dorudan
8
veya dolayl
adresinden)

W Yazmac
8

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

ALU
8
d bit komutlar

d='0' or

d='1'

Literal Komutlar

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

2K
4K

Reset Vektr

0000h

Kes me Vektr

0004h
0005h

Program Hafzas
0. Sayfa

6K
8K

Program Hafzas
1. Sayfa
Program Hafzas
2. Sayfa
Program Hafzas
3. Sayfa

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

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

Kayt
Adresi
80H
81H
82H
83H
84H
85H
86H
87H
88H
89H
8AH
8BH
8CH

(GPR)
7FH

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

(GPR)
FFH
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 olarak,
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

Stack(13 bits x 8)
STACK Ba

PCL
8

PC
5

PCLATH <4:0>

8
ALU result

PCLATH
ekil 5.21: GOTO komutu

Stack(13 bits x 8)

PCH
12

11 10

STACK Ba

PCL
8

PC
11

PCLATH <4:3>

OPcode<10:0>

PCLATH
ekil 5.22: CALL komutu

13

PCH
12

11 10

PCL
8

Stack(13 bits x 8)
STACK Ba

PC
11

PCLATH <4:3>

OPcode<10:0>

PCLATH
ekil 5.23: RETURN,RETFIE yada RETLW komutu
13

PCH
12

11 10

PCL
8

Stack(13 bits x 8)
STACK Ba

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

0. Sayfada

Bcf PCLATH, 4;

PCLATH kaytsnn 4. biti temizlendi

Bsf PCLATH, 3;

PCLATHin 3. biti set edildi, 1. sayfaya geildi.


(800H-FFF H adres aral)

call SUB1_P1;

1. sayfadaki altyordam arld

.
ORG 0x900; (800 H -FFF H), 1. Sayfada
SUB1_P1
.

Altyordam 800 H ile FFF H aralna yerletirildi.

RETURN;

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:
.
20H-2F H arasn temizler.

Temizle;

movlw 0x20; Gstergeye balang deerini (adresi) ver .


movwf FSR; RAMa git
Sonraki:
clrf INDF;

INDF yazmacn temizle

incf FSR, F;

Gstergeyi bir arttr. (d = 1)

btfss FSR, 4; Hepsi yapld m?


goto Sonraki; Temizlenecek alan bitmedi, sonrakine git.
Baka_Ksma_Ge;

Temizlenecek alan bitti.

.
ekilde, dorudan ve dolayl adresleme nasl oluur gsterilmektedir.
Dorudan adresleme
RP1:RP0

Dolayl adresleme

komut kodundan

Bank seimi

IRP

Bank seimi

Adres belirleme

00h

00
80h

01

10
100h

11
180h

7Fh

FFh

17Fh

1FFh

FSR yazmac

Adres belirleme

Veri Bellei

Bank 0

Bank 1

Bank 2

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 gerekmektedir. 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 mikrodenetleyicisi 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

Etiket

Atama
blou

STATUS

Etiket

Program
blou

START

LIST

P=16F877

Atama
Komutu

Hex adres

LIST

0x03

Komut

Sabit, etiket veya


Hex. adres

ORG

0x00

CLRF

PORTB

M OVLW

0x0F

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

AC

#define

LED

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

MIN=50

Constant

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

set

35

DEGER

set

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

f=7 bit yazma adresi

lem Kodu

0
f (yazma)

Bit Ynlendirmesi Yapan Yazma lemleri:


b=3 bit adres

f=7 bit yazma adresi


13

10 9

lem Kodu

b (bit no)

0
f (yazma)

Denetim ve Sabit/Saysal (literal) lemler:


13

lem Kodu

0
k (literal)

k= 8 bit hazr (immediate) deer


Yalnz call ve goto komutlarnda kullanlan biim:
13

11 10

lem Kodu

0
k (literal)

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

Komut Tanmlamas

evrim
Sresi

ADDWF
ANDWF
CLRF
CLRW
COMF
DECF
DECFSZ
INCF
INCFSZ
IORWF
MOVF
MOVWF
NOP
RLF
RRF
SUBWF
SWAPF
XORWF

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

BCF
BSF
BTFSC
BTFSS

f, b
f, b
f, b
f, b

ADDLW
ANDLW
CALL
CLRWDT

k
k
k
--

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

GOTO
IORLW
MOVLW
RETFIE
RETLW
RETURN
SLEEP

k
k
k
-k
---

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

SUBLW
XORLW

k
k

W 'y k 'dan kart


k ile W 'y XOR 'la

14-bitlik Opcode
MSb
LSb

STATUS
Etkisi

00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00

0111
0101
0001
0001
1001
0011
1011
1010
1111
0100
1000
0000
0000
1101
1100
0010
1110
0110

dfff
dfff
lfff
0xxx
dfff
dfff
dfff
dfff
dfff
dfff
dfff
lfff
0xx0
dfff
dfff
dfff
dfff
dfff

ffff
ffff
ffff
xxxx
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
0000
ffff
ffff
ffff
ffff
ffff

01
01
01
01

00bb
01bb
10bb
11bb

bfff
bfff
bfff
bfff

ffff
ffff
ffff
ffff

11
11
10
00

111x
1001
0kkk
0000

kkkk
kkkk
kkkk
0110

kkkk
kkkk
kkkk
0100

2
1
1
2
2
2
1

10
11
11
00
11
00
00

1kkk
1000
00xx
0000
01xx
0000
0000

kkkk
kkkk
kkkk
0000
kkkk
0000
0110

kkkk
kkkk
kkkk
1001
kkkk
1000
0011

TO , PD

1
1

11 110x kkkk kkkk


11 1010 kkkk kkkk

C,DC,Z
Z

C,DC,Z
Z
Z
Z
Z
Z
Z
Z
Z

C
C
C,DC,Z
Z

C,DC,Z
Z
TO, PD

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;

Gstergeye balang deerini (adresi) ver .

movwf FSR;

RAMa git

clrf INDF;

INDF yazmacn temizle

incf FSR, F;

Gstergeyi bir arttr. (d = 1)

btfss FSR, 4;

Hepsi yapld m?

goto Sonraki;

Temizlenecek alan bitmedi, sonrakine git.

Sonraki:

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

0x03

EQU

EQU

03

EQU

03h

EQU

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

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.

1-) ADDLW

Bir say/sabit ile W nin ieriini topla

Sz dizim kural

: [etiket] ADDLW

ileler

: 0 k 255

ilevi

: (W) + k (W)

Status etkisi

: C, DC, Z

Tanm

: W'nin ieriini 8 bitlik k literali ile toplar ve sonucu W' ye aktarr.

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 CCarry 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

: [etiket] ADDWF

ileler

: 0 f 127 ve d (0,1)

ilevi

: (W) + f (hedef)

Status etkisi

: C, DC, Z

Tanm

: W'nin ieriini, 7 bitlik adresi olan f kaytsnn ierii ile toplar ve sonucu

f,d

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

: [etiket] ANDLW

ileler

: 0 k 255

ilevi

: W AND k (W)

Status etkisi

:Z

Tanm

: 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

: [etiket] ANDWF

leler

: 0 f 127

levi

: W AND f (hedef)

Status etkisi

:Z

Tanm

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

f,d

ve d (0,1)

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

Yazmacn belirlenen bitini sfrla (clear)

Sz dizim kural

: [etiket] BCF

leler

: 0 f 127 ve 0 b 7

ilevi

: 0f(b)

Status etkisi

: Yok

Tanm

: f yazmacnn b. bitini 0 yap.

f,b

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

: [etiket] BSF f,b

leler

: 0 f 127 ve 0 b 7

ilevi

: 1 f(b)

Status etkisi

: Yok

Tanm

: f yazmacnn b. bitini 1(set) yap.

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.

7-) BTFSC

Yazmacnn belirlenen biti 0 ise, bundan sonraki komutu atla

Sz dizim kural

: [etiket] BTFSC

leler

: 0 f 127 ve 0 b 7

levi

: 0f(b)

Status etkisi

: Yok

Tanm

: Yazmacnn b. bitinin 0 olup olmad kontrol edilir. Eer sfr ise bu

f,b

komutun altndaki komut ilenmez, bir sonraki komuta saplr. Aksi durumda ise sradaki komut
uygulanr.
rnek :
Basla
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.

GOTO Basla

; PORTB'nin 0. biti 0 deilse ilenecek, tekrar


; baa dnecek.

BSF PORTB,1

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

105

8-) BTFSS Yazmacn belirlenen biti 1 ise, bundan sonraki komutu atla
Sz dizim kural

: [etiket] BTFSS

leler

: 0 f 127 ve 0 b 7

ilevi

: 1 f(b)

Status etkisi

: Yok

Tanm

: Yazmacnn b. bitinin 1 olup olmad kontrol edilir. Eer bir ise bu

f,b

komutun altndaki komut ilenmez, bir sonraki komuta saplr. Aksi durumda ise sradaki komut
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.
; PORTA'nin 0. biti 1 deilse ilenecek, tekrar

GOTO Basla

; baa dnecek.
BSF PORTB,1

; PORTA'nin 0. biti 1 ise ilenecek, bu komutla


; PortB'nin 2. bitine bal led yanar.

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

Altprogram ar

Sz dizim kural

: [etiket] CALL k

ileler

: 0 k 2047

ilevi

: (PC) + 1 TOS,
TOS: Ynn st (Top of Stack), k (PC<10:0>), PCLATH<4:3> PC<12:11>

106

Status etkisi

: Yok

Tanm

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

10-) CLRF

Yazma eriini sil

Sz dizim kural

: [etiket] CLRF f

ileler

: 0 f 127

ilevi

: h'00' (f) ve 1 Z

Status etkisi

:Z

Tanm

: f yazmacnn ierii sfrlanr ve deeri sfr olduu iin status yazmacnn

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.

11-) CLRW

W yazmacnn ieriini sil

Sz dizim kural

: [etiket] CLRW

ileler

: Yok

ilevi

: h'00' (W) ve 1 Z

Status etkisi

:Z

107

Tanm

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

biti 1 (set) yaplr.


rnek : CLRW

; W yazmac temizlendi. Status Z biti 1 oldu.

12-) CLRWDT

WDT zamanlayc ieriini sil

Sz dizim kural

: [etiket] CLRWDT

leler

: Yok

ilevi

: h'00' WDT
0 WDT nblc sabit(prescaler), 1 TO, 1 PD

Status etkisi

: TO, PD

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

Yazma ieriinin tersini al (fnin tmleyeni)

Sz dizim kural

: [etiket] COMF

leler

: 0 f 127 d (0.1)

ilevi

: (f ) (hedef)

Status etkisi

:Z

Tanm

: f yazmacnn ierii terslenir ve d deeri sfr ise sonu W yazmacna, bir ise

f,d

f yazmacna yklenir.
rnek : COMF

f,0

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

Yazma ieriini bir azalt


: [etiket] DECF f,d

leler

: 0 f 127 ve d (0,1)

levi

: (f) -1 (hedef)

Status etkisi

:Z

Tanm

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

15-) DECFSZ

Yazma ieriini bir azalt, 0 ise bir komut atla

Sz dizim kural

: [etiket] DECFSZ f,d

leler

: 0 f 127 ve d (0,1)

levi

: (f)-1 (hedef) ve Sonu = 0 ise atla

Status etkisi

: Yok

Tanm

: f yazmacnn ierii 1 azaltlr ve sonuta oluan deer sfr ise, bu komutu

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

SAYAC,1

; SAYA 1 azaltlr, sonu 0 ise GOTO komutu atlanr.

GOTO Azalt

; Sonu 0 deilse Azalt etiketine saplr.

BSF PORTB,1

; Sonu 0 ise PORTB'nin RB1=1 edilir.

SAYAC = 10
DECFSZ

SAYAC' in balang deeri 10 ise

SAYAC = SAYAC -1

yukardaki azalt dngs, 10 kez tekrar


edilir. 10. tekrarda SAYA deeri
sfrlanmtr. Goto sapma komutundan
sonraki komutla devam edilir.

hayr

SAYAC = 0 m?

evet
BSF PORTB,1

16-) GOTO

Adrese git

Sz dizim kural

: [etiket] GOTO k

leler

: 0 k 2047

levi

: k PC<10:0>
PCLATH<4:3> PC<12:11>

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 ise
PC 'de Bas etiketinin adresi oluur.
17-) INCF Yazma ieriini bir arttr
Sz dizim kural

: [etiket] INCF f,d

leler

: 0 f 127 ve d (0,1)

ilevi

: (f) + 1 (hedef)

Status etkisi

:Z

Tanm

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

18-) INCFSZ

Yazma ieriini bir arttr, 0 ise bir komut atla

Sz dizim kural

: [etiket] INCFSZ f,d

leler

: 0 f 127 ve d (0,1)

ilevi

: (f)+1 (hedef)
sonu=0 ise atla

Status etkisi

: Yok

Tanm

: f yazmacnn ierii bir arttrlr ve sonuta oluan deer sfr ise, bu komutu

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

; SAYA 1 artar, sonu 0 ise BCF komutu atlanr.

GOTO Art

; Sonu 0 deil ise Art' a gidilir.

BCF PORTB,1

; Sonu 0 ise PORTB 'nin 1. biti 0 edilir.

110

19-) IORLW

Bir say ile W'nin ieriine OR ilemini uygula

Sz dizim kural

: [etiket] IORLW k

levi

: (W ) OR k (W)

Status etkisi

:Z

Tanm

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

20-) IORWF

Yazma ierii ile W nin ieriine OR ilemini uygula

Sz dizim kural

: [etiket] IORWF f,d

leler

: 0 f 127 ve d (0.1)

levi

: (W ) OR f (hedef)

Status etkisi

:Z

Tanm

: W yazmacnn ierii k literali ile OR' lanr ve sonu d=0 ise W 'ya, d=1 ise

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.

21-) MOVLW

W ya bir say/sabit ykle

Sz dizim kural

: [etiket] MOVLW

leler

: 0 k . 255

levi

: k (W)

Status etkisi

: Yok

Tanm

: W yazmacnn ierii k olur.

rnek : MOVLW k
Komut ncesi W nin deeri ne otursa olsun, komuttan sonra k literalinin deeri ile yklenir.

111

22-) MOVF Yazma ieriini hedefe tas (fyi ykle)


Sz dizim kural

: [etiket] MOVF f,d

leler

: 0 f 127 ve d (0,1)

levi

: (f) (Hedef)

Status etkisi

:Z

Tanm

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

23-) MOVWF

W nin ieriini f yazmacna ta

Sz dizim kural

: [etiket] MOVWF f

leler

: 0 f 127

levi

: (W) (f)

Status etkisi

: Yok

Tanm

: W yazmacnn ierii f yazmacna tanr.

rnek : MOVWF SAYAC


Komutu uygulanmadan nce, SAYA yazmacnn ierii ne olursa olsun komut uygulandktan
sonra W yazmacnn ierii SAYA' a yklenir.

24-) NOP

lem yok

Sz dizim kural

: [etiket] NOP

leler

: Yok

ilevi

: Yok

Status etkisi

: Yok

Tanm

: Hibir ey yaplmadan bir saat evrimi sre alr.

rnek : NOP

;Hibir ilem yaplmadan, bir evrimlik sre geirir.

112

25-) RETFIE Kesme altprogramndan geri dn


Sz dizim kural

: [etiket] RETFIE

leler

: Yok

ilevi

: TOS PC ve

Status etkisi

: Yok

Tanm

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

26-) RETLW

Altprogramndan W'ye bir say/sabit ykle ve geri dn

Sz dizim kural

: [etiket] RETLW

leler

: 0 k 255

levi

: k W ve TOS PC

Status etkisi

: Yok

Tanm

: Altprogramdan, W ' ye k literali yklenmi olarak dnmek iin kullanlr.

Dn hazrl TOS deerinin PC' ye aktarlmasyla yaplr. Komut iki saat evrimi srede ilenir.
|
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.

TABLO

ADDWF SAYAC

;SAYAC 'n ald deer ka ise, o RETLW ye sapar.

RETLW 21h

;W nceden h'01 'se komuttan sonra W=h'21' le

RETLW 22h

;W nceden h'02'se komuttan sonra W=h'22' le

RETLW 23h

;W nceden h'03'se komuttan sonra W=h'23' le

RETLW 24h

;W nceden h'04'se komuttan sonra W=h'24' le

dner. W' nin tablo kesimine sapmadan nceki deerine gre ilem grr.
27-) RETURN

Altprogramdan geri dn

Sz dizim kural

: [etiket] RETURN

leler

: Yok

levi

: TOSPC

Status etkisi

: Yok

Tanm

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

srede ilenir.
113

rnek : RETURN
Bu komut uygulandktan sonra PC' ye TOS deeri yerletirilir.

28-) RLF

Yazma bitlerini sola doru dndr

Sz dizim kural

: [etiket] RLF f,d

leler

: 0 f 127 ve d (0,1)

levi

: Tanm ksmnda ayrntlandrlmtr.

Status etkisi

:C

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

Yazma bitlerini birer bit saa aktar

Sz dizim kural

: [etiket] RRF f,d

leler

: 0 f 127 ve d (0,1)

levi

: Tanm ksmnda ayrntlandrlmtr.

Status etkisi

:C

Tanm

: f yazmacndaki bitleri bir bit saa doru yerletirir.


C

Kayt f

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

: [etiket] SLEEP

ileler

: Yok

ilevi

: h'00' WDT,
0 WDT n blc sabiti (prescaler), 1TO ve 0PD

Status etkisi

: TO,PD

Tanm

: 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

: [etiket] SUBLW k

leler

: 0 k 255

ilevi

: (k W) W

Status etkisi

: C, DC, Z

Tanm

: k dan akmlatr ierii karlr.(kiye tamamlama yntemiyle). Sonu W

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

: [etiket] SUBWF f,d

leler

: 0 f 127 ve d (1,0)

ilevi

: (f) - (W) (Hedef)

Status etkisi

: C, DC, Z

Tanm

: f yazmacnn ieriinden, W karlr (kiye tamamlama

yntemiyle). d=0

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

: [etiket] SWAP f,d

ileler

: 0 f 127 ve d [0,1]

ilevi

: (f<3:0>) (Hedef<7:4>) ve (f<7:4>) (Hedef<3:0>)

Status etkisi

: Yok

Tanm

: f yazmacnn st drtl biti ile alt drt biti yer deitirirler. Sonu d=0 ise

W ye, d=1 ise f yazmacna yklenir.


rnek :
; komutundan nce CAPRAZ=h'03', W=h'02' ise,

SWAPF CAPRAZ,1

; komuttan sonra CAPRAZ=h'30', W=h'02' olur.


; komutundan nce CAPRAZ=h'03', W=h'02' ise,

SWAPF CAPRAZ,0

; komutu tekrarlannca CAPRAZ=h'03', W=h'30' olur.


34-) XORLW

Say ile W nin ieriini XOR la

Sz dizim kural

: [etiket] XORLW

leler

: 0 k 255

ilevi

: (W) XOR k (W)

Status etkisi

:Z

Tanm

: W nin ierii ile k literaline mantksal XOR ilemi uygulanr. Sonu

W yazmacna yklenir.
rnek : XORLW

h'03'

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

116

35-) XORWF

Yazma ierii ile W nin ieriini XOR' la

Sz dizim kural

: [etiket] XORWF

ileler

: 0 f 127 ve d [0,1]

ilevi

: (W) XOR f (Hedef)

Status etkisi

:Z

Tanm

: W nin ierii ile f yazmacna mantksal XOR ilemi uygulanr. d=0 ise

f,d

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

PORTB,W

; PortBnin ieriini W kaytsna ta

MOVWF

PORTA

; W kaytsnn ieriini PortAya gnder

rnein; PortBye bal 8 adet LED bulunsun. Bu ledlerden ilk drt tanesini yakmak
istersek aadaki komutlar yazlmaldr.

MOVLW

H0F

; W kaytsna h0F ykle

MOVWF

PORTB

;W kaytsnn ieriini PortBye gnderir.

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.

CLRF

PORTB

CLRW

; PortB nin ierii temizlenir.


; W kaytsnn ierii temizlenir.

rnek :
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

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

; PortBye bal ledleri sndr


; BANK1e ge
; PortBnin ularn k yap
; W kaytsna hFF i ykle
; PortAnn ularn giri yap
; BANK0a ge

MOVF
MOVWF

PORTA,W
PORTB

; Portay oku, sonucu Wya yaz


; Butonlarn durumunu PortBde gster

GOTO
END

DONGU

; Sonsuz dng
; Programn sonu

BASLA

DONGU

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?

Evet

Hayr
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

; PortAnn ularn giri yap


; BANK0a ge

TRISA
STATUS,5

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

p=16F877
p16F877
0x00
Basla

Basla
CLRF
CLRF
BSF
BCF
CLRF
MOVLW
MOVWF
BCF
A0_KONTROL

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

;Btn Ledleri yak


; tm k pinleri 1, ledleri yand

PORTA,1
A1_KONTROL
PORTB
A0_KONTROL

rnek: PIC16F877 PortB nin 4-7. bitlerine bal butonlar kullanarak; PortDye bal sekiz ledi
aadaki yakan program yazn.
B4 baslrsa:
B5 baslrsa:

Basla

B6 baslrsa:
Balang
ilemleri

B7 baslrsa:
Yanan led

Snen led

B4 Kontrol

Hayr

Evet
Kalp 1 gibi ledleri yak

B5 kontrol

Hayr

Evet
Kalp 2 gibi ledleri yak

B6 kontrol

Hayr

Evet
Kalp 3 gibi ledleri yak

B7 kontrol

Hayr

Evet
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

PORTB
PORTD
STATUS,RP0
OPTION_REG,7
F0
TRISB
; PortBnin 4-7 bitleri ynlendirildi.
TRISD
; Portd k
STATUS,RP0

B4
B5_Kontrol
KALIP1
PORTD

; B4 butonuna basldm?
; hayr B5 butonunu kontrole git

B5
B6_Kontrol
KALIP2
PORTD

; B5 butonuna basldm?
; hayr B6 butonunu kontrole git

B6
B7_Kontrol
KALIP3
PORTD

; B6 butonuna basldm?
; hayr B7 butonunu kontrole git

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

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.

123

TEKRAR

SAYAC=SAYAC-1

DECFSZ

SAYAC,F

GOTO

TEKRAR

BSF

PORTB,0
Evet

SAYAC=0
MI?
Hayr
TEKRAR ET

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

PortB'yi k
PortA'y giri

PortA, bit1 0 m?

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

p=16F877
p16F877
h 20
PORTB
STATUS,5
TRISB
h FF
TRISA
STATUS,5

; 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

MOVLW
MOVWF

d10
SAYAC

; W kaytsna d10 ykle


; SAYAC deikenine W ta

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

PORTA,1
TEST

; PortAnn 1 biti 0 m?
; Deilse, TEST isimli etikete geri dn

BASLA

TEST

; Gecikme zaman iin

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

kinci basl

+5v
0V
Butona basnca
meydana gelen
ark

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

gerekecektir. Bu gecikmeyi NOP komutu kullanlarak oluturulur. Programda kullandmz 15 adet


NOP

komutu

arkn etkilerini

nlemekte

yeterli

olarak

grlmedii

takdirde saysn

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
PortA, bit1 0 m?

PortB'yi sil

Evet

PortB'yi k
PortA'y giri

SAYAC2= h'FF'

NOPx3

W=h '0A'

Sayac2=Sayac2-1

Sayac1=W

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

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

MOVLW
MOVWF

h 0A
SAYAC1

; W kaytsna h 0A saysn ykle


; W ieriini SAYAC1e gnder

BTFSC
GOTO
MOVLW
MOVWF

PORTA,1
TEST
h FF
SAYAC2

; PortAnn 1. biti 0 m?
; deilsei TEST isimli etikete geri dn
; Evet ise, Wnn ieriini h FF ykle
; W ieriini SAYAC2 ye ata.

BASLA

TEST

GECKME
NOP
NOP
NOP
DECFSZ
GOTO

SAYAC2,F
GECIKME

; SAYAC2nin ieriini 0 olana kadar azalt

DECFSZ
GOTO
GOTO

SAYAC1,F
YAK
BASLA

;
;SAYAC1=0 deilse,YAK isimli etikete geri dn
; SAYAC1=0 ise, BASLA isimli etikete geri dn

MOVF
MOVWF
GOTO
END

SAYAC1,W ; SAYAC1in ieriini Wya aktar.


PORTB
; Wn ieriini PortBye aktar
TEST
; TEST isimli etikete geri dn

; gecikme ilemi

AZALT

YAK

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
TEKRAR

SAYAC=h '00'

SAYAC=SAYAC+1

W=h'07'

W=SAYAC-W
SUBWF
Hayr

STATUS 2.biti
1 mi?
Evet

SAYAC

INCF

SAYAC,F

MOVLW

h 07

SUBWF

SAYAC,W

BTFSS

STATUS,2

GOTO

TEKRAR

DONGU
GOTO

DONGU

END

SON

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;
KOMUT EVRM SRES

KOMUTLAR
GECKME
MOVLW
MOVWF

h FF
SAYAC1

; d255=M

1
1

MOVLW
MOVWF

hFF
SAYAC2

; d255=N

1xM
1xM

DONGU11

DONGU12
DECFSZ
SAYAC2,F
GOTO
DONGU12
DECFSZ
SAYAC1,F
GOTO DONGU11
RETURN

M ve N yerine 255 yerletirilirse;

1xMxN
2xMxN
1xM
2xM
2

Toplam 196.608 evrim sresi

196.608 x (0.05 x 4)sn = 39.321 sn 39 msn


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

Bala

PIC16F877 tant
PORTB k

PORTB= h'01'

CALL GECKME

RLF PORTB

STATUS,
0.bit 1 mi?

Hayr
Evet

SON

SAYAC1
SAYAC2

LIST
INCLUDE
EQU
EQU
CLRF
BCF
BSF
CLRF
BCF

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

MOVLW
MOVWF

h 01
PORTB

; b 00000001 saysn Wya ykle


; W kaytsnn ieriini PortBye ykle

CALL
RLF
BTFSS

GECIKME
PORTB,F
STATUS,0

; Gecikme yap
; PortBdeki veriyi sola kaydr
; Carry flag 1 mi?

TEKRAR

131

GOTO

TEKRAR

; Hayr

GOTO

DONGU

MOVLW
MOVWF

h FF
SAYAC1

; SAYAC1= d255

MOVLW
MOVWF

hFF
SAYAC2

; SAYAC2= d255

DECFSZ
GOTO
DECFSZ
GOTO
RETURN
END

SAYAC2,F
DONGU12
SAYAC1,F
DONGU11

DONGU
GECKME

DONGU11

DONGU12

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

Hayr

Evet
STATUS(0)=1

132

SAYAC1
SAYAC2

LIST
INCLUDE
EQU
EQU
CLRF
BCF
BSF
CLRF
BCF

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

MOVLW
MOVWF

h 01
PORTB

; b 00000001 saysn Wya ykle


; W kaytsnn ieriini PortBye ykle

CALL
RLF
BTFSS
GOTO

GECIKME
PORTB,F
STATUS,0
SOL

; Gecikme yap
; PortBdeki veriyi sola kaydr
; Carry flag 1 mi?
;

CALL
RRF
BTFSS
GOTO
GOTO

GECIKME
PORTB,F
STATUS,0
SAG
SOL

; Gecikme yap
; PortBdeki veriyi saa kaydr
; Carry flag 1 mi?
;
;

MOVLW
MOVWF

h FF
SAYAC1

; SAYAC1= d255

MOVLW
MOVWF

hFF
SAYAC2

; SAYAC2= d255

SOL

SAG

GECKME

DONGU1

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

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

COMF
CALL
GOTO

PORTB,F
GECIKME
TERSLE

MOVLW
MOVWF

h FF
SAYAC1

; SAYAC1= d255

MOVLW
MOVWF

hFF
SAYAC2

; SAYAC2= d255

DECFSZ
GOTO
DECFSZ
GOTO
RETURN
END

SAYAC2,F
DONGU2
SAYAC1,F
DONGU1

TERSLE
; PortBdeki veriyi tersle
; Gecikme yap

GECKME

DONGU1

DONGU2

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

P16F877
P16F877.INC
PORTB
; PortB ye bal ledleri sndr
STATUS,5 ; Bank1e ge
TRISB
; PortBnin ularn k yap
STATUS,5 ;Bank0a ge

MOVLW
CALL
MOVWF

h 05
TABLO
PORTB

GOTO

DONGU

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

BASLA

DONGU
TABLO
; PCL W( h 05)

; W h 6D

rnek : PORTBnin ularna bal 7 segment displayde 0~F arasnda saydran program.

SAYAC1
SAYAC2
SAYAC

LIST
INCLUDE
EQU
EQU
EQU
CLRF
BSF
CLRF
BCF

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

MOVLW
MOVWF

h 00
SAYAC

; b 00000000 saysn Wya ykle


; W kaytsnn ieriini SAYACa ykle

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

BASLA

DONGU

135

CALL
GOTO

GECIKME
DONGU

ADDWF
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW

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

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

MOVLW
MOVWF

h FF
SAYAC1

MOVLW
MOVWF

hFF
SAYAC2

DECFSZ
GOTO
DECFSZ
GOTO
RETURN
END

SAYAC2,F
DONGU2
SAYAC1,F
DONGU1

CEV_TAB

GECKME

DONGU1

DONGU2

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
TOIE
TOIF

ADIE
ADIF

BEKLEME MODU

INTE
INTF

RCIE
RCIF
TXIE
TXIF

KESME

RBIE
RBIF

SSPIE
SSPIF

PEIE

CCP1IE
CCP1IF

GIE

TMR2IE
TMR2IF
TMR1IE
TMR1IF
CCP2IE
CCP2IF
BCLIE
BCLIF

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

h'000'

h'001'

Kesme vektr bu
adresi gsterir

h'002'

h'003'

h'004'

Ana programn ilk


komutunun yerletii
bellek hcresi

h'005'
Kesme alt 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

INT

A1

RB1
RB2

470K
470K
LED2

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

Evet

PortA'n n 0. biti 1
mi?

Test

Hay r
GOTO SONDUR_B1

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

P16F877
P16F877.INC
h 000
BASLA
h 004
INT_ALT_PROG

BSF
MOVLW
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF
BCF
CLRF
BCF
BSF
BSF

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

BASLA

TEST
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

; PortBnin 1. bitini 1 yap

PORTB,1

; PortBnin 1. bitini 0 yap

INTCON,1
b 00000100
PORTB,F

; INTF bayran sil


; terslenecek olan biti Wya ykle
; RB2 yi tersle
; Kesme alt programndan dn.

RB0 ucundan girilen sinyalin den kenarnda kesmenin olumas programda


MOVLW

h 10111111

MOVWF

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

TMR0 kur ve frekans


blme saysn ata

GECIKME

TMR0 5. biti 1 mi?

Evet

PORTB yi sil
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

; LEDi yak
; GECIKME alt programn ar

PORTB,0
GECIKME
YAK

; LEDi sndr
; GECIKME alt programn ar
; yakp-sndrmeye devam et

TMR0

; TMR0 h 00 dan saymaya bala

TMR0,5
TEST_BIT

; 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