You are on page 1of 45

8051 Mikrokontrolc Ailesi

8051 mikrokontrolc entegrenin temel blok i emas aada gsterilmitir.


hafza olarak 8051 entegre 4Kx8 ROM i hafzaya, ve 128x8 RAM i hafzaya sahiptir.
Entegre iki tane 16 bit sayc/zamanlaycya, ve 5 d kesme kna sahiptir. Entegrenin
d cihazlarla seri haberlemesi iin TXD ve RXD (yolla ve al) hatlar bulunmaktadr.
Entegre 4 adet 8-bit paralel I/O kapsna (P0,P1,P2,P3) sahiptir. Bu ailenin 8052 yesi ise
8K ROM ve 256 RAM hafzaya ve sayc/zamanlaycya sahiptir. 8051 in dier
versiyonlar 8751 ve 8031 entegreleridir. 8751 entegrelerde i ROM hafza yerine EPROM
bulunur. 8031 de ise i ROM veya EPROM yoktur. Fakat tm entegre tiplerinin en nemli
zellii ayn komut kmesini kullanmalardr.

ekil. 1 4K ROM ve 128 byte i hafzal bir 8051 entegesinin blok


yaps.

8051 Mikroilemci Mimarisi


Bu derecede fazla fonksiyonu tek bir entegre zerinde toplamak iin, mikroilemci
entegre gelitiricileri, ayn i hafza elemanlarn kullanabilen bir mikroilemci mimarisi ve
tek bir d entegre bacan birden fazla fonksiyon iin kullanmak zorundadr.
8051 40 bacakl bir entegredir. Drt giri/k birimi iin 32 tane bacaa gereksinim
vardr. Bu sebeple bacaklardan ou birden fazla fonksiyonu gerekletirebilmek zere
tasarlanmtr. Aada ekilde 8051 entegrenin bacak balantlar grlmektedir.

Giri/k 0 iki farkl ama iin kullanlabilecek bir 8 bit


giri/k nitesidir. Bu nite ya iki ynl (bidirectional)
giri/k birimi olarak yada dk deerli adres (AD0AD7)/data yolu olarak kullanlabilir. Bir giri/k birimi
olarak her bir bacak dk (LOW) durumda iken, 8
tane LS TTL devrenin verdii akm zerinden geirebilir
ve yksek (HIGH) konumda ise dardaki entegrelere
3.2 mA akm srebilir. Adres ve data modunda, (AD0AD7) hatlar d hafza elemanlarna ulamak amacyla
kullanlr. ALE hatt kontrol kullanlarak, AD0-AD7
hatlar, adres veya data yolu olarak belirlenir. Yani AD0AD7 hatlar, ALE sinyali yardmyla, A0-A7 ve D0-D7
hatlar olarak ayrtrlr (demultipleksing).
Port 0 data ve adres yolunu multiplex olarak srmek zere
tanmlanmtr. Bu yzden port 0 pinleri open-drain olarak
ekil. 2 8051 serisi entegrelerin
tasarlanmtr. Open drain ular i pullup direnlerine sahip
bacak balantlar
olmadndan bu pull-up direnlerinin darya konulmas salkl
data alverii iin gerekli olabilir. Mikrokontrolc alt zaman d
hafzadan veri transferlerinde, nce okunacak veya yazlacak hafza
adresinin dk bayt port 0a yklenir. Daha sonra ise data okunur
veya yazlr. Bu multiplex ilem iin, eer entegre d hafza
elemanlarna balanyorsa, 74573 tr bir oktal latch kullanlr.

ekil. 3

Port 0n pin yaps. kn open-drain olduuna dikkat

ediniz.

Standart 8051 4 adet giri/k portuna sahiptir. Eer 8051 entegresini kullandnz
devre harici kod hafza ve harici RAM hafza kullanyorsa, P0 ve P2 portlarn bu
elemanlar adreslemede kullanlr. Byle bir devrede, yalnzca P1 ve P3 sizin serbest
kullanmnza kalm olacaktr.
Port 0 giri olarak kullanlnmak istendiinde., ilgili bite 1 yazlr. Bu sayede her iki
transistrde off durumuna getirilir. Her iki transistrnde off olduu bu durum yksek
empedans durumu olarak adlandrlr. Bu durumda giri direkt olarak Pin data oku

hattna balanm olur. Port 0 k olarak kullanldnda , 0 yazlmak istendiinde alt FET
alarak pin topraklanr. 1 yazlmak istendiinde ise klar yine yksek empedans
durumuna geer. Dolays ile port 0 k olarak kullanldnda, yksek sinyalleri salkl
grebilmek iin, port 0 klarna pull-up direnleri koymak gereklidir.
Port 0 adres bus olarak kullanldnda ise, i kontrol mant, adres hatlarnn FET
girilerine balar. Adres hattna 1 yazmak iin st FET on, alt FET off taplr ve d hatta
logik 12 verilir. Adres hattna 0 yazlacaksa ise, st FET off alt, FET on yaplr ve k
topraa ekilir. Adres oluturulduktan ve adres yoluna ALE darbesiyle yerletirildikten
sonra, adres yolu data yolu haline gelir. Bu durumda port 0 d hafzadan bilgi okumak
zere otomatik olarak giri moduna getirilir.
Giri/k 1 (Port 1)
Giri/k 1 8-bit iftynl bir giri k birimidir. Bu birim zerindeki herbir bacak
drt LS TTL entegrenin verdii akm zerinden geirebilir ve drt LS TTL entegreyi
srebilir. Port 1, yalnzca basit giri/k portudur. Bu porttaki pinlerin basit/giri k
grevinden baka grevleri yoktur. Bu yzden k direkt olarak FET kapsna (gate)
balanmtr. Bu FET i pull-up direncine sahiptir. Port 1 giri olarak kullanlaca
zaman, FET off yaplt ve dolaysyla k i pull up direnci ile 1 olur. Dardan balanan
0 deeri yksek i pull-up direncini yenerek pin giriini 0 yapar. Bu sayede 0 deeri
okunur. Dardan girilen 1 deeri ise pin deerini deitirmez.
Port 1 k olarak kullanld zaman ise, pine 1 yazlaca zaman FET off yaplr. Bu
sayede pull-up direnci zerinden d devre 1 deerine srlr. 0 yazlaca zaman ise, FET
alr ve FET k topraa alnr. Bu port yalnzca basit giri k olarak kullanldnda
port kontrol logik gerekli olmamtr.

ekil.4

Port 1n pin yaps. kn pull-up ile 5Volta ekildiine dikkat ediniz.

Giri/k 2 (Port 2)
Giri/k 2'de giri/k 0 gibi iki greve sahip bir giri/k birimidir. Bu birim ya 8-bit iftynl giri/k
olarak, ya da d hafza elemanlarna ularken adres yolunun st bitleri (A 8-A15) olarak grev yapabilir.
Giri/k modunda her bir bacak drt LS TTL entegrenin akmn kendi zerinden geirebilir ve 4 LS TTL
entegreye akm srebilir. Birim d hafza elamanlarna ulalmak istendiinde aktif hale gelerek adres yolu
olarak grev yapar. Port 2 adres hatt olarak kullanldnda, adresleme boyunca karark kalr. Port 0 da olduu
gibi data girii yapmak zere tekrar 1 lenmez. Port 2 basit giri k iin kullanldnda ise, aynen Port 1 gibi
kullanlr.

Adres birimi olarak m, basit giri k birimi olarak m kullanlacan belirlemek zere, port 2 de bir kontrol
devresi ierir.

ekil.5 Port 1n pin yaps. kn pull-up ile 5Volta ekildiine dikkat ediniz.
Giri/k 3 (Port 3)
Giri/k 3'de iki grevli bir birimdir. Normal giri/k birimi olarak kullanldnda, drt LS TTL entegrenin
akmn zerinden geirebilir veya drt LS TTL entegreyi srebilir. Bu birimdeki her bir bacan ayn zamanda
kontrol amal kullanlmak zere deiik grevleri de vardr. Aadaki liste giri/k 3 deki bacaklarn dier
fonksiyonlarn gstermektedir. Basit giri k portu olarak kullanldnda port yaps aynen port 1 gibi
dnlebilir. Port 3 giri k fonksiyonlar, P3 latchleri ile veya farkl SFR zel fonksiyon gz kontrolleriyle
kontrol edilir.
Giri/k 3 Alternatif Fonksiyonlar
_______________________________________________
Pin Numaras
alternatif fonksiyon
_______________________________________________
P3.0
RXD ( seri giri baca)
P3.1
TXD ( seri k baca)
P3.2
INT0 ( d kesme 0)
P3.3
INT1 ( d kesme 1)
P3.4
T0 (zamanlayc/sayc 0)
P3.5
T1 (zamanlayc/sayc 1)
P3.6
WR (d hafzaya yazma kontrol)
P3.7
RD (d hafzadan okuma kontrol)
_______________________________________________

ekil.6 Port 3n pin yaps. kn pull-up ile 5Volta ekildiine dikkat ediniz.

RST
Giri baca. Bu bacaa verilecek bir YKSEK sinyali, mikrokontrolcy reset eder. Mikrokontrolc
alrken bu pinin deeri 0 olmaldr. RST sinyali en az 2 makine evrimi kadar yksek durumda kalmal ve
daha sonra tekrar 0 a dmelidir. Bunun iin bir RC devresi kullanlr. Aadaki kk devre bu i iin
uygundur. Normal alma srasnda, 8051 RST ucu 8.2 kohm diren ile 0 deerine ekilmitir. Reset tuuna
basld anda 100 ohm, 8.2 kohm zerinde 5 volt grlr ve RST ucuna 5volt gider. Kondansatr ise 100 ohm
zerinden hzla boalr. Tu brakldnda ise kondansatr 8.2 kohm zerinden biraz daha yava dolar. Bu
sayede en az iki makine evrim zaman 5 volt sinyali garantilenmi olur.

ekil.7 8051 RESET devresi.


8051 devresine ilk g verildii anda, entegre RST almayabilir ve EPROM ierisindeki program kodu 0000h
yerine ilgisiz bir adresten balayabilir. Bu sebeble 8051 bir cihaz yapmnda kullanlacaksa, cihaz ald anda
entegrenin yukardakine benzer bir ekilde RESET olmasn salayacak bir devrenin yaplmas gerekir.

ALE/PROG
Adres yakalamay aktifle (adress latch enable) hatt, d hafzaya ularken, dk deerli
adres hatlarnn adres yoluna konulmas grevini yapar. Bu sebeble ALE hatt port 0n
adres ve data multipleksleme ileminde kullanlan 74573 oktal latchin CLK ucuna
balanr.

ekil.8 ALE hattnn adres/data multiplekslemede kullanlmas.

Bu bacak ayn zamanda, ierisinde eprom bulunan 8051 serilerinde i epromun programlanmas srasnda
kullanlr.
XTAL1, XTAL2
8051 entegresini daha iyi anlayabilmek ve daha iyi kullanabilmek iin 8051'in zamanlama kavramn anlam
olmak gerekir. 8051 zamanlamas entegrenin XTAL1 ve XTAL2 bacaklarna bal d bir kristal aracl ile
salanr. Frekans kristalleri kararll yksek, zerlerine enerji uygulandnda, belli zaman aralnda belli
sayda elektriksel sinyal reten cihazlardr. Uygulama gereksinimine gre ok eitli frekanslarda alan
kristalleri piyasada bulmak mmkndr. 8051 entegreleri ile en ok kullanlan kristal frekanslar 12 Mhz ve
11.0592 Mhz'lik kristallerdir. 12 Mhz kristal yerine ounlukla 11.0592 Mhz kristal tercih edilir. Byle garip bir
frekansta kristal seiminin sebebi bu kristal frekansnn daha yksek seri haberleme hzna olanak
salamasndandr. 8051 serisi entegrelerin data kitaplarnda maksimum ve minumum alma frekanslar
belirtilmitir Dolaysyla minumum alma frekansndan daha dk bir kristal devreye balanamaz. Aada
8051 serisi entegrelerin i osilatr devreleriyle uyumlu bir kristal devresi grlmektedir. ekildeki kapasitrler
22pF ile 27pF arasnda seramik kapasitrlerdir.

ekil.9 8051 resonant kristal devresi


Mikrokontrolcler (ve dier pek ok elektronik sistemler) ilemlerini senkronize etmek iin kristalleri
kullanrlar. 8051 mikrokontrolc de ilemlerini senkronize etmek iin bir d kristal kullanr. 8051 entegresini
ilemlerini makine evirimi (machine cycle) dilimleri zamanlamasyla gerekletirir. Bir makina evrim zaman
8051 entegrenin bir kodu ilemesi iin gerekli minumum zaman anlamna gelir. 8051 entegrelerde bir makina
evrim zaman kristalin 12 tetikleme zamanna eittir. Kristal frekans olarak 11,059,000 kullanan bir entegre
iin, bir makina evrim zaman (1 / 921,853 ) saniyedir.
1/ (11,059,000 / 12) = (1 / 921,583 )
Bunun anlam 8051 entegrenin bir saniyede yaklak 921,853 makina kodu bayt deeri ilediidir. 12Mhz
kullanan bir kristalde saniyede yaklak
1,000,000 makina kodu bayt deeri ilenir. 8051 komutlarndan
bazlar bir makina evrim zamanndan fazla srede ilenebilirler. rnein DIV AB komutu 4 makina evrimi
zamanda tamamlanr. Bu yzden ortalama olarak bir saniyede ilenen komut says yaklak 600,000
civarndadr. Programn ounluu 2 makina evriminde tamamlanan komutlardan oluuyorsa, 12 Mhz lik bir
kristalle bir saniyede 460,791 komut ilenecektir. ALE sinyali kristal devresinin alp almadn
gsteren en nemli sinyaldir. Bu sinyalin frekans, kristal freakansnn 1/6 s olmaldr.

ekil.10 Osilatr frekans, makina evrimi ve ALE sinyali


8051 serisi yeni kan entegrelerden bazlar, komut zamanlamasn deitirmilerdir. Bu iyiletirilmi
modellerde makina evrim zaman 12 kristal vuruu yerine 4 kristal vuruu ile zamanlanmtr. Dolaysyla
entegreye yine 12 MHz lik bir kristal bal olmasna ramen entegrenin komut ileme zaman 3 kat ksalmtr.

8051 komutlarnn ou farkl makina evrim saysnda altndan, zaman lmek gereken programlarda,
ounlukla 8051 zamanlayclar kullanlr.
_____
PSEN
PSEN hatt ( program store enable) , d hafzadan bilgi okunmas srasnda kullanlan hatlardan biridir. Bu hat
ROM veya EPROM elemann k aktifle (output enable OE) hattna balanr. 8051 temel yapsnda veri hafza
ve kod hafza birbirinden ayrlmtr. Veri hafzaya okuma ve yazmalarda RD ve WR sinyalleri kullanlr. Kod
hafza ise salt okunabilir hafzadr. Bu hafzadan okuma srasnda PSEN sinyali veri hafzadaki RD sinyalinin
grevini yapar. Mikroilemcinin almas srasnda PSEN sinyali gerektike CPU nun kendisi tarafndan
retilir ve kod hafzadan komut okunmasn salar. Bu tr kod ve veri hafzann ayrld dizayn yntemine
Harward Mimarisine gre dizayn dendiini hatrlaynz. Bu dizaynda program ak srasnda kod hafzann
herhangi bir baytnn okunmasnda MOVC komutu kullanlr.
Veri ve kod hafzann tek bir hafza parasym gibi dizayn edildii mimariye Von Neumann mimarisi
denmektedir. Bu mimaride kod veya veri hafzadan okuma ilemi iin, PSEN ve RD sinyali ANDlenir. Bylece
kod ve veri, tm hafzaya MOVX komutu ile ulalr. PSEN ve RD sinyallerinin ANDlenmesiyle elde edilen
MEMRD (memory read) sinyali EPROM ve RAM hafzann OE(output enable) ularna balanr.
Harwward mimamrisinin stnl, 64 kbayta kadar RAM ve 64kbayta kadar ROM hafzay
destekleyebilmesidir. Von Neumann mimarisi ise, tm hafzay ayn ekilde deerlendirdiinden programlama
teknikleri asndan kolaylklar salamaktadr.
___ ___
RD ve WR
Read ve Write sinyalleri d veri hafzaya MOVX komutlaryla okuma ve yazma srasnda kullanlr. Dolaysyla
bu sinyaller veri ve kod hafzann ayrld dizaynlarda, direkt olarak RAM hafzann OE (output enable) ve WE
(write enable) hatlarna balanr. (Harward Mimarisi)
Von Neumann mimarisine gre dizaynda ise, PSEN ve RD sinyallerinin ANDlenmesiyle oluan MEMRD
sinyali ROM ve RAM hafzann OE ularna ve WR sinyali RAM hafzann WE pinine balanr.
ekil .... Harward mimarisine gre dizayn edilmi bir 8051 devresini ve ekil .... Von Neumann mimarisine gre
dizayn edilmi bir 8051 devresini gstermektedir.
___
EA/VPP

Eer program, entegrenin i epromuna deilde d eproma kaydedilmise EA hatt DK deerde tutulur. Bu
hat ayn zamanda i EPROM'un programlanmasnda 21Volt programlama sinyallerinin alnmasnda kullanlr.

ekil.11 Harward mimarisine gre dizayn edilmi 8051 devresi

ekil.12 Von Neumann


mimarisine gre dizayn
edilmi 8051 devresi

8051
Hafza
Dkm
8051 entegresinin adres
alanlar, drt farkl alana
blnmtr. Bunlar i veri
hafzas, d veri hafzas, i
kod hafzas ve d kod
hafzasdr.
8051 64K ya kadar d
geici hafza alann ve 64K
ya kadar d kod hafzasn
desteklemektedir. D hafza
kullanmann en nemli
dezavantajlar,
devrenin
bymesi ve giri/k 0 ve giri/k 2 nin adres ve data hatt olarak d hafza elemanna balanmas gereidir.
Bu sebeple baka ilemler iin kullanlabilecek entegre baca says azalr. Bu nedenle mmkn olduunda,
geni bir i EPROM ve geni bir i RAM kullanarak problemleri halletmek olduka iyi bir zm olacaktr.
8051 bir reset sinyali aldnda veya 8051 entegresine ilk g verildiinde, program saycs 0000H adresinden
balayarak, hafzadaki bilgileri okumaya ve bu bilgileri ilemeye balar. Eer EA hatt DK tutulmusa ilk
hafza hcresi olarak d hafzann birinci eleman alnr. Mikrokontrolc PSEN sinyalini DK yapar ve d
hafza birimi aktiflenir.
Eer EA YKSEK tutulursa birinci hafza eleman i kod hafzasnn ilk elemandr. lk 4K lk program kodu i
hafzadan, daha yukardaki hafzalardaki program kodu ise otomatik olarak d hafzadan okunur.
Eer uygulama byk miktarda data hafzasna gereksinim duyuyorsa, bu durumda d data hafzas (RAM)
kullanlabilir. D RAM eleman ile data alverii, MOVX komutlaryla yaplr. Program ierisinde bir MOVX
komutu grldnde, 8051 otomatik olarak d data hafzas ile ilgili bir veri iletiimi olduunu anlar ve uygun
WR, RD sinyallerini aktifler.
Eer 128 bayt (8052 de 256 bayt) RAM yeterliyse, i RAM hafzay kullanmak daha avantajldr. nk i
hafzaya erimek, ok daha hzldr ve i hafza ile bilgi alverii iin pek ok komut tipi sunulmutur. 8051
RAM hafza temel olarak iki bloktan olumutur. Birinci grup 00H'dan 7FH'a kadar adreslenmi toplam 128
bayttan oluur. kinci grup ise zel fonksiyon data gzleri olarak adlandrlr ve 7FH'dan FFH'a kadar adreslidir.
Her bir adres bir baytlk bir hafza dilimine karlk gelmektedir. Bu sayede kod alanna giri kolaylar ve data
alverii hzlanr.

RAM hafzann dkm yledir: lk 256 bit, 4 grup 8 bayt data gznden (register) olumutur. Her bir
gruptaki data gzleri R0..R7 olarak adlandrlmlardr. Bu gzlere direkt olarak data gznn ismi verilerek
ulalabilir. Bu drt gruptan hangisinin seilecei Program Stats Registerindeki (Program Status Word PSW)
gerekli grup seme bitlerinin seilmesiyle yaplr.
Bundan sonra gelen 128 bitlik blm bit adreslenebilir blmdr. Buras 20H ile 2FH arasnda adreslidir.
Buradaki her bir bite tek tek ulalabilir. Dolaysyla buradaki bitler kullancnn ON/OFF bayraklar ieren
deikenler iin kullanmas gereken blmdr.
30H'dan 7FH'a kadar ksm, genel amal data saklama ve yn iin kullanlr.
kinci 128 baytlk grup zel fonksiyon data gzlerinden olumaktadr. Bu zel fonksiyon data gzleri hem
program kodunun ilemesi iin gerekli birimleri, hem de 8051 iindeki donanmla ilgili birimleri ierir.
Aadaki tablo zel fonksiyon data gzlerinin isimlerini, adreslerini ve fonksiyonlarn vermektedir. Bir zel
fonksiyon data gznn adresi yalnzca 1 bayttr. Fakat zel fonksiyon data gzne ulamak iin, bu gzn
adresini verebileceiniz gibi, data gznn ismini de belirtebilirsiniz. Bu data gzlerinden bazlar bit
adreslenebilir data gzleridir. rnein akmlatrn nc bitine ulamak iin, E0H.3 adresini belirtebilirsiniz
veya ACC.3 diyerek belirtebilirsiniz. Program status data gz de bit adreslenebilirdir. Bu data gzndeki parite
biti 0 numaral bittir. Bu bite ulamak iin, bu bitin adresini; D0H.0 veya ismini PSW.0 diyerek belirtebilirsiniz.
Aadaki dier tablo program stats registerindeki, bitlerin sembollerini, adreslerini ve fonksiyonlarn
gstermektedir.
zel fonksiyon data gzleri (SFR), Hafza alan (80H'dan FFH'a)
Adres
Data Gz
P0
80Ha
SP
81H
DPL
82H
DPH
82H
PCON
87H
TCON
88H
TMOD
89Ha
TL0
8AH
TL1
8BH
TH0
8CH
TH1
8DH
P1
90Ha
SCON
98Ha
SBUF
99H
P2
A0Ha
IE
A8Ha
P3
B0Ha
IP
B8Ha
PSW
D0Ha
ACC
E0Ha
B
F0Ha
Bit adreslenebilir data gzleri

Fonksiyon
Port 0
Stak iaretleyici
Data iaretleyici (dk)
Data iaretleyici (yksek)
G Kontrol
Zamanlayc/sayc data gz
Zamanlayc/sayc modu
Zamanlayc/sayc 0 (dk)
Zamanlayc/sayc 0 (yksek)
Zamanlayc/sayc 1 (dk)
Zamanlayc/sayc 1 (yksek)
Port 1
Seri alveri kontrol
Seri alveri data buffer
Port 2
Kesme aktifleme
Port 3
Kesme ncelii
Program stats
Akmlatr
B data gz

PSW Bit Adresleri


Sembol
CY
AC
F0
RS1
RS0

Adres
D0H.7
D0H.6
D0H.5
D0H.4
D0H.3

Fonksiyon
Elde bayra
Yedek elde bayra
Genel amal bayrak
Data gz seme (MSB)
Data gz seme (LSB)

OV
-P

D0H.2
D0H.1
D0H.0

Tama bayra
Kullanc tanmlanabilir bayrak
Parite bayra

8051 zel Fonksiyon Registerleri


8051 mikrokontrolc, pek ok alma moduna sahip olan esnek bir entegredir. Programlarn alma modunu
deitirmek iin zel fonksiyon registerleri deerleri okunabilir veya deitirilebilir. zel fonksiyon
registerlerine ulamak aynen normal RAM data gzlerine ulamak gibidir. genel hafza RAM 00h adresinden
7Fh adresine kadar uzanrken, zel fonksiyon registerleri 80h adresinden FFh adresine kadar uzanr. Bir nceki
sayfadaki tablo zel fonksiyon registerlerinin isimlerini ve adreslerini vermektedir.
Tabloda da grlebilecei gibi, 80h adresinden FFh adresine kadar 128 data gz bulunduu halde, standart
8051 entegresinde bu alanlarn yalnzca 21 tanesi zel fonksiyon registeri olarak kullanlmtr. Kullanlmayan
bu adreslere yazmak veya okumak beklenmedik program hatalarna sebep olabilir.
Bu nedenle bizim nerimiz, zel fonksiyon registeri olarak ayrlmam bu blgeleri kullanmamanzdr. 8051
entegresinin daha yukar modellerinde bu gzler farkl zel fonksiyon registerleri olarak tanmlanm olabilir.
Not: Adres deerleri 8 ile blnebilen tm zel fonksiyon registerlerinde bit ilemleri yaplabilmektedir.

zel Fonksiyon Data Gz Tanmlamalar:


Bu blmde yukardaki tabloda grlen tm zel fonksiyon data gzlerini tablodaki srasyla ksaca
tanmlamaya alacaz.

P0 (Port0, adres 80h, bit adreslenebilir)


Bu port giri/k portlarndan birisidir. Bu zel fonksiyon data gzndeki bitlerin herbiri 8051 entegresinin
bacaklarndan birisine karlk gelmektedir. rnein port0 registerinin 0 nolu biti, entegrenin P0.0 bacana, 7
nolu bit P0.7 nolu bacaa karlk gelmektedir. Entegredeki P0 bacaklarndan herhangi birisini 1 veya 0 yapmak
iin, P0 registerinde, entegre bacana karlk gelen bit deeri 0 veya 1 yaplr. Dolaysyla port 0 pinleri bit
adreslenebilir pinlerdir. Port 0a yazmak veya okumak iin aadaki komutlar kullanabilirsiniz.

MOV P0, #0FH;


Yukardaki komut port 0n pinlerinin dk nibelini 1 yksek nibelini 0 yapacaktr. Yukardaki komut
verildikten sonra port 0 pinlerinin deerleri aadaki gibi olacaktr.
P0.0, P0.1, P0.2, P0.3 = 1 ve P0.4, P0.5, P0.6, P0.7 = 0
Bu porttan bir okuma yapmak iin ise aadaki komutlar verilir.
MOV P0, #0FFH;
MOV A, P0;
Grld gibi porttan okuma yapmadan nce, btn port giri moduna getirilir. Port giri moduna getirildikten
sonra ise okuma ilemi gerekletirilir. Yukardaki komutlar port 0a 1 bayt bilgiyi yazmak veya okumakta

kullanlr. Daha nce sylediimiz gibi port 0 istenirse pin pin de kontrol edilebilir. Bit bit kontrol iin
kullanlabilecek 8051 assembly komutlar, SETB bit , CLR bit , CPL bit, MOV bit, C, MOV C, bit
komutlardr. Aada bu komutlarn nasl kullanlabilecine dair rnekler verilmitir.
SETB P0.1
; P0.1 pinini 1 yap.
CLR P0.5
; P0.5 pinini 0 yap
SETB C
; Elde bayra 1
MOV P0.4, C ; P0.4 pinine Elde bayrann deerini yaz.
SETB P0.7
; P0.7 pinini giri iin hazrla.
MOV C, P0.7 ; P0.7 pininin deerini Elde bayrana oku.
Daha ncedende bahsedildii gibi d hafza kullanlan devrelerde port 0 dk adres baytn ve data alveriini
gerekletirmek zere multiplex grev yapar. Adres ve data alverii CPU kontrol altndadr.

SP (Yn aretleyici, adres 81h)


Bu register 8051 entegresinin yn iaretleyici registeridir. Yn hzl data alveriinin bir yoludur. Yn
(Stack) last-in-first-out, son giren ilk kar prensibine gre alan bir hafza kavramdr. Yn iaretleyici,
yna en son eklenen datann RAM hafza adresini gsterir (TOP of stack). Yna bir deer itilmeden nce
yn iaretleyicisinin deeri 1 artrlr. rnein yn iaretleyicinin deeri 07h ise, bir PUSH komutundan sonra,
yn iaretleyicinin deeri 08h olacaktr. Yndan bir deer geri alnrken ise nce deer yndan alnr, daha
sonra yn iaretleyicisinin deeri 1 azaltlr. Yn iaretleyicinin deeri, yn ile alan tm komutlardan
sonra deimektedir. 8051 komut kmesi iinde yn kullanan komutlar, PUSH, POP, LCALL, RET, RETI ve
kesme program girileridir.
8051 entegresinin ilk almasyla, yn iaretleyicisi 07h deerini alr. Bunun anlam ynn balang
adresinin 08h olduudur. Yn 08h adresinden yukar doru geniler. Bu sebeble eer programnnzda
register banklar 1, 2 ve 3 kullanacaksanz dikkatli olmalsnz. Bu durumda ynn balangcn st hafza
elemanlarna iaretlemek gerekecektir. rnein yn balangc olarak 2Fh adresini kullanmak uygun olabilir.
Kullanc yn adresini nereden balatacana kendisi karar vermek durumundadr. rnein aadaki komut
yn iaretleyicisinin balang deerini 2Fh deerine atar.
MOV SP, #02FH;

DPL/DPH Data iaretleyicileri, adres 82h ve 83h )


DPL/DPH (data iaretleyicisi dk ve yksek registerleri, adres 82h ve 83h)
DPL ve DPH registerleri 16 bit bir adres oluturmak zere bir arada kullanlan zel fonksiyon registerleridir.
Data iaretleyici, d RAM hafza ile veri alveriinde ve d kod hafza ile ilgili baz ilemlerde kullanlr. Data
iaretleyici iaretsiz 16 bit bir sayy gsterdiine gre, data iaretleyici ile 0000h dan FFFFh (0-65535) adresi
aralnda hafza adreslenebilir.
Assembler dilinde DPTR ismi ile kullandnz data iaretleyici, aslnda DPH ve DPL zel fonksiyon data
gzleri tarafndan oluturulmu 16 bit bir saydr. Pek ok durumda DPTR nin DPH ve DPL baytlarn ayr ayr
ilemek durumunda kalabilirsiniz. rnein DPTR deerini yna yazmak istediinizi varsayalm. 16 bit bir
deeri tek hamlede yna yazacak bir 8051 komutu yoktur. Bu nedenle DPH ve DPL deerlerini ayr ayr yna
yazmanz gerekir. te yandan DPTR iaretleyicini bir artran 8051 komutu olmasna ramen DPTR
iaretleyicisini bir azaltan bir 8051 komutu yoktur. Byle bir durumda DPH ve DPL registerlerini kullanarak
sizin bu azaltma ilemini yapmanz gereklidir. Data iaretleyicisi en ok d veri hafza ile data alveriinde
kullanlr. Bu amala nce data okunacak veya yazlacak hafza adresinin deeri data iaretleyicisine yklenir.
Daha sonra MOVX komutu ile bu deer hafzadan okunur veya hafzaya yazlr. Aadaki komut seti 2300H
adresine 13 deerini yazmak iin kullanlmtr.

MOV DPTR, #2300H;


MOV A, #13;
MOVX @DPTR, A;

Hafzann 2300H adreindeki bir deeri okumak iin ise


MOV DPTR, #2300H;
MOVX A, @DPTR;
Komutlar verilir. Harward mimarisine gre yaplan devrelerde, MOVC komutu yine data iaretleyicisi ile
kullanlarak program hafzadan veri okunmasn salar. Aadaki komutlar program hafzann 0300H
adresinden bir verinin okunmasnda kullanlmaktadr.
MOV A, #0;
MOV DPTR, #0300H;
MOVC A, #A+DPTR
PCON (G Kontrol registeri, adres 87h)
Adresinden de anlalabilecei gibi PCON registeri bit adreslenebilir bir register deildir. Bit adreslenebilir
registerlerin adreslerinin 8e blnebilmesi gerektiini hatrlaynz. Bu registerin PD ve IDL bitleri CMOS
entegrelerde g kontrol amacyla kullanlmaktadr. imdi bu registerin bitlerini ve bit anlamlarn grelim.

7
SMOD

6
-

5
-

4
-

3
GF1

2
GF0

1
PD

0
IDL

Bit 7 SMOD seri iletiim hz modifikasynu bit. Bu bit SET edildiinde seri haberleme hz, zamanlayc 1in
mod 1, 2 veya 3 ile kullanlmas sonucunda hesaplanan iletiim hznn 2 katna kar. Bu bit 0 olduunda,
iletiim hz zamanlayc 1 ile belirlenen iletiim hz olur.
Bit 6 - Kullanlmyor.
Bit 5 -Kullanlmyor.
Bit 4 -Kullanlmyor.
Bit 3 GF1 Genel amal bayrak. Programc tarafndan kullanlabilir.
Bit 2 GF0 Genel amal bayrak. Programc tarafndan kullanlabilir.
Bit 1 PD CMOS entegrelerde, entegrenin g tketimini azaltmakta kullanlr.
Bit 0 IDLE CMOS entegrelerin g tketim kontrol iin kullanlan dier bir bit.

TCON (Zamanlayc kontrol registeri, adres 88h, bit adreslenebilir)


Zamanlayc kontrol registeri standart 8051 entegresinde bulunan iki adet zamanlaycnn ayarlarnn
yaplmasnda kullanlr. Bu register kullanlarak zamanlayclar altrlabilir veya durdurulabilir. Bu registerde
bulunan bitlerden birisi zamanlaycnn tama biti olarak kullanlmaktadr. Bylece her zamanlayc veya sayc

tamasnda bu bit aktiflenmektedir. Bu zel fonksiyon registerinde bulunan bitlerden dier birka, zamanlayc
ve saycnn kesme retmesi iin programlanabilmektedir.
TCON registeri bit adreslenebilir bir registerdir. Bu registerin bitleri zamanlayc/sayclar kontrol etmekte
kullanlr.
7

6
TF1

5
TR1

4
TF0

3
TR0

2
IE1

1
IT1

0
IE0

IT0

Bit 7 TF1 Zamanlayc 1 tama bayra. Zamanlayc tat anda bu bayrak SET olur. Mikroilemci ilgili
kesme programna srad anda bu bayrak tekrar temizlenir. Eer kesme program yoksa bu bayrak program
tarafndan temizlenmelidir.
Bit 6 TR1 Zamanlayc 1 alma kontrol biti. Zamanlayc 1 altmaya balatlmak istendiinde bu bayrak
SET edilir. Bu bayrak SET olduu srece zamanlayc 1 almaktadr.
Bit 5 TF0 Zamanlayc 0 tama bayra. Zamanlayc tat anda bu bayrak SET olur. Mikroilemci ilgili
kesme programna srad anda bu bayrak tekrar temizlenir. Eer kesme program yoksa bu bayrak program
tarafndan temizlenmelidir.
Bit 4 TR0 Zamanlayc 0 alma kontrol biti. Zamanlayc 0 almaya balatlmak istendiinde bu bayrak
SET edilir. Bu bayrak SET olduu srece zamanlayc 0 almaktadr.
Bit 3 IE1 Harici kesme 1 kenar bayra. INT1 pininde yksekten alaa den bir sinyal grldnde, program
INT1 kesme adresi 0013he srar.
Bit 2 IT1 Harici kesme 1 INT1 tip belirleme biti. Eer sinyal yksekten de getiinde kesme aktiflenmesi
isteniyorsa bu bit SET edilir. Bu bit 0 olduunda pindeki bir 0 sinyali kesmeyi aktifler.
Bit 1 IE0 Harici kesme 0 kenar bayra. INT0 pininde yksekten alaa den bir sinyal grldnde,
program INT0 kesme adresi 0003he srar.
Bit 0 IT0 Harici kesme 0 INT0 tip belirleme biti. Eer sinyal yksekten de getiinde kesme aktiflenmesi
isteniyorsa bu bit SET edilir. Bu bit 0 olduunda pindeki bir 0 sinyali kesmeyi aktifler.
TMOD (zamanlayc modu registeri, adres 89h)
TMOD registerindeki btn bitlerin ayr ayr anlamlar olmasna ramen TMOD registeri bit adreslenebilir bir
register deildir. Bu register standart iki zamanlaycnn hangi modda alacan kontrol etmekte kullanlan
registerdir. Bu register kullanlarak zamanlayclar, 16 bit zamanlayc, 8-bit tekrar yklenen zamanlayc veya
13 bit zamanlayc olarak programlanabilmektedir. Buna ilave olarak zamanlayclar, sayc olarak ta
programlanabilir. Bylece harici bir sinyalin her deiiminde zamanlaycxnn deeri 1 artacaktr.
7
Gate

6
C/T

5
M1

4
M0

3
Gate

2
C/T

1
M1

0
M0

Bit 7 Gate OR kaps enable biti.. Zamanlayc 1in almaya balayabilmesi iin bu bitin deerinin 0 olmas
gereklidir. Yani GATE biti ve TCON registerindeki TR1 biti zamanlayc 1in almaya balamasn kontrol
eder. GATE biti 1 ve TR1 biti 1 ise, zamanlaycnn almas INT1 pinindeki sinyale baldr. Bu sinyal 1
olduu anda zamanlayc 1 alr.
Bit 6 C/T Sayc veya zamanlayc seme biti. Bu bit SET olduu zaman zamanlayc/sayc 1 sayc modunda
almaya balar. Bu durumda T0 pinine bal sinyal saylmaya balar.
Bit 5 M1 Zamanlayc/sayc 1 mod seme biti

Bit 4 M0 Zamanlayc/sayc 1 mod seme biti.


Bit 3 Gate OR kaps enable biti.. Zamanlayc 1in almaya balayabilmesi iin bu bitin deerinin 0 olmas
gereklidir. Yani GATE biti ve TCON registerindeki TR1 biti zamanlayc 1in almaya balamasn kontrol
eder. GATE biti 1 ve TR1 biti 1 ise, zamanlaycnn almas INT1 pinindeki sinyale baldr. Bu sinyal 1
olduu anda zamanlayc 1 alr.
Bit 2 C/T Sayc veya zamanlayc seme biti. Bu bit SET olduu zaman zamanlayc/sayc 1 sayc modunda
almaya balar. Bu durumda T0 pinine bal sinyal saylmaya balar.
Bit 1 M1 Zamanlayc/sayc 0 mod seme biti.
Bit 0 M0 Zamanlayc/sayc 0 mod seme biti.
M1
0
0
1
1

M0
0
1
0
1

MOD
0
1
2
3

TL0/TH0 (Zamanlayc 0 dk ve yksek, adres 8Ah ve 8Bh)


Bu iki zel fonksiyon registeri zamanlayc 0' temsil eden zel fonksiyon registerleridir. Bu registerlerin nasl
davranacaklar TMOD registerine yazlan kod ile konfigre edilir. Bilinmesi gereken nemli noktalardan birisi
de zamanlayclarn yalnzca yukar doru saymasdr. TL0 ve TH0 saycnn sayma deerlerinin bulunduu
registerlerdir.

TL1/TH1 (Zamanlayc 1 dk ve yksek, adres 8Ch ve 8Dh)


Bu iki zel fonksiyon registeri zamanlayc 1'i temsil ederler. Zamanlayc/sayc 1in sayma deerleri bu
registerlerde bulunur. Herhangi bir anda sayma deeri okunmak istendiinde, TL1 ve TH1 sayclar nn
deerleri deikenlere okunur. rnein kullanacamz iki deiken TIMERH ve TIMERL olsun.
MOV TIMERH, TH1;
MOV TIMERL, TL1;
P1 (Port 1, adres 90h, bit adreslenebilir)
Bu port giri/k portlarndan birisidir. Bu zel fonksiyon data gzndeki bitlerin herbiri 8051 entegresinin
bacaklarndan birisine karlk gelmektedir. rnein port1 registerinin 0 nolu biti, entegrenin P1.0 bacana, 7
nolu bit P1.7 nolu bacaa karlk gelmektedir. Entegredeki P1 bacaklarndan herhangi birisini 1 veya 0 yapmak
iin, P1 registerinde, entegre bacana karlk gelen bit deeri 0 veya 1 yaplr. Dolaysyla port 1 pinleri bit
adreslenebilir pinlerdir. Port 1e yazmak veya okumak iin aadaki komutlar kullanabilirsiniz.
MOV P1, #0FH;
Yukardaki komut port 1n pinlerinin dk nibelini 1 yksek nibelini 0 yapacaktr. Yukardaki komut
verildikten sonra port 1 pinlerinin deerleri aadaki gibi olacaktr.
P1.0, P1.1, P1.2, P1.3 = 1 ve P1.4, P1.5, P1.6, P1.7 = 0
Bu porttan bir okuma yapmak iin ise aadaki komutlar verilir.
MOV P1, #0FFH;
MOV A, P1;

Grld gibi porttan okuma yapmadan nce, btn port giri moduna getirilir. Port giri moduna getirildikten
sonra ise okuma ilemi gerekletirilir. Yukardaki komutlar port 1e 1 bayt bilgiyi yazmak veya okumakta
kullanlr. Daha nce sylediimiz gibi port 1 istenirse pin pin de kontrol edilebilir. Bit bit kontrol iin
kullanlabilecek 8051 assembly komutlar, SETB bit , CLR bit , CPL bit, MOV bit, C, MOV C, bit
komutlardr. Aada bu komutlarn nasl kullanlabilecine dair rnekler verilmitir.
SETB P1.1
; P1.1 pinini 1 yap.
CLR P1.5
; P1.5 pinini 0 yap
SETB C
; Elde bayra 1
MOV P1.4, C ; P1.4 pinine Elde bayrann deerini yaz.
SETB P0.7
; P1.7 pinini giri iin hazrla.
MOV C, P0.7 ; P0.7 pininin deerini Elde bayrana oku.
SCON (seri kontrol, adres 98h, bit adreslenebilir)
SCON zel fonksiyon registeri 8051 seri giri/k biriminin davrann kontrol etmekte kullanlr. rnein bu
register kullanlarak seri haberleme hz (baud rate) belirlenir. Bu registerde, ayn zamanda seri bir karakter
baaryla yollandnda veya baaryla okunduunda aktiflenen bayraklar bulunur. Seri port kullanlmak
istendiinde yalnzca SCON registerinin konfigre edilmesi yeterli olmayabilir. Bu durumda TCON ve TMOD
registerlerinde de gerekli deiimler yaplmaldr. nk seri haberleme hzn ayarlamak iin
zamanlayclardan birisini kullanmak gerekebilir. Aada SCON registerinin yaps ve bitleri grlmektedir.

Bit
7
6
5
4
3
2
1
0

sim
SM0
SM1
SM2
REN
TB8
RB8
TI
RI

Bit Adresi
9Fh
9Eh
9Dh
9Ch
9Bh
9Ah
99h
98h

Aklama
Seri port mod bit 0
Seri port mod bit 1.
Birden ok ilemci ile haberleme modu
Alc aktif biti. Karakter okumas iin bu bit aktif yaplmaldr.
Yolla biti, bit 8. Mod 2 ve 3 de karakter yollamak iin kullanlan bit.
Mod 2 ve 3 de karakter okumak iin kullanlan bit.
Yolla bayra. Bir karakter yolland zaman bu bit aktif olur.
Alc bayra. Bir karakter okunduu zaman bu bit aktif olur.
SM0 ve SM1 bitleri ve anlamlar.

SM0

SM1

Seri Mod

Aklama

Haberleme hz

8-bit kaydrma Registeri Osilatr frekans / 12

0
1
1

1
0
1

1
2
3

8-bit UART
9-bit UART
9-bit UART

Zamanlayc 1 ile ayarlanr.(*)


Osilatr frekans / 32
Zamanlayc 1 ile ayarlanr. (*)

(*) Zamanlayc 1 kullanlarak haberleme hz seildii durumda, eer PCON.7 biti aktif yaplrsa, haberleme
hz iki katna ykselmi olur.
SCON registeri bit adreslenebili bir registerdir. Bu registerin bitleri isimleriyle kullanlabilir. MCS-51 assembly
programlama dilinde, bu registerin bitleri tanmlanm durumdadr.
SCON registerinin st 4 biti (bit 4 - bit 7 ) konfigrasyon bitleridir.
SM0 ve SM1 bitleri seri haberleme modunu semekte kullanlr. 4 farkl seri haberleme modu vardr. Seri
haberleme modunun seilmesiyle haberleme hznn nasl hesaplanaca da belirlenmi olur. Mode 0 ve Mod
2 de haberleme hz kristal frekans ile orantl bir saydr ve sabittir. Mod 1 ve 3 de ise haberleme hz
zamanlayc 1'in birim zamanda tama saysna bal olarak deikendir.

SM2 biti, birden fazla ilemci haberlemesi bayradr. Genelde 8051 seri hattan bir karakter okuduunda, RI
(alnd kesmesi) bayra aktiflenecektir. Bylece program bir karakterin alndn ve ilenmek zere hazr
olduunu bilebilecektir. Fakat SM2 biti aktiflenirse, RI bayra, ancak okunan 9'uncu bit "1" ise
aktiflenecektir. Bu bit gelimi seri haberleme olay iin zaman zaman son derece faydaldr. Fakat biz hemen
tm programlarmzda bu biti "0" yapacaz Dolaysyla her karakter okunuunda, RI bayra aktiflecektir.
Bir sonraki bit REN (receiver enable) alc aktifle bitidir. Bu bitin anlam ok aktr. Eer seri port zerinden
okuma yapmak istiyorsanz bu biti aktiflemeniz gerekir.
SCON registerinin son 4 biti, seri haberleme srasnda kullanlan ilem bitleridir. Bu bitler seri portu konfigre
etmek iin deil seri yazma/okuma ilemlerini gerekletirmek iin kullanlr.
TB8 biti mod 2 ve mod 3 de kullanlr. Mod 2 ve mod 3 de toplam 9 bit data yollanp okunmaktadr. lk 8 bit
karakter deeridir, 9'uncu bit TB8 den okunarak yollanr.
RB8 biti de mod 2 ve mod 3 de kullanlr. Mod 2 ve mod 3 de okuma yapldnda toplam 9 bit data okunur.
Okunan ilk 8 bit SBUF registerine kaydedilir. 9'uncu bit RB8 bitine okunur.
TI (transmit interrupt) yolland kesmesi bitidir. Program seri porttan bir bilgi yolladnda, deerin seri porttan
tamamen yollanmas iin belli bir zaman geecektir. Eer bu karakterin yollanmas bitmeden, yeni bir karakter
yollanmak zere SBUF registerine yazlrsa, datalar birbirine karacaktr. Bunu nlemek iin yollama
tamanland (TI) biti kullanlr. TI biti "1" ise bir nceki karakter yollanm demektir ve yeni bir karakter
yollanmasnda saknca yoktur. Dolaysyla programc, yeni bir karakter yollamadan nce TI bitini okuyarak
kontrol etmelidir.
RI (receive interrupt) alma kesmesi bitidir. Bu bit de TI bitine benzer bir grev grmektedir. Fakat bu defa,
dardan bir karakter okunduunda, okumann bittiini bildirmek zere bu bir "1" olmaktadr.

SBUF( seri kontrol, adres 99h)


Seri port bafr, seri port zerinden datalarn yazlmasnda ve okunmasnda kullanlr. SBUF registerine yazlan
herhangi bir deer entegrenin yolla (TXD) baca zerinden seri bilgi halinde yollanlr. Benzer ekilde
entegreye oku (RXD) baca zerinden gelen bir bilgi de SBUF registerinde okunmaya hazr bir ekilde tutulur.
Yani bir karakter yollanaca zaman SBUF registerine yazlr. Bir karakter okunaca zaman ise SBUF registeri
okunur. Aada seri porta bir karakter yazlmas iin verilmesi gereken komutlar grlmektedir.
CLR TI
; nce TI bitini temizle.
MOV SBUF,#A ; Yollanacak karakteri seri porta yaz.
JNB TI,$
; Karakter yollamasnn bitiini bekle.
Seri porttan bir karakter okunmas iin ise aadaki komutlar verilmelidir.
JNB RI,$
; 8051 RI bayrann aktiflenmesini bekle
MOV A,SBUF
; Gelen karakteri akmlatre oku.

P2 (Port 2, adres A0h, bit adreslenebilir)


Bu portta dier portlar gibi bit adreslenebilir bir porttur. D hafza kullanan devrelerde bu portun grevi, d
adres hattnn yksek baytn salamaktr. Mikroilemci d program hafzadan kod okuma yapt srada kodun
adresinin yksek bayt bu port tarafndan salanr. D veri veya kod hafzadan MOVX veya MOVC
komutlaryla veri alverii srasnda da bu port yine okunacak adresin yksek baytn salama ilevini grr.
Port 2 pinlerinin d hafzaya nasl balandn grmek iin Harward ve Von Neumann mimarisine gre 8051
devre emalarna baknz.

Eer devrede d hafza kullanlmayacaksa, bu porrta dier portlar gibi basit giri k ilemleri iin
kullanlabilir. Bu portta Port1 ve Port3 gibi dahili pull-up direnlerine sahiptir. Bu yzden darya veri yazarken
d pull-up direnlerine gerek yoktur. Basit giri k birimi olarak kullanldnda, bu zel fonksiyon data
gzndeki bitlerin herbiri 8051 entegresinin bacaklarndan birisine karlk gelmektedir. rnein port2
registerinin 0 nolu biti, entegrenin P2.0 bacana, 7 nolu bit P2.7 nolu bacaa karlk gelmektedir. Entegredeki
P2 bacaklarndan herhangi birisini 1 veya 0 yapmak iin, P2 registerinde, entegre bacana karlk gelen bit
deeri 0 veya 1 yaplr. Port 2ye yazmak veya okumak iin aadaki komutlar kullanabilirsiniz.
MOV P2, #0FH;
Bu komutla Port2ye bir seferde 1 bayt veri yazlmtr. Port2den bir seferde 1 bayt veri okumak iin ise
aadaki komutlar verebilirsiniz.
MOV P2, #0FFH;
MOV A, P2;
Port 2yi bit bit kontrol etmek iin ise 8051 assembly bit komutlar, SETB bit , CLR bit , CPL bit, MOV bit,
C, MOV C, bit kullanlabilir.
SETB P2.1
CLR P2.5

; P2.1 pinini 1 yap.


; P2.5 pinini 0 yap

SETB C
; Elde bayra 1
MOV P2.4, C ; P2.4 pinine Elde bayrann deerini yaz.
SETB P2.7
; P2.7 pinini giri iin hazrla.
MOV C, P2.7 ; P2.7 pininin deerini Elde bayrana oku.
IE ( Kesme aktifle registeri, adres A8h)
IE zel fonksiyon registeri, kesmelerin aktiflenmesinde ve pasiflenmesinde kullanlan registerdir. Bit 0-1-2-3-45-6 , herhangi bir zel kesmeyi aktiflemekte veya pasiflemekte kullanlan bitlerdir. Bit 7 tm kesmeleri
aktiflemek ve pasiflemekte kullanlr. Bu bit pasiflendiinde, herhangi bir zel kesmeyi aktifleyecek bit 1 olsa
bile, kesme pasif kalr.
Bit
7
6
5
4
3
2
1
0

sim
EA
ES
ET1
EX1
ET0
EX0

Bit Adresi
AFh
AEh
ADh
ACh
ABh
AAh
A9h
A8h

Aklama
Genel kesme aktifle/engelle
Tanmsz
Tanmsz
Seri kesme aktifle
Zamanlayc 1 kesmesi aktifle
D kesme 1 aktifle
Zamanlayc 0 kesme aktifle
D kesme 0 aktifle

Herhangi bir kesmeyi aktiflemek iin, once hangi kesme aktifleneckse o bit SET edilir. Daha sonra EA biti SET
edilir. rnein D kesme 0n almaya balamas iin,
SETB EX0;
SETB EA;
komutlar verilir. Baz yerlerde BIT kontrol yerine bayt seviyesinde komutlar da grebilirsiniz. Bu sizi
artmasn. Fakat program okunulabilirlii asndan siz yine de BIT komutlarn tercih edin. Yukardaki 2 satr
kodu, rnein baka bir kitapta,
MOV IE, #01H ;
ORL IE, #080H;

veya,
ORL IE, #01H;
ORL IE, #080H;
veya baka formlarda grebilirsiniz. Bunlarn hepsinin ayn ii yaptna dikkat ediniz.
P3 (port 3, adres B0h, bit adreslenebilir)
Bu portta dier portlar gibi bit adreslenebilir bir porttur. Port 3 pinlerinin hepsi ift fonksiyona sahip pinlerdir.
rnein seri iletiim iin kullanlan TxD, RxD pinleri, d hafza okuma yazma pinleri WR ve RD,
zamanlayc/sayc pinleri T0 ve T1, D kesme pinleri INT0 ve INT1 hep bu portta bulunur. Btn bu
fonksiyonlar, kendi zel fonksiyon registerleri aracl ile programlanr. Bu fonksiyonlarn kullanlmad pinler
basit giri/k pinleri olarak kullanlabilir. Port3 de Port1 ve Port2 gibi i pull-up direnlerine sahiptir. Bu
sebeble bu port basit giri k iin kullanldnda, harici pull-up direnlere gerek yoktur. Dier portlarda
olduu gibi basit giri/k ilemleri P3 zel fonksiyon registeri aracl ile yaplr. Aadaki komutlar P3
pinlerinin P3 zel fonksiyon registeri aracl ile nasl kontrol edilebileceini gstermektedir.
MOV P3, #0FH;
Bu komutla Port3e bir seferde 1 bayt veri yazlmtr. Port3den bir seferde 1 bayt veri okumak iin ise
aadaki komutlar verebilirsiniz.
MOV P3 #0FFH;
MOV A, P3;
Yukardaki komut verildikten sonra port 1 pinlerinin deerleri aadaki gibi olacaktr.
P1.0, P1.1, P1.2, P1.3 = 1 ve P1.4, P1.5, P1.6, P1.7 = 0
Port 3 bit bit kontrol etmek iin ise 8051 assembly bit komutlar, SETB bit , CLR bit , CPL bit, MOV bit,
C, MOV C, bit kullanlabilir.
SETB P3.1
CLR P3.5

; P3.1 pinini 1 yap.


; P3.5 pinini 0 yap

SETB C
; Elde bayra 1
MOV P3.4, C ; P3.4 pinine Elde bayrann deerini yaz.
SETB P3.7
; P3.7 pinini giri iin hazrla.
MOV C, P3.7 ; P3.7 pininin deerini Elde bayrana oku.
IP (kesme ncelii, adres B8h, bit adreslenebilir)
IP zel fonksiyon registeri kesme nceliklerini tanmlamakta kullanlr. Birden ok kesme yaratan bir sistemde,
ayn anl oluan iki kesmeden hangisin,n daha nce ileme sokulacan belirlemek gereklidir. 8051
entegresinde bir kesme ya dk ncelie (0) yada yksek ncelie (1) sahip olarak tanmlanabilir. rnein
birden fazla kesme kullanan bir sistemde, seri port kesmesini yksek, dier tm kesmeleri dk ncelikli olarak
tanmladmz varsayalm. Bu durumda, her bir seri port kesmesi, kesme altprogramnn almasn
salayacaktr. Seri port kesmesi srasnda, baka bir kesme aktif olsa bile nce seri port kesmesi program
tamamlanacaktr. Aada IP registerinin pinleri grlmektedir. Herhangi bir kesmeyi ncelikli yapmak iin o
kesmenin bitini SET etmek yeterlidir. rnein seri port kesmesinin dier kesmelerden daha ncelikli olmasn
istiyorsak,
SETB PS;
komutunu vermek yeterlidir.

Bit
7
6
5
4
3
2
1
0

sim
PS
PT1
PX1
PT0
PX0

Bit Adresi
BCh
BBh
Bah
B9h
B8h

Aklama
Tanmsz
Tanmsz
Tanmsz
Seri port ncelii
Zamanlayc 1 ncelii
D kesme 1 ncelii
Zamanlayc 0 ncelii
D kesme 0 ncelii

ekil. Kesme ncelii registeri bitleri ve anlamlar.


PSW (program stats kelimesi, adres D0h, bit adreslenebilir)
Program stats kelimesi registerinde 8051 komutlarnn ilemesine gre, aktiflene ve pasiflenen bayraklar
bulunur. PSW registerinde, elde bayra, yedek elde bayra, tama bayra ve parite bayra gibi nemli bitler
bulunur. Buna ek olarak PSW registerinde hangi register bankasnn kullanlacan belirlemekte kullanlan bitler
bulunur. Bir kesme program yazldnda, kesme program banda program stats kelimesini yna saklamak
ve kesme program sonunda yndan geri almak, pek ok programlama hatasn nleyecektir. nk 8051
komut kmesi komutlarnn pek ou, PSW registerinin deimesine yol aar.
8051 matematik ilemlerinin sonucuna gre deien 4 PSW bitine sahiptir. Bu bitler Carry (elde) biti, Auxillary
Carry (yardmc elde) biti, Overflow (tama) biti ve Parity (parite) bitleridir. PSW registerinde bunlardan baka
RS0 ve RS1 register bank seme bitleri ve bir tan de programc kullanmna sunulmu genel amal bit F0
bulunur.

7
CY

6
AC

5
F0

4
RS1

3
RS0

2
OV

1
-

Bit Sembol
7

CY Elde bayra. Matematik ilemlerde, sra, dndr ve bit ilemlerinde kullanlr.

AC

Yardmci elde. BCD say ilemlerinde kullanlr.

F0

Kullanc iin ayrlm bit.

RS1

Register bank seme biti 1

RS0

Register bank seme biti 0

RS1

RS0

0
0
1
1

0
0
1
1

0
0
0
0
0
0
1
1
1
Register bank 3

0
0
1

0
0
1

0
0
1

0
0
1

0
0
1

OV

Tama bayra. Aritmetik ilemlerde kullanlr.

Kullanm d.

0 Register bank 0
1 Register bank 1
0 Register bank 2

0
P

Akmlatrn paritesini gsterir. 1 = ODD Parity

ACC (akmlatr, adres E0h, bit adreslenebilir)


Akmlatr, 8051 registerleri ierisinde en ok kullanlan registerlerden birisidir. nk pek ok 8051 komutu
direkt olarak akmlatr kullanmaktadr. Akmlatr de zel fonksiyon registerlerinden birisidir. Dolaysyla
adresi veya ismi verilerek eriilebilir. rnein MOV A, #20h komutu ile MOV E0h, 20h komutu ayn ilemleri
yapar. Bununla beraber birini komutu kullanmay tercih etmeliyiz. nk birinci komutun makina kodu karl
2 bayt, fakat ikinci komutun makina kodu karl 3 bayttr.
B ( B registeri, adres F0h, bit adreslenebilir)
B registeri 8051 komut kmesi ierisinde, arpma ve blme ilemlerinde kullanlan bir registerdir. Fakat bu
register ayn zamanda geici datalarn saklanmas iinde sklkla kullanlr.

8051 Seri Port ile Haberleme


8051 entegrenin gl zelliklerinden birisi de yapsnda bulundurduu seri haberleme birimidir (UART). 8051
entegrenin seri bir haberleme birimine ship olmas demek, 8051 ile standart RS-232 seri haberlemesinin
yaplabilmesidir. Byle bir birim entegre ierisinde bir para olarak verilmeseydi, seri bir hattan bilgi yollayp
okumak olduka uratrc bir i olarak karmza kacakt. Seri bir hattan bilgi yollamak iin bit deerini
entegrenin bir bacana yazmak, daha sonra dikkatli bir zamanlama kullanarak srasyla bitleri hatta yerletirmek
gerekecekti. Bir pin zerinden seri bilgi okunmas daha da klfetli bir i olarak karmza kacakt. Yollanan
veya okunan her bir karakterin, balang biti (start bit), biti biti veya bitleri (stop bit), parite kontrolnn 8051
programcs tarafndan yaplmas gerekecekti. Fakat gnmz mikrokontrolclerinin ounda seri haberleme
biriminin bulunmas bu sorunu gidermitir.
Entegrenin seri portunu kullanmak iin yapmamz gereken yalnzca bir ka ilem vardr. Bunun iin entegrenin
seri port iletiim modunu ve seri port haberleme hzn sememiz gereklidir. Bu ilemler yapldktan sonra
yapmamz gereken tek ey yazacamz karakteri SBUF zel fonksiyon registerine yazmak ve okuyacamz
karakteri SBUF registerinden okumaktr. 8051 bir karakteri yolladnda bize karakteri yolladn, veya seri
porttan bir karakter okunduunda okunan bir karakterin olduunu bize bildirecektir. Bylece programlayc
karakterin bit baznda gnderilme ileminin skntlarndan kurtulmu olmaktadr.
Seri port asenkron iletiim, bir start biti, bir veya daha fazla stop biti kullanr.

Seri haberleme ve A Yaplar


Bir dizi bilgisayar veya bir dizi ilemciyi birbirine balamak iin en uygun yntem olarak bir ka temel yntem
vardr. Bunlardan en nemlileri, yldz (star) ve loop (dng) balama yntemleridir.
Yldz balama ynteminde ana kontrolcden birer hat tm dier ikincil kontrolclere gtrlr. Bu yntem de
tm kontro karar ana kontrolc tarafndan verilir ve her bir ikincil kontrolc yalnzca ana kontrolc ile
iletiimde bulunur.
Dng (llop) balama ynteminde ise bir kontrol hatt ile ana kontrolc tm dier kontrolclere balanr. Hangi
yntemin seilecei bu ii dzenleyen kiinin tercihine ve pek ok d etkene bal olabilir.
Temel olarak yldz balama yntemi gvenilirlik ve hata bulma asndan dng yntemine gre daha stndr.
Dng yntemi ise maliyet ve kablo says ynnden stndr. Yldz yntemi eer ikincil kontrolclerin says
azsa ve ana kontrolc ile ikincil kontrolcler arasndaki mesafe az sa tercih edilen yntem olabilir. Fakat ikincil
kontrolclerin says ve bu kontrolclerin ana kontrolcye olan uzakl arttka tercih dng yntemine doru
gider.
Seri Data Modu 0

8051 entegrenin seri haberleme biriminin Seri data modu 0a getirilmesi iin SM0 ve SM1 bitleri 0 yaplr. Seri
data modu 0da haberleme hz sabittir ve osilatr frekansnn 12 de birine eittir. 12Mhz kristal kullanlan bir
8051 devresinde bu haberleme hz 1 Megabyte/s dir. Bu haberleme modunda RxD ucu hem karekterlerin
okunmasnda, hem de karakterlerin yollanmasnda kullanlr. Entegre seri haberleme modu 0a getirildiinde,
TxD pininde ise kristal frekansnn 1/12 sinde kare dalga sinyal bulunur. Bu sinyal yalnzca haberleme
srasnda aktif duruma gelir. Hatta haberleme olmad zaman, TxD hatt 1 seviyesinde bulunur. Entegreden
data yollanrken, TxD hattnn ilk ykselmesinden, 1 clock sonra yollanacak karakterin ilk biti RxD hattna

kaydrlr. Daha sonra TxD hattnn her ykseliinden 1 clock sonra dier bitler RxD hattna konularak karakter
hattan yollanm olur. Entegreye data okunurken de, karakterler RxD hattndan okunur. TxD hattnda ise yine
senkronizasyon sinyali bulunur. Gelen bitler TxD hattnn den kenarndan 2 veya 3 clock sonra seri bafra
(SBUF ) alnr. Mod 0 bilgisayar ve 8051 arasnda haberlemeden daha ziyade 8051 ve mod 0 benzeri
haberleme kullanan dier entegrelerle veya dier 8051 ilemcilerle haberleme iin kullanlmak zere
dnlm bir haberleme modudur.

Seri Data Modu 1


Seri port konfigre edilirken yukarda da belirtildii gibi program seri port haberleme hzn belirleyecek
dzenlemelreri yapmaldr. Yalnzca mod 1 ve mod 3 de seri port haberleme hznn konfigrasyonuna gerek
vardr. mod 2 ve mod 4 seri port haberleme hzn direkt olarak kristal frekansndan rettiinden bu modlarda
haberleme hz ile ilgili ilem yapmaya gerek yoktur.
Mod 1 ve Mod 3 de seri port haberleme hz zamanlayc 1 tamalaryla belirlenir. Zamanlayc 1 ok sk
tayorsa, haberleme hz yksek daha seyrek tayorsa haberleme hz daha dk olacaktr.Zamanlayc 1'i
haberleme hzn belirlemek zere ok farkl biimde programlama olana vardr. Fakat en ok kullanlan
metod, zamanlayc 1'i 8 bit otomatik ykle modunda (zamanlayc modu 2) kullanmak ve TH1 registerine
gerekli tekrar ykleme deerini kaydetmektir. TH1 registerine yklenecek deeri bulmak iin (PCON.7 = 0)
iken aadaki forml kullanmamz gerekmektedir.
TH1 = 256 - ((Kristal frekans / 384) / Haberleme Hz)
Eer (PCON.7 = 1) ise, haberleme hz iki katna kyordu. Dolaysyla PCON.7 = 1 olduu durumda
kullanmamz gereken forml,
TH1 = 256 - ((Kristal frekans / 192) / Haberleme Hz)
olacaktr. rnein 11.059 Mhz lik bir kristalimiz olduunu dnelim. Bu kristal frekansnda, zamanlayc 1'i
kullanarak saniyede 19,200 bit data haberleme hznda haberleme yapmak isteyelim. TH1 registerine
yazmamz gereken deeri bulmak iin, yukariaki formllerden birincisini kulllanalm.
TH1 = 256 - ((Kristal frekans / 384) / Haberleme hz)
TH1 = 256 - ((11059000 / 384) / 19200 )
TH1 = 256 - ((28,799) / 19200)
TH1 = 256 - 1.5 = 254.5
Yukardaki hesaplamalardan da grlebilecei 19,200 haberleme hznda alabilmek iin TH1'e yazmamz
gereken deer 254.5 elde edilmektedir. Bir registere ksuratl bir say koyma imkan yoktur. Dolaysyla bu
sayy TH1 registerine yazamayz. Bunun yerine 254 yazarsak elde edeceimiz haberleme hz 14,400, 255
yazarsak ise elde edeceimiz haberleme hz 28,800 olacaktr. yleyse 19,200 haberleme hzn
gerekletirmek iin Pcon.7 bitini "1" yapp, ikinci forml kullanalm.
TH1 = 256 - ((Kristal frekans / 192) / haberleme hz)
TH1 = 256 - ((11059000 / 192) / 19200)
TH1 = 256 - ((57699) / 19200)
TH1 = 256 - 3 = 253
Burada elde ettiimiz deer, ksratl bir deer deildir. Dolaysyla bu deeri TH1 registerine yazarak 19,200
baud iin gerekli ilemleri tamamlam oluruz. Dolaysyla, 11,059 Mhz bir kristalle 19, 200 haberleme hznda
haberleebilmek iin yapmamz gerekenler srasyla unlardr.
1. Seri portu mod 1 veya mod 3 e getirmek gerekir.
2. Zamanlayc 1'i mod 2'ye getirmemiz gerekir.

3. TH1'e 253 deerinin yazlmas gerekir.


4. PCON.7 (SMOD) bitini "1" yapmamz gerekir.
imdi yukardaki ilemleri, ASSEMBLY dilinde gerekletirelim.
MOV SCON, #048H
MOV TCON, #020H
MOV TH1, #0FDH
MOV TL1, #0FDH
ORL PCON, #080H

; seri port mod 1


; zamanlayc 1 mod 2
; TH1 = 253
; TL1 = 253
; PCON SMODE biti = 1

Eer kullandmz frekans 12 Mhz ise, 19200 haberleme hz iin ne yapabileceimizi grelim.
nce PCON.7 = 0 alp birinci forml deneyelim.
TH1 = 256 - ((Kristal frekans / 384) / Haberleme hz)
TH1 = 256 - ((12,000,000 / 384) / 19200 )
TH1 = 256 - ((31,250) / 19200)
TH1 = 256 - 1..63 = 254.37
Grdnz gibi, ksratl bir say elde ettik. Bu saynn TH1e konulmasna olanak yoktur. imdi PCON.7 = 1
alp ikinci forml deneyelim.
TH1 = 256 - ((Kristal frekans / 192) / haberleme hz)
TH1 = 256 - ((12,000,000 / 192) / 19200)
TH1 = 256 - ((62500) / 19200)
TH1 = 256 3.26 = 252.74
Yine ksratl bir say elde ettik. Buna gre 12 Mhz kristal kullanld zaman 19200 haberleme hz olanakl
deildir.
imdi 9600 haberleme hzn deneyelim. lk nce PCON.7 = 0 alalm.
TH1 = 256 - ((Kristal frekans / 384) / Haberleme hz)
TH1 = 256 - ((12,000,000 / 384) / 9600 )
TH1 = 256 - ((31,250) / 9600)
TH1 = 256 3.25 = 252.75
Bu say da TH1e konmak iin uygun deil. PCON.7 = 1 alalm.
TH1 = 256 - ((Kristal frekans / 192) / haberleme hz)
TH1 = 256 - ((12,000,000 / 192) / 9600)
TH1 = 256 - ((62500) / 9600)
TH1 = 256 6.5 = 249.5
Bu sayda TH1e yerletirmek iin uygun deil.
imdi 4800 haberleme hzn deneyelim. PCON.7 = 0
TH1 = 256 - ((Kristal frekans / 384) / Haberleme hz)
TH1 = 256 - ((12,000,000 / 384) / 4800 )
TH1 = 256 - ((31,250) / 4800)
TH1 = 256 6.5 = 249.5

Bu sayda uygun deil. PCON.7 = 1 alalm.


TH1 = 256 - ((Kristal frekans / 192) / haberleme hz)
TH1 = 256 - ((12,000,000 / 192) / 4800)
TH1 = 256 - ((62500) / 4800)
TH1 = 256 13.02 = 242.98
Bu sayy 243 (F3H) olarak alp, TH1e yerletirebiliriz. Dolaysyla yukardaki hesaplardan da grld gibi,
12 MHz bir kristal kullanldnda, zamanlayc 1 kullanlarak oluturulabilecek maksimum haberleme hz,
4800 dr. 12 MHz kristalde 4800 haberleme hzn programlamak iin yazmamz fereken satrlar aadadr.
MOV SCON, #048H ; seri port mod 1
MOV TCON, #020H ; zamanlayc 1 mod 2
MOV TH1, #0F3H ; TH1 = 243
MOV TL1, #0F3H ; TL1 = 243
ORL PCON, #080H ; PCON SMODE biti = 1
Biz 8051-8031 entegrelerini kullandmz devrelerde, standard oalrak 11,0592 Mhz kristali kullanacaz.
Inceleyeceimiz 8052 entegresi nc bir zamanlaycya sahiptir. Bu zamanlayc da haberleme hznn
kontrolnde kullanlabilmektedir. Bu zamanlayc 12 MHz kristalde 9600 haberleme hznda seri iletiime
olanak vermektedir. 80535 entegresi ise, kendi iinde haberleme hz kontrol birimi bulundurmaktadr.
Dolaysyla bu entegrelerle yaptmz devrelerde 12 Mhz kristal kullanacaz. nk 12 Mhz kristal
kullanldnda, zaman lme hesaplar daha kolay olmaktadr.
Seri Porta Yazma
Seri port yukarda akland ekilde, konfigrasyonu yapldnda, seri port yazma ve okuma iin hazr hale
gelmitir.
Seri porta bir karakter yollamak iin yapmanz gereken sadece, bu karakteri
SBUF (99h) zel fonksiyon registerine yazmaktr. rnein seri porta "X" karakteri yollamak istiyorsanz,
vermeniz gereken komut,
MOV SBUF,#X komutudur.
Yukardaki komut ilemci taarafndan okunduunda, ilemci "X" karakterini seri port zerinden yollayacaktr.
Elbetteki seri porttan yollama ilemi anlk bir ilem deildir ve bir zaman dilimi ierisinde gerekleecektir.
Standart 8051 bir seri k bafrna sahip olmadndan, yeni bir karakter yollamadan nce, nceki karakterin
yollandndan emin olmak zorundayz. 8051 entegresi bir karakterin yollanmasnn bittiini TI bitini "1"
yaparak bildirir. Dolaysyla bu bitin deeri "1" ise karakterin yollanmas bitmitir ve yeni bir karakter
yollanabilir. Bu kontrol 8051 kodu olarak aadaki ekilde yazlr.
SENDCHR :
CLR TI
; nce TI bitini temizle.
MOV SBUF,#A ;Yollancak karakteri seri porta yaz.
JNB TI,$
;Karakter yollamasnn bitiini bekle.
RET
;
Yukardaki komut ile bir karakter seri port zerinden yollanr ve yollama ileminin bitii beklenir.

Seri Porttan Okuma

Seri porttan okuma yapmak ta seri porta yazma kadar kolay bir ilemdir. Seri porttan okuma yapmak
iin RI bayrana baklr. Bu bayrak "1" ise seri porttan bir karakter gelmi demektir. Seri porttan gelen
bu karakter SBUF registerinde bulunur.
rnein, program kodumuz bir karakter okumak zere beklesin ve karakter geldiinde bu karakteri
akmlatre okusun. Bunun iin yazmamz gereken kod yalnzca iki satr olacaktr.
GETCHR:
JNB RI,$
; 8051 RI bayrann aktiflenmesini bekle
MOV A,SBUF ; Gelen karakteri akmlatre oku.
RET;

Yukardaki kodun birinci satr RI biti "1" oluncaya kadar beklemektedir. Eer seri hattan bir karakter
gelirse RI biti "1" olacaktr . RI biti "1" olduunda program ikinci satra geecek ve MOV komutunu
ileme sokacaktr.

Seri Data Modu 2 (oklu lemci Modu)


Seri haberleme modu 2, seri haberleme modu 1e benzer. Mod 2de haberlemede 11 bit kullanlr. Bu
11 bitin biri start biti, birisi stop biti ve 9 tane data bitidir. Gnderilen datann 9uncu biti SCON
registerinin TB8 bitine yazlr. Data okuma srasnda ise bu 9uncu bit RB8 bitine gelir. Seri data modu
2de iletiim hz,
fbaud2 = (2SMOD / 64) x fclock
formul ile hesaplanr. Dikkat edilirse, bu iletiim modunda da haberleme hz mod 1 haberleme
hzndan ok daha yksektir. Pek ok ilemci kullanlan bir a zerinde, toplanan verilerin ok hzl bir
ekilde aktarlabilmesine gerek vardr. Bu ieltiim modunun en nemli zellii kullanlan 9uncu data
bitinde yatmaktadr. Bu data biti sayesinde yollanan bir mesajn adaki belli ilemciler tarafndan
alglanmas, dierleri tarafndan ise ihmal edilmesi salanabilmektedir. Seri iletiim modlarnda, 8051
entegresine bir karakter geldiinde karakterin son bitinin alnmasyala RI bitinin 1 yapldn biliyoruz.
Seri data modunda RI bitinin 1 olabilmesi extra baz artlara da balanmtr. RI bitinin set olabilmesi
iin, ya son data biti 1 olmal yada SCON registerindeki SM2 biti 0 olmaldr. Dolaysyla adaki bir
ilemci gnderilen mesajn adaki tm ilemciler tarafndan alnmasn istiyorsa gnderdii bilginin son
bitini 1 yapmaldr. Eer adaki yalnz belli ilemcilerin bu mesaj almas isteniyorsa, mesaj yollayan
ilemci gnderdii bilginin son bitini 0 yapar. Bu sayede adaki ilemcilerden yalnzca SM2 biti 0 olanlar,
gelen mesaj alrlar.
Bu sayede bir yerel a oluturulup, zaman zaman sadece belli entegrelerin sorgulama sonularna cevap
verebilmeleri salanabilir. Bu yntem ilemci ve bilgisayar alarnda sk kullanlan, konuan ve
dinleyenlerin belirlenmesi esasna dayanan bir yntemdir.

Seri Data Modu 3


Bu ilemci modu seri data modu 2 ile ayn alma mantna sahiptir. Yalnzca bu modda haberleme hz
sabit deildir ve ayn seri mod 1 de olduu gibi zamanlayc 1 ile belirlenir.

RS-232 letiiminin Temel Kavramlar

RS-232 bilgisayar dndaki cihazlarn bilgisayar ile haberlemelerinde en ok kullanlan iletiim


standartlarndan birisidir. RS-232 temel olarak bir seri iletiim birimidir. Seri iletiim biriminde
karakterler bir hat zerinden bit bit yollanr. Seri iletiimin paralel iletiime gre en nemli stnl
balant kolayldr. Bilgisayardan cihaza karakter yollamak iin bir hat , cihazdan gelen karakterleri
okumak zere bir hat ve bir toprak hatt olmak zere toplam hat kullanlarak iletiim
gerekletirilebilir. Bu standardn nemli dezavantaj, haberleme hz arttka bilgi kaybna yo amamak
iin kablo uzunluunun da ksalmas gerekliliidir. Standard RS-232 19200 haberleme hznda en fazla
20m kablo uzunluuna izin vermektedir. Yeni seri iletiim standartlarndan RS-422, RS-449 ok daha
yksek haberleme hzlarnda ok daha uzun kablolamaya olanak vermektedir. rnein RS-422 1600 m
uzunluunda bir kablo zerinden bir magabit/saniye haberleme hzalarn desteklemektedir.
Her bilgisayar en az bir seri RS-232 iletiim birimine sahiptir. Yeni bilgisayarlarda RS-232 konnektrleri
hemen hemen tamamen 9 pin erkek konnektrlerdir. ncelikle bilgisayarnzn arkasnda byle bir
konnektr olup olmadna bakn. Bilgisayar herhangi bir RS-232 portuna o portun adresi aracl ile
ular. Bilgisayarnzda bulunan RS-232 portunun adresini bilgisayar denetim masasndan sistem seenei
iinden aralar mensne geerek ulaabilirsiniz. Aralar mensnde bilgisayarda var olan tm iletiim
birimlerinin (seri portlar, USB, printer portu, ekran kart vs.) adresleri bulunur. Seri iletiim biriminizin
adresini buradan bulabilirsiniz. Baz bilgisayarlarda yalnzca bir RS-232 k bulunabilir. Eer bu k
seri fare iin kullanlyorsa mikroilemci kartnz bilgisayar ile haberletirecek hi bir
RS-232
biriminiz yok demektir. Yapmanz gereken seri fareden vazgeip, bilgisayarnzn fare giriine
balanabilecek bir fare satn almak olacaktr. Bylece RS-232 portunuz mikroilemci kartnza balamak
zere size kalacaktr.
Bu aamada biraz da RS-232 konnektrnn yapsndan ve seri iletiimden bahsetmek faydal olacaktr.
RS-232 seri iletiim standard elektriksel zelliklerinde 1 biti -3 volttan 25 volta kadar bir elektrik
sinyali olarak tanmlanmtr. 0 sinyali ise +3 volttan +25 volta kadar elektrik sinyali olarak
tanmlanmtr. 3 volt ile +3 volt arasndaki herhangi bir sinyal ise belirsiz bir sinyaldir.
Daha nce de belirttiimiz gibi yeni bilgisayarlarda RS-232 iletiimi iin 9 pin erkek konnektrler
kullanlmtr Fakat baz bilgisayarlarda ve seri iletiim kurulacak baz cihazlarda 25 pin erkek
konnektrler de bulunabilmektedir. Aada 25 pin ve 9 pin DB kablolarda RS-232 sinyallerinin nasl
balandn grebilirsiniz.
DB25S konnektr:

DB9S konnektr:

Mikrokontrolclerle bilgisayarlarn iletiminde temel olarak TxD, RxD ve GND hatlar kullanlr. Pek
ok mikrokontrolcde, bilgisayarla haberlemek zere TxD ve RxD hatlar bulunur. Fakat
mikrokontrolcler de bu hatlarn sinyalleri 0 volt ve 5 volttur. Bilgisayarla haberlemede gereken RS-232
sinyalleri ise +12 volt ve 12 volttur. Bu yzden mikrokontrolc ve bilgisayar arasndaki iletiimde gerilim
dnmn salamak zere bir gerilim dntrc kullanlr. Bu tr gerilim dntrclerin en ok
kullanlan MAX232 entegresidir. Aada bilgisayarla mikrokontrolc RS232 hattnn balanmasnda
MAX232 entegresinin nasl kullanld grlmektedir.
Genelde mikrokontrolc tarafnda kullanlacak RS232 konnektr dii yaplr. Dolays ile
mikrokontrolc ile bilgisayar balayacak ara kablonun bir ucuna 9 pin erkek konnektr, bir ucuna da 9
pin dii konnektr balanr Daha nce de sylediimiz gibi gereken kablo says yalnzca 3 tr.
Konnektrlerin 5 nolu ular (GND) direkt olarak birbirine balanr. 2 (TxD) ve 3 (RxD) ular ise
birbirine arpraz balanr. Bylece mikrokontrolcnn GONDER (TxD) ucu bilgisayarn AL (RxD)
ucuna ve bilgisayarn YOLLA ucu mikrokontrolcnn AL ucuna balanm olur.

8051 Zamanlayc ve Sayclar


Zamanlayc ve sayclar aadaki grevler iin kullanlrlar.
Zaman gecikmesi yaratmak iin
Pals zaman veya zaman aral lmek iin
Pals veya oluan olaylar saymak iin
oklu ilem uygulamalarnda (Multi-tasking)
Kesme retmek iin
Standart 8051 iki zamanlayc/saycya sahiptir. Bu zamanlayc/sayclar 8 bit veya 16 bit zamanlayc/sayc
olarak kullanlabilir. Aada M1 ve M0 bitlerinin deerlerine bal olarak zamanlayc/sayclarn hangi
modlarda kullanlabilecei belirtilmektedir.
TMOD
M1 M0 FUNCTION
|0 0 |

8 bit counter or 8 bit timer with / 32 scaler

|0 1 |

16 bit timer/counter

|1 0 |

8 bit timer counter with auto-reload to initial start for count up

| 1 1 | TC1 - disabled
TH0 - TH0 is an 8 bit timer incremented by setting TR1.Interrupts are channelled to .001Bh

TL0 - is an 8 bit timer/counter controlled by TMOD and TCON


Zamanlayc/sayc altr bitleri TR1 ve TR0, TCON registerinde bulunur. Bu bitlerden birisi "1"
yapldnda, bu bite karlk gelen sayc almaya balar. Bu bitlerin deeri "0" yapldnda
zamanlama/sayma ilemleri de bitirilmi olur. Kesme kontrol registerinde (IE) bulunan ET1 ve ET0 bitleri,
zamanlayc tamasnda kesme retilip retilmeyeceini belirlemekte kullanlr. Bit deerinin "1" olmas,
zamanlayc/sayc tamasnn kesme retmesi anlamna gelir.
TMOD registerindeki C/T biti, zamanlayc/saycy, sayc modunda veya zamanlayc modunda altrmak iin
kullanlr. Bu bitin deeri "1" yapldnda zamanlayc/sayc, 8051 entegrenin TX giri pinindeki olaylar
saymak zere konfigre edilmi olur.
Bu bitin deeri "0" olduunda zamanlayc/sayc, zamanlayc modundadr ve sistem osilatrnden gelen
sinyali 12'ye blerek alr.
TMOD registerindeki GATE biti, "1" yapldnda, zamanlayc/sayc n'in aktif olmas iin, INTn ve TRn
bitleri "1" yaplmaldr. GATE biti "0" yapldnda zamanlayc/sayc n,in aktif yaplmas iin, TRn bitinin "1"
yaplmas yeterlidir. GATE biti zaman lmekte, olaylarn zamann lmekte, pals geniliini lmekte
kullanlr. INTx hatt "1" olduu srede, bu deerler saycya geirilir. Sistem osilatrnn frekans 12'ye
blnerek zaman saymas gerekleir. Buna gre 12 MHz osilatr kullanan bir sistemde, zamanlaycnn
frekans 1 Mhz olur.

T0 Giri Ucundan Pals Saylmas zamanlayc 0 (mod 1)

MOV TH0, #0
MOV TL0, #0
MOV TMOD, #5
SETB TR0

; T0 ucuna gelen d sinyallerin saylmas


; zamanlayc/saycy sfrla
;
; zamanlayc/saycy sayma moduna getir.
; C/T=1, Mod 1
; zamanlayc/saycy balat

; Saylan olay says herhangi bir anda TH0/TL0 registerlerinin okunmasyla ; elde edilebilir. Sayma olay,
mikrokontrolcnn asl yapt iten bamsz ; olarak geri planda saylr.
Yukardaki program parasnda frekans yksek olaylarn saylmas srasnda nemli bir problem ortaya
kabilir. rnein zamanlayc 0'n ierii okunup, program tarafndan kullanlamadan zamanlayc 0 tam
olabilir.
n

Dzenleme

Kullanlarak

Pals

saylmas

(mod

0)

ndzenleme mod 0 kullanlarak, girite oluan palslar 32 ye blnebilir. Bu sayede ok hzl olaylarn
saylmas kolaylam olacaktr. Zamanlayc/sayc girite 32 olay olutuunda 1 artacaktr.

MOV TH0, #0
MOV TL0, #0
MOV TMOD, #4
SETB TR0

;T0 ucunda oluan olaylar 32'ye blerek say


; zamanlayc/saycy sfrla.
;
; zamanlayc 0 sayc modunda , C/T=1, Mod 0
; zamanlayc/saycy balat

Zaman dilimi yaratmak Mod 1: 16 bit zamanlayc/sayc


Zamanlayc/sayclar, ilemcinin servisine gerek duymadan geri planda alabildiklerinden,
zamanlayc/sayclar kullanlarak zaman dilimi yaratmak ve gerek zaman saydrmak olanakldr.

Eer zamanlayc/saycnn her iki registeri, 00h deeriyle yklenirse, bir tama meydana gelmeden nce,
zamanlayc/sayc 65,536 sayma gerekletirecektir. 12 Mhz lik entegre osilatr kullanlan bir devrede, bu
yaklak olarak 66 milisaniyelik (65,536 mikrosaniye) zaman dilimine karlk gelir. Pek ok uygulamada
genelde daha uzun zaman gecikmelerine gereksinim olduundan, zamanlayc/sayc registerlerine ilave olarak
bir 8 bit hafza eleman daha kullanlr. Bu hafza elemann deeri her tamada "1" azaltlarak gereken zaman
dilimi yaratlr. TH0 ve TL0 registerlerinin balang deerleri istee gre seilebildiinden hassas zaman
dilimleri yaratmak olanakldr. rnein TH0'a 80h, TL0'a 00h deerlerinin yklenmesiyle zamanlayc sayc
her 32,768 saymada taacaktr. Tama gerekletikten sonra, register deerleri tekrar 80h ve 00h deerleriyle
yklenmelidir. Aadaki program paras, gerek gn zamann lmek iin zamanlayc/saycnn nasl
kullanlabileceini gstermektedir.
org 0000h
JMP Anaprogram
org 000Bh
JMP TC0kesme
org 0100h
Anaprogram:
CALL Baslangc
dongu: sjmp dongu

; program balang adresi


; zamanlayc 0 kesme adresi
; zamanlayc 0 kesme programna git
; ana dng balangc
; RTC ilk deerlerini ver
; ana programn yap is

; R0 : uzun zaman dilimi yaratmak iin kullanlan deiken


;TH0 ve TL0 0000h deerine ulanca kesme oluturmak zere programlansn
Baslangc:MOV R0, #20h
MOV SAN, #00h
MOV DAK, #00h
MOV SAAT, #00h
MOV TH0, #80h
MOV TL0, #00h
MOV TMOD, #01
MOV TCON, #10h
MOV IE, #82h
RET

; R0 * 33ms = 1sec
;
;
;
;
; kesmeler arasnda 33ms
;C/T=0, mod 1 (16bit zamanlayc)
;zamanlayc 0' balat
;tm kesmeleri aktifle biti "1"
;zamanlayc "0" kesmesi aktif
;Zamanlayc 0 olduunda devreye girecek kesme

program
TC0kesme: DEC R0
MOV A, R0
JNZ TC0CIK
MOV R0, #20h
INC SAN
MOV A, SAN
SUBB A, #60
JNZ TC0Ck
MOV SAN, #00
INC DAK
MOV A, DAK
SUBB A, #60
JNZ TC0CIK
MOV DAK, #00
INC SAAT
MOV A, SAAT
SUBB A, #24
JNZ TC0CIK
MOV SAAT, #00
TC0CIK:
MOV TH0, #80h
MOV TL0, #00h
CLR TF0

;sayc deikeni azalt


;akmlatore al
;sfr deilse geri don
;R0'n ilk deerini tekrar ykle
;saniye = saniye + 1
;
;saniye >= 60 ?
;
;saniye = 0
;dakika = dakika + 1
;dakika >= 60 ?
;
;
;dakika = 0
;saat = saat + 1
;saat >= 24 ?
;
;
;saat = 0
;
;
;

RETI
SAN EQU R2
DAK EQU R3
SAAT EQU R4
End

;
;
;
;

Zaman Dilimi Yaratmak Mod 2: 8 bit Otomatik Yeniden-ykleme


(Auto-Reload)

Bir nceki rnekte, zamanlayc registerleri kesme program ierisinde yeniden yklenmek zorundayd.
Zamanlayc otomatik yeniden ykleme modunda kullanarak THx registerindeki deerin otomatik olarak TLx
deerine yklenmesi olanakldr. THx yeniden ykleme deeri olarak adlandrlr ve TLx'de normal
zamanlayc grevini grmektedir. Bu yntemin tek dezavantaj, sayma ileminin yalnzca 8 bit olmasdr
(nceki rnekte 16 bit olduuna dikkat ediniz). Aada gn zaman lmnn bu modda nasl yaplabilecei
bir rnekle verilmitir.

org 0000h
JMP Anaprogram

; program balang adresi

org 0Bh
JMP TC0kesme

; zamanlayc 0 kesme adresi


; zamanlayc 0 kesme programna git

org 100h
Anaprogram:
CALL Baslangc
dongu: sjmp dongu

; ana dng balangc


; RTC ilk deerlerini ver
; ana programn yapt i

; R0 : uzun zaman dilimi yaratmak iin kullanlan deiken


;TH0 ve TL0 0000h deerine ulanca kesme oluturmak zere ;programlansn
Baslangc:MOV R0, #20h
MOV R1, #80h
MOV SAN, #00h
MOV DAK, #00h
MOV SAAT, #00h
MOV TH0, #00h
MOV TL0, #00h
MOV TMOD, #02
MOV TCON, #10h
MOV IE, #82h
program

RET

TC0KESME: DEC R1
MOV A, R1
JNZ TC0CIK
MOV R1, #80h
DEC R0
MOV A, R0
JNZ TC0CIK
MOV R0, #20h

; R0 * 33ms = 1sec
; R0 azaltlmadan nce ka dng
;
;
;
; 256 kere
; kesmeler arasnda 33ms
;C/T=0, mod 2
;zamanlayc 0'i balat
;tm kesmeleri aktifle biti "1"
;zamanlayc "0" kesmesi aktif
;Zamanlayc 0 olduunda devreye girecek kesme
;her 80h seferde R0'i azalt
;akumulatore al
;sfr deilse geri don
;R1'i tekrar ykle
;
;
;
; R0 ilk deerini tekrar ykle

TC0CIK:

INC SAN
MOV A, SAN
SUBB A, #60
JNZ TC0CIK
MOV SAN, #00
INC DAK
MOV A, DAK
SUBB A, #60
JNZ TC0CIK
MOV DAK, #00
INC SAAT
MOV A, SAAT
SUBB A, #24
JNZ TC0CIK
MOV SAAT, #00
MOV TH0, #80h
MOV TL0, #00h
CLR TF0
RETI

SAN EQU
DAK EQU
SAAT EQU
END

R2
R3
R4

;saniye = saniye + 1
;
;saniye >= 60 ?
;
;saniye = 0
;dakika = dakika + 1
;dakika >= 60 ?
;
;
;dakika = 0
;saat = saat + 1
;saat >= 24 ?
;
;
;saat = 0
;
;
;
;
;
;
;

Zamanlayc/Saycnn Mod 3 de kullanm


Bu modda zamanlayc/saycnn TH0 ve TL0 registerleri iki bamsz sayc olarak kullanlr. TCON ve TMOD
registerlerindeki bit kontrolleri TH0 registerindeki tamalar kontrol eder. Kesme oluumu TH0'n tamas ile
meydana gelir.
Pals Genilii veya olay zaman lme (Gating)
Zamanlayc/sayc Mod 3 kullanlarak, pals genilii, geen zaman ve durum saym gerekletirilebilir.
Kaplama biti (Gating) aktiflendiinde, zamanlayc yalnzca, INTx girii "1" olduu srece aktif kalr. Bu
sayede, INTx giriindeki bir sinyalin aktif olduu zaman miktarn bulmak mmkndr. Aadaki rnek,
byle bir uygulamay anlatmaktadr.
org 0000h
JMP AnaProgram
org 000Bh
SETB F0
RETI

; program balang adresi

org 001Bh
RETI

; Zamanlayc 1 kesme adresi


; Kesmeden dn

Anaprogram: CALL BaslangIc


lp1:
JNB P3.2, lp1
lp2:
JB P3.2, lp2

; Zamanlayc 0 kesme adresi


; F0 bitini tasma olduunu belirtmek zere aktifle
; kesmeden dn

;INT0 dkse dng


;INT0 yksekse dng

;Bu noktada, TL0 ierisinde, INT0 yksek olduu sredeki sayma deeri bulunmaktadr.
;Bu deer kolaylkla zaman bilgisine evrilebilir.
lp3: JB F0, Hata
CALL Cevr
CLR F0
JMP lp1

; F0 "1" se Hata
;Tl0 daki deeri zaman bilgisine cevir
; F0'i temizle
; tekrar don

BaslangIc: MOV TH0, #0h


MOV TL0, #0h
MOV TMOD, #07h
MOV TCON, #10h
MOV IE, #82h
CLR F0
RET
Hata:
CevIr:
RET
end

;
;
;C/T=1, Mod 3, Timer 0
;zamanlaycy balat
;Kesmeleri aktifle
;F= bayran temizle
;

JMP HataIsleme
;

8051 Kesmeler
Kesme isminden de anlalaca zere , bir kesme normal program almasn kesen bir mekanizmay
tanmlamaktadr. Mikrokontrolcler programlar sra ile ileyen cihazlardr. Bu sra yalnzca sra (JMP) ve
ar (CALL) gibi komutlarla deitirilebilmektedir. Kesmelerde ise normal program ak, bir kesme ile
krlmakta ve kesme program tamamlandktan sonra normal program ak, tam kesmeden nceki noktadan
normal akna devam etmektedir. Bu tr bir altprograma kesme hizmet program (Interrupt Handler) ad verilir.
Bu altprogram yalnzca bir kesme olduunda alr. Kesme olmamas durumunda programa hi bir katks
yoktur. Kesme yaratan mekanizma , "tama (overflowing)", " ser porttan bir karakter okuma", seri porta bir
karakter yazma", veya INT0 ve INT1 ularna bal sinyallerin aktif olmasyla gerekleebilir.
8051 uygun bir ekilde programland zaman bu kesmelerden birisi gerekletiinde, program aknn kesme
hizmet programna yneltilmesi mmkndr. Bu kesme tamamlandnda program kald yerden normal
akna devam edecektir. Ana program byle bir sramann farknda bile olmayacaktr. Normal program
aknn bu ekilde kesilebilmesi, belli koullar kontrol etmek asndan son derece nemli olabilir. Eer
kesmeler olmasayd, ana program srekli olarak zamanlaycnn tap tamadn, seri porttan bir karakter gelip
gelmediini veya INT0 ve INT1 ularnn deerlerinin "1" olup olmadn srekli olarak kontrol etmek
zorunda kalacakt. Bu durumda yazlan kod hem ok uzun ve okunmas zor olacakt, hemde ilemci zamannn
nemli bir ksm, ok nadir olarak gerekleen bir olayn, gerekleip gereklemediini kontrol etmekle
harcanacakt. rnein elimizde 30 kilobaytlk, pek ok altprogramdan oluan bir kodumuz olsun.
Programmzn yapmas gereken ilerden birisi de, rnein zamanlayc 0 her tatnda, P3.0 bacann deerini
"1" se "0", "0" sa "1" yapmak olsun. Byle bir ilemin kodu son derece kolaydr.
JNB TF0, SONRAKI_KOMUT
CPL P3.0
CLR TF0
SONRAKI_KOMUT: ...
Zamanlayici 0 her tatnda TF0 biti "1" olacandan, yukardaki kod her tamada P3.0 bitinin deerini
deitirecektir. Bylece program kodu istenilen grevi yapacak ekilde yazlm olmaktadr. Bu kod istenen
grevi yapmaktadr fakat nemli lde sistem zaman kullanmaktadr.
Yukardaki ksa kodun ne kadar ilemci zaman kullandn hesaplamaya alalm. JNB komutu 2 makine
evriminde tamamlanan bir komuttur. Zamanlayc 0'n tamas durumunda, CPL ve CLR komutlar ilenecektir.
Bu komutlarn her biri bir makine evriminde tamamlanan komutlardr. Dolaysyla iki makine evrimi de bu
komutlarn ilenmesine gidecektir. Matemetii biraz kolaylatrmak iin, programn geri kalan ksmnn 98
makine eviriminden olutuunu varsayalm. Byle bir durumda, zamanlayc 0'n tap tamadnn kontrol
iin 2 makine evrimi, programn geri kalan ksm iin 98 makine evrimi, toplam 100 makine evrimi zaman
geecektir. Zamanlayc 0'n 16 bit zamanlayc modunda (mod 0) altn dnelim. Bu durumda

zamanlayc 0, her 65,536 makine evriminde bir defa taacaktr. Bu zaman ierisinde 655 kere JNB komutu
ilenmi olacaktr. 655 JNB komutu 1310 makine avrimi alacaktr. Zamanlayc tatnda iki makine evrimi
de CPL ve CLR komutlarnn ilenmesinde kullanlacaktr. Buna gre zamanlayc 0 tatnda, P3.0 bitinin
deerini deitirebilmek iin toplam 1312 makine evirimi ilemci zaman kullanm olduk. Bu zaman, program
ilenmesi zamannda geen zamann yaklak %2 sidir. te yandan her dngde zamanlayc 0'n tap
tamadnn kontrol, tama olduysa P3.0 bitinin deitirilmesi, ana program ierisinde gerekletirildiinden,
program kodu da okunulabilirlik asndan ktdr.
Kesmeler bize bu tr sorunlar zme olana vermektedir. Kesme kullanmnda, zamanlayc 0'n tap
tamadn bizim kontrol etmemiz gerekmeyecektir. Bu kontrol mikroilemci kendisi yapacaktr. Tama
olutuunda, kontrolc kesme hizmet programna srayp, kesme programn ileyecek ve normal program
akna geri dnecektir. Bunun iin yazlmas gereken kesme hizmet program yalnzca 2 satrdr.
CPL P3.0
RETI
ncelikle kod ierisinde "CLR TF0" komutunun kullanlmadna dikkat ediniz. nk, 8051 zamanlayc 0
kesmesi iin programlandnda, tama olduunda TF0 biti otomatik olarak mikroilemci tarafndan
temizlenmektedir.
Ayn zamanda bir altprogramdan dnte kullanlan normal RET komutu yerine RETI ( return from interrupt)
komutu kullanldna dikkat ediniz. RETI komutu RET komutu ile ayn ii yapar, fakat ilemciye kesme hizmet
programnn sonlandn belirtir. Her kesme hizmet program mutlaka RETI komutu ile sonlandrlmaldr.
Buna gre kesme kullandmzda, P3.0'n deerini deitirmek iin yalnzca 3 makine evrimi zaman
kullanmamz gerekiyor. Bir makine evrimi CPL komutu iin, 2 makine evrimi de RETI komutu iin
kullanlacaktr. Bu iki komut 65,536 makine evrim zaman ierisinde yalnzca bir kez ileme sokulmu
olacaktr. Kesme kullanlmadnda ayn grevi yapmak iin 1312 makine evrim zaman kullandmz
dnlrse, kesme kullanldnda programmz 437 kere daha verimli bir ekilde ilemci zamann
kullanmaktadr! te yandan program daha kolay anlalabilir ve okunulabilir bir duruma gelmitir. nk
program iinde srekli olarak zamanlayc 0'n tap tamadn kontrol etmek zorunda deiliz. Yapmamz
gereken yalnzca kesme programn yazmak ve unutmaktr. Gerektii durumda ilemci kesme programn
devreye sokacaktr.
Ayn fikiri seri port haberlemesinde veri alrken zaman zaman son derece faydal olmaktadr. Seri porttan bir
karakter okumak iin kullanlabilecek yollardan birisi, srekli olarak RI bitini kontrol etmek ve RI biti "1"
olduysa, gelen karakteri SBUF registerinden okumaktr. Byle bir yaklamda, ana program kodu bydke
gelen karakterlerden birini karma riski de vardr.
nk biz RI bitini kontrol ettikten hemen sonra seri karakter gelmi olabilir RI hattn ikinci kere kontrol
edinceye kadar baka bir karakter daha gelebilir ve bylece birinci karakter kaybolmu olur. Seri port kesmesi
yardmyla bu sorunu da zebiliyoruz. Seri porttan bir karakter okunduunda hemen kesme programmz
devreye sokuyoruz ve gelen karakteri okuyoruz. Program ierisinde de srekli olarak karakter geldi gelmedi
kontrol yapmaktan kurtuluyoruz.

Hangi Olaylar Kesme Aktifleyebilir ve Bu Kesmeler Nasl lenir


8051'in temel kesme kaynaklar aada verilmitir. 8051 bu kesmelerden biri veya birden fazlas kesme
oluturacak ekilde programlanabilir
Zamanlayc 0 tamas
Zamanlayc 1 tamas
Seri bir karakter konmas veya yazlmas
Harici kesme 0
Harici kesme 1

Dier bir deyile 8051, zamanlayc 0 tatnda veya seri porttan bir karakter okunduunda veya yazldnda
uygun kesme hizmet program arlacak ekilde programlanabilir.
Tabiki farkl kesmeler olutuunda, ilenmesi gereken kesme hizmet program farkl olacaktr. Bunun iin
mikroilemci ierisinde kesme hizmet program balang adresleri oluturulmutur. Bu adresler 8051'in
standart adresleridir ve oluan kesmeye gre program ak bu adrese dallanacaktr.

Kesme
D Kesme 0
Zamanlayc 0
D Kesme 1
Zamanlayc 1
Seri Kesme

Bayrak
IE0
TF0
IE1
TF1
RI/TI

Kesme Adresi
0003h
000Bh
0013h
001Bh
0023h

Yukardaki tablodan da anlalabilecei zere, eer zamanlayc 0 kesmesi oluabilecek ekilde 8051 konfigre
edildiyse, zamanlayc 0'nher tamasnda program ak 000Bh adresine gidecektir. Bu adreste zamanlayc 0
tatnda yaplacak ilem kodlar bulunmaldr.
Kesme Oluumunun Programlanmas
8051 entegresi ilk almaya baladnda, tm kesmeler engellenmi durumdadr (disabled). Kesmeler engelli
durumda olduunda, rnein zamanlayc 0 tasa bile, bir kesme oluturmayacaktr. Kesmelerin aktiflenmesi
iin programda 8051 kesmeleri aktif hale getirilmeli ve hangi kaynaklarn kesme yarataca belirtilmelidir.
Kesmeleri aktif hale getirmek veya engellemek iin zel fonksiyon registerlerinden kesme aktifleme registeri
(IE, adres A8h) kullanlr IE registerinin bit adreslenebilir bir registerdir. Aadaki tabloda bu registerin her bir
bitinin anlam gsterilmitir.

Bit
7
6
5
4
3
2
1
0

sim
EA
ES
ET1
EX1
ET0
EX0

Bit Adresi
AFh
AEh
ADh
ACh
ABh
AAh
A9h
A8h

Aklama
Genel kesme aktifle/engelle
Tanmsz
Tanmsz
Seri kesme aktifle
Zamanlayc 1 kesmesi aktifle
D kesme 1 aktifle
Zamanlayc 0 kesme aktifle
D kesme 0 aktifle

Yukardaki tablodan da grlebilecei gibi, her bir kesme IE registerinde kendi aktifleme/engelleme bitine
sahiptir. Herhangi bir kesmeyi aktiflemek iin IE registerinde o kesmeye ait bit aktiflenmelidir. rnein
zamanlayc 1 kesmesini aktiflemek iin ya,
MOV IE,#08h veya SETB ET1
komutunu vermek gereklidir. Yukardaki komutlardan her ikiside IE registerinin 3 nolu bitini, yani zamanlayc
1 kesmesini aktiflemektedir. Bu kesme aktiflendiinde, ne zaman TF1 biti "1" olsa 8051 001Bh adresine gidip
orada bulunan kesme programn ileyecektir.
Bununla beraber, zamanlayc 1 kesmesinin tam anlamyla katiflenmesi iin ayn zamanda genel kesme
aktifleme bitinin de (bit 7 ) "1" yaplmas gereklidir. Bu bit btn kesmeleri aktifler veya engeller. Baka bir
deyile bit 7 "0" olduunda, dier kesme aktifleme bitleri "1" olsa bile kesme olumayacaktr. Bu bit "1"
yapldnda, seilen kesmeler aktif hale gelecektir. Bu durum, zaman kritik kodlarda nemli yararlar salar.

Belli bir zaman ierisinde mutlaka ilenip bitirilmesi gereken bir kod varsa ve bu kodun kesmeler tarafndan
kesilmesi istenmiyorsa, bu kodun balangcnda tm kesmelerin engellenmesi yerinde olacaktr.
zetlemek gerekirse, rnek olarak zamanlayc 1 kesmesini aktif hale getirmek iin gereken kod yalnzca iki
satrdr. nce zamanlayc 1 kesme aktifleme biti "1" yaplr. Daha sonra genel kesme aktifleme biti "1" yaplr.
SETB
SETB EA

ET1

Bu iki satrla, zamanlayc 1 kesmesi aktif hale gelmi demektir. Bundan sonra ne zaman zamanlayc 1 tamas
olusa program 001Bh adresindeki kesme programn altracaktr.

8051'in kesme oluumunu kontrol etmesi


8051 otomatik olarak her bir komuttan sonra bir kesme oluup olumadn kontrol eder. Kesme koullarn
konrol ederken, hangi kesmenin olutuunu belli bir srada kontrol eder. Bu konrol sras aadaki gibidir.
D kesme 0
Zamanlayc 0 kesmesi
D kesme 1
Zamanlayc 1 kesmesi
Seri port kesmesi
Buna gre rnein, seri port kesmesi ve d kesme 0 aynu anl olarak olumusa, nce d kesme 0 program
ilenecektir. D kesme 0 program tamamlandktan sonra da seri kesme program tamamlanacaktr.

Kesme ncelikleri
8051 kesme ncelii iin yalnz iki seviye tanmlamaktadr; dk ve yksek kesme ncelii. Kesme
nceliklerini kullanarak ayn zamanl oluan kesmelerden hangisinin daha nce ileme sokulacan belirlemek
mmkndr.
Bit
7
6
5
4
3
2
1
0

sim
PS
PT1
PX1
PT0
PX0

Bit Adresi
BCh
BBh
Bah
B9h
B8h

Aklama
Tanmsz
Tanmsz
Tanmsz
Seri port ncelii
Zamanlayc 1 ncelii
D kesme 1 ncelii
Zamanlayc 0 ncelii
D kesme 0 ncelii

rnein, zamanlayc 1 her tatnda, zamanlayc 1 kesmesi oluacaktr. ekilde ve seri port zerinden bir
karakter geldiinde seri port kesmesi aktiflenecek ekilde 2 kesme kullandmz varsayalm. Programnzda,
seri porttan bir karakter geldiinde bunu okumak, zamanlama kesmesinden daha nemli olabilir. Bu durumda
eer seri kesme geldiinde, zamanlayc 1 kesmesi alr durumdaysa, seri port kesmesinin zamanlayc 1
kesmesini durdurmasn ve ncelikle seri port kesmesi ilemini tamamlamasn isteyeceksiniz. Seri port
kesmesi tamamlandktan sonra kontrol tekrar zamanlayc 1 kesmesine geecektir. Bu amala yapmanz gereken
sadece, seri port kesmesine yksek ncelik, zamanlayc 1 kesmesine dk ncelik vermek olacaktr. Kesme
ncelii kontrol, kesme ncelii (Interrupt Priority, IP) zel fonksiyon registeri (adres B8h) kullanlarak
yaplr. Kesme ncelii kontrol registeri bit adreslenebilir bir registerdir ve aadaki bitlerden olumutur.

Kesme ncelikleri ile ilgili aadaki kurallar geerlidir.Yksek ncelikli bir kesme, baka yksek ncelikli bir
kesme tarafndan kesilemez. Yksek ncelikli bir kesme dk ncelikli bir kesme akn keser. Dk
ncelikli bir kesmenin alabilmesi iin yksek ncelikli btn kesmelerin alp tamamlanm olmas gerekir.
Eer iki kesme ayn zamanl olumusa nce yksek ncelikli kesme alacaktr. Eer yksek ncelikli iki
kesme ayn anl olumusa, 8051 kontrol srasnda daha nce srada olan kesme nce ileme sokulacaktr.

Bir kesme olutuunda 8051 entegrenin yapt ilemler


Bir kesme olutuunda 8051 otomatik olarak aadaki ilemleri gerekletirir. Program saycs yna yazlr,
nce program saycsnn dk bayt daha sonra program saycsnn yksek bayt yna yazlr. Ayn ncelikli
ve dk ncelikli dier kesmeler bloke edilir.
Zamanlayc kesmesi ve d kesmelerde, kesmeye karlk gelen kesme bayra temizlenir. Program almas
kesme vektr adresine geirilir.Kesme program altrlr.
nc adma tekrar dikkat edelim. Eer ilenen kesme zamanlayc kesmesi veya d kesmelerden biriyse, bu
kesmeye karlk gelen kesme bayra otomatik olarak temizlenmektedir. Bu nedenle program ierisinde bu
bayraklar temizlemeye gerek yoktur.

Bir Kesme Sonunda 8051 entegrenin yapt iler


Bir kesme program, RETI komutu ile sonlandrlr. RETI komutuna rastlandnda 8051 otomatik olarak
aadaki iki ilem yaplr. Yna yazlan program saycs deeri yndan geri alnr. Kesme stats kesmeden
nceki durumuna getirilir.
Seri Port Kesmeleri
Seri port kesmeleri dier kesmelerden baz farkllklar gsterir. Bunun sebebi seri port kesmesinin iki farkl
kesme bayrana (RI ve TI) sahip olmasdr. Eer bu bayraklardan birisi aktif olursa seri port kesmesi
aktiflenmi olacaktr. Daha nceki tartmalardan da hatrlanabilecei gibi seri porttan bir karakter
okunduunda RI kesmesi, seri porta bir karakter yazldnda ise TI kesmesi aktiflenecektir.
Buna gre eer bir seri port kesmesi olumusa, ya bir karakter okunmutur, yada bir karakter yollanmtr.
Dolaysyla yazlacak kesme program bu iki durumdan hangisinin gerekletiini anlamak ve ona gre gerekli
ilemleri yapmak durumunda kalacaktr. Ayn zamanda 8051 RI ve TI bayraklarn otomatik olarak
temizlemedii iin , yazlan kod bu bayraklar kendisi temizlemek durumundadr. Aada basit bir seri kesme
program gsterilmektedir.
SERI_KESME :
JNB RI,CHECK_TI
; RI "0" ise TI_KONTROL
MOV A,SBUF
; RI = 1, karekteri oku
CLR RI
; RI bitini temizle
CHECK_TI:
JNB TI, KESME_SONU ; TI "0" ise KESME_SONU
CLR TI
;TI bitini temizle
MOV SBUF,#A
;Seri porta "A" karakteri yolla
KESME_SONU: RETI
Yukardaki kodda da grlebilecei gibi, program iki seri port kesme bayran kontrol etmektedir. Eer her
iki bayrakta aktif durumdaysa, kodun iki blm de altrlacaktr. Dikkat edilmesi gereken dier bir nokta da
her iki blmn sonunda da ilgili kesme bayra temizlenmektedir. Eer kesme bayran temizlemeyi

unutursanz, kesme tekrar tekrar sonunda kesme bayra temizleninceye kadar alacaktr. Bu nedenle seri
kesme programnn sonunda, kesme yaratan bayra temizlemek son derece nemlidir.
Kesmelerde Registerlerin Korunmas
Kesmelerle ilgili unutulmamas gereken ok nemli bir kural vardr. Kesme program sonucunda, mikroilemci
tamamen kesme balamadan nceki duruma gelmelidir. nk kesme mentalitesi, ana programn hi haberi
olmayan bir program parasnn kendiliinden ve geliigzel bir zamanda devreye girmesi demektir. Fakat
imdi aadaki kodu dikkate alalm.
CLR
C
;
Elde
MOV
A,#25h
;
Akmlatre
ADDC A,#10h ; 10h deerini elde ile birlikte akmlatre ekle

25h

bayran
deeri

temizle
ykle

Yukardaki kod tamamland zaman akmlatrde 35h deeri bulunacaktr. Fakat MOV komutundan hemen
sonra bir kesme olutuunu varsayalm. Bu kesme program, elde bayran "1" yapyor ve akmlatre 40h
deeri yklyor olsun. Kesme program bittiinde, program ak tekrar ana programa dnecek ve ADDC A,
#10h komutu ile program almaya devam edecektir. Kesme program ierisinde elde bayra "1" yapld ve
akmlatre 40h deeri yklendii iin toplama ilemi sonucunda akmlatrde 51h deeri kalacaktr. Bunun
ana program iin anlam aktr. Ana programda 25h ve 10h deerleri toplandnda elimizde kalan sonu 51h
olacaktr ? Byle bir sonu son derece anlamsz olduundan kesme programlar ile fazla almam bir
programc ilemcinin bozulduunu dnecektir.
Aslnda ortaya kan olay, kesme programnn, kulland registerleri koruma altna almam olmasdr. Tekrar
belirtirsek: Bir kesme program ilemciyi, kesme balamadan nceki durumda brakmaldr. Bu kurala
gre, eer kullandnz kesme program, akmlatr kullanyorsa, akmlatrn deeri kesme banda ve
sonunda ayn olmaldr. Bu olay genelde PUSH ve POP komutlar kullanlarak yaplr. Aadaki kod bu
kullanma bir rnektir.
PUSH
PUSH
MOV
ADD
POP
POP ACC

ACC
PSW
A,#0FFh
A,#02h
PSW

Yukaridaki kesme program temel olarak MOV ve ADD komutlarndan olumutur. Bu komutlardan her ikisi
de akmlatrn ieriini deitirmektedir. te yandan ADD komutu elde bayrann durumunu
deitirmektedir. Bir kesme program, registerlerin kesme bandaki durumlarn korumak zorunda olduuna
gre, kesme program banda PUSH komutlaryla korunacak registerler yna yazlr. Bu registerler yna
yazldktan sonra kesme program ierisinde, bu registerleri istendii gibi deitirme zgrl yakalanm olur.
Kesme program tamamland zaman, registerlerin orjinal deerleri yndan geri kalnr ve kesme program
RETI komutu ile sonlandrlr. Dolaysyla bir kesme olutuunda, ana program kesme oluup olumadn hi
bir ekilde bilmeyecektir.
Genelde kesme programlar aadaki registerleri korumaya almaldr.
PSW
DPTR (DPH/DPL)
ACC
B
R0-R7 registerleri
Bu registerlerden PSW eitli 8051 komutlar ile deiebilen bitlere sahip bir registerdir. Dolayyla, yaptnz
iten hi phesiz emin olmadnz durumlarda, PSW registeri korunmas gereken bir registerdir.
te yandan pek ok assembler,

PUSH R0
gibi bir komuta izin vermez. nk byle bir komut seilen register banka bal olarak 00h, 08h, 10h, veya 18h
i hafza elemanna karlk gelecektir. Dolaysyla R0, PUSH ve POP komutlarnn kullanabilecei geerli bir
hafza adresini gstermemektedir. Dolaysyla, kesme programnzn ierisinde bir "R" registeri kullanyorsanz,
dorusu direkt olarak register adresini PUSH etmektir. rnein, PUSH R0 yerine, kullanlan register bankna
bal olarak,
PUSH 0H, PUSH 8H, PUSH 10H veya PUSH 18H komutlarndan birini kullanmak gerekir

Kesmelerle lgili ok Karlalan Problemler


Kesmeler 8051 programcsnn kullanabilecei gl programlama kavramlardr. Fakat yanl kullanlmalar
durumunda, kesmelerden kaynaklanan hatalarn tespit edilmesi son derece zordur. Eer programlarnzda
kesme kullanyorsanz, ve programlarnz zaman zaman hi beklenmedik hatalara neden oluyorsa, aadaki
nemli kurallar dikkatlice incelemeniz faydal olacaktr.

Register Korumas: Kesme programlarn da, nemli registerlerin mutlaka korunduundan emin olun. Eer
ana programnzda da kullanlan registerlerden birini korumay unutursanz, ok garip sonularla
karlaabilirsiniz. Eer register deerlerinin beklenmedik bir ekilde deiimini gzlyorsanz veya baz
ilemler beklenmedik sonular retiyorsa, byk olaslkla, kesme programnda, korumay unuttuunuz bir
registerden dolaydr.

Korunan deerlerin tekrar yerine konulmasnn unutulmas: Dier nemli problemlerden birisi, registerleri
yna sakladktan sonra, kesme program bitiminde, register deerlerinin yndan geri alnmasnn
unutulmasdr. rnein, kesme program balangcnda, ACC, B ve PSW registerlerini yna sakladysanz,
kesme bitiminden hemen nce bu deerleri yndan geri almalsnz. Deerleri yndan geri alrken, en son
sakladnz deeri en nce almanz gerektiini unutmayn. Mutlaka yna yazlan sayda registeri, geri
almalsnz. Yna korunan register saysndan fazla veya az registerin geri alnmas RETI komutunun tamamen
ilgisiz bir adrese dnne yol aar. Byle bir durumda, ounlukla program kilitlenir.

RETI komutu yerine RET komutu kullanlmas:


ok karlalana hatalardan birisi de kesme program dnnde, RETI komutu yerine yanllkla RET
komutunun kullanlmasdr. RETI komutu yerine RET komutu kullanldnda, ilk bata programnz normal
alyor gibi grnebilir. lk kesme geldiinde, kesme program doru alacaktr. Fakat daha sonraki
kesmelerde kesme hizmet program devreye girmeyecektir.

Giri
Btn mikrokontrolc ve ilemcilerle almay renmenin etkili bir yolu bu ilemci ile
yaplm bir deneme kartna sahip olmaktr. Artk bir mikroilemcinin ne olduunu
biliyorsunuz. Mikroilemci bir kod ileme makinasdr. lenecek kod hafza elemanlarnda
bulunur. 8051 mikroilemciye g verildii anda ilemci 0000h adresinden balayarak

program kodunu ilemeye balar. Bu sebeble 0000h adresinde ilemcinin ilk olarak
yapmas gereken ilemler bulunur ve bu ilemler genel olarak bir EPROMda saklanr.
Deneme kartnn temel amac, denenecek programlarn, EPROM hafzadan deil RAM
hafzadan altrlmasdr. Bu sayede denenecek her programn EPROMa yklenmesi
gerei ortadan kalkar. 0000h adresindeki EPROM hafzaya MONTR program adl bir
program yklenir.
Bu program mikroilemci deneme kart iin bir iletim sistemi gibidir. Bu program
sayesinde PC zerinde yazlan programlar kartta bulunan RAM hafzaya yklenebilir ve
oradan altrlabilir. Mikroilemci deneme kartlarnn temel yaplar son derecede
basittir. Deneme kart temel olarak mikrokontrolc entegre, PC ile haberlemek zere bir
RS232 iletiim birimi , EPROM hafza ve RAM hafzadr. Baz mikrokontrolc entegrelerin
kendi zerlerinde EPROM hafzalar vardr. Eer bu EPROM hafza yklenecek Monitr
program iin yeterli ise d EPROMada gerek kalmaz. Dolaysyla basit bir deneme
kartnda, mikrokontrolc entegre, RAM hafza ve RS232 haberleme birimi
bulunur.Aadaki sayfada minumum balantl bir deneme kart grlmektedir.
Deneme kartn gelitirmek iin kart zerine genelde dier baz entegrelerde balanr.
Bunlara rnek olarak ilave EPROM, paralel giri k birimleri, gelimi RS232
haberleme entegreleri (UART), tu takm ve display srcleri, analog saysal eviriciler,
saysal analog eviriciler, rleler, LEDler, gerek zaman entegreleri, ek zamanlayclar gibi
dier baz zel fonksiyonlu entegreler saylabilir.

Yanda verilen bu basit deneme devresinin bilgisayarla iletiiminin salanmas iin, 8051
entegresi iindeki EPROM'a kaydedilecek bir monitr programna gereksinim vardr. 8051
entegresi ailesinin btn rnleri ilk adres olarak 0000h adresini tandklarndan, monitr
program 0000h adresinden itibaren yklenecektir. Monitr programnn temel grevi PC
ile haberlemeyi salamak zere gerekli seri iletiim dzenini kurduktan sonra kullancya
bir men sunmaktr.

ekil. Von Neumann mimarisine gre dizayn edilmi DENEME kart.

8051 Deneme Kart

Devre emas

PCB st Yz

PCB Alt Yz

Eleman Yerleimi

You might also like