8051 MİKROKONTROLÖR AİLESİ
Mikroişlemciler Mikroişlemciler, sayısal bilgileri adres ve veri yolu ile alan, bu bilgileri bir hafıza biriminde saklanmış program komutlarına uygun olarak işleyen ve elde edilen sonuçları sayısal çıktıya dönüştüren mantık devreleridir. Bir mikroişlemcinin iç yapısı 4 bölümden oluşmaktadır. Bu bölümler; Kontrol birimi, Genel Amaçlı Registerlar, Özel Amaçlı Registerlar, Aritmetik ve Lojik Birimdir (ALU).
Mikrodenetleyiciler Mikrodenetleyici,mikroişlemci ve mikroişlemciye bağlı bütün birimlerin üzerinde bulunduğu tek yongaya denir. Bir mikrodenetleyici yongasında bulunan hafıza, giriş/çıkış ve diğer donanım alt sistemleri bu işlemcinin bir çok uygulama içinde gömülü (embedded) olarak ve tek başına, bir mikroişlemciye göre çok daha basit ve ucuz ara birim teknikleriyle, kontrol amaçlı olarak kullanımını sağlar. Bir mikrodenetleyici kullanıldığı sistemin bir çok özelliğini aynı anda izleme (monitoring) ihtiyaç anında gerçek-zamanda cevap verme (real time responding), ki bu mikrodenetleyicinin işaretleri hazır olduğu anda alıp ortamı bekletmeden işleyebilmesi demektir ve sistemi denetlemekten (control) sorumludur.
Mikroişlemci ve Mikrodenetleyici Arasındaki Farklar Mikroişlemci ve Mikrodenetleyiciler arasındaki en temel fark, mikrodenetleyici program değişikliği olmayan sabit bir programın sürekli çalışması gereken durumlarda kullanılır. Mikroişlemci ise geniş kapsamlı ve duyarlı işlemler yapmak için seçilen bir sistemdir. Diğer bir fark ise mikrodenetleyicilerde bütün birimlerin (CPU,RAM,ROM,Portlar...) tek yonga üzerinde bulunması ve mikroişlemcilere göre daha az yer kaplayarak dolayısıyla daha az maliyetlerde çalışabilmesidir.
Hafıza Türleri ROM (Read Only Memory) pROM (Programable Read Only Memory) EpROM (Erasable Programable Read Only Memory) EEpROM (Electrically Erasable Programable Read Only Memory) RAM (Random Acces Memory) FLASH ROM: Bu hafıza türüne bilgi yazılması belleğin üretimi sırasında gerçekleşmektedir. “Factory Mask ROM” olarak da adlandırılır. Ancak hafıza içindeki bilgilerin silinmesi ve hafızanın yeniden programlanabilmesi mümkün değildir. Bu da kullanımını kısıtlamaktadır. Eski bir modeldir. Günümüzde tercih edilmemektedir. PROM: Üretildikleri an bütün gözeleri lojik 0 veya 1 yüklü hafızalardır. Her hafıza gözü içinde bir sigorta bulunmaktadır. Sigortalar özel bir yöntem ve aygıt aracılığı ile attırılabilir.Bir gözün sigortasını atmış olması, o gözün lojik konumunun değişmiş olması demektir. OTPROM (One Time Programmable ROM – Bir Defa Programlanabilen Salt Okunur Hafıza olarak da adlandırılır.) Hafıza birimi üretim aşamasında değil daha sonra programlanabilir. Ancak bu tip hafızada da tekrar programlanabilme özelliği yoktur. Sadece bir defa programlanabilir. EPROM: EPROMlar üretildiğinde tüm hafıza gözeleri lojik 1 konumundadır.Lojik 1 konumunda olan gözelerden istenenler, özel yöntemler ve aygıtlarla sıfır konumuna getirilebilir.Mor ötesi ışığın, yarı iletken üzerine düşürülmesi ve belli bir süre tutulması sonunda,tüm gözler lojik 1 konumuna gelir.Bu amaçla EPROM un gövdesi üzerinde bir pencere bulunmaktır. Aydınlatmanın tek bir göze yapılamaması nedeniyle, tek bir göz veya gözenin lojik “1” konumuna getirilmesi olanağını yoktur,ancak tüm hafıza silinebilir. EEPROM: Silinebilir ve programlanabilir hafızaların en gelişmiş olanı elektriksel olarak silinebilen salt okunur hafızalardır. Bu hafıza birimlerinde, hafıza gözlerine istenen bir değer kaydedilebilir ve kaydedilen bilgi yeni bir yazmaya kadar kalır. RAM: Bilgisayar içindeki kullanıcı programının yazılacağı veya verilerin yazılacağı hafıza türü oku/yaz hafızadır. FLASH: EEPROM’ da byte byte (2 byte-4 byte) bloklara yazılırken, FLASH’ da blok boyutu değişken ve daha büyük olabilir. Örneğin birkaç Kbyte’ dan birkaç 10 Kbyte’ a kadar. EEPROM’ da 1 byte programlaması için gerekli süre örneğin 1ms iken FLASH’ da 32 Kbyte için gereken süre 10ms’ dir.
8051 MİMARİSİ • Kontrol uygulamaları için optimize edilmiş 8 bitlik CPU • Genişletilmiş Boolean işleme komutları ( tek bitlik lojik komutlar ) • On-chip program hafızası ( Program ROM ) • On-chip veri hafızası ( Data RAM ) • 4 adet 8 bitlik I/O portu • Çift yönlü kullanılabilen ve tek tek adreslenebilen I/O pinleri • 2 kanal 16 bitlik Timer/Counter ( 8052 de 3 kanal ) • Full Duplex UART ( Seri haberleşme kanalı ) • Çok kaynaklı / vektörlü / öncelik seviyeli kesme yapısı ( Interrupts ) • On-chip saat osilatörü
Temel Mimari Yapısı
Bacak Konfigürasyonu
Bacak Konfigürasyonu
Bacak Konfigürasyonu
Bacak Konfigürasyonu
Hafıza Yapısı
Program Hafızası Şekilde program hafızasının düşük değerlikli kısmının haritası gösterilmektedir. Reset işleminden sonra CPU, 0000H adresinden komut yürütme işlemine başlar. Şekilde görüldüğü gibi her kesme program belleğindeki uygun bir yere atanır. Bu kesmeler, CPU’nun servis rutininin başladığı yere atlamasına sebep olur. Örneğin, harici kesme-0 (EXT-0) 0003H adresine atansın, eğer kullanılacaksa servis rutini, 0003H adresinden başlamak zorundadır. Eğer kesme kullanılmayacaksa kesmenin servis rutini program belleğinin genel amaçları için uygundur.
Program Hafızası Harici Program uygulaması için donanım konfigürasyonu Unutulmaması gereken şey; 16 I/0 hattı (Port0-2) harici program belleği uygulamalarında BUS fonksiyonları olarak kullanılır. Port0 adres ve veri yolu (Address/Data BUS) gibi işlemlerde hizmet verir. Port2’yi otomatik olarak adres bilgisinin üst 8 biti (MSB) ile yüklenir. Program çevriminin ilk yarısında Port0 adres bilgisinin alt 8 biti (LSB) ile yüklenir ve ALE (Address Latch Enable) sinyalinin sıfıra düşmeşi ile tutucu (latch) tarafından tutularak adres yolunda 16 bitlik adres bilgisi elde edilmiş olur. Adres bilgisinin elde edilmesi ile CS sinyali oluşur. PSEN’ sinyalinin sıfıra düşmesinde belirli bir süre sonra veri yoluna şeçilmiş olan bilgi çıkmış olur. Çıkan bu bilgi bu komutun OP-CODE bilgisidir. Program hafıza adresleri her zaman 16 bit genişliğindedir. Buna rağmen program belleğin kullanılan gerçek miktarı 64 KByte’dan daha az olabilir. Harici Program uygulamalarında 8 bit portların ikisi olan P0 ve P2 program belleğinin adreslerinde kullanılır.
Program Hafızası Mikrodenetleyici sisteminde program belleğinin kullanılmasında temel unsurları özetlersek; EA: Program belleğinin nereden başlayacağını seçen bacaktır. Eğer Logic 1 olursa program belleği iç ROM’dan başlayacak ve 64kByte’lık harici hafızadan devam edecektir. PSEN: Bu sinyal mikrodenetleyicinin 29 nolu bacağından çıkar ve harici hafıza elemanı ile belirtilen adresteki bilginin veri yoluna çıkmasına izin verir. Veri Yolu: Bilginin iletildiği yoldur. Adres Yolu: Bilginin hafızadaki yerini gösteren veridir. ALE: Mikrodenetleyici sistemi çevre birimlerle haberleşirken Port 0 hem veri yolu için hem de adres bilgisinin alt 8 biti (LSB) için kullanılır. ALE sinyali bu işlem için gerekli olan zamanlamayı yapar. ALE sinyali ile Port0 üzerinden gönderilen veri bilgisi latchlenir, bu sayede Port 0 zaman paylaşımı olarak hem adres bilgisinin alt 8 biti, hem de 8 bit veri için kullanılır.
Veri Hafızası Harici Veri Belleğine Ulaşım Şekilde harici RAM’in 2KByte’a kadar olan erişimi için donanım konfigirasyonunu göstermektedir. Port0 çoklu adres/veri yolu (Address/data BUS) şeklinde RAM’e hizmet verir. Ayrıca Port2’nini üç hattı RAM’e ulaşmak için kullanılır. CPU, RD’ ve WR’ sinyallerini harici RAM’ e geçişleri boyunca üretir. Harici Veri Belleği 64Kbyte’a kadar arttırılabilir. Harici veri belleği adresleri bir ya da iki byte genişliğinde olabilir. Bir bytelık adresler sıklıkla RAM’ e ulaşmak için bir ya da daha fazla I/0 hattıyla beraber kullanılır. İki bytelık adresler de Port2’den çıkarılan yüksek adresli byteları kullanabilirler. Harici veri hafızası, program ve iç veri belleğinden tümüyle ayrı bir bölgedir ve kendine özgü komutları bulunmaktadır. Program belleği gibi Port0 ve Port2 üzerinden 64KByte’ a kadar genişletilebilir.Yalnızca Port0 kullanılarak 256 byte’lık belleğe ulaşılabilir. Harici veri hafızasına yalnız 2 komut ile erişilebilir. MOVX A,@DPTR veya MOVX @DPTR,A Bu işlem iki aşamada yapılır: a-) Port2 otomatik olarak DPTR’nin üst sekiz biti (DPH) ile yüklenir b-) Port0 harici hafızaya erişim çevriminin ilk bölümünde DPTR’ nin alt sekiz biti (DPL) dışarı çıkarır. ALE sinyalinin düşen kenarı ile DPL, tutucunun (latch) çıkışında tutulmuş olur. Bundan sonra harici belleğe ulaşıncaya kadar ALE lojik bir olmayacaktır. Bu andan sonra okuma/yazma işlemi yürütülür. Kullanılan komut MOVX A,@DPTR ise harici hafızadan okuma yapılacağı için RD’ çıkışı 0 olur. Böylece Port0 vasıtasıyla DPTR’ nin gösterdiği bilgi A’ ya aktarılır. Eğer MOVX @DPTR,A komutu kullanılırsa harici belleğe yazma olayı yapılacağından WR’ çıkışı lojik ‘0’ olacaktır.
Veri Hafızası Dahili veri belleği Hafıza Alanı üç bloğa bölünmüştür. Bunlar düşük 128, yüksek 128 ve SFR (Special Function Register) alanlarında oluşur. Dahili veri belleği adresleri her zaman bir byte genişliğindedir ve sadece 256 byte’lık adres alanını gösterir. Bununla beraber, dahili veri hafızasına yönelik adresleme modundaki basit bir yöntem ile 384 byte veri adreslenebilir. Veri hafızaya erişimlerde 7FH’den yüksek doğrudan (direct) adresler, bir hafıza alanına erişip 7FH’den yukarı dolaylı (indirect) adresler farklı hafıza alanına erişir. Şekilde görülen yüksek 128 ve SFR alanları 80H ile FFH arasındaki adres bloklarında yer almasına karşı fiziksel olarak iki ayrı bölgedir.
Alt Ram Bölgesi Dahili veri belleğinin düşük 128 byte’ı En düşük 32 byte’lık alanda tanımlanan 4 bank’ dan her birinde 8 adet genel amaçlı register bulunmaktadır. Program komutlarıyla R0’ dan R7’ ye kadar olan registerlar çağrılır. Program Status Word (PSW) daki iki bit ( RS0 ve RS1) hangi bankı kullanılacağını seçer. Register komutları direk adreslemede kullanılan komutlardan daha kısa olduğundan dolayı bu olay daha verimli kod alanı kullanımına izin vermiştir. Register banklarının üzerindeki 16 byte bit adreslenebilir alanı (Bit Addressable Space) bloğu şeklinde biçimlendirilir. 8051 komut düzeni, bit-bit işlem yapabilen özel bit komutlarıyla büyük kullanım kolaylığı sağlar. Bu alandaki 128 bıt bu komutlar ile direk adreslenebilir. Bu alandaki bit adresleri 00H’ den 07H’ e kadardır. Düşük 128’ de bulunan bütün bytelara doğrudan ya da dolaylı adresleme ile erişilebilir. Yüksek 128’ e ise sadece dolaylı adresleme ile ulaşılabilir. Şekilde görüldüğü gibi bit-bit adreslenebilen bölge iki kısma ayrılmıştır. İlk kısım iç RAM’ın 20H adresinden başlayıp 2FH adresine kadar olan bölgedir. Bu bölgeye hem 8 bit normal adresleme yoluyla erişilebildiği gibi aynı zamanda da bit-bit adresleme yoluyla da erişilebilir.
Alt Ram Bölgesi
Alt Ram Bölgesi Bit-bit adreslenebilen bu bölgenin 00H adresi iç RAM’ in 20H adresinin 0. bitine karşılık gelmekte ve en son 7FH adresi ile RAM’ ın 2FH adresinin 7. bitine karşılık gelmektedir. Örneğin; MOV A,#5AH ; A register’ına 5AH bilgisi atanır. MOV 24H,A ; 5AH bilgisi 24H adresine A üzerinden aktarmış oluyoruz. MOV C,24H.4 ;Bu satırda 24H adresinin 4. biti bir bitlik Carry bitine atanmış oldu. Bu işlem sonucunda C biti 1 ile yüklenmiştir.
Özel Fonksiyon Registerleri (SFR) 8051 mikrodenetleyicisi, pek çok çalışma moduna sahip olan esnek bir entegredir. Programların çalışma modunu değiştirmek için özel fonksiyon registerleri değerleri okunabilir veya değiştirilebilir. Özel fonksiyon registerlerine ulaşmak aynen normal RAM data gözlerine ulaşmak gibidir. İç genel hafıza RAM 00h adresinden 7Fh adresine kadar uzanırken, özel fonksiyon registerleri 80h adresinden FFh adresine kadar uzanır. Bir önceki sayfadaki tablo özel fonksiyon registerlerinin isimlerini ve adreslerini vermektedir. Tabloda görülebileceği gibi, 80h adresinden FFh adresine kadar 128 veri gözü bulunduğu halde, standart 8051 entegresinde bu alanların yalnızca 21 tanesi özel fonksiyon registeri olarak kullanılmıştır. Kullanılmayan bu adreslere yazmak veya okumak beklenmedik program hatalarına sebep olabilir.
Akümülatör (ACC veya A) 8051 ve türevlerinde bir çok lojik ve aritmetik işlem akümülatör üzerinden gerçekleşmektedir ve buna göre bazı komutlara sahiptir.Örneğin: ADD A,#16H Bu komut, işletildiğinde A nın içeriği ile 16H sayısı ile toplanarak A nın içerisine yazılır. 8051 ve türevleri bu tip birçok komuta sahiptir (MUL, DIV, SUBB, ADD, CJNE, ANL, ORL…v.b). Akümülatöre direkt olarak ulaşılabildiği gibi bit-bit de ulaşmak mümkündür. Örneğin; MOV C,ACC.3 Komutuyla işlem yapıldığında akümülatörün üçüncü bitindeki sayıyı C (carry biti) içerisine yükler (C bir bitlik bir registerdır). MOV SAYAC,A komutu icra edildiğinde A register ının içerisindeki tüm bilgi (8 bitin tümü) SAYAC olarak adlandırılmış değişkeninin içine yüklenir. Bu tarz mikrodenetleyicilerde genel amaçlı bir registerda bulunan veri üzerinde aritmetik veya lojik işlem yapılması durumunda bu registerdaki verinin, özel bir register olan ve genellikle A, veya ACC (accumulator) kısaltmasıyla belirlenen bir register a alınması gerekir. Aritmetik ve lojik işlemlerin sadece ACC de yapıldığı bu tür 8 bit mikroişlemciler genellikle ACC tabanlı olarak tanımlanırlar.
B Registeri (B) B registerı da A gibi bir register olup bir çok aritmetik işlem için kullanılmaktadır. Kullanım amacı DIV ve MUL komutlarında A registerının yanında ikinci carpan görevi yapmaktır. Ayrıca B genel amaçlı bir register olarak da kullanılır DIV AB komutu icra edildiğinde A nın içeriğini B içeriğine bölerek, bölüm sonucunu A’ nın içerisine, kalanı ise B nin içerisine yazmaktadır. MUL AB Komutunda ise sonuc iki byte (16 bit) olacağından yüksek byte B nin içerisine, düşük byte ise A nın içerisine yazılır.
Program Status Word (PSW) BİT 7: Cy, Elde bayrağı boolean işlemlerinde kullanılabilirken aritmetik işlemlerde de elde olarak kullanılabilir. BİT 6: Ac, Yardımcı elde bayrağı.Örnek ile açıklarsak 8 bitlik bir toplama işleminde düşük dört bitin toplamından sonra bir elde oluşursa Ac biti 1 lenir. BİT 5: F0, Genel amaçlı durum bayrağıdır. BİT 4, BİT 3: RS1, RS0, Register bankları seçici bitleri BİT 2: OV, Taşma bayrağı BİT 1: ---, Kullanılamayan bit BİT 0: P, Parity Bit Mikrodenetleyicinin SFR alanı içerisinde bulunur ve adresi 0D0H’ dir. Bir çalışma anında CPU’ nun durumunu gösteren çeşitli durum bitlerini (bayrakları-flags) içermektedir. Başka bir değişle PSW, CPU’ nun akım durumunu etkileyen durum bitlerini içerir. Bunlar: Carry Biti (elde biti), Auxiliary Carry bit (yardımcı elde biti), iki adet register bank seçme bitleri, bir adet overflow (taşma biti), bir adet parity biti, iki adet kullanıcı kontrollü durum bayrak bitleridir. Carry Biti Boolean işlemlerinde kullanılırken aritmetik işlemlerde de elde olarak kullanılır. C bayrağı sonuç FFH değerini aşarsa birlenir, aksi halde sıfırlanır. Bu bayrak ayrıca birçok boolean işleminde bir bit “ACC” olarak görev alır. 8051’ de dört adet register bank bulunmaktadır. Register banklar arası geçişler yazılım ile PSW içerisindeki RS0 ve RS1 bitleri seçimiyle gerçekleşir. Değişik komutlar bu RAM bölgesine, R0 ve R7 arasında belirtilen registerlar üzerinden erişmektedir. Dört register banktan yalnız biri bu bitlerin yürütme sırasındaki durumuna göre seçilir. Parity biti ACC (Akümülatör)’ deki birlerin sayısını yansıtır. Eğer ACC tek (Odd) sayıda birler içeriyorsa P=1 olur (Odd Parity). Eğer ACC çift (even) sayıda birler içeriyorsa, P=0 olur (Even Parity). Böylece ACC’ deki birler ile P’ nin toplamı her zaman çift olur. Overflow (OV biti) ise, işaretli sayıların toplandığında veya çıkartıldıklarında oluşan bir durumu yansıtır. Taşma, işlem sonucunu hedef register’a sığmadığını gösterir. Örneğin 8- bit register’larda işaretli sayı aritmetiğinde, 07FH (+127), 01H ile toplandığında sonuç 080H (-128) olur. Bu sonuç işaretli toplama için OV bayrağı ile belirtilen bir taşma durumudur ve bu sonucun pozitif bir sayı olarak yorumlanamıyacağını belirtir. İşaretsiz işlemler için OV bayrağının bir önemi yoktur, ihmal edilir. PSW’ deki son iki bit (F0 ve kullanıcı tarafından tanımlanabilen bayrak), bir işlem için atanmadığında genel amaçlı durum bayrakları olarak kullanılabilir. 8051 de 4 adet register bank bulunmaktadır; register banklar arası geçişler PSW içindeki RS0 ve RS1 bitleri ile yazılım sayesinde seçilir.
Stack Pointer (SP) Yığın, on-chip RAM’e yerleştirilmiştir. İnterrupt ve subroutine çağırılması esnasında Program Counter’i tutmak için kullanılan, son-giren ilk çıkar mantığı ile çalışan bir depolama mekanizmasıdır. Aynı zamanda POP ve PUSH komutlarını kullanarak veri (data) depo etmek ve tekrar çağırmak için (PSW) kullanılabilir.Yığın işaretçisi, yığının üstündeki adresi içerir.
Data Pointer (DPTR) DPTR registerinin yüksek değerlikli byte ı DPH (adresi 83H), düşük değerlikli byte ı ise DPL (adresi 82H) olarak adlandırılır. DPL ve DPH registerleri 16 bit bir adres oluşturmak üzere bir arada kullanılan özel fonksiyon registerleridir. Bu registerlar, 16 bitlik adres bilgisini içerir ve bu sayade harici veri hafızasına ulaşılır. Veri işaretleyici (Data Pointer), harici RAM hafıza ile veri alışverişinde ve harici kod hafıza ile ilgili bazı işlemlerde kullanılır. Bu register iki komutta harici belleğe ulaşımı sağlar. MOVX A,@DPTR komutu icra edildiğinde DPTR ile gösterilen adresteki bilgi tıpkı @R0 da olduğu gibi A’ nın içerisine indirect olarak aktarılır. MOVX @DPTR,A komutu icra edildiğinde A’nın içeriği DPTR ile gösterilen harici veri belleğinin adresine yazılır. Akümülator gibi DPTR’ de bit-bit adreslenebilir. MOV DPH.5, #1B
Power Control Register(PCON) BİT 7: SMOD, Asenkron seri haberleşmede Baudrate timer/counter ile elde edilir. SMOD 1 olduğu durumda boudrate iki katı hızına çıkar sistem resetlendiğinde SMOD 0 ile çalışmaya başlar. BİT 6, BİT 5, BİT 4: Kullanılmıyor. BİT 3 ve BİT 2: GF0 ve GF1, Genel amaçlı bayrak bitleridir. BİT 1: PD, CMOS entegrelerde, entegrenin güç tüketimini azaltmakta kullanılır. BİT 0: IDLE, CMOS entegrelerin güç tüketim kontrolü için kullanılan diğer bir bit.
Timer Control Register(TCON) Bit 7: TF1 (Timer-1 taşma bayrağı). Zamanlayıcı (Timer) taştığı anda bu bayrak 1 (SET) olur. Mikroişlemci ilgili kesme programına sıçradığı anda bu bayrak tekrar temizlenir. Eğer kesme programı yoksa bu bayrak program tarafından temizlenmelidir. Sayıcı FFFFH değerinden 0000H değerine atladığında bir taşma bayrağı oluşur. Bit 6: TR1 (Timer-1 çalışma kontrol biti). Timer-1’ i çalıştırma bitidir. Bu bit ‘1’ yapıldığında Timer-1 çalışmaya başlar. Bit 5: TF0 (Timer-0 taşma bayrağı). Timer taştığı anda bu bayrak SET olur. Mikroişlemci ilgili kesme programına sıçradığı anda bu bayrak tekrar temizlenir. Eğer kesme programı yoksa bu bayrak program tarafından temizlenmelidir. Sayıcı FFFFH değerinden 0000H değerine atladığında bir taşma bayrağı oluşur. Bit 4: TR0 (Timer-0 çalışma kontrol biti). Timer0’ ı çalıştırma bitidir. Bu bit ‘1’ yapıldığında Timer-0 saymaya başlar. Bit 3: IE1 (Harici kesme 1 kenar bayrağı). INT1 pininde yüksekten alçağa düşen bir sinyal görüldüğünde, program INT1 kesme adresi 0013h’e sıçrar. Bit 2: IT1 (Harici kesme 1 INT1 tip belirleme biti). Eğer sinyal yüksekten düşüğe geçtiğinde kesme aktiflenmesi isteniyorsa bu bit SET edilir. Bu bit 0 olduğunda pindeki 0 sinyali kesmeyi aktifler. Bit 1: IE0 (Harici kesme 0 kenar bayrağı). INT0 pininde yüksekten alçağa düşen bir sinyal görüldüğünde, program INT0 kesme adresi 0003h’e sıçrar. Bit 0: IT0 (Harici kesme 0 INT0 tip belirleme biti). Eğer sinyal yüksekten düşüğe geçtiğinde kesme aktiflenmesi isteniyorsa bu bit SET edilir. Bu bit 0 olduğunda pindeki 0 sinyali kesmeyi aktifler. Zamanlayıcı kontrolü registeri, standart 8051 entegresinde bulunan iki adet zamanlayıcının ayarlarının yapılmasında kullanılır. Bu register kullanılarak zamanlayıcılar (timerlar) çalıştırılabilir veya durdurulabilir. Bu registerde bulunan bitlerden birisi timerın taşma biti olarak kullanılmaktadır. Böylece her zamanlayıcı (timer) veya sayıcı (counter) taşmasında bu bit aktiflenmektedir. Bu özel fonksiyon registerinde bulunan bitlerden diğer birkaçı, timer ve counterın kesme üretmesi için programlanabilmektedir. TCON registeri bit adreslenebilir bir registerdir. Bu registerin bitleri timer/counterları kontrol etmekte kullanılır.
Interrupt Enable (IE) BİT 7 : EA, genel kesme izin biti.Herhangi bir kesmeyi aktif etmek için öncelikle bu bitin aktif edilip daha sonra istenilen kesmenin özel izin biti aktif edilmelidir. BİT 5 : ET2, sadece 8052’de bulunan Timer-2 aktif etme bitidir. BİT 4 : ES, seri port kapısının özel izin bitidir.Seri portun kesmesinin (interrupt ının) açılması için “1” yapılmalıdır. BİT 3: ET1, Timer-1’in kesmesinin özel izin bitidir. Timer-1 kesmesini aktif etmek için bu bit “1” yapılmalıdır. BİT 2: EX1, Harici kesme-1’in özel izin bitidir. Harici kesme -1’i aktif etmek için “1” yapılır. BİT 1 : ET0, Timer-1’in kesmesinin özel izin bitidir. Timer-0’in kesmesini aktif etmek için bu bit “1” yapılmalıdır. BİT 0 : EX0, Harici kesme-0’in özel izin bitidir. Harici kesme -0’i aktif etmek için “1” yapılır. IE özel fonksiyon registeri, kesmelerin aktiflenmesinde ve pasiflenmesinde kullanılan registerdir. Bit 0-1-2-3-4-5-6 , herhangi bir özel kesmeyi aktiflemekte veya pasiflemekte kullanılan bitlerdir. Bit 7 tüm kesmeleri aktiflemek ve pasiflemekte kullanılır. Bu bit pasiflendiğinde, herhangi bir özel kesmeyi aktifleyecek bit 1 olsa bile, kesme pasif kalır.
Interrupt Priority (IP) BİT 5: PT2, Timer-2 kesme önceliğini belirler. BİT 4: PS, seri portun kesme önceliğini belirler. BİT 3: PT1, Timer-1’in kesme önceliğini belirler. BİT 2: PX1, Harici Kesme-1’in önceliğini belirler. BİT 1: PT0, Timer-0 kesme önceliğini belirler. BİT 0: PX0, Harici Kesme-0’ın önceliğini belirler. IP özel fonksiyon registeri kesme önceliklerini tanımlamakta kullanılır. Birden çok kesme yaratan bir sistemde, aynı anda oluşan iki kesmeden hangisinin daha önce işleme sokulacağını belirlemek gereklidir. 8051 entegresinde bir kesme ya düşük önceliğe (0) yada yüksek önceliğe (1) sahip olarak tanımlanabilir. Örneğin birden fazla kesme kullanan bir sistemde, seri port kesmesini yüksek, diğer tüm kesmeleri düşük öncelikli olarak tanımladığımızı varsayalım. Bu durumda, her bir seri port kesmesi, kesme altprogramının çalışmasını sağlayacaktır. Seri port kesmesi sırasında, başka bir kesme aktif olsa bile önce seri port kesmesi programı tamamlanacaktır. Aşağıda IP registerinin bitleri görülmektedir. Herhangi bir kesmeyi öncelikli yapmak için o kesmenin bitini SET etmek yeterlidir. Örneğin seri port kesmesinin diğer kesmelerden daha öncelikli olmasını istiyorsak, SETB PS; komutunu vermek yeterlidir.
Portlar (P0, P1, P2, P3) Bu portlar giriş/çıkış portlarıdır. Bu özel fonksiyon veri gözündeki bitlerin herbiri 8051 entegresinin bacaklarından birisine karşılık gelmektedir. Örneğin port 1 registerinin 0 nolu biti, entegrenin P1.0 bacağına, 7 nolu bit P1.7 nolu bacağa karşılık gelmektedir. Entegredeki Port bacaklarından herhangi birisini 1 veya 0 yapmak için, Port registerınde, entegre bacağına karşılık gelen bit değeri 0 veya 1 yapılır. Dolayısıyla port pinleri bit adreslenebilir pinlerdir. Porttan okuma yapılabilmesi için önce okuma yapılacak bacağa karşılık gelen registere 1 yüklenmesi gerekir.
Port0 (P0) Port-0 normal port işlevinden başka,çevre birimler kullanıldığında adres bilgisinin alt 8-bitini(LSB) gönderme ve veri yolu için kullanılır. Bu sebepten dolayı port-0’ın yapısı diğerlerinden biraz daha karışıktır. Diğer portlardan farkı Pull-Up devresinin olmamasıdır. Bu nedenle Port-0 çıkışı TTL uyumlu değildir, bu portun TTL uyumlu olması için çıkışılarına dışarıda Pull-Up dirençleri bağlanması gerekmektedir.
Port1 (P1) Portlar vasıtasıyla dışarıdan bilgi okunurken dikkat edilmesi gereken nokta; okuma yapmadan önce, bu portun bir yapılmasıdır.Bunun nedeni; port, lojik “0” da bırakıldığında çıkış doğrudan toprağa bağlanmış olacağından dolayı gelen bilgi bozulacak ve doğru bir okuma yapılamayacaktır. Sistem resetlendiği anda tüm portların çıkışı lojik “1” olur.
Port2 (P2) PORT 2’nin normal bir giriş/çkış kapısı olmasından başka diğer bir görevi de; harici belleğe ulaşmada gerekli olan adres bilgisinin üst 8-bitini (MSB) taşımasıdır.Bu işlem bir anahtarlama düzeneği ile sağlanmaktadır. Bu sistem FET’lerden oluşturulmuştur.
Port3 (P3) Port3’ün, port2 gibi ikinci bir görevi daha vardır.Bu görevi ise,sistemin dış dünya ile haberleşmesi için gerekli olan kontrol uçlarının bu port üzerinde olmasıdır.Bu uçlar ve görevleri ise şunlardır: