Professional Documents
Culture Documents
FIRAT NVERSTES
TEKNOLOJ FAKLTES
YAZILIM MHENDSL BLM
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
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
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 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
Yazlm
Komut Kmesi
Donanm
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
Donanm
Donanm
CPU
Ana Bellek
Mikrokod ROM
n
bellek
Kontrol Birimi
Kaydediciler
Kaydediciler
Mikroilemci
reticileri,sistem
tasarmnda
iki
ynl
dnmek
zorundadrlar.
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.
evresel
niteler
monitr,
klavye,
yazc,
modem
Giri/k
nitesi
CPU
M ikroilemci
RAM
bellek
komutlarn
CPU
'ya
alnmasnda,
yrtlmesinde,
kayt
edilmesinde,
sonularn
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)
RESET
Durma(Halt) Komutu
Donanm sfrlamas
olmad srece dur
Durma
(Halt)
RESET
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
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
Windows altnda alan gelimi zelliklere sahip program gelitirme ortamlarnn olmas
DATA
Giri/k
ADC
DAC
PWM
Hafza
RAM
EPROM
EEPROM
ADRES
CPU
ADRES
4 bit
8 bit
16 bit
32 bit
Zamanlayc
Osilatr
13
Adres yolu
Dahili adres yolu
MAR
Bellek
DAR
PC
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
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
DR
ALU
ALU
Bayraklar
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
CRA
BRM
(EU)
Genel amal
kaydediciler
AH
AL
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
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
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
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.
19
Kod Korumas: Mikrodenetleyicinin sahip olduu kod korumas zellikle ticari uygulamalarda
program kodunun korunmasna olanak salamaktadr.
20
BLM 3. MMARLER
3.1.
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
Program
ve
Veri
Bellei
8 bit
CPU
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.
Veri
Bellei
8 bit
CPU
14 bit
Program
Bellei
22
Veri Bellei
Veri
G/
Birimi
Komut
Bellei
Adres ve
Kontrol
Komut
KONTROL
BRM
ALU
Durum Bilgisi
CLK
23
M ikro-kod
leme
Kaydediciler, ALU ve dierleri
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
Verilen bir grevi yrtmek iin daha az komut kullanlr. Bylece bellek daha etkili
kullanlr.
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.
24
Komutlar ienirken bayrak bitlerinin dikkat edilmesi gerekir. Buda ek zaman sresi
demektir. Mikroilemcinin almasn etkilemektedir.
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.
Ana bellek
Komut
n bellei
n bellek
Veri n bellei
Veri yolu
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.
Ana bellee sadece load ve store komutlaryla eriim; operasyonlarn sadece kaydedici
zerinde yaplmas
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.
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.
Hzl
Nispeten yava
Ucuz
Pahal
Esnek
27
Tahmin kullanm
Speklasyon kullanm
28
analog
veri
analog
veri
ADC
dijital
veri
DAC
DSP
dijital veri
Ana
Bilgisayar
Sistemi
29
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
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
Xin Baarm =
1
Xin alma sresi
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.
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
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
Frekans Birimleri
Hertz
Ksaltmas
Saniyedeki dn
Giga- Hertz
Hz
KHz
MHz
GHz
1000
1 000 000
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
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
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.
En iyi karlatrma programlar gerek uygulamalardr, ancak bunu elde etmek zordur.
Kullanlan derleyici
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
Yrtme Sresi =
Bir tasarm farkl ynlerinin bu anahtar anahtar parametrelerin her birini nasl etkilediini
anlamamz gerekir: rnein,
-Komut takm tasarm komut saysn nasl etkiler,
-Ardk dzen ve bellek sistemleri CPI deerini nasl etkiler,
-Saat hz teknoloji ve organizasyona nasl baldr.
Sadece baarma bakmamz yetmez, maliyeti de dnmemiz gerekir. Maliyet unlar kapsar:
-
Para maliyeti
Makineyi yapacak i gc
35
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
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.
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
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
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
FFFE RESTART H
FFFF RESTART L
ekil-5.4. Kontrol sinyallerinin adres yerleimi.
PIA seer
EPROM
adres hatlar
EPROM seer
ekil-5.5. CPU adres hatlarnn dalm.
40
adres 13 bit
2764
8KB EPROM
data 8 bit
6802
1M hz CPU
6821
PIA
16 bit
giri/k
- 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.
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
43
Saylarn Temsili
say
$say
sayH
@say
sayO
sayQ
%say
sayB
aretler
# (diyes)
Anlam
Kendisinden sonra gelenin data olduunu gsterir ve
immediate adreslemede kullanlr.
+, -, *, /
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
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
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
-----
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
Adresleme Modu
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
JMP $02,X
ndisli
6E 02
49
DEX
Anlalr
09
X=X-1
CMP A #$50
Annda
81 50
A ile 50 i karlatrr
CMP $50
Dorudan
91 50
CMP A $0250
Geniletilmi
B1 02 50
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
ROR $004E
Geniletilmi
76 00 4E
NOP
Anlalr
01
2 cp zaman geiktirir
BCC xx
Relatif
24
Annda
CB 55
B = B + 55 = 68
ADD B $55
Dorudan
DB 55
B=B+[0055]=13+CA=DD
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
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
BNE xx
26 ED
Z = 0 ise xx e dallanr
SWI
3F
Dur
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
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
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
program
kullanlacaksa
yn
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
------------------------------------------RTI
2. Kesme
alt
program
kullanlacaksa
yn
Ana program
----------------------------CLI
WAI
--------------END
54
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
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
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
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
harici
olarak
kullanmann
getirecei
ek
maliyet
azaltlabilir.
PIC
Programlama iin gerekli olan yazlm gelitirme aralarnn Microchip tarafndan cretsiz
olarak sunulmas
Sahip olduu RISC mimarisinin, az sayda komut ile kolayca programlanmasna olanak
salamas
Yaygn kullanmn bir sonucu olarak ok miktarda rnek uygulama ve kaynan bulunmas
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.
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.
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.
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
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.
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:
-
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
PROG
EPROM
PC
STACK
RTCC
STATUS
WDT
GENEL
KAYITI
DOSYASI
ALU
PORT A
OSC
PORT B
A/D
EEPROM
PORT C
Konfigrasyon
Sigortalar
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
RAM
Dosya Kaydedicileri
PIC16F83/CR83
36 x 8
PIC16F84/CR84
68 x 6
7
EEDAT A
EEADR
RAM adres
Adres MUX
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
65
ilenmesinde
zamanlamay
salar.
Hassas
zamanlamann
gerekli
olmad
C1
PIC
OSC1
C2
OSC2
66
Program Bellei : nce bellek kullanmnda ska bavuracamz baz terimleri tanmlayalm.
Bu terimleri, program bellei ve veri belleinin anlatlaca kesimlerde kullanacaz. Bunlar:
-
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.
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.
68
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 ...)
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.
D mimarisi : 40 pin
69
B) Mimarisi
Aadaki ekilde PIC16F877 yongasnn temel donanm yaps grlmektedir.
70
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)
W Yazmac
8
zel
Fonksiyon
Yazmalar
(SFR) ve
Genel
Amal
RAM (GPR)
ALU
8
d bit komutlar
d='0' or
d='1'
Literal Komutlar
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.
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
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)
D) evresel zellikler
-
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
SPI (Master mod) ve I2C (Master Slave) ile birlikte Senkron seri port (SSP)
8 bit genilikte ve d RD, WR, CS kontrolleri ile Paralel Slave Port (PSP)
Program bellei
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
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
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:
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
78
79
80
kayts,
okunabilir
ve
yazlabilir
bir
kaytdr.
Kapsamnda
TMR0/WDT
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
81
85
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
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;
Bsf PCLATH, 3;
call SUB1_P1;
.
ORG 0x900; (800 H -FFF H), 1. Sayfada
SUB1_P1
.
RETURN;
) 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.
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;
incf FSR, F;
.
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
iin
zel
komutlar
vardr.
Konfigrasyon
program
iinde
yaplmadysa,
90
92
Programlama Devreleri
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
Balk
blou
Etiket
Atama
blou
STATUS
Etiket
Program
blou
START
LIST
P=16F877
Atama
Komutu
Hex adres
LIST
0x03
Komut
ORG
0x00
CLRF
PORTB
M OVLW
0x0F
Assembler bildileri
Sonlandr
ma blou
DONGU
GOTO
END
DONGU
95
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
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
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
lem Kodu
0
f (yazma)
10 9
lem Kodu
b (bit no)
0
f (yazma)
lem Kodu
0
k (literal)
11 10
lem Kodu
0
k (literal)
99
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
--
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
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
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
EQU
yazma
movwf FSR;
RAMa git
clrf INDF;
incf FSR, F;
btfss FSR, 4;
Hepsi yapld m?
goto Sonraki;
Sonraki:
101
EQU
0x03
EQU
EQU
03
EQU
03h
EQU
h 03
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
1-) ADDLW
Sz dizim kural
: [etiket] ADDLW
ileler
: 0 k 255
ilevi
: (W) + k (W)
Status etkisi
: C, DC, Z
Tanm
: [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
: [etiket] ANDLW
ileler
: 0 k 255
ilevi
: W AND k (W)
Status etkisi
:Z
Tanm
103
: [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)
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
Sz dizim kural
: [etiket] BCF
leler
: 0 f 127 ve 0 b 7
ilevi
: 0f(b)
Status etkisi
: Yok
Tanm
f,b
104
leler
: 0 f 127 ve 0 b 7
ilevi
: 1 f(b)
Status etkisi
: Yok
Tanm
7-) BTFSC
Sz dizim kural
: [etiket] BTFSC
leler
: 0 f 127 ve 0 b 7
levi
: 0f(b)
Status etkisi
: Yok
Tanm
f,b
komutun altndaki komut ilenmez, bir sonraki komuta saplr. Aksi durumda ise sradaki komut
uygulanr.
rnek :
Basla
BTFSC PORTB,0
GOTO Basla
BSF PORTB,1
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
f,b
komutun altndaki komut ilenmez, bir sonraki komuta saplr. Aksi durumda ise sradaki komut
uygulanr.
rnek .a.
Basla
BTFSS PORTA,0
GOTO Basla
; baa dnecek.
BSF PORTB,1
rnek .b.
BTFSC STATUS,0
rnek .c.
BTFSC STATUS,2
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
Sz dizim kural
: [etiket] CLRF f
ileler
: 0 f 127
ilevi
: h'00' (f) ve 1 Z
Status etkisi
:Z
Tanm
11-) CLRW
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
12-) CLRWDT
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
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
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
15-) DECFSZ
Sz dizim kural
leler
: 0 f 127 ve d (0,1)
levi
Status etkisi
: Yok
Tanm
izleyen komut atlanr. Sonuta d=0 ise W ' ye 1 ise f' ye yklenir. Komut atlamayla sonulanrsa,
ikinci evrim sresinde NOP uygulayarak, toplam iki saat evrim sresinde ilenir. Atlama
olmad durumda uygulanmas bir saat evrimi sredir.
rnek :
Azalt
DECFSZ
SAYAC,1
GOTO Azalt
BSF PORTB,1
SAYAC = 10
DECFSZ
SAYAC = SAYAC -1
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
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
18-) INCFSZ
Sz dizim kural
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
GOTO Art
BCF PORTB,1
110
19-) IORLW
Sz dizim kural
: [etiket] IORLW k
levi
: (W ) OR k (W)
Status etkisi
:Z
Tanm
Mantksal ilem sonunda oluan deer sfr ise, status Z biti 1 yaplr.
rnek :
IORLW h'0F'
20-) IORWF
Sz dizim kural
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
Sz dizim kural
: [etiket] MOVLW
leler
: 0 k . 255
levi
: k (W)
Status etkisi
: Yok
Tanm
rnek : MOVLW k
Komut ncesi W nin deeri ne otursa olsun, komuttan sonra k literalinin deeri ile yklenir.
111
leler
: 0 f 127 ve d (0,1)
levi
: (f) (Hedef)
Status etkisi
:Z
Tanm
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
Sz dizim kural
: [etiket] MOVWF f
leler
: 0 f 127
levi
: (W) (f)
Status etkisi
: Yok
Tanm
24-) NOP
lem yok
Sz dizim kural
: [etiket] NOP
leler
: Yok
ilevi
: Yok
Status etkisi
: Yok
Tanm
rnek : NOP
112
: [etiket] RETFIE
leler
: Yok
ilevi
: TOS PC ve
Status etkisi
: Yok
Tanm
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
26-) RETLW
Sz dizim kural
: [etiket] RETLW
leler
: 0 k 255
levi
: k W ve TOS PC
Status etkisi
: Yok
Tanm
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
RETLW 21h
RETLW 22h
RETLW 23h
RETLW 24h
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
Sz dizim kural
leler
: 0 f 127 ve d (0,1)
levi
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
Sz dizim kural
leler
: 0 f 127 ve d (0,1)
levi
Status etkisi
:C
Tanm
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
: [etiket] SLEEP
ileler
: Yok
ilevi
: h'00' WDT,
0 WDT n blc sabiti (prescaler), 1TO ve 0PD
Status etkisi
: TO,PD
Tanm
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
: [etiket] SUBLW k
leler
: 0 k 255
ilevi
: (k W) W
Status etkisi
: C, DC, Z
Tanm
ye yklenir.
rnek :
SUBLW
h'02'
SUBLW
h'01'
SUBLW
h'01'
leler
: 0 f 127 ve d (1,0)
ilevi
Status etkisi
: C, DC, Z
Tanm
yntemiyle). d=0
rnek :
SUBWF
f, 1
SUBWF
f, 0
SUBWF
f, 1
ileler
: 0 f 127 ve d [0,1]
ilevi
Status etkisi
: Yok
Tanm
: f yazmacnn st drtl biti ile alt drt biti yer deitirirler. Sonu d=0 ise
SWAPF CAPRAZ,1
SWAPF CAPRAZ,0
Sz dizim kural
: [etiket] XORLW
leler
: 0 k 255
ilevi
Status etkisi
:Z
Tanm
W yazmacna yklenir.
rnek : XORLW
h'03'
116
35-) XORWF
Sz dizim kural
: [etiket] XORWF
ileler
: 0 f 127 ve d [0,1]
ilevi
Status etkisi
:Z
Tanm
: W nin ierii ile f yazmacna mantksal XOR ilemi uygulanr. d=0 ise
f,d
f, 0
Komutundan nce f=h'0F', W=h'09' ise, komuttan sonra f=h'0F' ve W=h'06' olur.
117
W
Kayts
PORT B
PORT B
MOVF
PORTB,W
MOVWF
PORTA
rnein; PortBye bal 8 adet LED bulunsun. Bu ledlerden ilk drt tanesini yakmak
istersek aadaki komutlar yazlmaldr.
MOVLW
H0F
MOVWF
PORTB
CLRF
PORTB
CLRW
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
MOVF
MOVWF
PORTA,W
PORTB
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
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
MOVWF
BCF
TEST_PORTA
BTFSC
GOTO
MOVLW
MOVWF
DONGU
GOTO
END
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
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
MOVLW
MOVWF
d10
SAYAC
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
SAYAC,F
TEST
PORTB,0
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
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
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
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
; 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
Bala
Balang tanmlar
lk deerleri 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
1xMxN
2xMxN
1xM
2xM
2
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
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
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
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
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.
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
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'
h'005'
Kesme alt programn
ilk komutunun
yerletii bellek
hcresi
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
W_TEMP
STATUS,W
STATUS
STATUS_TEMP
PCLATH,W
PCLATH_TEMP
PCLATH
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
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
PORTB,1
INTCON,1
b 00000100
PORTB,F
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
WDT'yi sil
GECIKME
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,5
TEST_BIT
OPTION
KAYITISI
1 1 0 1 0 1 1 1
prescaler=b'111'
TMR0 oran=1/256
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