Intel 8051

Intel 8051 veya 8051 bir olan mikrodenetleyici tarafından geliştirilen (MC) Intel içinde 1980 gömülü ürünlerde kullanılmak üzere. Hala popüler bir mimaridir ; birçok yeni mikro denetleyici, aynı yonga üzerine entegre edilmiş bir dizi çevresel devre ve daha büyük kapasiteli belleklerle desteklenen bir 8051 çekirdeği içerir.

Bir mikroişlemci (MP) sisteminin yapısı aşağıdaki şekilde gösterilmektedir.

Bir mikro denetleyici (MC), bu farklı elektronik işlevleri tek bir çipte birleştirir. Aşağıdaki paragraflarda, 8051 mikro denetleyicisinin ana parçalarını açıklayacağız 8051, 8 bitlik verileri işlediği için 8 bitlik bir MC'dir; bu nedenle veri yolunun 8 hattı vardır; Çoğu 8-bit MC gibi, 8051, 16-bit adresleri yönetir, bu da 2 16  baytlık veya 64 kiB'lik bir adreslenebilir alan verir .

Merkezi birimin yapısı

Merkezi birim, MC'nin kalbidir. Programın talimatlarının yürütülmesinden sorumludur. 3 bölüme ayırabiliriz: veri işleme, adres yönetimi, talimat işleme.

Veri işleme

Bu bölümde 3 yazmaç ve bir aritmetik ve mantık birimi (ALU) vardır. 8051 talimatları, bir seferde 1 veya 2 8 bitlik veri üzerinde işlem yapmanıza izin verir, artık yok. İşlem şu şekildedir: 8 bitlik kayıtlar TMP1 ve TMP2, işlenecek verileri UAL'ye sunar. İşlemden sonra sonuç akümülatöre (Acc) yerleştirilir. Bir belleğe (RAM veya çalışma kaydı) veya bir çıkış portuna gönderilen yeni bir hesaplama için kullanılabilir.

ALU aşağıdaki devrelerden oluşur:

Durum göstergeleri adı verilen bir dizi flip-flop, aritmetik işlemler sırasında otomatik olarak konumlandırılır. Bu bayrakların durumu, koşullu şube talimatları ile test edilebilir.

8051, 8 kayıttan oluşan 4 grup halinde düzenlenmiş 32 çalışma kaydına sahiptir. Bu kayıtlar, kısa süre sonra ihtiyaç duyulduğu bilinen bilgilerin geçici olarak yerleştirildiği geçici anılar oluşturur. Çalışma yazmaçlarının avantajı, erişim süresinin RAM'de okuma veya yazma için olduğundan daha kısa olması ve bunlara erişmek için gereken talimatların daha kısa olmasıdır.

Adres yönetimi

Bir 8051'in hafıza alanı çok farklı 3 bölüme ayrılmıştır:

Bu nedenle 8051, doğal olarak adres yönetimine adanmış üç kayda sahiptir.

İşleme Talimatları

Talimatlar 1 ila 3 bayt uzunluğundadır. İşlem kodu olarak adlandırılan ilk bayt, hangi talimat olduğunu belirtir. Bazı talimatlar veri (8 bit) veya sınırlı bir adres (8 bit) veya hatta mutlak bir adres (16 bit) gerektirir.

İşletim kodu, bu amaç için sağlanan talimat kaydına yerleştirilir. Talimat tipini belirleyen ve gerekirse ad hoc kayıtlara (veri veya adres) yerleştirilecek 1 veya 2 ek baytı okuyan bir kod çözücüye sunulur .

Komut işleme bloğu bir saat tarafından kontrol edilir; 8051, salınım frekansını belirleyen bileşenler dışında saatin tüm unsurlarını içerir: genellikle bir kuvars, ancak frekansın kesin bilgisi gerekmiyorsa bir RC devresi de kullanılabilir. Blok, hem MC'nin diğer blokları hem de herhangi bir harici devre (harici bellekler, vb.) İçin kontrol sinyalleri (okuma, yazma) üretir.

Külot

Not: Çalışma kayıtları olarak veya Boole değişkenleri için kullanılmayan baytlar, geleneksel RAM olarak kullanılabilir.

MC kullanan sistemlerde eğilim, tüm programı ve tüm verileri depolamak için yeterli ROM ve RAM'e sahip bir bileşen seçmektir. Bununla birlikte, gerekirse, MC'ye harici bellekler eklenebilir. MC daha sonra bir mikroişlemci gibi davranır. Normalde giriş / çıkış bağlantı noktaları olarak kullanılan hatlar adres ve veri yollarına dönüştürülür. Bu tür bir uygulamada, genellikle 8031 ​​gibi dahili ROM'u olmayan MC'leri seçeceğiz.

Adresleme modları

8051, 6 adresleme modunu kabul eder:

Talimat seti

Bu bölümde, Intel yapıcı sözdizimini kullanarak 8051 komut kümesine genel bir bakış sunuyoruz:

Transfer talimatları

Kaynak ve hedef adresleri Acc, bir çalışma yazmacı, bir dahili veya harici RAM yuvası, bir G / Ç bağlantı noktası olabilir; ROM yalnızca kaynak olarak kullanılabilir.

Komutların yapısı şu şekildedir : MOV hedefi, kaynak baytı kaynak adresinden hedef adrese kopyalar

Komutların yapısı şu şekildedir : MOVX hedefi, kaynak

Aritmetik Talimatlar

Genel olarak konuşursak, iki başlangıç ​​verisinden birini ve aynı zamanda komutun yürütülmesinden sonraki işlemin sonucunu saklamak için Acc'yi kullanırlar. Durum göstergeleri işlemin sonucuna göre otomatik olarak konumlandırılır:

Örnekler

Mantık Talimatları

Mantıksal işlemler aynı ağırlıktaki bitler arasında gerçekleştirilir, farklı ağırlıktaki bitler arasında etkileşim yoktur ve durum göstergeleri değiştirilmez. AND, OR ve XOU işlemlerinin yanı sıra ters çevirme de mevcuttur; NAND, NON-OR, NON-XOU için iki aşamada hareket etmek gerekir: önce doğrudan işlem, sonra tüm bitleri ters çevirin.

Örnekler

CLR A: Acc'yi 0'a ayarlar

Boole talimatları

Bu, verileri bayt bazında işleyen mikro işlemcilere kıyasla bir yeniliktir. 8051, Boole değişkenleri olarak da bilinen 1 bitlik veriler üzerinde çalışan tam bir işlemci içerir. Öyle Carry bu operasyonlar için Acc rol oynamaktadır.

8051'in dahili RAM'i, ayrı ayrı adreslenebilen 128 yuva içerir. SFR'lerin belirli sayıda biti, özellikle çıkış portlarına karşılık gelen bitler de ayrı ayrı adreslenebilir.

Bağlantı talimatları

Dallanma talimatlarının bir programın normal yürütme sırasını bozmak için kullanıldığını unutmayın. Biz ayırt ediyoruz:

Not: 8051'de yalnızca atlamalar koşullu olabilir.

G / Ç Bağlantı Noktaları

G / Ç portları mikroişlemci veya mikrodenetleyici sistemler dış dünya ile iletişim kurmasına izin: bilgilerinizi aldıktan hangi işleme koyar ve kontrol çevre birimleri: gösterge ışıkları, motorlar, röleler, D / A dönüştürücüler, vb

8051 ailesi, az ROM ve RAM gerektiren uygulamalar için tasarlanmıştır. Yani 8051'in kendisi 4KB ROM'a ve yalnızca 128 bayt RAM'e sahip; ve ayrıca RAM'in çalışma yazmaçları, yığın ve bit ile adreslenebilen 16 bayt (20h'den 2Fh'ye) tarafından kullanıldığını hesaba katmak gerekir.

Uygulama bu bellek boyutlarından memnun olduğunda, 8 hattan oluşan 4 bağlantı noktasında düzenlenmiş 32 G / Ç hattı mevcuttur; adresler aşağıdaki gibidir: port 0: 80h; bağlantı noktası 1: 90h; bağlantı noktası 2; A0h; bağlantı noktası 3: B0h. Farklı hatlarla ilişkili iç devreler biraz farklıdır. Bağlantı noktası 1 örneğini ele alalım.

Bir satırı çıkış satırı olarak kullanmak için, istenen biti D flip-flopuna yazıyoruz Q / çıkış (Q'nun tersi) zenginleştirme mosfetinin kapısını sürüyor. Q, 0, Q / 1 ise, mosfet iletilir ve çıkış hattı 0'a çekilir. Q 1 ise, Q / 0 ise, mosfet bloke edilir ve çıkış hattı, yukarı çekme direnci tarafından Vcc'ye çekilir. .

Satırı giriş satırında kullanmak için, rocker D'ye bir 1 yazmak gerekir (bu, açılışta varsayılan olarak durumun yanındadır). Dış devre hattı 0'a çekebilir; hat durumu, bir port okuması alındığında dahili veri yolunda görünür.

Sistem daha büyük bir bellek boyutu gerektirdiğinde, iki çözüm:

Harici bellek kasaları kullanırken:

Bağlantı noktalarını yönetebileceğimizi unutmayın:

Ayrıca bağlantı noktası 3'ün bazı hatlarının ikili bir işleve sahip olduğuna dikkat edin, çünkü bunlar kesme istek hatları olarak (aşağıya bakın), sayaçlara girişler olarak (aşağıya bakın), seri bağlantı noktasının girişi ve çıkışı olarak (aşağıya bakın) ve harici RAM kullanıldığında kontrol veriyolunun Okuma ve Yazma satırları.

Kesintiler

Bir çevre birimi (klavye, A / D dönüştürücü, seri bağlantı noktası vb.) MC'ye bilgi iletmek istediğinde, şunları yapabilir:

Söz konusu çevre birimi MC'nin dışında olduğunda, kesme talebi hat (lar) ını bağlamak için pinler sağlanmalıdır.

8051, 5 kesme kaynağına sahiptir:

Her kesinti, IE kaydının uygun biti ( Kesme Etkin ) 1 veya 0 olarak ayarlanarak maskelenebilir veya maskelenebilir . Maskelenmiş bir kesinti hesaba katılmaz. IE'nin 7. bitini kullanarak tüm kesintileri maskelemek de mümkündür.

IP kaydında ( Kesme Önceliği ) uygun bit ayarlanarak her kesme türüne düşük veya yüksek öncelik atanabilir . Yüksek öncelikli bir kesme, düşük öncelikli bir kesmeyi ele almak için rutini kesintiye uğratabilir. MC eşzamanlı olarak (yani aynı makine döngüsü sırasında) aynı öncelik düzeyine sahip iki kesme isteği aldığında, bunlar şu sırayla işlenir: Int0, C / T0, Int1, C / T1, seri bağlantı noktası.

Bir kesme isteği kabul edildiğinde, MC aşağıdaki adreslerden birine bağlantı kurar: Int0 için 0003h, C / T1 için 000Bh, Int1 için 0013h, C / T1 için 001Bh ve seri port için 0023h. Genel olarak, kesmeyi işlemek için bu adreslere bir alt rutin çağrı talimatı yerleştirilir; alt yordamın sonunda, yığında otomatik olarak depolanan başlangıç ​​adresine dönersiniz.

Her kesme rutini tipik olarak aşağıdaki bölümlere sahiptir:

8051, 8 iş yazmacının 4 bloğuna sahip olduğundan, iş kayıtlarını kaydetmenin hızlı ve zarif bir yolu, aktif bloğu basitçe değiştirmektir (bu, durum yazmacının, SR'nin, Durum Kaydının 3. ve 4. bitleri tarafından belirlenir )

Güç verildiğinde, IE ve IP kayıtları 0 olarak başlatılır. Bu nedenle, programcı hangi kesinti kaynaklarını yetkilendirmek istediğini ve öncelik seviyelerini belirtmelidir. Seçenekler program sırasında değiştirilebilir.

Sayaçlar / Zamanlayıcılar

8051'de iki sayaç / zamanlayıcı vardır. Bu cihazlar, kullanılabildikleri için adlandırılır:

Her C / T'nin iki adet 8 bitlik ikili sayacı vardır. Farklı çalışma modları mümkündür: en çok kullanılanlar:

Her bir sayaca uygulamak için (uygun Tcon bitlerini) seçebiliriz:

Sayaçların çalışması şu şekilde kontrol edilir:

Seri port

Belirli uygulamalar için (uzaktan veri aktarımı, modem kontrolü, vb.), Paralel G / Ç bağlantı noktalarına ek olarak bir seri veya seri giriş / çıkış bağlantı noktasına ( Seri Giriş / Çıkış Bağlantı Noktası ) sahip olmak yararlıdır .

Seri bağlantı prensibi çok basittir: 8 hat üzerinde aynı anda 8 biti paralel olarak göndermek yerine, 8 bit tek bir hatta birbiri ardına gönderilir.

8051, veri göndermek için bir hat, TxD ve veri almak için bir hat, RxD kullanan çift yönlü bir seri bağlantı noktasına sahiptir.

Birkaç çalışma modu mümkündür. En yaygın kullanılan mod, bit hızını ( baud hızı ) ayarlamak için otomatik yeniden yükleme modunda zamanlayıcı 1'i kullanır . Standart hızlar 300  bit / s ile 19.200  bit / s arasındadır .

Bir karakter göndermek için, onu gönderen yazmacı Sbuf'a yazmak yeterlidir; bu otomatik olarak karakteri gönderme prosedürünü başlatır:

Bir karakter alındığında, prosedür RxD piminde düşen bir kenarın tespit edilmesiyle başlatılır. 8 veya 9 bit, alım yazmacı Sbuf'a yerleştirilir (garip bir şekilde, aynı isim ve aynı adres, 99h, iki Sbuf kaydı için kullanılır; bu adrese yazarken, bayt, d yazıcısında saklanır (emisyon, okuduğumuzda, alım kaydının içeriğidir). Tüm bitler mevcut olduğunda, bir kesme isteği tetiklenir. MC, bir sonraki baytın alımının bitiminden önce alınan baytı okumalıdır, aksi takdirde ilki kaybolur.

Verici ve alıcı aynı anda çalışabilir. Kesme istekleri birleştirilir. Bu nedenle, eşzamanlı olarak bayt gönderip alırken, işlemci her kesme isteği sırasında göndericiden mi yoksa alıcıdan mı geldiğini belirlemelidir. Bu, Scon kaydının ( Seri Port Kontrol Kaydı ) TI ve RI bitlerini okuyarak yapılır .

Programlama

Ek olarak montaj , kullanmak mümkündür derleyiciler için yüksek seviyeli diller .

Tüketimin azaltılması

Çoğu uygulama, MC'nin kalıcı olarak aktif olmasını gerektirmez. Örneğin, bir veri toplama sistemi, enerji tasarrufu sağlamak için veri okumalarını aldığı zamanlar arasında "uykuda" olabilir; bu özellikle ekipman pille çalıştığı zaman ilginçtir.

NMOS teknolojisindeki 8051'de yalnızca bir enerji tasarrufu modu, Boşta modu vardı . Bu modda, saat artık mikroişlemciye uygulanmaz ve bu nedenle artık talimatları yürütmez; iç kayıtlar bilgilerini saklar; seri bağlantı noktası, kesinti yönetimi ve sayaçlar / zamanlayıcılar normal şekilde çalışıyor. Bekleme moduna, Pcon kaydının ( Güç Durumu ) IDL biti 1'e ayarlanarak girilir . MC , bir kesinti veya harici sıfırlama durumunda Bekleme modundan çıkar .

Günümüzde en yaygın olan CMOS teknolojisindeki 8051, Bekleme moduna ek olarak bir Güç Kapatma moduna sahiptir . Burada, bloke edilen saat sinyalini üreten osilatördür. Tüm işlevler engellenmiştir. Elektrik kesintisinin farkı, tüm yazmaçların bilgilerini, özellikle de yazmaçlara bağlı G / Ç bağlantı noktalarını korumalarıdır. Güç Kapatma moduna, Pcon kaydının PD biti 1 olarak ayarlanarak girilir . Güç Kapatma modundan çıkmanın tek yolu , program işaretçisini de sıfırlayan harici bir sıfırlamadır. Bu nedenle programı 0000h adresinde yeniden başlatıyoruz ve SFR'ler (bağlantı noktası kayıtları dahil) sıfırlanıyor.

8051 ailesi

8051 ailesi, biraz "egzotik" talimat setine rağmen dikkate değer bir başarı elde etti. Bu nedenle, Intel'in önce ve sonra diğer birçok üreticinin 8051 mimarisine dayalı ancak çeşitli iyileştirmelerle MC'ler geliştirmesi çok doğaldır: silinebilir ve yeniden programlanabilir program belleği (8751), üçüncü sayaç / zamanlayıcı (8052), daha büyük ROM ve RAM kapasiteleri , daha fazla G / Ç bağlantı noktası, entegre A / D ve D / A dönüştürücüleri, ek C / T (80251'de toplam 9 adet) ...

8052

8052, 8051'in yükseltilmiş bir sürümüdür, 8032, dahili ROM'u olmayan bir 8051 olan 8031'in yükseltilmiş bir sürümüdür.

Yapılan ana iyileştirmeler şunlardır:

- Yakalama modu: sayaç, harici bir girişten veya dahili bir frekans bölücüsünden gelen darbeleri sayar; T2EX pinine uygulanan bir darbe, bu darbe anında sayacın durumunu iki SFR'ye (RCAP2H ve RCAP2L) kopyalar; bir kesme isteği üretilir; sayaç normal şekilde saymaya devam eder.

- Otomatik yeniden yükleme modu: SFR RCAP2H ve RCAP2L içeriği, sayaç kapasitesini aştığında veya pin T2EX'e harici bir darbe uygulandığında otomatik olarak sayaca kopyalanır.

- İletim saati modu: Bu mod, seri arayüzün oluşturulmasını kolaylaştırmayı amaçlamaktadır.

8052 Temel

Bu, 8052'nin özel bir versiyonudur. Dahili 8KB ROM hafızası, bir Basic yorumlayıcı tarafından kullanılmaktadır. Bu nedenle, 8052'nin bir terminali ve seri arayüzünü kullanarak, terminalden 8052'ye Temel dilde komutlar göndererek etkileşimli modda çalışmak mümkündür.

Temel 8052:

Dış bağlantılar