MCS-51 mikrodenetleyiciler: yazılım modeli, yapı, komutlar. Mikrodenetleyiciler MCS-51. Blok diyagram, ALU, veri belleği Programlama mcs 51 mikrodenetleyici C'de

Mikrodenetleyicinin temeli (bkz. Şekil 1) 8-bit Aritmetik Mantık Birimidir (ALU). MK'nin hafızası Harvard mimarisine sahiptir, yani. mantıksal olarak bölünmüş: program belleğine - PP (dahili veya harici), 16 bitlik bir komut sayacı (SC) ve veri belleği tarafından adreslenir - dahili (Yerleşik veri belleği - RPD) 128 (veya 256) bayt ve ayrıca harici (Harici) veri belleği – VPD) 64 KB'ye kadar. Fiziksel olarak, program belleği ROM'da uygulanır (salt okunur) ve veri belleği RAM'de uygulanır (veriler yazılabilir ve okunabilir).

Harici sinyallerin alınması ve iletilmesi, 4 adet sekiz bitlik bağlantı noktası Р0..Р3 aracılığıyla gerçekleştirilir. Harici program belleğine (EPM) veya veri belleğine (VPD) erişirken, P0 ve P2 bağlantı noktaları çoğullanmış bir harici Adres/Veri yolu olarak kullanılır. P3 bağlantı noktası hatları da alternatif işlevleri yerine getirebilir (bkz. Tablo 1).

16 bit DPTR kaydı, Akümülatör dönüştürme talimatında VPD adresini veya Program Belleği temel adresini oluşturur. DPTR kaydı, işlenenleri depolamak için iki bağımsız 8 bitlik kayıt (DPL ve DPH) olarak da kullanılabilir.

8-bit dahili komut kaydı (RK) yürütülmekte olan komutun kodunu alır; bu kodun kodu, kontrol sinyalleri üreten kontrol devresi tarafından çözülür (bkz. Şekil 1).

Özel fonksiyon kayıtlarına erişim - RSF (SFR - Şekil 1'de noktalı bir çizgi ile daire içine alınmıştır) sadece 128 (80 saat) ve daha fazla adres aralığındaki doğrudan bayt adresleme kullanılarak mümkündür.


MCS-51 ailesinin ilk mikro denetleyici modellerinde yerleşik veri belleği (RDD) 128 bayt kapasiteye sahipti. RPD'nin alt 32 baytı da genel amaçlı kayıtlardır - RON (her biri 8 RON'luk 4 banka). Program, aktif bankanın 8 RON'undan birine başvurabilir. Aktif RON bankasının seçimi, işlemci durum kaydında - PSW'de iki bit programlanarak gerçekleştirilir.


Tablo 1 - MCS-51 pin ataması

Pin No. atama Amaç
1..8 P1 8 bit yarı çift yönlü G/Ç bağlantı noktası
9 RST

Sıfırlama sinyali (aktif seviye - yüksek);

RST sinyali sıfırlanır: PC ve çoğu Özel İşlev Kayıtları (SFR'ler), tüm kesmeleri ve zamanlayıcıları devre dışı bırakır; RON Sıra 0'ı seçer; P0_P3 portlarına "tümü" yazar ve onları giriş için hazırlar; yığın işaretçisine (SP) 07H kodunu yazar;

10..17

8 bit yarı çift yönlü G/Ç bağlantı noktası; karşılık gelen "1" bitine yazdıktan sonra - ek (alternatif) işlevleri gerçekleştirir:

Seri bağlantı noktası girişi - RxD;

Seri bağlantı noktası çıkışı - TxD;

Harici kesme girişi 0 - ~INT0;

Harici kesme girişi 1 - ~INT1;

Zamanlayıcı/sayaç girişi 0 - T0;

Zamanlayıcı/sayaç girişi 1 - T1;

Flaş çıkışı. VPD'ye yazarken sinyal - ~ WR;

Flaş çıkışı. VPD - ~ RD'den okurken sinyal;

18, 19 X1, X2 Bir kuvars rezonatör veya LC devresini bağlamak için sonuçlar;
20 GND Genel sonuç;
21..28 P2 8 bit yarı çift yönlü G/Ç bağlantı noktası; veya harici bellek modunda (VPP veya VPD) çıkış adresi A;
29 PME Yalnızca harici ROM'a erişirken verilen Harici Program Belleği okuma flaşı;
30 ALE Harici bellek adresi flaşı (VPP veya VPD);
31 EA RPP'yi devre dışı bırakarak, bu girişteki "0" seviyesi MK'yi bir dizi komuta değiştirir sadece pistten ;
39..32 P0 8 bit çift yönlü G/Ç bağlantı noktası; Harici Belleğe erişirken, A adreslerini (ALE sinyali tarafından harici bir kayıt defterine yazılır) verir ve ardından ~PME (komutlar için) veya ~WR,~RD (VPD'deki veriler için) sinyaliyle eşzamanlı olarak bir bayt alışverişi yapar. , Harici Belleğe erişirken tüm birimler port register P0'a yazılır, burada depolanan bilgiler yok edilir;
40 Ucc Besleme voltajı çıkışı

RON bankalarının değiştirilmesi, alt rutinlerin yürütülmesini ve kesintilerin ele alınmasını kolaylaştırır, çünkü. alt program çağrılırken ana programın RON'larının içeriklerinin yığına aktarılmasına gerek yoktur (alt programdaki başka bir aktif RON bankasına gitmek yeterlidir).

RPD'ye erişim, dolaylı veya doğrudan bayt adresleme kullanılarak mümkündür (doğrudan bayt adresleme, RPD'nin yalnızca ilk 128 baytına erişime izin verir).

Genişletilmiş RPD alanı (MCS-52 ailesinin mikro denetleyicileri ve sonraki aileleri için) adres 128'den (80h) 255'e (FFh) yalnızca dolaylı adresleme yöntemi kullanılarak adreslenebilir.

Tablo 2 - Özel Fonksiyonların Blok Kayıtları (s f r)

anımsatıcı kodu İsim
0E0h *ACC pil
0F0h *B Pil genişleticiyi kaydet
0D0h *PSW İşlemci Durum Kelimesi
0B0h * P3 bağlantı noktası 3
0A0h * P2 2. bağlantı noktası
90 saat *P1 1 numaralı bağlantı noktası
80h *P0 0 numaralı bağlantı noktası
0B8h * IP Kesinti Önceliği Kaydı
0A8h *İE Kesinti maskesi kaydı
99 saat SBUF Seri alıcı-verici arabelleği
98 saat * SCON Seri Port Kontrolü/Durum Kaydı
89 saat TMOD Zamanlayıcı/Sayaç Modu Kayıt
88h * TCON Zamanlayıcı/Sayaç Kontrolü/Durum Kaydı
8 Gün TH1 Zamanlayıcı 1 (yüksek bayt)
8bh TL1 Zamanlayıcı 1 (düşük bayt)
8 kanal TH0 Zamanlayıcı 0 (yüksek bayt)
8ah TL0 Zamanlayıcı 0 (düşük bayt)
83h DPH Veri İşaretçi Kaydı (DPTR) (yüksek bayt)
82 saat DPL Veri İşaretçi Kaydı (DPTR) (düşük bayt)
81 saat SP Yığın işaretçi kaydı
87 saat PCON Talep güç kontrol kaydı

2. YAZILIM MODELİ MCS–51


KOMUT TÜRLERİ MCS–51

Komutların neredeyse yarısı 1 makine döngüsünde (MC) yürütülür. 12 MHz'lik bir kristal osilatör frekansı ile, böyle bir komutun yürütme süresi 1 μs'dir. Kalan komutlar 2 makine döngüsünde yürütülür, yani. 2 ms için 4 makine çevriminde yalnızca çarpma (MUL) ve bölme (DIV) komutları yürütülür.

Bir makine çevrimi sırasında, talimatın iki baytını okumak için Program Belleğine (dahili veya harici) iki erişim veya Harici Veri Belleğine (EDM) bir erişim vardır.

3. MCS-51'E İLİŞKİN YÖNTEMLER (YÖNTEMLER)

1. KAYIT ADRESİ - 8 bitlik işlenen, seçilen (aktif) kayıt bankasının RON'unda bulunur;

2 DOĞRUDAN ADRESLEME (- # işaretiyle gösterilir) - işlenen, komutun ikinci (ve 16 bitlik bir işlenen için ve üçüncü) baytında bulunur;

3 DOLAYLI ADRESLEME (- @ işaretiyle gösterilir) - işlenen Veri Belleğinde (RPD veya VPD) ve bellek hücresinin adresi dolaylı adresleme RON'larından birinde (R0 veya R1) bulunur; PUSH ve POP komutlarında adres, SP yığın işaretçisinde bulunur; DPTR kaydı 64K'ya kadar bir VPD adresi içerebilir;

4 DIRECT BYTE ADRESLEME – (dir) – RPD hücrelerine (00h…7Fh adresleri) ve özel fonksiyon register'larına (80h…0FFh adresleri) erişmek için kullanılır;

5 DOĞRUDAN BİT ADRESLEME - (bit) - 20H ... 2FH adreslerinde bulunan RPD hücrelerinde bulunan ayrı olarak adreslenebilir 128 biti ve özel fonksiyon kayıtlarının ayrı olarak adreslenebilir bitlerini adreslemek için kullanılır (bkz. Tablo 3 ve program modeli);

6 DOLAYLI İNDEKS ADRESLEME (@ işareti ile gösterilir) - Program Belleğindeki tabloların görüntülenmesini kolaylaştırır, PP adresi temel kayıt (PC veya DPTR) ve indeks kaydının (Pil) toplamı ile belirlenir;

7 Örtülü (Yerleşik) ADRESLEME - talimat kodu, işlenenlerden birine (çoğunlukla Akümülatöre) örtük (varsayılan olarak) bir başvuru içerir.

4. İŞLEMCİ DURUM SÖZCÜSÜ (PSW) FORMATI

C - Carry (CARY) veya ödünç alma bayrağı, ayrıca bit ile çalışan talimatlarda "boolean akümülatör" olarak da işlev görür;

AC – yardımcı (ilave) taşıma bayrağı – eğer ekleme komutu (ADD, ADDC) düşük dereceli dörtlüden yüksek dereceye (yani 3. bitten 4. bite) bir taşımaya sahipse "1"e ayarlanır;

F0 - kullanıcı bayrağı - yazılım tarafından ayarlanır, sıfırlanır ve kontrol edilir;

RS1 RS0 Banka Adres (yön)
0 0 0 00h..07h
0 1 1 08h..0Fh
1 0 2 10s..17s
1 1 3 18h..1Fh

RS1,RS0 – Banka seçimini kaydet:

OV - Aritmetik taşma bayrağı; değeri, ALU'nun en anlamlı bitinin giriş ve çıkış taşıma sinyallerinin XOR işlemiyle belirlenir; bu bayrağın tek bir değeri, ikisinin tümleyen kodundaki bir aritmetik işlemin sonucunun aralık dışında olduğunu gösterir: –128…+127; bölme işlemi yapılırken OV bayrağı sıfırlanır ve sıfıra bölme durumunda ayarlanır; çarpma sırasında, sonuç 255'ten (0FFH) büyükse OV bayrağı ayarlanır;

Bit PSW - Ayrılmış, yazma veya okuma için kullanılabilen bir tetikleyici içerir;

P - eşlik bayrağı - akümülatördeki tek bit sayısının çift sayıya eklenmesidir; kombinasyonel bir devre tarafından oluşturulur (programlı olarak yalnızca okuma için kullanılabilir).

MCS-51 mikro denetleyicilerinde "Z" bayrağı yoktur. Ancak koşullu atlama talimatlarında (JZ, JNZ), kombinasyonel devre, Akümülatörün akım (sıfır veya sıfır olmayan) içeriğini kontrol eder.

Tüm transfer komutları ve işlenen alışverişi Akümülatör aracılığıyla gerçekleştirilebilir (bkz. Şekil 3). Ayrıca Harici Belleğe (Program Belleği veya Veri Belleği) /'den aktarımlar yalnızca Pil üzerinden gerçekleştirilebilir.

Çoğu aktarım, bir ileri bayt (dir) aracılığıyla da yapılabilir. Direkt-dire transferler bile vardır (bkz. Şekil 3).

RON'dan RON'a eksik aktarımlar, RON'dan ileri bayt dizinine aktarımlar olarak uygulanabilir (RON'ların, Hücreleri dir olarak adreslenebilen Yerleşik Veri Belleğinin ilk alanında yer alması koşuluyla).

XCH değişim komutları, her iki işleneni de yok etmeden bayt göndermenize izin verir.

Aritmetik komutları yalnızca Akümülatörde yürütülür. Bu nedenle, ilk işlenen önce Biriktiriciye yerleştirilmeli ve ardından ikinci işleneni toplamalı veya çıkarmalıdır. Sonuç Akümülatöre yerleştirilir.


SUBB çıkarma komutu yalnızca bir ödünç alma ile yürütülür (yani, Cary bayrağı da sonuçtan çıkarılır). Bu nedenle, bir çıkarma talimatını ödünç almadan yürütmek için önce Clear Flag C (CLRC) talimatını yürütmek gerekir.

Bir baytlık işlenenleri çarpma talimatı - MULAB - iki baytlık (16 bit) bir sonuç yerleştirir: düşük bayt Akümülatörde, yüksek bayt B kaydındadır.

Bir baytlık işlenenleri bölme talimatının yürütülmesinin sonucu - DIVAB - yerleştirilir: bölüm - bir Akümülatör, kalan - B kaydına.

INC aritmetik komutu, seçilen işlenene bir tane ekler. DEC aritmetik komutu, seçilen işlenenden bir çıkarır. Biriktirici Ondalık Düzeltme (DAA) talimatı, ikili kodlu ondalık (BCD) sayıları onaltılık (onaltılık) biçime dönüştürmeden eklemenize yardımcı olur. Kaynak işlenenler BCD biçiminde olmalıdır, yani. bir baytın her tetradında yalnızca 0 ile 9 arasında sayılar vardır (onaltılık sayılar olamaz: A, B, C, D, E, F). Bu nedenle, bir bayt, paketlenmiş BCD numaraları için 00'dan 99'a kadar sayıları veya paketlenmemiş BCD numaraları için 0'dan 9'a kadar olan sayıları içerebilir.

DA A - ondalık düzeltme komutu, işlemciye BCD numaralarını ekledikten sonra (sayılar onaltılık aritmetik yasalarına göre eklenmiştir) Akümülatörün içeriği üzerinde aşağıdaki gibi eylemler gerçekleştirir (örneğe bakın):

· Akümülatörün düşük dereceli dörtlü içeriği 9'dan büyükse veya yardımcı taşıma bayrağı ayarlanmışsa (AC = 1), Akümülatörün içeriğine 6 eklenir (yani, onaltılık olarak eksik altı hane biçim);

· Bundan sonra Akümülatörün yüksek mertebesinin içeriği 9'dan büyükse veya C bayrağı ayarlanırsa, Akümülatörün yüksek mertebesine 6 sayısı eklenir.

Ondalık düzeltme talimatı DA A, artış talimatından (INC) sonra kullanılmaz çünkü artış talimatı C ve AC işaretlerini etkilemez (değiştirmez).

Mantık komutları:

Mantıksal "VE" - ANL,

Mantıksal "VEYA" - ORL,

XOR mantıksal komutu - XRL - Akümülatörde (ayrıca aritmetikte) yürütülür, ancak mantıksal komutları doğrudan adres baytında (dir) yürütmek de mümkündür. Bu durumda, ikinci işlenen şöyle olabilir:

pil içinde veya

Bir komuttaki acil işlenen.

Döndürme komutları (RR A, RL A) ve CARY bayrağı (RRC A, RLC A) aracılığıyla döndürme komutları Akümülatörün içeriğini 1 bit döndürür.Bit işlenenleri sadece C bayrağı aracılığıyla gönderilir.

Mikrodenetleyici mimarisi

Assembler gibi programlama dillerini öğrenirken mikrodenetleyicilerin mimarisini anlamak çok önemlidir. Birleştiricinin yapısı, komutlarının formatı, işlenenlerin adreslenmesi vb. tamamen mimari tarafından belirlenir. Mimarlık okumanın amacı:

programlama için mevcut olan bir dizi kaydın tanımlanması, işlevsel amaçları ve yapısı;

RAM organizasyonunun ve kullanım sırasının anlaşılması;

Veri türlerine aşinalık

makine talimatlarının formatının incelenmesi;

Kesinti işleme organizasyonunu anlama.

MCS-51 ailesinin mimarisi, büyük ölçüde amacına göre önceden belirlenir - kompakt ve düşük maliyetli dijital cihazların yapımı. Tüm MK işlevleri, tek bir mikro devre kullanılarak gerçekleştirilir. MCS-51 ailesi, en basit mikro denetleyicilerden oldukça karmaşık olanlara kadar çok çeşitli mikro devreleri içerir. MCS-51 ailesinin mikro denetleyicileri, hem çeşitli cihazları kontrol etme hem de analog devrenin ayrı düğümlerini uygulama görevlerini gerçekleştirmenize izin verir. Bu ailenin tüm mikro devreleri aynı komut sistemi ile çalışır, çoğu aynı paketlerde aynı pin çıkışı ile gerçekleştirilir (paket için pin numaralandırması). Bu, geliştirilen cihaz için cihazın ve programın devre şemasını değiştirmeden farklı üreticilerin (Intel, Dallas, Atmel, Philips vb.) yongalarının kullanılmasını mümkün kılmaktadır.

MCS-51, program ve veri belleği adres alanlarının ayrıldığı Harvard mimarisine dayanmaktadır.

Kontrolörün blok şeması Şekil 2.3'te gösterilmiştir ve şu ana işlevsel birimlerden oluşur: bir kontrol birimi, bir aritmetik mantık birimi, bir zamanlayıcı/sayıcı birimi, bir seri arayüz ve kesintiler, bir program sayacı (komut sayacı), veri bellek ve program belleği.

İkili değişim, dahili 8 bitlik bir veri yolu kullanılarak gerçekleştirilir. Her bloğun amacına daha yakından bakalım. MCS-51 ailesinin hemen hemen tüm temsilcileri bu şemaya göre inşa edilmiştir. Bu ailenin çeşitli mikro devreleri, yalnızca özel amaçlı kayıtlarda (port sayısı dahil) farklılık gösterir. MCS-51 ailesinin tüm kontrolörlerinin komut sistemi, 1, 2 veya 3 bayt formatında 111 temel komut içerir ve bir mikro devreden diğerine geçerken değişmez. Bu, programların bir çipten diğerine mükemmel taşınabilirliğini sağlar.

Kontrol ve senkronizasyon ünitesi(Zamanlama ve Kontrol), OEVM birimlerinin izin verilen tüm çalışma modlarında ortak çalışmasının koordinasyonunu sağlayan senkronizasyon ve kontrol sinyalleri üretmek için tasarlanmıştır. Kontrol ünitesi şunları içerir:


  • zaman aralıkları oluşturmak için cihaz,
  • kombinasyonel G/Ç Devresi,
  • talimat kaydı,
  • komut kod çözücü.

Giriş ve çıkış kontrol ve senkronizasyon blok sinyalleri:

1 PSEN– program hafıza çözünürlüğü;

2 ALE– adres kilidi çıkış sinyalini etkinleştirir;

3 PROG– programlama sinyali;

4 EA- dahili bellekle çalışmayı engelleme;

5 VPP– programlama voltajı;

6 RST– genel sıfırlama sinyali.

Yerleştirme aygıtı, makine döngüsünü oluşturan CPU durumlarının sırasını senkronize etmek ve ayrıca tüm dahili mandalların ve bağlantı noktası çıkış arabelleklerinin doğru çalışması için gereklidir. Makine çevrimi, her biri sırayla iki aşamaya ayrılan S1'den S6'ya kadar altı ardışık durumdan (Durumlar) oluşur:

faz 1 (Aşama 1 - P1) ve faz 2 (Aşama 2 - P2). Bu nedenle, bir makine çevrimi, S1P1, S1P2, S2P1,....,S6P2 zaman dilimlerinin bir dizisi olarak tanımlanabilir. Fazın süresi saat darbelerinin periyoduna eşittir, bu nedenle makine çevrimi 12 saat periyodu alır.

Makine çevrimlerinin sayısı, komut yürütme süresini belirler. Tamamlanması dört makine döngüsü gerektiren çarpma ve bölme komutları dışında, hemen hemen tüm komutlar bir veya iki makine döngüsünde yürütülür. Giriş-çıkış mantığı, P0-P3 giriş/çıkış portları aracılığıyla harici cihazlarla bilgi alışverişini sağlayan sinyalleri almak ve vermek için tasarlanmıştır.

Komut kaydı yürütülmekte olan komutun 8 bitlik işlem kodunu kaydetmek ve saklamak için tasarlanmıştır. İşlem kodu, bir komut kod çözücü ve bilgisayar kontrol mantığı yardımıyla, komutun yürütülmesi için bir mikro programa dönüştürülür.

Şekil 2.3. Tek çipli bir mikro denetleyici Intel 8051'in blok şeması

(MCS-51 ailesi)

Aritmetik mantık Birimi(ALU), aritmetik ve mantıksal işlemler sağlayan paralel sekiz bitlik bir aygıttır. ALU şunlardan oluşur:

  • geçici depolama kayıtları -TMP1 ve TMP2,
  • sabit ROM,
  • toplayıcı,
  • ek kayıt - B kaydı,
  • pil - ACC,
  • program durumu kelime kaydı (bayrak kaydı) - PSW.

Tutma kayıtları TMP1, TMP2- üzerlerindeki işlemler süresince işlenenleri almak ve depolamak için tasarlanmış sekiz bitlik kayıtlar. Bu kayıtlara program aracılığıyla erişilemez.

ROM sabitleri ikili-ondalık veri gösterimi için bir düzeltme kodunun, bit işlemleri için bir maske kodunun ve bir sabit kodun geliştirilmesini sağlar.

Paralel 8-bit toplayıcı toplama, çıkarma aritmetik işlemlerini ve toplama, çarpma, eşitsizlik ve özdeşlik mantıksal işlemlerini gerçekleştirmek için tasarlanmış sıralı transferli kombinasyon tipi bir devredir.

B'yi kaydet- çarpma ve bölme işlemleri sırasında kullanılan sekiz bitlik bir kayıt. Diğer talimatlar için ek bir karalama defteri kaydı olarak kabul edilebilir.

pil- aritmetik-mantıksal işlemler veya kaydırma işlemleri gerçekleştirilirken elde edilen sonucu almak ve saklamak için tasarlanmış sekiz bitlik bir kayıt.

PSW (Program Durum Kelimesi) Program Durum Kaydı yürütülen komutların durum kelimesini saklamak için tasarlanmıştır. ALU'da birçok komut yürütüldüğünde, Program Durum Kelimesi (PSW) kaydında sabitlenen bir dizi işlem işareti (bayrak) üretilir. Masada. 1 PSW bayraklarını listeler, sembolik isimlerini verir ve oluşum koşullarını tanımlar.

Kesinti ve Seri Arayüz Bloğu - UART(Evrensel Asenkron Alıcı/Verici) sıralı bilgi akışlarının giriş - çıkışını ve program kesme sisteminin organizasyonunu düzenlemek için tasarlanmıştır.

Tanım olarak kesinti, donanım veya programın çalışmasının neden olduğu bazı planlanmış veya planlanmamış eylemleri gerçekleştirmek için ana bilgisayar sürecinin geçici olarak kesintiye uğraması anlamına gelir.

Bu eylemler hizmet niteliğinde olabilir, kullanıcı programından bakım gerçekleştirme talepleri veya acil durumlara yanıt olabilir.

MSS-51 ailesinin mikrodenetleyicileri, program belleği ve veri belleğinin ayrıldığı Harvard mimarisine göre inşa edilmiştir, kendi adres boşluklarına ve bunlara erişim yollarına sahiptir.

program hafızası


Maksimum bellek miktarı 64K bayttır, bunun 4K, 8K, 16K veya 32K bayt bellek (Tablo 7.3.1) çipte bulunur, geri kalanı çipin dışındadır.
EA çıkışındaki voltaj = VCC EA \u003d V CC \u003d 0 - yalnızca harici bellek ile hem dahili hem de harici bellek kullanılır.
Tablo 7.3.1 gösterir program hafıza adresleri belirtilen durumlar için.
Alt program hafıza alanı, mikrodenetleyicinin çalışmasını başlatmak için (resetten sonra 0000h başlangıç ​​adresi) ve kesme işlemi için ayrılmıştır (kesme adresleri 8 bayt aralıklarla bulunur: 0003h, 000Bh, 0013h, vb.).


Program belleği salt okunurdur ve erişildiğinde:

● için harici bellek programlar, ¯PSEN sinyali oluşturulur ve her zaman 16 bitlik bir adres oluşturulur.
Adresin düşük baytı, makine döngüsünün ilk yarısında P0 portundan geçirilir ve kayıttaki ALE flaşının kenarına mandallanır.
Döngünün ikinci yarısında, MCU'ya harici bellekten bir bayt veri girmek için P0 bağlantı noktası kullanılır.
Adresin yüksek baytı, tüm bellek erişim süresi boyunca P2 portu üzerinden iletilir (Şekil 7.1.11);

● için Dahili bellek okuma sinyali üretilmez ve dahili mikrodenetleyici veriyolunda değişim döngüleri kullanılır.

Veri belleği

Dahili bellek veriler koşullu olarak üç bloğa bölünebilir (Tablo 7.3.2).

Dahili bellek her zaman yalnızca 256 bellek konumuna adresleme sağlayan bir bayt ile adreslenir.
Bu nedenle, Tablo 7.3.2'den görülebileceği gibi, dahili RAM'in üst 8 bitlik hücrelerini ve aynı adres alanını işgal eden SFR özel fonksiyon kayıtlarını adreslemek için, komutlar farklı adresleme yöntemleri kullanır: dolaylı ve düz.

Dahili RAM'in alt bölgesinin organizasyonunun özellikleri Tablo 7.3.3'te yansıtılmıştır.

00h adresleri ile 32 bayt dahili RAM'i azaltın.
1Fh, sekiz kayıttan (R0.R7) oluşan dört bankada gruplandırılmıştır.
Sonraki 16 bayt RAM adresi 20h.
2Fh, her bir bitin erişilmesine izin veren 8x16=128 bitlik bir bellek alanıdır.
Banka kaydının adresini seçmek için adı R0 kullanılır.
R7, sıra seçimi için - PSW durum word kaydının RS0, RS1 bitleri.

bit adresleri

bit adresleri Tablo 7.3.3'te verilmiştir.

Adresleme yapılır doğrudan yol.

Adresleriyle birlikte tüm SFR özel fonksiyon kayıtlarının bir listesi Tablo 7.2.2'de verilmiştir.
Açıklık için Tablo 7.3'te.

4 verilir adres haritasını kaydetSFR MCS-51 ailesinin mikro devreleri olarak kabul edilir.
SFR adresi, onaltılık olarak sütun ve satır rakamlarının birleşimi ile belirlenir.

Örneğin, CMOD kaydının adresi D9h'dir.

Adresleri 0h veya 8h (kalın harflerle gösterilmiştir) ile biten SFR'ler için, ek olarak bayt izin verilmiş bit düzeyinde adresleme.

Bu durumda, kayıttaki N. basamağı işgal eden bitin adresi XXh + ​​0Nh olarak tanımlanır, burada XXh, SFR kaydının adresidir, N = 0.7.
Bu alandaki bit adresleri 80H ile FFH arasında değerlere sahiptir.
Örneğin, ACC akümülatörünün bit adresleri E0h-E7h içinde yer alır.

Harici bellek veriler (64 KB'ye kadar), MK'ye bağlı ek bellek yongaları tarafından oluşturulur.
Harici veri belleğiyle çalışmak için özel komutlar kullanılır, böylece harici ve dahili belleğin adres alanları çakışmaz ve bu nedenle her iki veri belleği türü aynı anda kullanılabilir.

Harici veri belleğinin hücrelerine erişmek için şunu kullanın (Şekil 7.1.8):
● dolaylı adreslemeli komutlar;
● ¯RD sinyallerini okuyun ve ¯WR yazın;
● adresin düşük baytını iletmek ve veri baytlarını almak/aktarmak için P0 bağlantı noktası;
● Adresin yüksek baytını aktarmak için P2 bağlantı noktası.
Adresleme yöntemleri.
Komut sistemi şunları kullanır:
● doğrudan, dolaylı, kayıt, dolaylı kayıt, doğrudan ve dizin adresleme (taban ve indeks kayıtlarının toplamı ile dolaylı adresleme) kaynak işlenenler;
● doğrudan, kayıt ve dolaylı kayıt adresleme hedef işlenenler.
Bu yöntemlerin kombinasyonu (adresleme) 21 adresleme modu sağlar.
Bu ve komut sisteminin aşağıdaki tablolarında aşağıdaki tanımlamalar kullanılır:

doğrudan adresleme

Bu adresleme yöntemiyle, bir veri baytının veya bitinin konumu, ikinci (ve üçüncü) komut baytının 8 bitlik adresi tarafından belirlenir.
Doğrudan adresleme yalnızca dahili veri belleğine (daha düşük 128 bayt RAM) ve özel işlev kayıtlarına erişmek için kullanılır.

adresleme kayıt


Bu adresleme yöntemi, sekiz kayıt R0'dan birinde saklanan verilere erişim sağlar.
Mevcut çalışma kayıtları bankasının R7'si.
Ayrıca A, B, AB kayıtlarına (çift kayıt), işaretçi kaydı DPTR'ye ve taşıma bayrağı C'ye erişmek için de kullanılabilir.
Bu kayıtların adresi, işlem koduna gömülüdür, böylece komut baytlarının sayısı azalır.

Dolaylı kayıt adresleme.


Bu durumda, veri adresi, konumu opcode tarafından belirlenen bir işaretçi kaydında saklanır.
Bu adresleme yöntemi, harici RAM'e ve dahili RAM'in üst yarısına erişmek için kullanılır.
8 bitlik adreslerin kayıt işaretçileri, seçilen çalışma kayıtları bankasının R0, R1 kayıtları veya 16 bitlik adresleme için sadece veri işaretleyici kaydı DPTR kullanılır.

doğrudan adresleme


Bu adresleme yöntemiyle, veriler doğrudan komutta belirtilir ve komutun ikinci (veya ikinci ve üçüncü) baytlarında bulunur, yani.
bellek adreslemesi gerekmez.
Örneğin, MOV A,#50 komutu, 50 sayısını A akümülatörüne yükler.

indeks adresleme


Bu yöntem, veri bayt adresinin temel (DPTR veya PC) ve dizin (A) kayıtlarının içeriğinin toplamı olarak belirlendiği kayıt-dolaylı adreslemedir.
Yol yalnızca program belleğine erişmek için ve yalnızca okuma modunda kullanılır; program belleğinde saklanan tabloların görüntülenmesini kolaylaştırır.

Komut yapısı.

Komut uzunluğu bir (49 komut), iki (45 komut) veya üç (17 komut) bayttır.
Komutun ilk baytı her zaman işlem kodunu (KO) içerir, ikinci ve üçüncü bayt ise işlenenlerin veya anlık veri değerlerinin adresleridir.

Tek tek bitler, tetradlar, baytlar ve çift baytlık sözcükler işlenen olarak kullanılabilir.
Tablo 7.3.5'te verilen 13 tip komut vardır:

● A, PC, SP, DPTR, Rn (n = 0, 7) - akümülatör, program sayacı, yığın işaretçisi, veri işaretçi kaydı ve geçerli banka kaydı;
● Rm (m = 0, 1) — dolaylı adresleme için kullanılan geçerli banka kaydı;
● doğrudan — doğrudan adreslenen işlenenin 8 bitlik adresi;
● bit — doğrudan adreslenebilir bir bitin adresi;
● rel — göreli geçiş adresi;
● addr11, addr16 — 11- ve 16-bit mutlak atlama adresi;
● #data8, #data16 — 8 ve 16 bit uzunluğundaki doğrudan veriler (işlenenler);
● A10, A9, A0 - 11 bitlik adresin ayrı rakamları;
● (.) — parantez içinde belirtilen adresteki bellek hücresinin içeriği;
● SB, MB - 16 bit işlenenin yüksek ve düşük baytları.

Komut sistemi hakkında genel bilgiler.

Komut sistemi, gerçek zamanlı kontrolün yanı sıra bitler, tetradlar, baytlar, çift bayt sözcükler biçiminde harika veri işleme yetenekleri sağlar.
Makro derleyici dili ASM51, komutları açıklamak için kullanılır. Çoğu komutun sözdizimi, gerçekleştirilecek işlem için bir anımsatıcıdan (kısaltma) ve ardından işlenenlerden oluşur.
İşlenenler, farklı adresleme yöntemleri ve veri türleri belirtir.

Özellikle, MOV kısaltmasının farklı adres alanlarında üç tür veriyi (bit, bayt, adres) işlemek için tasarlanmış 18 farklı komutu vardır.
Komut seti, 33 MC işlevini belirtmek için 111 komut tipinin 42 anımsatıcı atamasına sahiptir.

111 komuttan 64'ü bir makine döngüsünde, 45'i iki döngüde yürütülür ve 4 döngüde yalnızca iki komut (MUL - çarpma ve DIV - bölme) yürütülür. 12 MHz saat frekansı ile makine çevriminin (12 çevrim) süresi 1 µs'dir. İle işlevsel özellik komutlar beş gruba ayrılabilir. Aşağıda, tablolar şeklinde sunulan her grubun komutlarının bir açıklaması bulunmaktadır. Tabloların kompaktlığı için, yürütülmesi gereken bir grup komut seçiyoruz (Tablo 7.3.6). etkiler(+ ile işaretli) bayrakların durumu hakkında durum word'ü PSW kaydedin.

Veri aktarım komutları

Gönder komutları ayrı alt gruplara ayrılabilir.
Dahili bellek hücreleri arasında veri gönderme ve alışverişi için komutlar(Tablo 7.3.7).

Anımsatıcı MOV hedefi, src olan 1-16 komutları yönlendirme kaynak kaynaktan hedef hedefe bayt veya iki bayt (komut 16) veri gönderirken:
● belirtmek kaynak(src) dört adresleme yöntemi kullanılır: register (2-4, 6, 8 komutları), doğrudan (1, 7, 9, 11 komutları), dolaylı (5, 10 komutları) ve doğrudan (12-16 komutları);
● belirtmek alıcı(hedef) üç yöntem kullanılır: kayıt (1, 3…5, 9, 12, 14, 16 komutları), doğrudan (2, 7, 8, 10, 13 komutları), dolaylı (6, 11, 15 komutları).

Takımlar 17-20 sağlar değiş tokuş dahili veri belleğinin iki hücresi arasındaki bilgi (veya iki yönlü aktarım).
XCH komutları yürütülürken, baytlar değiştirilirken XCHD komutları, bayt işlenenlerinin daha düşük tetradları ile değiştirilir.

Hücrelerden biri her zaman akümülatör A'dır. Geçerli bankanın Rn kayıtlarından biri, bayt alışverişinde diğer hücre olarak kullanılır, A ayrıca doğrudan veya dolaylı olarak adreslenen bir dahili bellek hücresidir; tetradları değiştirirken - yalnızca dolaylı olarak adreslenmiş bir dahili bellek hücresi.

Tüm MK'lerde yığın dahili RAM'de bulunduğundan, aynı alt grup şunları içerir: takımlar(20, 21) yığın erişimleri PUSH kaynağı, POP hedefi.
Bu komutlar, yığına bir bayt yazarak veya yığından geri yükleyerek yalnızca doğrudan adresleme yöntemini kullanır.
RAM'de üst 128 bayta sahip olmayan MK'lerde yığını 128 baytın üzerine çıkarmanın veri kaybına yol açtığı akılda tutulmalıdır.

Dahili ve harici veri belleği arasında veri aktarımı için komutlar(Tablo 7.3.8).

Bu komutlar yalnızca dolaylı adreslemeyi kullanır, bir baytlık adres mevcut kayıt bankasının P0 veya R1'inde bulunabilirken, iki baytlık bir adres DRTR veri işaretçi kaydında olabilir.
Harici belleğe herhangi bir erişimle, alıcının veya işlenenlerin kaynağının dahili bellekteki rolü, akümülatör A tarafından oynanır.

Program belleğinden veri aktarma komutları(Tablo 7.3.9).

Bu talimatlar, program belleğinden tabloları okumak içindir.

MOVC A,@A + DPTR komutu, 0 ila 255 girişli bir tabloya erişmek için kullanılır.

İstenen tablo girişinin sayısı akümülatöre yüklenir ve DPTR kaydı tablonun başlangıç ​​noktasına ayarlanır. Başka bir komutun ayırt edici özelliği, program sayacı PC'sinin temel işaretçi olarak kullanılması ve tabloya alt programdan erişilmesidir. Önce gerekli giriş noktasının numarası akümülatöre yüklenir, ardından MOVC A, @ A + PC komutu ile alt program çağrılır. Tabloda 1'den 255'e kadar numaralandırılmış 255 giriş olabilir, çünkü alt programdan çıkmak için RET komutunun adresi için 0 kullanılır.

Aritmetik veri işleme komutları. Tüm aritmetik komutlar, işaretsiz tamsayılar üzerinde gerçekleştirilir. İki işlenen üzerinde işlemler(Tablo 7.3.10). operasyonlarda ek EKLE, taşıma ile ekleme ADDC ve kredi kesintileri SUBB:

● bir 8 bitlik işlenenin kaynağı ve sonucun alıcısı akümülatördür;
● başka bir işlenenin kaynağı, geçerli bankanın Rn (n = 0-7) çalışma kayıtlarından biri veya doğrudan doğrudan veya dolaylı olarak @Rm (m = 0, 1) adreslenebilir RAM bellek konumu veya doğrudan veri #verisi.

Operasyonlar çarpma işlemi MUL ve bölünme DIV'ler A ve B kayıtlarının içeriği üzerinde yürütülür. Çarpma sırasında sonucun üst 8 biti B kaydına, alt 8 biti A kaydına yazılır.
Ürün 255'ten büyükse, taşma bayrağı OV ayarlanır; taşıma bayrağı C her zaman sıfırlanır. DIV komutu, 8 bitlik akümülatör A işlenenini 8 bitlik kayıt B işlenenine böler.
Bölme sırasında, bölüm (en anlamlı bitler) A'daki kayıt defterine, kalan (alt bitler) - B'de yazılır. Taşıma bayrakları C ve taşma OV sıfırlanır.
0'a bölme girişimi, taşma bayrağı OV'yi ayarlar. Bölme işlemi, vardiyalar ve temel dönüşümler için daha yaygın olarak kullanılır.

İkili bir sayı 2 N'ye bölündüğünde, N bit sola kayar.
Ekstra bitler B kaydına aktarılır.

Tek baytlık işlenenler üzerindeki işlemler(Tablo 7.3.11).

DA komutu, BCD işlemlerini gerçekleştirmek için kullanılır. Talimatlar INC, DEC, sırasıyla bellek hücresinin içeriğini birer birer artırmanıza veya azaltmanıza izin verir.
A akümülatörünün, Rn çalışma kayıtlarından birinin veya hem doğrudan hem de dolaylı olarak adreslenen bir bellek hücresinin içeriğine uygulanırlar.
Arttırma işlemi, 16 bitlik DPTR işaretçi kaydının içeriği için de geçerlidir.

Mantıksal işlemlerin komutları.

Çift işlemler

(Tablo 7.3.12).

AML, ORL, XRL komutları, 8 bitlik işlenenlerde üç adet iki basamaklı mantıksal işlem gerçekleştirmenize izin verir: ANL - mantıksal çarpma (AND), ORL - mantıksal ekleme (OR), XRL - özel VEYA (XOR).
İşlemler, işlenenlerin ayrı bitleri üzerinde gerçekleştirilir. İşlenenlerden birinin kaynağı ve aynı zamanda sonucun alıcısı ya bir akümülatör (A) ya da doğrudan adreslenebilir bir bellek hücresidir (doğrudan).
Başka bir işlenenin kaynağı için kayıt, doğrudan, dolaylı veya doğrudan adresleme kullanılır.

Tek işlemler

(Tablo 7.3.13).
Grup ayrıca akümülatör A'nın içeriği üzerinde bir dizi tekil işlemi içerir: temizleme (CLR), mantıksal toplama veya tersine çevirme (CPL), 1 bit sağa (RL, RLC) ve sola döngüsel ve genişletilmiş döngüsel kaydırma işlemleri (RR, RRC), değişim tetrad veya 4 bit döngüsel bayt kaydırma (SWAP), A ayrıca boş bir işlem (NOP), bunun sonucunda tüm MK kayıtlarının durumu (program sayacı hariç) değişmeden kalır .

Kontrol Aktarım Komutları

Koşulsuz Atlama Komutları

(Tablo 7.3.14).

1-3 arasındaki komutlar yalnızca hedef adresin biçiminde farklılık gösterir.

LJMP (L - Uzun) komutu, PC sayacını komutun ikinci ve üçüncü baytlarıyla yükleyerek belirtilen adrese adres 16'ya "uzun" koşulsuz bir atlama gerçekleştirir.
Komut, 64K bayt adres alanındaki herhangi bir noktaya geçiş sağlar.

AJMP (A - Mutlak) komutu, başlangıç ​​adresi PC program sayacının en önemli beş biti tarafından belirlenen 2K baytlık bir sayfa içindeki bir adrese "mutlak" bir atlama sağlar (başlangıçta, PC'nin içeriği artar). 2) tarafından.

SJMP (S - Kısa) komutu, komutun ikinci baytına önceden 2 artırılmış PC sayacının içeriğiyle imzalı ofset rel eklenerek hesaplanan adrese "kısa" koşulsuz bir atlama gerçekleştirmenize olanak tanır. .

Atlama adresi, komut adresine göre -128+127 bayt içindedir.
64 kilobaytlık adres alanında herhangi bir başka noktaya atlamak için dolaylı @A+DPTR adreslemeli komut 4 de kullanılabilir.
Bu durumda, A'nın içeriği işaretsiz bir tamsayı olarak yorumlanır.

Boş bir işlem (NOP), bunun sonucunda tüm mikroişlemci kayıtlarının durumu (program sayacı hariç) değişmeden kalır.

Koşullu Atlama Talimatları

(Tablo 7.3.15).

Akümülatörün içeriği sırasıyla eşitse veya sıfır değilse, JZ ve JNZ talimatları atlar.
Atlama adresi, 2 sayısını (komutun bayt cinsinden uzunluğu) ekledikten sonra PC talimat sayacının içeriğine göreli işaret ofseti rel eklenerek hesaplanır.

Akümülatörün içeriği değişmeden kalır.
Komutlar bayrakları etkilemez.

CJNE komutları (3-6), konumu komutlarda belirtilen iki 8 bitlik işleneni karşılaştırmanın sonucuna dayalı bir koşullu atlama uygulamak için kullanılır.
Değerleri eşit değilse geçiş yapılır.

Atlama adresi, daha önce 3 arttırılmış olan PC sayacının içeriğine ofset rel eklenerek hesaplanır.
Aksi takdirde, aşağıdaki komut yürütülür.

Algoritma sütunu, karşılaştırılan 8 bitlik işlenenlerin değerlerinin taşıma bayrağı C üzerindeki etkisini gösterir.
DJNZ komutları (7, program döngülerini düzenlemek için tasarlanmıştır.

Rn kaydı veya doğrudan (doğrudan) adreslenebilir hücre, döngünün tekrarlarının sayacıdır, A offset rel (komutların ikinci ve üçüncü baytlarında), döngünün başlangıcına geçişin göreli adresidir.
Komutlar yürütüldüğünde, sayacın içeriği bir azaltılır ve sıfır olup olmadığı kontrol edilir.
Sayacın içeriği sıfıra eşit değilse döngünün başına geçiş yapılır.
Aksi takdirde, aşağıdaki komut yürütülür.

Atlama adresi, daha önce komut uzunluğu (2 veya 3 ile) tarafından artırılan sayacın içeriğine ofset eklenerek hesaplanır.
Komut bayrakları etkilenmez.

Alt programları çağırma ve programlardan geri dönme komutları

(Tablo 7.3.16).
LCALL "uzun arama" ve ACALL "mutlak arama" komutları, belirtilen adreste bulunan alt programı koşulsuz olarak çağırır.

Bu komutlar ile yukarıda tartışılan koşulsuz atlama komutları arasındaki fark, dönüş adresini (sayacın içeriği) yığındaki ana programa kaydetmeleridir.
RET alt yordamından gelen dönüş talimatı, program sayacının içeriğini yığından geri yükler ve RETI talimatı ayrıca hizmet seviyesi kesintilerini etkinleştirir.

Kontrol aktarım komutları, yeri değiştirilebilen program modüllerini destekleyen göreli adreslemeyi kapsamlı bir şekilde kullanır.
Göreceli adres, PC sayacının mevcut konumundan her iki yönde ±127 bayt dallanma sağlayan 8 bitlik işaretli bir ofset rel'dir.

64K baytlık adres alanındaki herhangi bir noktaya atlamak için doğrudan adres addr16 veya dolaylı @A+DPTR adresi kullanılabilir.
İkinci durumda, A'nın içeriği işaretsiz bir tamsayı olarak yorumlanır.

MK48 mimarisiyle uyumluluk için 2K baytlık geçerli sayfanın içindeki kısa doğrudan adres addr11'in bir çeşidi tanıtıldı.

Bu adresleme türlerinin tümü yalnızca bir atlama işlemine uygulanabilirken, bir çağrı işlemi için yalnızca doğrudan addr16 ve dahili adresleme yöntemlerine izin verilir.
Tüm koşullu işlemler yalnızca göreli adreslemeyi kullanabilir.

MK51 bir kesme talebini algıladığında, dönüş adresini yığında otomatik olarak saklayan LCALL addr16 komutlarından birini oluşturur.
Ancak, MK48'den farklı olarak MK51, otomatik olarak kaydedilmiş durum bilgisine sahip değildir.

Bu durumda, kesme mantığı, hizmet için kabul edilen düzeyin isteklerine yanıt vermeyi durdurur.
Kesinti seviyesini düşürmek için, RET'e eşdeğer işleme ek olarak, bu seviyenin kesme etkinleştirme işlemini içeren RETI kesme dönüş komutu kullanılır.
Tipik koşullu işlemler MK51 ayrıca JZ, JNZ işlemlerini de içerir.
Ancak, yeni bir "Karşılaştır ve git" işlemi var CJNE.

Bu komuta göre işlenen önce sabitli tam sayıları çıkarma kurallarına göre karşılaştırılır ve karşılaştırmanın sonucuna göre CY bayrağı ayarlanır, ardından sabitle uyumsuzluk olması durumunda dallanma yapılır. gerçekleştirildi. Bir akümülatör, kayıt veya bellek konumunu bir dizi sabitle karşılaştırarak, örneğin özel durumları tanımlamak için eşleşmeleri kontrol etmenin uygun bir yolunu elde ederiz.

Aslında, CJNE komutu, CASE türündeki üst düzey bir dil operatörünün bir öğesidir.

DJNZ ekibi daha da geliştirildi.
Artık programcı bir sayaç olarak çalışan Rn kayıtlarından yalnızca birini değil, aynı zamanda herhangi bir DSEG bellek hücresini de kullanabilir.

Bit işlem komutları.

Grup, bir veya iki bit üzerinde işlem gerçekleştirmenize izin veren 12 komuttan (reset, set, bit inversiyonu, A ayrıca mantıksal AND ve OR) ve koşullu geçişleri uygulamak için tasarlanmış 5 komuttan oluşur (Tablo 7.3.17).

Komutlar, 20h adresli dahili RAM'in on altı hücresinde bulunan 128 bitin doğrudan adreslenmesini sağlar.
2Fh (Tablo 7.3.3) ve adresleri sekizin katları olan özel amaçlı kayıtlarda bulunan 128 bit (Tablo 7.3.4'te koyu renkle vurgulanmıştır).

İki tek bitlik işlenen üzerinde işlemler gerçekleştirirken, PSW kaydının tetikleyicisi, taşıma bayrağını C depolayan mantıksal bir akümülatör olarak kullanılır (Tablo 7.1.2).

MOV (1,2) komutları gerçekleştirilir yönlendirme Dahili RAM'in doğrudan adreslenebilir bir bit hücresinden flip-flop C'ye veya tam tersi bit.
Sırasıyla CRL (3, 4), SETB (5, 6) komutları terk edilmiş sıfıra veya Yüklemek birine C bayrağını veya belirtilen biti taşır.
CPL, ANL, ORL (7-12) komutları kullanılarak ters çevirme, toplama ve çarpma mantıksal işlemleri yapılır.

Grup ayrıca, göreli 8 bitlik ofset rel ile koşullu atlama işlemlerini uygulamak için komutlar (13-17) içerir.
Geçişler hem bit hem de taşıma bayrağı ayarlandığında (komut 13, 16) ve temizlendiğinde (komut 14, 17) uygulanabilir.

JBC komutu, koşul (bit) = 1 karşılandığında, hesaplanan adrese atlamaya ek olarak, bu biti sıfırlar.
Koşullu atlama talimatlarını yürütürken, atlama adresi, sayacın içeriğine 3 veya 2 (talimattaki bayt sayısını yansıtan) sayıları eklendikten sonra hesaplanır.

Intel, adını bu ailenin ilk temsilcisi olan n-MOS teknolojisine dayalı olarak 1980 yılında piyasaya sürülen 8051 mikro denetleyicisinden alan MCS-51 ailesi mimarisinin yaratıcısıdır. İyi bir çevre birimi seti, esnek bir harici veya dahili program belleği seçimi ve uygun bir fiyat, bu mikro denetleyicinin pazarda başarılı olmasını sağladı. Teknoloji açısından, 8051 mikrodenetleyici, zamanı için çok karmaşık bir üründü - kristalde, 16 bit 8086 mikroişlemcideki transistör sayısının 4 katı olan 128 bin transistör kullanıldı.Bu mikrodenetleyici çekirdek olmaya devam ediyor. MCS-51 ailesinin bugüne kadar

Ailenin temel mimarisinin (8051 mikrodenetleyici mimarisi) ana unsurları şunlardır:

8-bit ALU;

4 banka, her birinde 8;

ROM veya EPROM (8751) tipine sahip dahili (yerleşik) program belleği 4 KB;

Dahili (yerleşik) veri belleği 128 bayt;

21 özel fonksiyon kaydı;

Boole işlemcisi;

İki adet 16-bit zamanlayıcı/sayıcı;

Seri bağlantı noktası denetleyicisi (UART);

İki öncelik düzeyine sahip kesinti denetleyicisi;

İkisi harici programa ve veri belleğine erişim için adres/veri yolu olarak kullanılan dört adet 8-bit G/Ç bağlantı noktası;

Dahili saat üreteci.

Ardından, üçüncü bir zamanlayıcı ve buna uygun olarak genişletilmiş bir kesme denetleyicisi tarafından sunulan artan miktarda yerleşik program ve veri belleği içeren 8052 mikro denetleyici piyasaya sürüldü.

MCS-51'in geliştirilmesindeki bir sonraki temel adım, üretim teknolojisinin CMOS'a aktarılmasıydı (8xC51 modifikasyonu). Bu, kristalin güç tüketiminde keskin bir azalma sağlayan Idl (boşta) ve Power Down (düşük tüketim) modlarının uygulanmasını mümkün kıldı ve örneğin, uçucu uygulamalarda bir mikro denetleyici kullanımının yolunu açtı. otonom pille çalışan cihazlar.

Ve Intel tarafından MK 8051'in geliştirilmesindeki son önemli aşama, kısaca genellikle 8xC51Fx ve 8xC51Rx olarak adlandırılan 8xC51FA / FB / FC ve 8xC51RA / RB / RC mikro denetleyicilerinin piyasaya sürülmesiydi. Bu kristal grubunun ana ayırt edici özelliği, özel bir zamanlayıcı / sayacın (PCA) varlığıdır. Ek olarak, 8xC51Rx mikrodenetleyiciler ek olarak bir watchdog zamanlayıcı (WDT) içerir. PCA'nın mimarisini ve işlevselliğini daha ayrıntılı olarak düşünün.

RSA şunları içerir:

16 bit zamanlayıcı/sayıcı;

Her biri farklı bir mikro denetleyici G/Ç bağlantı noktası hattına bağlı beş adet 16 bit örnekleme ve karşılaştırma modülü.

Zamanlayıcı/sayıcı, aşağıdaki işlevlerden birini gerçekleştirmek üzere programlanabilen beş örnekleme ve karşılaştırma modülünün tümüne hizmet eder:

Harici sinyalin pozitif kenarında zamanlayıcı değerinin 16 bit örneklemesi;

Harici sinyalin negatif kenarındaki zamanlayıcı değerinin 16 bit örneklemesi;

Harici sinyalin herhangi bir kenarında zamanlayıcı değerinin 16 bit örneklemesi;

16 bit programlanabilir zamanlayıcı;

16 bit yüksek hızlı çıkış aygıtı;

8 bit PWM.

Listelenen tüm işlevlerin uygulanması, PCA'da donanım düzeyinde gerçekleşir ve merkezi işlemciyi yüklemez. Bu, genel verimi artırmanıza, ölçümlerin ve sinyal işlemenin doğruluğunu iyileştirmenize ve özellikle gerçek zamanlı sistemler için önemli olan mikro denetleyicinin harici olaylara tepki süresini azaltmanıza olanak tanır. 8xC51Fx'te (8xC51Rx) uygulanan PCA'nın öyle olduğu ortaya çıktı

atama

Maks. frekans (MHz)

ROM/EPROM (bayt)

sayaçlar

Bu mikro denetleyicilerin mimarisinin bir endüstri standardı haline gelmesi ve PCA'nın kendisinin MK 8051'in çeşitli modifikasyonlarında tekrar tekrar üretilmesi büyük şans.

Intel tarafından üretilen bir dizi MCS-51 mikro denetleyicisinin bazı özellikleri Tablo 1.1'de verilmiştir.

Başlangıçta, MCS-51 mimarisinin darboğazları, 8 bitlik pil tabanlı bir ALU ve nispeten yavaş talimat yürütmesiydi (en hızlı talimatları yürütmek için 12 döngü gereklidir).

Tablo 1.1

G/Ç

ADC girişleri x basamak

çevre,

özellikler

evcil hayvan (İÇİNDE)

Alçak gerilim seçeneği

4 seviye IRQ, çıkış saati

4 seviye IRQ, çıkış saati

Alçak gerilim versiyonu 8xC51Fx

4 seviye IRQ, çıkış saati

4 seviye IRQ, çıkış saati

4 seviye IRQ, çıkış saati

saat frekansı riodları (MC senkronizasyon frekansı)). Bu, artan performans ve karmaşık hesaplamalar (16- ve 32-bit) gerektiren uygulamalarda aile mikro denetleyicilerinin kullanımını sınırladı. MCS-51 mimarisinin temel modernizasyonu sorunu acil hale geldi. Modernizasyon sorunu, 90'ların başında, MCS-51 ailesinin yazılım ve donanımı alanında, tasarımın ana görevlerinden biri ile bağlantılı olarak birçok gelişmenin yaratılmış olması nedeniyle karmaşıktı. yeni mimari, MCS -51'e dayalı gelişmelerle donanım ve yazılım uyumluluğunu uygulamaktı.

Bu sorunu çözmek için Intel ve Philips'ten ortak bir uzman grubu oluşturuldu, ancak daha sonra bu iki şirketin yolları ayrıldı. Sonuç olarak, 1995'te önemli ölçüde farklı iki aile ortaya çıktı: Intel'in MCS-251/151 ve Philips'in MCS-51XA (bkz. alt bölüm 1.2).

MCS-251 mimarisinin temel özellikleri:

24 bit doğrusal adres alanı, 16 MB belleğe kadar adresleme;

Kayıtlara bayt, kelime ve çift kelime olarak atıfta bulunulmasına izin veren kayıt mimarisi;

Harici program belleğinden daha hızlı komut almak için sayfa adresleme modu;

talimat kuyruğu;

16 bitlik aritmetik ve mantıksal işlemler de dahil olmak üzere genişletilmiş komut seti;

Genişletilmiş yığın adres alanı (64 KB'ye kadar);

2 döngüde en hızlı komutun yürütülmesi.

MCS-251 komut seti iki komut seti içerir - ilk set, MCS-51 komut setinin bir kopyasıdır ve ikincisi, MCS-251 mimarisinden yararlanan genişletilmiş komutlardan oluşur. Mikrodenetleyiciyi kullanmadan önce yapılandırılmalıdır, yani. programlayıcıyı kullanarak, güç açıldıktan sonra komut setlerinden hangisinin aktif olacağını belirleyen konfigürasyon bitlerini "yakın". İlk talimat setini kurarsanız, bu durumda MCS-251 ailesinin MK'si ikili kod düzeyinde MCS-51 ile uyumlu olacaktır. Bu moda İkili Mod denir. Başlangıçta bir dizi genişletilmiş talimat (Kaynak Modu) ayarlarsanız, MCS-51 için yazılmış programların MCS-251 için çapraz araçlarda yeniden derlenmesi gerekir. Kaynak Modu, MCS-251 mimarisini maksimum verimlilikle kullanmanızı ve en yüksek performansı elde etmenizi sağlar.

MCS-51'in yerine mekanik olarak MCS-251 mikrodenetleyicilerinin kullanımına odaklanan kullanıcılar için Intel, İkili Mod durumunda programlanmış MCS-151 mikrodenetleyicilerini piyasaya sürüyor.

Bir dizi MCS-251/151 mikrodenetleyicinin bazı özellikleri Tablo 1.1'de verilmiştir.

Şu anda Pentium işlemci pazarını hedefleyen Intel, MCS-51 kristallerinin üretimini azaltıyor. Genel olarak, belirli bir geliştirici için, diğer şirketlerin ürünleri arasında tam analoglarına sahip olmayan 8xC51GB ve 80C152Jx mikro denetleyicileri kullanmadığı sürece bu fark edilmeyebilir. MCS-51 ailesinin diğer tüm mikro denetleyicilerine gelince, hepsi başka şirketler tarafından birçok kez çoğaltılır.

OMEVM komut sistemi, harika veri işleme yetenekleri sağlar, mantıksal, aritmetik işlemlerin yanı sıra gerçek zamanlı kontrolün uygulanmasını sağlar. Bit düzeyinde, dörtlü (4 bit), bayt (8 bit) ve 16 bit veri işleme uygulandı.

LSI ailesi MCS-51 - 8-bit OMEVM: ROM, RAM, özel amaçlı kayıtlar, ALU ve harici veriyolları bir bayt organizasyonuna sahiptir. İki baytlık veriler yalnızca işaretçi kaydı (DPTR) ve program sayacı (PC) tarafından kullanılır. Veri işaretçi kaydının iki baytlık DPTR kaydı olarak veya iki tek baytlık özel amaçlı kayıt defteri DPH ve DPL olarak kullanılabileceğine dikkat edilmelidir. Program sayacı her zaman iki baytlık bir kayıt olarak kullanılır.

OMEVM komut seti, bu sistemin 33 işlevini belirtmek için 42 komut anımsatıcısına sahiptir.

Çoğu montaj dili talimatının sözdizimi, bir işlev anımsatıcısından ve ardından adresleme yöntemlerini ve veri türlerini belirten işlenenlerden oluşur. Farklı veri türleri veya adresleme modları, anımsatıcı notasyondaki değişikliklerle değil, ayarlanan işlenenler tarafından belirlenir.

Komut sistemi şartlı olarak beş gruba ayrılabilir:

Aşağıdaki kaynak işlenen adresleme türleri vardır:

  • Baz ve indeks kayıtlarının toplamına göre dolaylı kayıt adreslemesi

Komut sisteminde kullanılan tanımlamalar ve semboller tablosu

Tanım, sembol Amaç
FAKAT pil
Rn Halihazırda seçili olan kayıt bankasının kayıtları
r Komutta belirtilen yüklenen kayıt sayısı
doğrudan Dahili veri RAM konumu (0-127) veya SFR (128-255) olabilen, doğrudan adreslenebilir 8 bit dahili veri konumu adresi
@rr Dolaylı olarak adreslenebilir 8 bit dahili veri RAM konumu
veri8 TBM'ye dahil edilen 8 bitlik anlık veriler
veriH Anında 16 bitlik verilerin MSB'leri (15-8)
veriL Anında 16 bitlik verilerin düşük bitleri (7-0)
addr11 11 bitlik hedef adres
addrL Hedef adresin en az anlamlı bitleri
disp8 8 bitlik işaretli ofset bayt
biraz Adresi dahili veri RAM'inde veya SFR'de bulunan CPC'yi içeren doğrudan adreslenebilir bit
a15, a14...a0 Hedef adres bitleri
(X) X öğesinin içeriği
((X)) X öğesinde depolanan adresteki içerik
(X)[M] Boşaltma M elemanı X

+
-
*
VE
VEYA
XOR
/X
Operasyonlar:
eklemeler
çıkarma
çarpma işlemi
bölünme
mantıksal çarpma (VE işlemi)
mantıksal ekleme (VEYA işlemi)
ekleme modulo 2 (XOR)
element X inversiyonu

İşlev anımsatıcıları, adresleme yöntemlerinin ve veri türlerinin belirli kombinasyonlarıyla benzersiz bir şekilde ilişkilendirilir. Toplamda, komut sisteminde bu tür 111 kombinasyon mümkündür. Tablo, alfabetik olarak sıralanmış komutların bir listesini gösterir.

anımsatıcılar İşlev Bayraklar
ACALL Ekibi Mutlak alt program çağrısı
Ek AC, C, OV
Taşıma ile ekleme AC, C, OV
AJMP ekibi Mutlak geçiş
Mantık "VE"
Değişken bitler için mantıksal "VE" C
Karşılaştır ve eşit değilse atla C
Takım CLR A Pil sıfırlama
CLR ekibi Sıfırlama biti biraz
CPL A Takımı Pil ters çevirme
CPL Ekibi Bit inversiyonu biraz
Takım DA A Toplama için akümülatör ondalık düzeltmesi AC, C
Aralık Ekibi<байт> azalma
Takım DIV AB Bölünme C, OV
Takım DJNZ<байт>, <смещение> Sıfır değilse azaltma ve atlama
Takım I.N.C.<байт> artış
Takım INC DPTR Veri işaretçisi artışı
Takım J.B. , Bit ayarlanmışsa atla
Takım JBC , Bit ayarlanmışsa dallandırın ve bu biti sıfırlayın
Takım J.C. Taşıma ayarlanmışsa atla
JMP @A+DPTR komutu dolaylı geçiş
JNB Ekibi , Bit ayarlanmamışsa atla
JNC Takımı Aktarım ayarlanmazsa atla
Takım JNZ Akümülatör içeriği sıfır değilse atla
Takım JZ Akümülatör içeriği 0 ise atla
LCALL Ekibi uzun arama
Takım LJMP uzun geçiş
İleri değişken bayt
veri biti gönder C
Komut MOV DPTR,#data16 16 bit sabit ile veri işaretçisini yükleyin
MOVC talimatı A,@A+( ) Baytı program belleğinden taşı
Harici belleğe (harici bellekten) veri gönder
gastroguru 2017