8051 Bölümü

8051 serisi
Cevapla
quaint
Genel Yetkili Adayı
Mesajlar: 188
Kayıt: 11 Tem 2009 19:46
İletişim:

8051 Bölümü

Mesaj gönderen quaint »

8051 ile ilgili paylaşımlarımızı burada yapalım.
quaint
Genel Yetkili Adayı
Mesajlar: 188
Kayıt: 11 Tem 2009 19:46
İletişim:

8051

Mesaj gönderen quaint »

GIRIS;

8051 mikro denetleyici ailesi konulu sunum projesi raporu, iki ana basliktan olusmaktadir.Ilk bolumde mikro denetleyicilere genel bir bakis ve 8051 hakkinda ön bilgi yer alırken,ikinci bolumde 8051 aileisinin temel çekirdeğinin donanim mimarisi genel hatlariyla tanıtılmıştır.Konunun cok kapsamlı olmasi,konuyu butun yonleriyle ele almamiza engel teskil etmistir.Fakat rapor’da da belirttigimiz gibi 8051 hakkinda bir cok kaynak mevcuttur.Bu konuda genis bilgi edinmek isteyenler icin asagidaki internet adreslerinde yeterli olcude kaynak bulunmaktadir.Ilgililerin ziyaret etmesini oneririz.

*Rapor icerisinde bazi yerlerde, pin isimlerinin onune “#” isareti konulmustur.Bunun anlami o pinin elektrik akimi 0 oldugunda yani lojik 0’da aktif durumda oldugudur.



1. MIKRODENETLEYICILER VE 8051 AILESI

1.1 MIKRODENETLEYICI (MIKROKONTROLOR) NEDIR?



Bir tumdevre-uzerinde uretilen bilgisayara(computer on chip) mikrodenetleyici(mikrokontroller) denir.Bir mikrodenetleyici tumdevresinde bulunan hafiza ve giris/cikis alt sistemleri,bu islemcilerin bir cok alt uygulama icinde(embedded),gomulu olarak dogrudan veya tek basina,mikroislemcilere gore cok daha basit ve ucuz arabirim(interface) teknikleriyle,kontrol amacli olarak kullanilmalarini saglar.Mikrodenetleyeciler ornegin, otomillerde motor kontrol,elektrik ve ic panel kontrol; kameralarda,isik ve odaklama kontrol,gibi amaclarda kullanilmaktadir.Bilgisayarlar,telefon ve modem gibi cesitli haberlesme cihazlari,CD teknolojisi,fotokopi ve faks cihazlari, radyo,TV,teyp,oyuncaklar,ozel amacli elektronik kartlar ve sayilamayacak kadar pek cok alanda,mikrodenetleyiciler yogun olarak kullanilmaktadirlar.Bu kadar genis uygulamalarda kullanilan mikrodenetleyiciler,tumdevre-uzerinde yer alan cok degisik donanim ozellikleri sunmaktadir.Bu ozelliklerden bazilari;paralel ve seri I/O port’lari,zamanlayici/sayicilar,ADC ve RAM,ROM,EPROM ve EEProm gibi degisik kapasitelerde ve ozelliklerde hafiza birimleri.



1.1.1 MIKRODENETLEYICI’NIN, MIKROISLEMCI’DEN FARKLARI;



Mikrodenetleyicilerin yogun olarak kullanildigi elektronik ve kontrol uygulamalarinin yapisi,mikrodenetleyiciyi,onun arkadasi olan,genel-amacli mikroislemciden ayirmaktadir.Bu uygulamalarda,gercek-zaman(real-time) islemi ve cok-gorevlilik (multi-tasking) ozelligi bulunur.Gercek zamanda isleme,denetleyicinin,sinyalleri calisma ortamindan hazir olduklarinda alip ortami bekletmeden isleyebilmesi demektir.Benzeri sekilde,denetleyici,ihtiyac aninda calisma ortamina,gereken kontrol sinyallerini gondermeli ve ortami bekletmeyecek tarzda hizli olmalidir.Diger bir degisle; mikrodenetleyici,sistemin calismasinda sinirlayici etmen olmamalidir.Çok-gorevlilik,bir cok gorevi ayni anda veya ayni anda gibi yapabilme kapasitesidir.

Kisaca;bir mikrodenetleyici kullanildigi sistemin bircok ozelligini ayni anda gozleme(monitoring), ihtiyac aninda gercek-zamanda cevap verme(real-time response) ve sistemi denetleme(control)’den sorumludur.

1.2 8051 AILESI MIKRODENETLEYICILERI HAKKINDA ÖN BILGI

8051, 1980’lerin basinda INTEL firmasi tarafindan üretilmeye basladigindan beri dünya üzerinde en yaygin kullanilan ve en genis türev ürün yelpazesiyle 8 bitlik mikrokontrolör piyasasinda en büyük pazar payina (%40) sahip olan bir mikrodenetleyici ailesinin genel adidir.INTEL firmasinin orijinal 8051 ürünü ile yazilim (komut kodu ve çekirdek mimarisi) uyumlu olup çesitli ek özellikleri içeren türev ürünler gelistirmis olan pek çok firmanin mevcudiyeti ve bütün bu islemciler için çesitli yazilim ve uygulama gelistirme donanimlari üreten firmalarin da katkilariyla 8051 bir endüstri standardi haline gelmistir.
8051 ailesi, INTEL’in "Micro Controller System 51" kelimelerinin bas harflerinden olusan MCS51 ailesi olarak da anilir.
8051 ailesi mikrodenetleyicilerinin ilk bakista göze çarpan özellikleri su sekilde siralanabilir:

Uygun, Hizli ve Güçlü: 8051 çekirdek mimarisi kontrol uygulamalari için gayet uygun olup hizli ve güçlüdür.

Popüler: 8051 kullanicilari için bir çok kitap, teknik dokümanlar, yazilim ve donanim gereçleri, pek çok İnternet Web Sayfasi mevcuttur. Ürün kolay bir sekilde bulunmakta ve desteklenmektedir.

Çok Kaynaklilik: Dünya genelinde orijinal 8051 islemcileri ile çekirdek mimari ve kod uyumlu olan türev islemciler üreten pek çok kaynak firma bulunmaktadir. Bunlara örnek olarak INTEL, PHILIPS, SIEMENS, AMD, DALLAS, ATMEL, OKI, MATRA-HARRIS, HYUNDAI, ANALOG DEVICES firmalari sayilabilir.


Sürekli Gelistirme: 1980 lerden bugüne silikon ve tasarim olarak sürekli gelistirilen 8051’lerin hizlari, islem güçleri, on-chip çevre birimleri sayisi ve çesitliligi artmistir. Örnegin Dallas Semiconductor firmasi tarafindan üretilen 87C390 Dual CAN Microprocessor standart 8052 resource larinin yanisira 5adet 8 bitlik G/Ç portu, iki tam fonksiyonlu seri port, 16 kesme kaynagi, programlanabilir watchdog timer, power-fail reset, programlanabilir IrDA clock, 4 Kbyte on-chip SRAM (program, veri veya yigin hafizasi olarak düzenlenebilir), 8 Mbyte harici hafiza adresleyebilme, 40 MHz lik karistal ile 120 MHz lik performansa sahip olma gibi özelliklere de sahiptir. Bu performans ile 1 makine çevrimlik bir komutu 100 ns. gibi bir sürede icra eder ki bu da birkaç yil öncesine kadar sadece Sayisal İsaret İsleyicilerin (Digital Signal Processors) yapabildigi bir islem idi.

Genis Yelpaze ve Uyumluluk: Çok degisik 851 ürünleri olmasina karsin, komut seti (binary code) seviyesinde bütün ürünler birbiri ile uyumludur. Yani yazilmis olan standart bir program bir baska firmanin ürünü olan islemci üzerinde de çalismaktadir. Bu uyumluluk kolaylik ve esneklik program gelistirme araçlarinda, egitimde ve yazilim desteginde de bulunmaktadi

1.3 GUNUMUZ MIKRODENETLEYICILERI;

8051 uzun yillar önce gelistirilmesine ragmen günümüzde dahi dünyanin en popüler microdenetleyici’si olma özelligini tasimaktadir.Fakat 1990’lardan sonra,asagidaki yeni ihtiyaclara cevap vermek uzere,gelismis ozelliklere ve desteklere sahip,8-bit,16-bit ve 32-bit mikrodenetleyiciler uretilmeye baslanmistir.8051 ailesinin de,temel 8051 cekirdegi ile ikili kod duzeyinde uyumlu pek cok 8-bit ve 16-bit urunleri piyasaya surulmustur.

· Karmasik cihazlar icin daha yuksek performans

· Daha genis adres alani

· C gibi yuksek seviyede programlama destegi

· Windows altında çalışan gelişmiş hata takibi(debugging) özelliklerine sahip program geliştirme ortamlari

· Daha az guc tuketimi ve gurultu

· Buyuk gelistirme yatirimlari ve yazilim guvenligi acisindan varolan programlarin kullanilmasi

· Sistem fiyatinda indirim



2. 8051 MIKRODENETLEYICI AILESININ MIMARISI;



2.1 8051 AILESININ TEMEL OZELLIKLERI;



8051 cekirdeginin temel ozellikleri sunlardir;



· Kontrol uygulamalarina yonelik 8-bit CPU

· Yogun Boolean islemleri yapabilme (tek-bit lojik islemler) ozelligi

· 64K Program Hafiza(Program Memory) adres alani

· 64K Veri Hafiza(Data Memory) adres alani

· 4K tumdevre-uzeri(on-chip) Program Hafiza

· 128 byte tumdevre-uzeri veri RAM

· 32 tane iki yonlu adreslenebilir I/O hatlari

· 2 tane 16-bit Zamanlayici/Sayici(Timer/Counter)

· Full duplex UART(Universal Asynchronous Receiver Transmitter)

· İki oncelik seviyesine sahip 6-kaynak / 5-vektorlu kesme donanim yapisi



Ilk 8051 temel mimarisi,4K tumdevre-uzeri Program Hafizaya sahipti.Daha sonraki urunlerden,8052,8K ROM ve 8752,8K EPROM Program Hafizalara sahiptir.Daha yeni 8051 mikrodenetleyicilerinden olan,83C51FB,16K EPROM ve 83C51FC,32K EPROM Program Hafizali urunlerden bazilaridir.



2.1.1 HAFIZA BIRIMLERININ TANIMLARI,FONKSIYONLARI;


Bütün mikroislemci tabanli sistemlerde çalisabilecek minimum konfigürasyonda Merkezi İslem Biriminin yaninda Hafiza Birimleri yer almaktadir. Sistem programlarinin ve sabit degerlerin üzerinde yer aldigi Salt Okunabilir Hafizalar (Read Only Memory – ROM) ile bütün degiskenlerin, degisken deger alabilen tablolarin yer aldigi ve geçici islem hafizasi olarak kullanilan Okunabilir-Yazilabilir Hafizalar (Read-Write Memory veya Random Access Memory – RAM) bulunmadan bir mikroislemcinin çalismasi mümkün degildir.
Yukarda ifade edildigi gibi hafiza birimleri temel fonksiyonlarina göre ikiye ayrilmaktadir. Bu hafiza çesitleri hakkinda biraz daha ayrintili bilgi söyle verilebilir:


ROM (Read Only Memory – Salt Okunabilir Hafiza)


Mikroislemcilerin çalisma prensibi önceden hazirlanmis bir islem dizisinin, birbirini takip eden komutlar grubunun sirayla adim adim çalistirilmasina dayanir. Bu islem dizisine mikroislemcinin sistem programi (veya kisaca programi) adi verilir. İste bu programin üzerinde yer aldigi birim ROM olmaktadir. Sadece okunabilir olmasi, programin baslangiçta tasarim mühendisi tarafindan hazirlanip hafizaya yerlestirilmesi ve sistem 88çalisirken degistirilmemesinden kaynaklanir. Üzerinde yer alan komut kodlarinin artan adreslere dogru sirayla birer birer MİB tarafindan okunup icra edilmesi nedeniyle zaman zaman Sirali Erisimli Hafiza olarak da anilir.
RAM (Random Access Memory –Rastgele Erisimli Hafiza - Oku-Yaz Hafiza)
Mikroislemcinin çalismasi esnasinda her türlü degiskenin üzerinde yer alacagi ve geçici islemlerin yapilacagi hafiza birimi ise özel bir sira takip etmeden her hangi bir adrese erisilebilindigi için Rastgele Erisimli Hafiza – RAM olarak isimlendirilir. Ayrica yigin (stack) olarak adlandirilan ve mikroislemci programlarinin çalistirilmasi esnasinda çesitli alt-programlar kullanildikça geri dönüs adreslerinin, içeriklerinin degismesinin istenmedigi register larin saklandigi hafiza bölgesi de yine RAM hafiza birimlerinde yer alir.

2.1.2. HAFIZA BIRIMLERININ SINIFLANDIRILMALARI


Genel olarak ROM ve RAM isimleri altinda siniflandirdigimiz hafiza birimleri gerçek hayatta çok daha fazla çesitlilik gösterip alt gruplara ayrilmaktadir. Bu gruplar kisaca söyle açiklanabilir:
ROM Türü Hafiza Çesitleri ve Fonksiyonlari
Mikroislemci tarafindan sadece okunabiliyor olmakla birlikte içindeki bilgilerin (programlar, sabit degerli tablolar vb.) kaydedilme yöntemine ve gerekmesi halinde ve mümkünse silinip yeniden yazilabilme özelliklerine göre ROM lar kendi içlerinde ayrica siniflandirilirlar.

· ROM



Ana grupla ayni adi tasiyan bu alt grup hafiza türünde, sistem programlari, fabrikada hafiza entegresinin üretimi esnasinda entegre devrenin üzerine kaydedilir. “Factory Mask” (Fabrikada Maskeleme) adi verilen bu yöntemde, mikroislemci tabanli sistemi üreten firma istedigi programa ait kodlari, mikroislemci entegresini üreten kurulusa teslim eder ve ayni programa sahip yüksek miktardaki (en az binlerce adet) ürünü teslim alir.
Normal ürün fiyatinin yaninda maskeleme islemi için de sabit bir ücret alinmaktadir. Bu ücret üretilen entegre sayisi ile degismediginden ne kadar yüksek adetli üretim gerçeklestirilirse entegre basina düsen birim maliyet (maskeleme ücreti) o kadar az olmaktadir. Örnegin INTEL firmasi 8051’in maskeleme islemi için 3,000 US$ ücret almaktadir. Eger 300 mikroislemci programlattirirsaniz 10$, 3,000 adet üretilirse 1$, 30,000 adet üretilirse 0.1$ ek birim maliyet söz konusu olacaktir.
Cihaz üretimi esnasinda ek bir programlama islemini gerektirmeme avantajina karsilik bu ürünlerin gerektiginde degistirilme imkani olmadigindan güncel piyasa sartlarina pek uygun degildir. Önceden belirlenmis olan kodlar, bir hatanin belirlenmesi, yeni bir özellik eklenmek istenmesi veya programlarin tamamen degistirilmek istenmesi durumlarinda hiç bir müdahale yapilamadan üstelik yüksek adetlerde firmanin elinde kalmakta ve bu da büyük bir dezavantaj olarak degerlendirilmektedir.



· PROM – Programmable ROM

Programlanabilir-ROM lar temel olarak ROM lar ile ayni özelliklere sahiptir. Fakat özel bir programlayici donanim yardimiyla sadece bir kere olmak sartiyla içine yazma islemi yapilabilir. Yüksek adetli üretim yapmayan veya zaman içinde ayni ürünün farkli modellerini üretmek isteyen firmalar tarafindan tercih edilir.
OTP (One Time Programmable – Bir Kez Programlanabilir) ROM olarak da adlandirilan bu ürünlerin birim fiyati ROM lara göre biraz daha yüksek olmakla birlikte kazandirdigi esneklik nedeniyle avantajlidir. Ancak üretici firmanin bu entegreleri programlamak için özel bir donanima sahip olmasi ve kullanilacak bütün PROM larin bir eleman tarafindan programlanmasi gerekmektedir.

· EPROM – Erasable PROM

Silinebilir PROM lar da temel olarak ROM lar ile ayni özelliklere sahiptir. Fakat özel bir cihaz yardimiyla içindeki bilgiler silinebilir. Bu sayede tekrar tekrar programlanabilme özelligi kazanan bu tür hafiza entegreleri program gelistirirken çesitli denemeler yapilmasina imkan verdikleri için büyük avantaj saglarlar. Ancak PROM lara göre yüksek maliyetleri nedeniyle daha çok program gelistirme asamasinda, AR&GE laboratuarlarinda, vb yerlerde kullanilirlar.
Entegre devrenin kilifinda, silikon chip’in bulundugu yerin üst kismi seffaf bir malzeme ile örtülüdür. Ultraviyole isik altinda belirli bir süre kalan hafiza entegresinin üzerinde kayitli olan program silinir. Böylece tekrar programlanabilir hale gelen ürün tekrar tekrar farkli programlarin denenmesi ve cihazin çalistirilmasi için kullanilabilir.
Silme islemi esnasinda belirli sartlara dikkat edilmemesi (gereginden fazla süre UV isiga maruz kalmak, yüksek isik siddetine sahip UV ampul kullanmak gibi) halinde silinebilme ömrü kisalan entegreler bir süre sonra kullanilamaz (silinemez) hale gelmektedir.

· EEPROM – Electrically Erasable PROM

Buraya kadar anlatilan bütün hafiza türleri özel ortamlarda içine yazma islemi yapilabilirken Eeprom larda bu durum daha degisik ve gelismis bir yapidadir. Genel olarak ROM ailesine ait olmakla birlikte mikroislemci tarafindan içine yazma yapilabilmesi özelligi ile diger ROM lardan ayrilir.
Eprom’ larda görülen UV isik altinda silinebilme özelligi, bu tür hafizalarda elektriksel olarak gerçeklestirilebilmektedir. Yani Mikroislemci elektronik devre karti üzerinde bulunan bir Eeprom’a bilgi yazabilmektedir. Bu bilgi, ROM türü hafizalarin elektrik kesintilerinden etkilenmeme özelligi sayesinde unutulmamakta, dolayisiyla cihazin çalismasi esnasinda kullanilan, istendiginde degistirilebilen ve fakat silinmemesi istenen bilgilerin, çesitli parametrelerin saklanmasi için ideal bir çözüm teskil etmektedir.

· RAM Türü Hafiza Çesitleri ve Fonksiyonlari


Mikroislemci tarafindan hem okunup hem de yazilabilen hafiza türlerinin RAM olarak isimlendirildigi daha önce ifade edilmisti. Sistem programlarinda yer alan her türlü degiskenin üzerinde yer aldigi, geçici islemlerin gerçeklestirildigi türdeki bu hafizalar gerçeklestirildikleri teknik açisindan ikiye ayrilirlar. Statik ve Dinamik RAM olarak adlandirilan bu hafiza birimleri hakkinda asagida özet bilgi verilmistir.
- Statik RAM
Her bir biti bir flip-flop devresi olan bu tür hafizalar, yeni bir tetikleme isareti gelinceye kadar içindeki bilgiyi (0 veya 1’i) saklayabilme özelligi nedeniyle çok düsük güç tüketimi ile çalismaktadir. Disardan devreye baglanan bir pil yardimiyla içindeki bilgileri çok uzun süreler boyunca saklayabilme imkani vardir. Dinamik RAM lara göre daha yüksek maliyetli olmalari nedeniyle çok yüksek kapasitelerde üretilmezler.
- Dinamik RAM
Her bir biti, bir kuvvetlendirici (genellikle bir tranzistör) ve onun baz girisindeki bir kondansatörden olusan bir yapiya sahiptir. Bir biti lojik 1 konumuna getirmek için kondansatörün doldurulmasi gerekir. Ancak kaçak akimlar nedeniyle kondansatör bosalir.



2.1.3 URUN OZELLIKLERI;



8031 : Chip üzerinde ROM veya EPROM olarak program hafizasina sahip degildir.Program hafizasi için P0 ve P2 portlari vasitasiyla harici EPROM'lar kullanilir. Bu durumda P0 ve P2 adresleri giris çikis portu olarak kullanilmazlar. Program hafizasi için 64 K'lik adresleme kapasitesine sahiptir.

8751 : 8051 ailesinin,entegre üzerinde 4 K kapasiteli EPROM program hafizasina sahip üyesidir. P0,P1,P2 ve P3 portlarinin tamami giris / çikis portu olarak kullanilabilir. Program hafizasi Eprom oldugu için UV isinlari ile silinerek tekrar programlanabilir.

8051 : Ailenin, '' Mask Rom '' denilen fabrikada üretim esnasinda proglamlanan 4 K program kapasiteli hafizaya sahip modelidir. 8751 'den tek farki hafizasinin silinememesi, fabrikada bir defaya mahsus olmak üzere programlanmasidir.

3 tip chip 'de ihtiyaca göre projelerde kullanililabilir. 8751 prototip safhada, tekrar tekrar yazilip silineceginden çok zaman kaybettirir. Bu nedenle 8031 'li board prototip safhada kullanilmasi zaman kaybini önler. Bu board'da program hafizasi RAM oldugu için yazdiginiz programlari aninda RAM 'e yükleyip test edebilirsiniz. Prototip çalisir hale getirildikten sonra 8031 için yazdiginiz programi aynen 8751 için de kullanabilirsiniz. ( eger programiniz 4 K'dan küçükse ) 8751 'in P0 ve P2 portlarini kullanacaginiz uygulamalarda board üzerindeki 8255 chip'inin portlarini kullanarak bu sekildeki uygulamalarinizi da simüle edebilirsiniz

Gectigimiz yillarda bircok uretici firma,8051 mikrodenetleyicisinin gelismis uyelerini sunmustur.8051 ailesinin urunlerindeki gelismeler daha cok su alanlarda olmustur;



+ Hafiza ve port sayisi artmistir,



+ Analog-sayisal donusturuculer eklenmistir,



+ Karsilastirma(compare),tekrar yukleme(reload) ve ornekle (capture) ozellikli

daha cok Zamanlayici/Sayicilar,



+ Daha cok kesme kaynagi,



+ Daha yuksek hassasiyetli carpma ve bolme birimleri,



+ Bosta(idle) ve guc-azalt(power-down) mod destegi



+ Watchdog zamanlayicilari ve ag haberlesme alt sistemleri.



Ailenin butun mikrodenetleyicileri ayni makine komutlarini,MCS51,kullanmaktadir.

Gelismis ozellikler,ek SFR’lar yoluyla programlanir ve kontrol edilir.



2.1.4 8051 TUMDEVRE UC FONKSIYONLARI;



8051 tumdevre uc fonksiyonlarinin tam olarak anlasilabilmesi icin,tumdevrenin ic elektronigi hakkinda biraz bilgi faydalidir.



VCC

Besleme gerilimi



VSS

Tumdevre topragi


PORT 0(P0)

8-bit open-drain iki yonlu I/O port’udur.P0 uclarina program ile 1 yazilmasi durumunda,yuksek empedansli giris uclari olarak kullanilabilir.



P0 ayni zamanda,harici Program Hafizaya ve Veri Hafizaya erisimlerde, secmeli(multiplexed) dusuk-degerli Adres/Veri Yolu (AD7-AD0) olarak ta kullanilabilir.Bu durumda calisirken,P0,disari lojik 1 isareti gondermede,dahili pullup’lar olarak calisan FET transistorlerini kullanir.



P0,EPROM’lu urunlerin programlanmasinda,islem kod byte’larini alir ve ROM ve EPROM program dogrulamasinda(verification),islem kod byte’lari,buradan disari cikar.Program dogrulama isleminde,harici pullup direnclerine ihtiyac vardir.



PORT 1(P1)

8-bit dahili pullup direnclere sahip iki yonlu I/O port’udur.Uclarina program ile lojik 1 yazilan P1,dahili pullup’lar ile yuksek lojik 1 seviyesine cekilir ve bu durumda giris olarak kullanilabilir.



Tumdevre icinde bulunan dahili pullup’lar yuzunden,harici olarak pullup’lar ile dusuk seviyeye cekilen uclardan akim tumdevreden disari dogru cikar.



EPROM’lu urunlerin programlanmasinda ve ROM ve EPROM’larin program dogrulama islemleri esnasinda,P1,dusuk-degerli adres byte’larini alir.



PORT 2(P2)

8-bit dahili pullup direnclere sahip iki yonlu I/O port’udur.Uclarina program ile lojik 1 yazilan P2,dahili pullup’lar ile yuksek lojik 1 seviyesine cekilir ve bu durumda giris kullanilabilir.



Tumdevre icinde bulunan dahili pullup’lar yuzunden,harici olarak,pullup’lar ile dusuk seviyeye cekilen uclardan akim tumdevreden disari dogru cikar.



Harici Program Hafizadan okumalarda ve 16-bit adresler kullanan (MOVX@DPTR)

harici Veri Hafizaya erisimlerde,P2 yuksek-degerli adres byte’ini cikarir.Bu durumda calisirken,P2 disari lojik 1 isareti gondermede,dahili pullup direnclerini kullanir.



8-bit adresler kullanan(MOVX @Ri) Harici Veri Hafizaya erisimlerde,P2 port’u, P2 SFR iceriklerini disariya gonderir.



EPROM’lu urunlerin programlanmasinda,ROM ve EPROM’larin program dogrulama islemleri sirasinda,P2 yuksek-degerli adres byte’larini alir.



PORT 3(P3)

8-bit dahili pullup direncelere sahip iki yonlu I/O portudur.Uclarina program ile lojik 1 yazilan P3,dahili pullup’lar ile yuksek lojik 1 seviyesine cekilir ve bu durumda giris olarak kullanilabilir.



Tumdevre icinde bulunan dahili pullup’lar yuzunden,harici olarak,pullup’lar ile dusuk seviyeye cekilen uclardan akim tumdevreden disari dogru cikar.



RST
Osilator calisirken,3 makine cevrimi kadar bu uc uzerindeki bir yuksek seviye(lojik 1) islemciyi sifirlar(reset)



ALE/#PROG(Adres Latch Enable-ALE)

Bu cikis sinyali,harici hafizaya erisimlerde adresin dusuk degerli byte’ini, cikistaki adres latch’ina tutturmada kullanilir.Bu sinyalin gorevi 8085A,8088/8086 islemcilerindeki ALE sinyali ile aynidir.Bu uc ayni zamanda,EPROM’lu urunlerin programlanmasi sirasinda,program darbe girisidir.(#PROG)



#PSEN (Program Store Enable)

Bu cikis,harici Program Hafizadan okuma sinyalidir.#PSEN ,harici Program Hafizadan okumalarda ger makine cevriminde 2 kere aktif olur.Bununla beraber, harici Veri Hafizaya her erisimde #PSEN sinyalinin 2 aktif durumu gecilkmektedir.#PSEN dahili Program Hafizadan okumalarda aktif degildir.



#EA/VPP(External Access-#EA)

Bu uc dusuk seviye (lojik 0) yapildiginda,islemci 0000h’tan baslayip FFFFh’a kadar hafiza hucrelerini,harici Program Hafizadan okuyacak hale getirilir.#EA sinyali mutlaka 1 veya 0 seviyesinde olup bosta birakilmamalidir.Bu bacak ayni zamanda, EPROM’lu urunlerin programlanmasi sirasinda,proglamlama besleme voltajini(VPP) alir.



XTAL1:Osilator girisi



XTAL2:Osilator cikisi.



2.1.5 DETAYLI PORT YAPILARI VE CALISMASI;

8051’deki port’larin hepsi iki yonludur.Her bir port,bir latch (P0 ile P3 arasindaki bir SFR),bir cikis surucusu(driver) ve bir giris buffer’ina sahiptir.

Port 0 ve Port2’nin cikis suruculeri,harici hafiza erisimlerinde kullanilan,bir dahili ADDR/DATA ve ADDR yollarina,bir dahili kontrol sinyali ile anahtarlanabilmektedir.Harici hafiza erisimlerinde,P2 SFR’I dedismemekte,fakat P0 SFR’I kendisine yazili lojik 1’leri almaktadir.Eger P3’un bir latch’I lojik 1 ise,cikis seviyesi “alternatif cikis fonksiyonu” sinyaliyle kontrol edilir.Bir P3.X ucu,bu durumda alternatif bir giris fonksiyonu icin her zaman hazir olur.

Port 1,Port 2 ve Port 3 dahili pullup direnclere sahiptir.Port 0 ise open-drain cikislara sahiptir.Her I/O hatti birbirinden bagimsiz olarak bir giris veya cikis olarak kullanilabilir.Port 0 ve Port 2,Adres/Veri Yolu olarak kullanildiklari zaman,genel amacli I/O olarak kullanilmazlar.Bir port’un giris olarak kullanilabilmesi icin,port bit latch’I lojik 1 olmalidir.Bu lojik deger,cikis surucusu olan FET transistorunu devreden cikarir.Port 1,Port2 ve Port3 icin,uclar dahili pullup’lar tarafindan yuksek degere (lojik 1’e) cekilip dusuk gerilime,harici kaynaklar tarafindan cekilebilir.

Port 0 dahili pullup’lara sahip olmamasi ile farklilik gostermektedir.Port 0,harici hafizaya erisimde disari lojik 1 gonderirken,pullup olarak calisan FET transistor aktif olmaktadir.Bunun sonucu olarak,cikis port’u olarak kullanilan P0 hatlari open-drain’dir.Yani,P0’in cikis olarak kullanilmasi durumunda,harici pullup direnclerine ihtiyac vardir.Bit latch’ina lojik 1 yazmada,cikistaki her iki FET acik durumuna(off) gelir ve port ucu bosta olur.Bu durumda,P0,yuksek empedans giris olarak kullanilabilir.

Port 1,Port 2 ve Port 3 sabit dahili pullup’lara sahip olduklari icin,bazen “yalanci iki yonlu” I/O port’lari olarak adlandirilir.Giris olarak belirlendikleri zaman,cikis,yuksek degere cekilir ve harici olarak lojik 0’a cekilme durumunda,akim tumdevreden disari dogru cikar.Buna karsin Port 0,”gercek” iki yonlu port olarak dusunulur;cunku,giris olarak proglamlandiginda,uclar bosta(float) olur.

Sifirlama durumunda,8051’deki butun port latch’larina lojik 1 yazilir.Eger daha sonra port latch’ina lojik 0 yazilir ise,lojik 1 yazarak,giris olarak tekrar programlanabilir.

2.2 8051 AILESININ HAFIZA YAPISI;

2.2.1 PROGRAM VE VERI HAFIZALARININ AYRILMASI



8051 ailesinin butun urunleri Program Hafiza ve Veri Hafiza icin,iki ayri adres alanina sahiptir.Program ve Veri Hafizanin bu lojik ayrimi,Veri Hafizasinin 8-bit adreslerle erisimine imkan verir.Bu da,8-bit 8051 CPU’su tarafindan,verilerin daha hizli erisilmesini,islenmesini ve saklanmasini saglar.Bununla beraber,harici 16-bit Veri Hafiza adresleri,8051 DPTR(data pointer)saklayicisi yoluyla da uretilebilmektedir.

Program Hafiza,sadece okunabilir olup bir veri bu alana yazilamaz.Program Hafizasinin boyu 64K byte kadar olabilir.Bu ailenin ROM veya EPROM’lu surumlerinde,Program Hafizanin en dusuk 4K,8K,16K veya 32K byte’lik kismi,

tumdevre uzerinde bulunabilir.Rom’suz surumlerdeki butun Program Hafiza haricidir. Harici Program Hafiza okuma sinyali PSEN’dir.

Veri Hafiza,Program hafizadan ayri bir adres alani isgal eder.64K byte’a kadar olan harici RAM hafiza,harici Veri Hafiza alani icinde adreslenebilmektedir.CPU,Harici Veri Hafizasina erisimlerde ihtiyac oldukca okuma ve yazma sinyalleri,RD ve WR, uretmektedir.

8051 ailesi,64K harici Veri Hafizasini ve ayrica 64Kharici Program Hafizasini adresleyebilmektedir.Bunlar ayri hafiza bloklari olabilmektedir.Boylece toplam 128K’ya kadar hafiza,mikrodenetleyiciye eklenebilmektedir.Ayri program ve veri hafizalar,Harvard Mimarisi olarak bilinen klasik mimari modelinin temel bir ozelligidir.

8051,iki ayri hafiza okuma sinyaline sahiptir.RD ve PSEN.Birincisi,harici Veri Hafizadan ve digeri ise harici Program Hafizadan,bir byte okunurken aktif olmaktadir. Bu sinyaller aktif dusuk(active low) sinyallerdir.Butun harici kod,harici hafizadan okunur.Ek olarak,harici hafizadan gelen byte’lar MOVC gibi ozel okuma komutlariyla da okunabilir.Harici hafizadan okuma icin,MOVX gibi ayri komutlar da vardir.Yani,hafizanin hangi bolumunden okunacagini komutlar belirlemekte ve hafiza okuma cevriminde,bu duruma karsi gelen sinyallerden RD ve PSEN aktif olmaktadir.

Bir hafiza blogu,hem Veri Hafiza ve hem de Program Hafiza olarak,hafiza haritasina yerlestirilir.Istenirse RD ve PSEN sinyalleri bir AND kapisi ile birlesitirilip kapi cikisi,harici Program/Veri Hafiza okuma sinyali olarak kullanilarak,harici Program ve Veri, hafiza birlestirilebilir.Bu yol ile,iki giristen biri dusuk oldugunda AND kapisinin cikisi dusuk olacaktir.Bu sayede,Ayni hafiza blogundan okuma islemi gerceklestirilir.Program ve Veri Hafizalarinin birlestirilmesi,Von Neuman Mimarisi diye bilinen klasik mimari modelin temel ozelliklerinden biridir.

Harvard Mimarisinin avantaji,sadec mikrodenetleyicinin hafiza kapasitesini iki katina cikarmak degildir.Program ve Veri Hafizalarinin ayrilmasi,mikrodenetleyicinin guvenligini de arttirmaktadir.Cunku,Program Hafizaya yazmak icin komut yoktur.Bir ROM hafiza,program hafizasi olmak icin uygundur.Bununla beraber Harvard Mimarisi,gelistirilen kodun program hafizaya bircok kere yuklendigi,program gelistirme sistemleri icin biraz terstir.Program ve Veri Hafizalari,Von Neuman Mimarisi kullanilarak,program kodu,hafizaya veri byte’lari gibi yazilabilmekte ve ayni hafizadan,program komutlari olarak yurutulebilmektedir.



2.3 CPU ZAMANLAMASI;



Butun 8051 mikrodenetleyicileri tumdevre-uzeri osilatore(dahili saat uretecine) sahiptir.Bu uretec icin,mikrodenetleyicinin XTAL1 ve XTAL2 girislerine bir kristal veya bir seramik resonator baglanir.Kristal ve harici saat baglantilari ile ilgili detay bilgiler,8051 uretici firmalarin veri kitaplarindan bulunabilir.Dahili saat ureteci,bir MCS-51 makine cevrimini(machine cycle) olusturan durum(state) sinyallerini belirler.



EK 1 : 8051 KOMUT KUMESI





Komutlar'in Carry,Overflow ve Aux.Carry Flag'larina etkisi:

KOMUT FLAG
C OV AC

ADD X X X C :Carry, Elde

ADDC X X X OV :Overflow, Tasima

SUBB X X X AC :Auxiliary Carry, Yardimci Elde

MUL 0 X

DIV 0 X

DA X

RRC X

RLC X

SETB C 1

CLR C 0

CPL C X

ANL C,bit X

ANL C,/bit X

ORL C,bit X

ORL C,/bit X

MOV C,bit X

CJNE X

Komutlarin yazilmasinda kullanilan registerler ve adresleme çesitleri ile ilgili açiklamalar :

Rn : Seçilen register banktaki R0,R1,R2,R3,R4,R5,R6,R7 Registerlerini gösterir.

Direct :8 bit'lik Internal data alanlarinin adreslerini( 0-127 Data Memory, 127-255 SFR adreslerini )belirtir.

@Ri :R0 ve R1 registerlerini ifade eder. Internal Data Memory adreslerini indirect (dolayli) olarak belirtir.

#data16 : 16 bit'lik sabit sayiyi belirtir.

addr16 : 16 bit'lik adres belirtir.LCALL va LJMP komutlariyla kullanilir. 64 K'lik program memory adres alaninda istenilen adrese siçramayi saglar.

addr11 : 11 bit'lik adres belirtir.ACALL ve AJMP komutlariyla kullanlir. Siçrama komutun kullanildigi adresten itibaren en fazla 2K'lik bir alana siçrama yapabilir.

rel : + ve - olarak (-128 den +127 )8 bitlik bagil adreslemeyi belirtir. SJMP ve diger sartli siçrama komutlary ile kullanilir.

bit :Internal Data Memory'daki veya SFR lerdeki direk adreslenebilen bit adresini belirler.

KOMUTLAR TANIMI :

ARITMETIK KOMUTLAR

ADD A,Rn ACC'ye Rn'yi ekle

ADD A,direct ACC'ye memory'i direk ekle

ADD A,@Rl ACC'ye dolayli belirtilen memory'i ekle

ADD A,#data ACC'ye direk sabit ekle

ADDC A,Rn ACC'ye Rn'yi carry(elde) ile birlikte ekle

ADDC A,direct ACC'ye memory'i elde ile birlikte ekle

ADDC A@Ri ACC'ye dolayli belirtilen memory'i elde ile birlikte ekle

ADDC A,#data ACC'ye direk sabiti elde ile birlikte ekle

SUBB A,Rn ACC'den Rn'yi eldeli çikar

SUBB A,direct ACC'den memory'i eldeli çikar

SUBB A, @Ri ACC'den dolayli belirtilen memory'i eldeli çikar

SUBB A,#data ACC'den direk sabit'i eldeli çikar

INC A ACC 'yi 1 artirir

INC Rn Registeri 1 artir

INC direct Memory'i 1 artir

INC @Ri Dolayli belirtilen memory'i 1 artir

DEC A ACC'yi 1 azalt

DEC Rn Registeri 1 azalt

DEC direct Memory'i bir azalt

DEC @Ri Dolayli belirtilem memory'i 1 azalt

INC DPTR Data Pointer'i 1 artir

MULL AB ACC ve B'yi çarp

DIV AB ACC'yi B'ye böl

DA A ACC'yi decimal ayarla

LOGICAL KOMUTLAR :

ANL A,Rn Registeri ACC'ye AND'le

ANL A,direct Memory'i ACC'ye AND'le

ANL A, @Ri Dolayli belirtilen memory'i ACC ye AND'le

ANL A, #data Sabit sayyyy ACC ye AND'le

ANL direct,A ACC'yi Memory'e AND'le

ANL direct,#data Sabit sayiyi memory'e AND'le

ORL Arn Registeri ACC'ye OR'la

ORL A,direct Memory'i ACC'ye OR'la

ORL A,@Ri Dolayli belirtilen memory'i ACC'ye OR'la

ORL A,#data Sabit sayiyi ACC'ye OR'la

ORL direct,A ACC'yi Memory'e OR'la
ORL direct,#data Sabit sayiyi Memory'e OR'la

XRL A,Rn Registeri ACC'ye XOR'la

XRL A,direct Memory'i ACC'ye XOR'la

XRL A,@Ri Dolayli belirtilen memory'i ACC'ye XOR'la

XRL A,#data Sabit sayiyi ACC'ye XOR'la

XRL direct,A ACC'yi Memory'e XOR'la

XRL direct,#data Sabit sayiyi Memory'e XOR'la

CLR A ACC'yi sifirla

CPL A ACC'nin complementini al

RL A ACC'yi 1 bit sola kaydir

RLC A ACC'yi 1 bit sola kaydir ( carry ile birlikte )

RR A ACC'yi 1 bit saga kaydir

RRC A ACC'yi 1 bit saga kaydir ( carry ile birlikte )

SWAP A ACC'nin byte'larini yer degistir

DATA TRANSFER KOMUTLARI :

MOV A,Rn Rn'yi ACC'ye tasi

MOV A,direct Memory'i ACC'ye tasi

MOV A,@Ri Dolayly belirtilen memory'i ACC'ye ta?y

MOV A#data Sabit sayiyi ACC'ye tasi
MOV Rn,A ACC'yi Rn'ye tasi

MOV Rn,direct Memory'i Rn'ye yükle

MOV Rn,#data Sabit sayiyi Rn'ye tasi
MOV direct,A ACC'yi memory'e tasi

MOV direct,Rn Rn'yi memory'e tasi

MOV direct,direct Memory'i memory'e tasi

MOV direct,#data Sabit sayiyi memory'e tasi

MOV @Ri,A ACC'yi dolayli belirtilen memory'e tasi

MOV @Ri,direct Direk belirtilen memory'i dolayli belirtilen memory'e tasi

MOV @Ri,#data Sabit sayyyy dolayli belirtilen memory'e tasi

MOV DPRT,#data16 16 bit'lik sabit sayiyi DPRT'ye tasi

MOVC A,@A+DPRT (DPRT+A)'nin belirtildigii adresteki dosyayi ACC'ye tasi

MOVC A,@A+PC PC+A'nyn belirttigi adresteki datayi ACC'ye tasi

MOVX A,@Ri Ri'nin belirttigi 8 bit'lik harici memory'deki degeri ACC'ye tasi

MOVX A,@DPRT DPRT'nin belirttigi 16 bit'lik harici memory'deki degeri ACC'ye tasi

MOVX @Ri,A ACC'ye Ri'nin belirttigi 8 bitlik harici memory'e tasi

MOVX @DPTR,A ACC'yi DPRT'nin belirttigi 16 bit'lik harici memory'e tasi

PUSH direct Memory'deki degeri stack'a yükle

POP direct SP'nin gösterdigi adres degerinden memory'e yükle

XCH A,Rn Register ile ACC'yi degistir.

XCH A,direct Memory ile ACC'yi degistir

XCH A,@Ri Dolayli gösterilen memory ile ACC'yi degistir

XCD A,@Ri Dolayli gösterilen memory'nin düsük byte'ni ACC ile degistir
BOOLEAN DEGİSKENLERİ İSLEMLERi :

CLR C Carry'i sifirla

CLR bit Bit'i sifirla

SETB C Carry'i 1 yap

SETB bit Bit'i 1 yap

CPL C C'nin degilini (complementini al )

CPL bit Bit'in degilini al

ANL C,bit Bit'i Carry'e AND le

ANL C,/bit Bit'in degilini carry'e AND le

ORL C,bit Bit'i Carry'e OR la

ORL C,/bit Bit'in degilini carry'e OR la

MOV C,bit Bit'i carry'e tasi

MOV bit,C Carry'i bit'e tasi

JC rel Eger carry=1 ise rel adresine siçra

JNC rel Eger carry=0 ise rel adresine siçra

JB bit,rel Eger bit=0 ise rel adresine siçra

JBC bit,rel Eger bit=1 ise rel adresine siçra ve bit'i sifirla

PROGRAM SIÇRAMALARI

ACALL addr11 Subroutin'i (alt rutin) çagir.(2 k'lik adres sahasi içersinde )

LCALL addr16 Subroutin'i çagir(64k'lik adres sahasi içinde)

RET Subrroutin'den dön

RET1 Interrupt'dan dön

AJMP addr11 addr11 adresine siçra(2k'lik adres sahasi içinde)

LJMP addr16 addr16 adresine syçra(64klik adres sahasi içinde)

SJMP rel rel adresine siçra

JMP @A+DPTR DPTR+A'nin gösterdigi adrese siçra

JZ rel ACC=0 ise rel adresine siçra

JNZ rel ACC=0 degilse rel adresine siçra

CJNE A,direct,rel ACC ve memory'i karsilastirir.Eger esit degilse rel adresine siçra

CJNE A,#data,rel ACC ve sabit sayiyi karsilastirir.Eger esit degilse rel adresine siçra

CJNE Rn,#data,rel Register ile sabit sayi karsilastirilir.Eger esit degillerse rel adresine siçra

CJNE @Ri,#data,rel Dolayly gösterilen memory ile sabit sayiyi karsilastirilir.Eger esit de?illerse rel adresine siçra

DJNZ Rn,rel Register'i 1 azalt,eger sifir olmazsa rel adresine siçra

DJNZ direct,rel Memory'i 1 azalt eger sifir olmazsa rel adresine siçra

NOP islem yapma ( no operation )



EK 2: ORNEK PROGRAM

;8 bit'lik iki sayinin çarpilmasi ( isaretli ) Bu rutin çarpilan ve çarpan ;adresteki isaretli sayilarin alinip,sonucun 16 bit olarak sonuch ve sonucl ;adreslerine yerlestirilmelerini saglar.Bu rutinde kullanilan sayilar ;maximum +127, minumum -127 olmalidir. Bu rutinde A,B ve ;PSW registerleri ;kullanilmaktadir.

; İlk kontroller

$TITLE ( ISARETLI ÇARPMA )

$MOD51

$DATE (3.3.1998)

;

; Degiskenlerin tanymlanmasi:

;

Isaret_flag BIT 0F0H ; SONUCUN İSARETİ

Carpan DATA 30H ; 8 bit çarpan

Carpilan DATA 31H ; 8 bit çarpilan

Sonuch DATA 32H ; 16 bitlik sonucun yüksek digit'i

Sonucl DATA 33H ; 16 bitlik sonucun düsük digit'i

;

ORG 2000h

Basla:

MOV CARPAN,#17 ; decimal deger

MOV CARPAN,#-25 ; decimal deger

CALL Isaretli_carp

;sonuç 32 h adresinde "FE" ,33 h adresinde "57"(decimal -425 )olarak ;görünecektir.

ORG 2100h

Isaretli_carp:

CLR Isaret_flag ; isareti sifirla

MOV A,CARPAN ; çarpan'i ACC'ye yükle

JNB ACC.7,pozitif ; çarpan'i test et

CPL A ; negatif- component

INC A ; pozitife çevirmek için 1 ekle

SETB isaret_flag ; isaret'i set et (eksi olsun )

pozitif:

MOV B,Carpilan ; çarpilani B registerine yükle

JNB B.7,carp ; çarpilanin isaretini test et

XRL B, #0FFh ; negatif- component ve

INC B ; pozitife çevirmek için 1 ekle

CPL isaret_flag ; complement'ini al isaret_flag'ni

carp:

MUL AB ; isaretsiz olarak çarp

isaret_test:

JNB isaret_flag,tamam ; eger pozitif ise tamam

XRL B,#0FFh ; degilse her iki byte'in complementini al

CPL A ; 1 ekle ( inc carry_ flag'i degistirmez )

JNC tamam ; eger ADD A'yi over-flow etmisse

INC B ;yüksek digit'i 1 artir

tamam:

MOV sonuch,B ; cevabi yükle

MOV sonucl,A ;

RET ; ve dön

END
quaint
Genel Yetkili Adayı
Mesajlar: 188
Kayıt: 11 Tem 2009 19:46
İletişim:

8051 simülatör

Mesaj gönderen quaint »

simülatör
Dosya ekleri
Setup535.zip
(543.49 KiB) 134 kere indirildi
quaint
Genel Yetkili Adayı
Mesajlar: 188
Kayıt: 11 Tem 2009 19:46
İletişim:

başka bir simulator

Mesaj gönderen quaint »

başka bir simulatör daha
Dosya ekleri
setup.rar
(739.43 KiB) 138 kere indirildi
Cevapla

“mcs51(8051)” sayfasına dön