DZWON

Są tacy, którzy czytają tę wiadomość przed wami.
Zapisz się, aby otrzymywać najnowsze artykuły.
E-mail
Imię
Nazwisko
Jak chcesz przeczytać The Bell
Bez spamu

Architektura rodziny MCS-51 jest w dużej mierze zdeterminowana przez jej przeznaczenie - budynek kompaktowy i tani urządzenia cyfrowe. Wszystkie funkcje mikrokomputera realizowane są za pomocą jednego mikroukładu. Rodzina MCS-51 obejmuje szereg mikroukładów od najprostszych mikrokontrolerów do najbardziej złożonych. Mikrokontrolery z rodziny MCS-51 pozwalają na realizację zarówno zadań sterujących różnymi urządzeniami, jak i realizację poszczególnych węzłów układu analogowego. Wszystkie mikroukłady tej rodziny działają tak samo system dowodzenia MCS-51 , większość z nich jest wykonywana w tych samych przypadkach z pasujący pinout (numeracja nóg korpusu). Pozwala to na wykorzystanie mikroukładów różnych firm do opracowanego urządzenia - Maxim, Atmel, NXP itp. (catalog..php? page \u003d components_list & id \u003d 39 "\u003e zobacz wyszukiwanie według parametrów) bez zmiany schematu ideowego urządzenia i programu.

Rysunek 1. Schemat blokowy sterownika I8751

Schemat blokowy sterownika przedstawiono na rysunku 1 i składa się z następujących głównych jednostek funkcjonalnych: jednostki sterującej, jednostki logiki arytmetycznej, jednostki timera / licznika, interfejsu szeregowego i jednostki przerwań, licznika programu, pamięci danych i pamięci programu. Dwukierunkowa komunikacja odbywa się za pomocą wewnętrznej 8-bitowej autostrady danych.

Przyjrzyjmy się bliżej celowi każdego bloku. Prawie wszyscy przedstawiciele rodziny MCS-51 są zbudowani zgodnie z tym schematem.... Różne mikroukłady z tej rodziny różnią się jedynie rejestrami specjalnego przeznaczenia (w tym liczbą portów). Zestaw poleceń dla wszystkich kontrolerów z rodziny MCS-51 zawiera 111 podstawowych poleceń w formacie 1, 2 lub 3 bajtów i nie zmienia się podczas przechodzenia z jednego mikroukładu do drugiego. Zapewnia to doskonałą przenośność programów z jednego mikroukładu na inny.

Jednostka sterująca i synchronizująca

Jednostka czasowo-sterująca jest przeznaczona do generowania sygnałów synchronizujących i sterujących, które zapewniają koordynację wspólnej pracy jednostek OEVM we wszystkich dopuszczalnych trybach jej pracy.

  • - urządzenie do formowania przedziałów czasowych,
  • - logika I / O,
  • - rejestr poleceń,
  • - rejestr kontroli zużycia energii elektrycznej,
  • - dekoder poleceń, logika sterowania komputerowego.

Urządzenie do kształtowania szczelin czasowych jest przeznaczony do tworzenia i wydawania sygnałów fazy wewnętrznej, zegara i synchronizacji cykli. Liczba cykli maszynowych określa czas wykonywania instrukcji. Prawie wszystkie polecenia OEVM są wykonywane w jednym lub dwóch cyklach maszynowych, z wyjątkiem poleceń mnożenia i dzielenia, których czas wykonania wynosi cztery cykle maszynowe. Wyznaczmy częstotliwość oscylatora głównego przez F g. Wtedy czas trwania cyklu maszyny jest równy 12 / Fg lub 12 okresów sygnału oscylatora głównego. Logika wejścia-wyjścia jest przeznaczona do odbierania i wyprowadzania sygnałów, które zapewniają wymianę informacji z urządzeniami zewnętrznymi przez porty wejścia / wyjścia P0-P3.

Rejestr poleceń jest przeznaczony do nagrywania i przechowywania 8-bitowego kodu operacji wykonywanego polecenia. Kod operacji, za pomocą dekodera poleceń i logiki sterowania komputerowego, jest konwertowany na mikroprogram w celu wykonania polecenia.

Rejestr kontroli zużycia (PCON) umożliwia zatrzymanie mikrokontrolera w celu zmniejszenia poboru mocy i zmniejszenia poziomu szumów z mikrokontrolera. Dalszą redukcję zużycia energii i redukcję szumów można osiągnąć poprzez zatrzymanie głównego oscylatora mikrokontrolera. Można to osiągnąć, obracając nieco w rejestrze kontroli zużycia PCON. W przypadku wariantu n-MOS (seria 1816 lub obce mikroukłady bez litery „c” w nazwie), rejestr kontroli zużycia PCON zawiera tylko jeden bit sterujący szybkością transmisji portu szeregowego SMOD i nie ma bitów sterujących mocą.

Jednostka arytmetyczno-logiczna (ALU) jest równoległym urządzeniem ośmiobitowym, które zapewnia operacje arytmetyczne i logiczne. ALU składa się z:

  • - rejestry akumulatorów, rejestry trzymające TMP1 i TMP2,
  • - stałe ROM,
  • - sumator,
  • - rejestr dodatkowy (rejestr B),
  • - akumulator (ACC),
  • - rejestr statusu programu (PSW).

Zarejestrować bateria i rejestry posiadania - rejestry ośmiobitowe przeznaczone do odbierania i przechowywania operandów podczas wykonywania na nich operacji. Te rejestry nie są dostępne programowo.

Stałe ROM zapewnia generowanie kodu korekcyjnego dla reprezentacji danych binarno-dziesiętnych, kodu maski dla operacji bitowych i kodu stałego.

Równoległy ośmiobitowy sumator to układ kombinacyjny z sekwencyjnym przenoszeniem, przeznaczony do wykonywania arytmetycznych operacji dodawania, odejmowania i operacji logicznych dodawania, mnożenia, nierówności i identyczności.

Zarejestruj B - ośmiobitowy rejestr używany podczas operacji mnożenia i dzielenia. W przypadku innych instrukcji można go traktować jako dodatkowy rejestr superoperacyjny.

Bateria - ośmiobitowy rejestr przeznaczony do odbierania i przechowywania wyników uzyskanych podczas wykonywania operacji arytmetyczno-logicznych lub operacji przesuwnych

Interfejs szeregowy i jednostka przerwań (PIP) jest przeznaczony do organizowania wejścia-wyjścia sekwencyjnych strumieni informacji i organizowania systemu przerywania programu. Blok zawiera:

  1. - bufor PIP,
  2. - logika sterowania,
  3. - rejestr kontrolny,
  4. - bufor nadajnika,
  5. - bufor odbiornika,
  6. - transceiver portu szeregowego,
  7. - rejestr priorytetów przerwań,
  8. - rejestr włączania przerwań,
  9. - logika przetwarzania flag przerwań i obwodu generowania wektorów.

Licznik programu jest przeznaczony do generowania aktualnego 16-bitowego adresu wewnętrznej pamięci programu oraz 8/16-bitowego adresu zewnętrznej pamięci programu. Licznik instrukcji zawiera 16-bitowy bufor PC, rejestr PC i obwód inkrementujący (zwiększający zawartość o 1).

Pamięć danych (RAM) jest przeznaczony do tymczasowego przechowywania informacji wykorzystywanych w procesie wykonywania programu.

Porty P0, P1, P2, P3 są quasi-dwukierunkowymi portami wejścia-wyjścia i zostały zaprojektowane w celu zapewnienia wymiany informacji między OECM a urządzeniami zewnętrznymi, tworząc 32 linie wejścia-wyjścia.

Urządzenie z zegarem Podstawowe modele z rodziny posiadają dwa programowalne 16-bitowe timery / liczniki (T / C0 i T / C1), które mogą być używane zarówno jako timery, jak i jako zewnętrzne liczniki zdarzeń

Rejestr stanu programu (PSW) przeznaczone do przechowywania informacji o stanie ALU podczas wykonywania programu.

Pamięć programu (EPROM) jest przeznaczony do przechowywania programów i jest pamięcią tylko do odczytu (ROM). Różne mikroukłady wykorzystują zamaskowane ROMy, które można usunąć promieniowaniem ultrafioletowym lub LAMPA BŁYSKOWA ROM.

Rejestr wskaźników danych (DPTR) jest przeznaczony do przechowywania 16-bitowego adresu zewnętrznej pamięci danych lub pamięci programu.

Wskaźnik stosu (SP) to ośmiobitowy rejestr przeznaczony do organizowania specjalnego obszaru pamięci danych (stosu), w którym można tymczasowo przechowywać dowolną komórkę pamięci.



Wersja podstawowa MCS-51 Krótka informacja. Nowoczesne 8-bitowe mikrokontrolery (MC) posiadają takie zasoby sterowania w czasie rzeczywistym, które wcześniej uzyskiwano przy użyciu drogich układów wielochipowych w postaci oddzielnych płytek mikrokomputerowych, a mianowicie:

● mają wystarczającą pojemność pamięci, jej fizyczny i logiczny podział na pamięć programu i pamięć danych (architektura Harvardu) oraz system dowodzenia skoncentrowany na wykonywaniu algorytmów sterowania;

● zawiera wszystkie urządzenia (procesor, ROM, RAM, porty I / O, system przerwań, urządzenia do przetwarzania informacji bitowych, itp.) Wymagane do realizacji systemu sterowania mikroprocesorowego o minimalnej konfiguracji. W latach 70-tych ubiegłego wieku firma Intel opracował i opanował produkcję przemysłową rodziny 8-bitowych mikrokontrolerów MCS-48, połączonych szeregiem wspólnych cech (głębia bitowa, system poleceń, zestaw podstawowych bloków funkcjonalnych itp.). Podstawowa wersja tej rodziny obejmuje:

● 8-bitowy procesor;

● wewnętrzna pamięć programu (1/2 / 4K bajtów);

● wewnętrzna pamięć danych (64/128/256 bajtów);

● do 27 wewnętrznych i 16 zewnętrznych linii I / O;

● jeden 8-bitowy licznik czasu;

● jednopoziomowy system przerwań z dwoma źródłami żądań. W 1980 roku ta sama firma opracowała nową rodzinę ośmiobitowych mikrokontrolerów MCS-51, które są zgodne z architekturą rodziny MCS-48, ale mają większe możliwości.

Architektura rodziny MCS-51 okazała się na tyle udana, że \u200b\u200bnadal jest jednym ze standardów dla 8-bitowych mikrokontrolerów. Dlatego jako przedmiot badań wybrano MC z tej rodziny, które rozpowszechniły się w stosunkowo prostych systemach sterowania.

Dla rodziny MCS-51 opracowano różne sposoby przygotowania programów (kompilatory, emulatory sprzętowo-programowe itp.) I istnieje duża liczba bibliotek standardowych podprogramów. Rodzina obejmuje różne modyfikacje mikroukładów (wersje kryształowe) mikrokontrolerów. W artykułach tej sekcji podstawowa wersja mikrokontrolerów z rodziny MCS-51 jest rozważana wystarczająco szczegółowo (mikroukład 8051 odpowiada krajowemu odpowiednikowi KP1816BE51), który jest najprostszy pod względem strukturalnym i funkcjonalnym oraz pod względem zrozumienia.

Kolejne serie mikroukładów, zachowując kompatybilność z wersją podstawową, różnią się od niej udoskonaloną technologią wykonania, parametrami elektrycznymi, dodatkowym sprzętem i funkcjonalnością. Poniższe artykuły poświęcone są cechom strukturalnym i funkcjonalnym kolejnych modyfikacji mikroukładów z rodziny MCS-51.
Uogólniony schemat blokowy MCS-51. MC, którego uogólniony schemat blokowy pokazano na ryc. 7.1.1 obejmuje:

● 8-bitowa jednostka centralna (CPU) składająca się z ALU, urządzenia sterujące Uu i generator adresów fa;

● maska \u200b\u200bROM o pojemności 4K bajtów do przechowywania programów;

● RAM o pojemności 128 bajtów do przechowywania danych;

● cztery programowalne porty Р0 - Р3 dla wejścia-wyjścia informacji;

● blok interfejsu szeregowego BPI do wymiany informacji z urządzeniami zewnętrznymi poprzez linię dwuprzewodową;

● blok timerów / liczników BT / C dla utrzymania trybu czasu rzeczywistego;

● blok przerwań BP do organizowania przerwań programów wykonywalnych. Te fundusze tworzą mieszkaniecczęść mikrokontrolera umieszczona bezpośrednio na chipie. MC zawiera dużą liczbę rejestrów, które są przypisane do oddzielnych bloków funkcjonalnych i nie są pokazane na schemacie.

Schemat nie pokazuje również obwodów sterujących. Dwukierunkowa wymiana informacji między blokami odbywa się za pośrednictwem wewnętrznego 8-bitowego magistrala danychШД-8.

Wewnętrzny 16-bitowy magistrala adresowaSHA-16 adres utworzony w CPU jest wyświetlany w pamięci ROM (12 bitów adresu) oraz w pamięci RAM (8 najmniej znaczących bitów).

W przypadku korzystania z pamięci zewnętrznej 8 najmniej znaczących bitów adresu jest wysyłanych do portu P0, a 3 lub 8 najbardziej znaczących bitów do portu P2.

W celu logicznego rozszerzenia interfejsu używana jest kombinacja funkcji portu. Jako przykład, rys. 7.1.1 przerywana linia pokazuje linie portu P3, wykonujące alternatywnyfunkcje przesyłania sygnałów sterujących, których cel zostanie omówiony poniżej. Aby utworzyć wewnętrzny generator zegara, rezonator kwarcowy i dwa kondensatory są podłączone do zacisków mikroukładu MK (ryc. 7.1.1). Zamiast wewnętrznego zegara do synchronizacji można użyć zewnętrznego oscylatora. Konwencjonalne oznaczenie graficzne mikroukładu MK pokazano na ryc. 2, oznaczenie i cel wniosków - w tabeli. 7.1.1. Rozważ bloki funkcjonalne MK i zasadę ich działania. Jednostka arytmetyczno-logiczna. Jednostka arytmetyczno-logiczna przeznaczona jest do wykonywania operacji arytmetycznych (w tym mnożenia i dzielenia) i logicznych na operandach ośmiobitowych, a także operacji przesunięcia logicznego, zerowania, nastawiania itp. Schemat blokowy jednostki ALU przedstawiono na rys. 7.1.3.

ALU zawiera

● równoległy ośmiobitowy sumatorSM typu kombinacyjnego z sekwencyjnym transferem, wykonującym operacje arytmetyczne (dodawanie i odejmowanie) i logiczne (dodawanie, mnożenie, nierówne i identyczne);

akumulator A, udostępnianie funkcji głównego rejestru arytmetycznego;

zarejestrowaćB, używany do wykonywania operacji mnożenia i dzielenia lub jako dodatkowy rejestr nadoperacyjny, którego funkcje są definiowane przez użytkownika;

rejestry(niedostępne programowo) tymczasowe przechowywanieРВХ1, РВХ2, przeznaczone do przyjmowania i przechowywania argumentów na czas trwania operacji;

● ROM stałeROMK, przechowujący kod korekcyjny dla reprezentacji danych binarno-dziesiętnych, kod maskujący dla operacji bitowych i kod stały;

rejestr słów statusu programuPSW, który naprawia stan ALU po wykonanej operacji. Stół 7.1.2 dostarcza informacji o przydziale bitów poszczególnych bitów rejestru PSW. Urządzenie sterujące. Centralna jednostka sterująca procesora (CU) zamierzonykoordynowanie wspólnej pracy wszystkich węzłów MK przy użyciu generowanych impulsów synchronizacji i sygnałów sterujących. Obejmuje (Rys. 7.1.4):

jednostka synchronizacji i sterowaniaUSU, który generuje impulsy synchronizacyjne, które ustawiają cykle maszyny oraz ich poszczególne stany (S) i fazy (P) oraz, w zależności od trybu pracy MC, generuje niezbędny zestaw sygnałów sterujących. Do wykonania polecenia przydzielany jest jeden, dwa lub cztery cykle maszynowe.

Każdy cykl maszyny ma sześć stanówS1 - S6, A każdy stan zawiera dwie fazyP1, P2, którego czas trwania jest okresem oscylacji generatora zegara T 0SC.

Czas trwania cyklu maszyny wynosi 12 T 0 SC. Wszystkie cykle maszyny są takie same, zaczynając od fazy S1P1 i kończąc na fazie S6P2.

Oprócz impulsów synchronizacyjnych, urządzenie synchronizujące w każdym cyklu maszyny generuje dwa (czasem jeden) sygnały strobujące z młodszego bajtu adresu ALE w postaci dodatniego impulsu w fazach S1P2 - S2P1 i S4P2 - S5P1. Diagramy czasowe na ryc. 7.1.5 ilustrują organizację cykli maszynowych;

● rejestr rozkazów RK, dekoder poleceńDC i PLM, pozwalające w każdym cyklu maszyny na utworzenie zestawu mikrooperacji zgodnie z mikroprogramem wykonywanego polecenia;

● logiczne I / O LVV do odbierania i wysyłania sygnałów zapewniających wymianę informacji MC z urządzeniami zewnętrznymi poprzez porty P0-P3;

● rejestr PCON z jednym włączonym bitem SMOD w pozycji PCON.7, aby podwoić prędkość transmisji portu szeregowego. Reszta bitów jest zarezerwowana do wykorzystania w przyszłości.
Generator adresów. Generator adresów (FA) lub licznik poleceń PC, zamierzonygenerowanie aktualnego 16-bitowego adresu pamięci programu i 8/16-bitowego adresu zewnętrznej pamięci danych. Obejmuje (rys.7.1.6):

● 16-bitowy buforB, który komunikuje się między 8-bitową magistralą danych SM a 16-bitową magistralą wewnętrzną (ID) generatora adresu;

● schemat inkrementacji SI do zwiększania wartości aktualnego adresu pamięci programu o jeden;

● rejestr do przechowywania aktualnego adresu komend PTA pochodzących z SI;

● Rejestr wskaźników danych DPTR , składający się z dwóch 8-bitowych rejestrów DPH i DPL. Służy do przechowywania 16-bitowego adresu zewnętrznej pamięci danych i może być używany jako dwa niezależne RON dostępne dla oprogramowania;

● rejestr generatora adresów XPA do przechowywania wykonawczego 16-bitowego adresu pamięci programu lub 8/16-bitowego adresu zewnętrznej pamięci danych. Rejestr ten służy również do przesyłania danych przez port P0 do urządzeń zewnętrznych podczas wykonywania poleceń MOVX @Rm, A i MOVX @DPRT, A.

Pamięć danych. Pamięć danych zamierzonydo przyjmowania, przechowywania i wydawania informacji wykorzystywanych w procesie wykonywania programu. Pamięć wewnętrzna (rezydentna) (rys. 7.1.7) na dane składa się z pamięci RAM o pojemności 128 bajtów, wskaźnik stosuSP, rejestr adresówRAM RA i dekoderDsh. Wskaźnik stosu SP to 8-bitowy rejestr używany do odbierania i przechowywania adresu komórki stosu, do której ostatnio uzyskano dostęp. Po zresetowaniu we wskaźniku stosu ustawiany jest adres 07H, który odpowiada początkowi stosu o adresie 08H. Rejestr adresu PA wraz z dekoderem Dsh umożliwia dostęp do wymaganej komórki pamięci zawierającej bajt lub bit informacji.

MK zapewnia możliwość zwiększenia ilości pamięci danych do 64 KB poprzez połączenie zewnętrzne urządzenia pamięci masowej.Jako przykład, rys. 7.1.8 przedstawia stronicowanie zewnętrznej pamięci danych FPD o pojemności 2K bajtów przy użyciu instrukcji typu MOVX @ Rm (m \u003d 0; 1). W tym przypadku port P0 działa jako multipleksowana magistrala adresowa / danych, trzy linie portu P2 służą do adresowania strony zewnętrznej pamięci RAM, a pozostałe pięć linii może służyć jako linie we / wy.
Na rys. 7.1.9 pokazuje wykresy czasowe cykli odczytu i zapisu, gdy MK pracuje z zewnętrzną pamięcią RAM. Diagramy wskazują:

● PCN - starszy bajt licznika poleceń komputera;

● DPL, DPH - niskie i wysokie bajty rejestru wskaźnika danych DPTR, który jest używany jako rejestr do adresowania pośredniego w instrukcjach MOVX @ DPTR, A i MOVX A, @ DPTR;

● P2 SFR - zatrzaski portu P2;

● Rm (m \u003d 0, 1) - rejestry używane w instrukcjach MOVX @Rm, A i MOVX A, @Rm jako rejestry adresów pośrednich;

● Z - stan wysokiej rezystancji;

● D - okres, w którym dane z portu P0 są wprowadzane do mikrokontrolera. Pamięć programu. Pamięć programu jest przeznaczona do przechowywania programów, posiada własną (niezależną od pamięci danych) przestrzeń adresową i jest dostępna tylko do odczytu. Zawiera dekoder DSh i ROM (rys. 7.1.10). 16-bitowy licznik PC służy do adresowania pamięci programu, więc jego maksymalna pojemność to 64 KB. Wewnętrzna pamięć programu składa się z 4-bajtowej pamięci ROM i 12-bitowego dekodera. Pamięć zewnętrzną podłącza się zgodnie ze schematem na ryc. 7.1.11. Jeżeli 0 V zostanie przyłożone do pinu ¯EA MK (jak pokazano na rys. 7.1.11), wewnętrzna pamięć programu jest wyłączona. Wszystkie dostępy do pamięci rozpoczynają się od adresu 0000h. Po podłączeniu pinu ¯EA do zasilania następuje automatyczny dostęp do wewnętrznej pamięci programów pod adresami 0000h - FFFFh oraz zewnętrznej pamięci programów pod adresami 0FFFh - FFFFh.

W celu odczytania pamięci zewnętrznej programów MK generowany jest sygnał ¯PSEN. Podczas pracy z pamięcią wewnętrzną sygnał odczytu nie jest używany. Podczas uzyskiwania dostępu do zewnętrznej pamięci programu zawsze tworzony jest 16-bitowy adres. Najmniej znaczący bajt adresu jest przesyłany przez port P0 w pierwszej połowie cyklu maszyny i jest ustalany na krawędzi strobu ALE w rejestrze.W drugiej połowie cyklu port P0 służy do wprowadzenia bajtu danych z pamięci zewnętrznej do MC.

Najbardziej znaczący bajt adresu jest przesyłany przez port P2 przez cały czas dostępu do pamięci.

Diagramy czasowe cykli odczytu i zapisu podczas pracy MC z zewnętrzną pamięcią RAM pokazano na rys. 7.1.12.
Diagramy wskazują:

● PCL OUT - wydanie młodszego bajtu licznika poleceń PC;

● РСН OUT - wydanie starszego bajtu licznika poleceń komputera;

● DPH - starszy bajt rejestru wskaźnika danych DPTR, który jest używany jako rejestr do adresowania pośredniego w instrukcjach MOVX @ DPTR, A i MOVX A, @ DPTR;

● P2 SFR - zatrzaski portu P2;

● INS IN - wpisanie bajtu instrukcji (polecenia) z pamięci programu;

● ADDR OUT - nadanie młodszego bajtu adresu zewnętrznej pamięci danych z rejestrów Rm (m \u003d 0, 1) lub z rejestru DPL (niski rejestr DPTR). Porty I / O. Przypisanie portu. Porty P0, P1, P2, P3 zamierzonydo wymiany informacji między MK a urządzeniami zewnętrznymi, a także do wykonywania następujących funkcji:

● młodszy bajt adresu A7 ... A0 jest wyprowadzany przez port P0; wyjście z MC i wprowadzenie do MC bajtów danych podczas pracy z zewnętrzną pamięcią programu i zewnętrzną pamięcią danych (z podziałem czasu);

● starszy bajt adresu A15… A8 jest wyprowadzany przez port P2 podczas pracy z zewnętrzną pamięcią programu i zewnętrzną pamięcią danych (tylko przy użyciu poleceń MOVX A, @ DPTR i MOVX @ DPTR, A);

● Linie portu P3 mogą być używane do wykonywania funkcji alternatywnych, jeśli w zatrzasku tej linii zostanie wpisane 1, w przeciwnym razie na wyjściu liniowym jest ustalone 0. Alternatywne funkcje wyjść portu P3 podano w tabeli. 7.1.3.

Schemat portów

Na rys. 7.1.13 pokazuje schematy dla jednego kanału każdego z portów MK, w tym:

● zatrzask do mocowania otrzymanego bitu danych;

● wzmacniacz wyjściowy kaskada(kierowca);

● węzeł łączy zstopień wyjściowy (z wyjątkiem P2);

● łańcuch do transmisji bitu danych od strony wyjścia portu, składający się z buforów B2 i B3 (dla portu P4). Zatrzask jest przerzutnikiem typu D, taktowanym wewnętrznym sygnałem „Write to latch”. Bit danych z bezpośredniego wyjścia przerzutnika D można odczytać w oprogramowaniu za pośrednictwem bufora B1 za pomocą sygnału „Read latch” na linii wewnętrznej magistrali danych (SD) MC.

Stopień wyjściowyport P0 to falownik, którego cechy przejawiają się w tym, że tranzystor obciążenia VT2 otwiera się tylko przy dostępie do pamięci zewnętrznej (podczas przesyłania adresów i danych przez port). We wszystkich innych trybach tranzystor obciążenia jest zamknięty. Dlatego, aby użyć P0 (Rys. 7.1.13, a) jako portu wyjściowego ogólnego przeznaczenia, zewnętrzne rezystory obciążenia muszą być podłączone do jego zacisków. Podczas wpisywania 1 do zatrzasku portu tranzystor inwertera VT1 jest blokowany, a wyjście zewnętrzne portu P0.X jest przenoszone do stanu wysokiej rezystancji. W tym trybie pin portu P0.X może służyć jako wejście. Jeśli P0 jest używany jako port I / O ogólnego przeznaczenia, każdy z jego styków P0.X może działać niezależnie od pozostałych jako wejście lub wyjście. Stopnie wyjścioweporty P1, P2, P3 (Rys. 7.1.13, b, c, d)wykonane według obwodów falownika z wewnętrznym rezystorem obciążenia, który jest używany jako tranzystor VT2.

Aby skrócić czas przełączania podczas przejścia wyjść portu ze stanu 0 do stanu 1, dodatkowy tranzystor VT3 jest wprowadzany równolegle z tranzystorem obciążającym VT2. Tranzystor VT3 za pomocą elementów w obwodzie bramki jest odblokowywany na czas równy dwóm okresom oscylacji głównego oscylatora kwarcowego (podczas faz S1P1, S2P2 cyklu maszyny). Stopnie wyjścioweporty P0, P2 (Rys. 7.1.13, A, c) za pomocą multipleksera MX można podłączyć zarówno do zatrzasków, jak i do szyn wewnętrznych „Adres / dane” i „Adres”. Stopień wyjściowy portu P1 (rys. 7.1.13, 6) jest na stałe połączony z zatrzaskiem.

Jeżeli pin portu P3 jest wyjściem, a jego zatrzask zawiera 1, to jego stopień wyjściowy jest sterowany sprzętowym sygnałem wewnętrznym „Alternatywna funkcja wyjściowa”, który zapewnia wykonanie odpowiedniej funkcji alternatywnej, tj. jeden z sygnałów ¯WR, ¯RD lub RxD jest generowany na zewnętrznym pinie. Jeśli pin portu jest używany jako wejście, to przychodzący do niego alternatywny sygnał (TxD, ¯INT0, ¯INT1, T0, T1) jest przesyłany do rozszerzenia „Alternative input function”.

Tryb zapisu portu.

Kiedy polecenie zapisu do portu jest wykonywane, nowa wartość jest zapisywana do zatrzasku w fazie S6P2 i wyprowadzana bezpośrednio na styk wyjściowy portu w fazie S1P1 następnego cyklu maszyny.

Tryb odczytu portu

Polecenia odczytu portu odczytują informacje bezpośrednio z zewnętrznych pinów pinów portu lub z wyjść zatrzasków. W pierwszym przypadku bit danych z wyjścia portu jest odczytywany programowo przez bufor B2 przez sygnał „Read pins” do linii wewnętrznej magistrali danych (SD) MC. Należy zauważyć, że sygnały „Zapisz do zatrzasku”, „Odczyt zatrzasku”, „Odczyt szpilek” są generowane przez sprzęt podczas wykonywania odpowiednich poleceń.

W drugim przypadku realizowany jest tak zwany tryb „Odczyt-Modyfikacja-Zapis”, w którym polecenie odczytuje sygnał stanu zatrzasku, modyfikuje go w razie potrzeby, a następnie zapisuje z powrotem do zatrzasku. Tryb „Odczyt-modyfikacja-zapis” jest realizowany, gdy wykonywane są następujące polecenia: ANL, ORL, XRL, JBC; CPL; INC; DEC; DJNC; MOV PX, Y; CLR PX.Y; SETB PX, Y.

Odczyt informacji z wyjść zatrzasków eliminuje błędy przy interpretacji poziomu logiki na pinie portu. Przeczytaj kontynuację artykułu w.

Intel jest prekursorem architektury rodziny MCS-51, która swoją nazwę wzięła od pierwszego przedstawiciela tej rodziny - mikrokontrolera 8051, wydanego w 1980 roku w oparciu o technologię n-MOS. Udany zestaw urządzeń peryferyjnych, elastyczny wybór zewnętrznej lub wewnętrznej pamięci programu oraz przystępna cena zapewniły temu mikrokontrolerowi sukces rynkowy. Z punktu widzenia technologii mikrokontroler 8051 był jak na swoje czasy bardzo złożonym produktem - w krysztale zastosowano 128 tysięcy tranzystorów, czyli 4 razy więcej niż liczba tranzystorów w 16-bitowym mikroprocesorze 8086. Ten mikrokontroler pozostaje rdzeniem rodziny MCS-51 do dziś.

Głównymi elementami podstawowej architektury rodziny (architektura mikrokontrolera 8051) są:

8-bitowe ALU;

4 banki rejestrów po 8 w każdym;

Wewnętrzna (rezydentna) pamięć programu 4 KB, posiadająca typ ROM lub EPROM (8751);

Wewnętrzna (rezydentna) pamięć danych 128 bajtów;

21 rejestr funkcji specjalnych;

Procesor boolowski;

Dwa 16-bitowe timery / liczniki;

Kontroler portu szeregowego (UART);

Kontroler przerwań z dwoma poziomami priorytetów;

Cztery 8-bitowe porty I / O, z których dwa służą jako magistrala adresowa / danych umożliwiająca dostęp do zewnętrznego programu i pamięci danych;

Wbudowany generator zegara.

Następnie wypuszczono mikrokontroler 8052, który wyróżniał się zwiększoną ilością rezydentnego programu i pamięci danych, wprowadzoną przez trzeci timer i odpowiednio rozszerzony kontroler przerwań.

Kolejnym fundamentalnym krokiem w rozwoju MCS-51 było przeniesienie technologii produkcji na CMOS (modyfikacja 8xC51). Umożliwiło to zaimplementowanie trybów Idl (bezczynny) i Power Down (zmniejszone zużycie), które zapewniają gwałtowny spadek zużycia energii przez kryształ i otworzyły drogę do wykorzystania mikrokontrolera w aplikacjach niestabilnych, na przykład w samodzielnych urządzeniach zasilanych bateryjnie.

Ostatnim ważnym etapem rozwoju MK 8051 przez Intela było wypuszczenie mikrokontrolerów 8xC51FA / FB / FC i 8xC51RA / RB / RC, które w skrócie są często nazywane 8xC51Fx i 8xC51Rx. Główną cechą wyróżniającą tę grupę kryształów jest to, że mają dedykowany zegar / licznik (PCA). Ponadto mikrokontrolery 8xC51Rx zawierają dodatkowo zegar watchdog (WDT). Przyjrzyjmy się bliżej architekturze i funkcjonalności PCA.

Umowa PCA obejmuje:

16-bitowy zegar / licznik;

Pięć 16-bitowych modułów próbkujących i porównujących, z których każdy jest powiązany z inną linią portu I / O mikrokontrolera.

Timer / licznik obsługuje wszystkie pięć modułów próbkowania i porównywania, które można zaprogramować do wykonywania jednej z następujących funkcji:

16-bitowe próbkowanie wartości timera na dodatnim zboczu sygnału zewnętrznego;

16-bitowe próbkowanie wartości timera na ujemnym zboczu sygnału zewnętrznego;

16-bitowe próbkowanie wartości timera na dowolnym zboczu sygnału zewnętrznego;

16-bitowy programowalny zegar;

16-bitowe szybkie urządzenie wyjściowe;

8-bitowy PWM.

Wszystkie te funkcje są wykonywane w PCA na poziomie sprzętowym i nie obciążają centralnego procesora. Pozwala to na zwiększenie ogólnej przepustowości, poprawę dokładności pomiarów i przetwarzania sygnałów oraz skrócenie czasu odpowiedzi mikrokontrolera na zdarzenia zewnętrzne, co jest szczególnie istotne w przypadku systemów czasu rzeczywistego. Okazało się, że PCA zaimplementowane w 8xC51Fx (8xC51Rx)

Przeznaczenie

Maks. częstotliwość (MHz)

ROM / EPROM (bajt)

liczniki

na szczęście architektura tych mikrokontrolerów stała się standardem przemysłowym, a sam PCA był wielokrotnie powielany w różnych modyfikacjach MK 8051.

Niektóre cechy wielu mikrokontrolerów MCS-51 produkowanych przez firmę Intel przedstawiono w tabeli 1.1.

Początkowe wąskie gardła architektury MCS-51 obejmowały 8-bitowe jednostki ALU oparte na baterii i stosunkowo powolne wykonywanie instrukcji (najszybsze instrukcje wymagały 12

Tabela 1.1

wejście wyjście

ADC, wejścia x bitów

obrzeże,

cechy

U pit. (W)

Opcja niskonapięciowa

4 poziomy IRQ, wyrejestrowanie

4 poziomy IRQ, wyrejestrowanie

Wersja niskonapięciowa 8xC51Fx

4 poziomy IRQ, wyrejestrowanie

4 poziomy IRQ, wyrejestrowanie

4 poziomy IRQ, wyrejestrowanie

częstotliwość zegara okresu (częstotliwość zegara MK)). Ograniczało to zastosowanie mikrokontrolerów z rodziny w aplikacjach wymagających zwiększonej wydajności i złożonych obliczeń (16- i 32-bitowych). Pilną kwestią była fundamentalna modernizacja architektury MCS-51. Problem modernizacji komplikował fakt, że na początku lat 90. powstało już wiele opracowań z zakresu oprogramowania i sprzętu z rodziny MCS-51, w związku z czym jednym z głównych zadań projektowania nowej architektury było wdrożenie kompatybilności sprzętowej i programowej z opracowaniami opartymi na MCS -51.

Aby rozwiązać ten problem, powstała wspólna grupa specjalistów z Intela i Philipsa, ale później drogi tych dwóch firm rozeszły się. W rezultacie w 1995 roku pojawiły się dwie znacząco różne rodziny: MCS-251/151 firmy Intel i MCS-51XA firmy Philips (patrz podrozdział 1.2).

Główne cechy architektury MCS-251:

24-bitowa liniowa przestrzeń adresowa do adresowania do 16 MB pamięci;

Architektura rejestrów, która umożliwia dostęp do rejestrów jako bajtów, słów i podwójnych słów;

Tryb adresowania stron, aby przyspieszyć pobieranie instrukcji z zewnętrznej pamięci programu;

Kolejka instrukcji;

Rozszerzony zestaw instrukcji, w tym 16-bitowe operacje arytmetyczne i logiczne;

Rozszerzona przestrzeń adresowa stosu (do 64 KB);

Wykonanie najszybszego polecenia w 2 cyklach zegara.

Zestaw instrukcji MCS-251 składa się z dwóch zestawów instrukcji - pierwszy zestaw jest kopią zestawu instrukcji MCS-51, a drugi składa się z rozszerzonych instrukcji wykorzystujących architekturę MCS-251. Przed użyciem mikrokontrolera należy go skonfigurować tj. z pomocą programatora „wypal” bity konfiguracyjne, które określają, który z zestawów instrukcji będzie aktywny po włączeniu zasilania. Jeśli zainstalujesz pierwszy zestaw instrukcji, to w tym przypadku rodzina MCS-251 będzie kompatybilna z MCS-51 na poziomie kodu binarnego. Ten tryb nazywa się trybem binarnym. Jeśli początkowo zainstalujesz zestaw rozszerzonych instrukcji (tryb źródłowy), wówczas programy napisane dla MCS-51 będą wymagały rekompilacji na krzyżowych dla MCS-251. Tryb Source umożliwia maksymalne wykorzystanie architektury MCS-251 i osiągnięcie najwyższej wydajności.

Dla użytkowników skoncentrowanych na używaniu mikrokontrolerów MCS-251 jako mechanicznego zamiennika MCS-51 firma Intel wypuszcza mikrokontrolery MCS-151, już zaprogramowane w trybie binarnym.

Niektóre cechy wielu mikrokontrolerów MCS-251/151 przedstawiono w tabeli 1.1.

Obecnie Intel, celując w rynek procesorów Pentium, wycofuje produkcję kryształów MCS-51. Generalnie dla konkretnego programisty może to pozostać niezauważone, chyba że korzysta on z mikrokontrolerów 8xC51GB i 80C152Jx, które nie mają swoich dokładnych odpowiedników wśród produktów innych firm. Jak w przypadku wszystkich innych mikrokontrolerów z rodziny MCS-51, wszystkie z nich były wielokrotnie replikowane przez inne firmy.

Obecnie różne firmy produkują wiele modyfikacji i analogów tej rodziny, zarówno przez Intel, jak i innych producentów, częstotliwość zegara i pojemność pamięci wzrosły dziesięciokrotnie i nadal rosną. Uzupełniany jest również zestaw modułów wbudowanych w LSI; duża liczba nowoczesnych modeli jest wyposażona w rezydentny szybki ADC, który ma do 12, a teraz może być więcej cyfr. Ale sercem rodziny MCS51 są BIS 8051, 80C51, 8751, 87C51, 8031, 80C31 firmy Intel, których pierwsze próbki zostały wydane w 1980 roku.

Mikrokontrolery z rodziny MCS51 wykonane są w wysokiej jakości technologii n-MOS (seria 8XXX, analogowa - seria 1816 w Rosji i na Białorusi) i k-MOS (seria 8ХСХХ, analogowa - seria 1830). Drugi znak po 8 oznacza: 0 - brak wbudowanej pamięci EPROM, 7 - 4K EPROM z wymazywaniem UV. Trzeci symbol: 3 - ROM zostanie skrystalizowany, 5 - jeśli nie ma EPROM, wówczas na chipie będzie ROM z maską.

I tak 80S51 - LSI według technologii k-MOS z zamaskowaną pamięcią ROM na chipie, 8031 \u200b\u200b- LSI n-MOS bez pamięci programu (ROM, EPROM) na chipie, 8751 - LSI n-MOS z rezydentnym (umieszczonym na chipie) EPROM z wymazywanie ultrafioletu. Będziemy dalej rozważać LSI 8751, robiąc, jeśli to konieczne, zastrzeżenia co do różnic w innych obwodach, podając te parametry, które zostały opublikowane dla pierwszego szeregowego LSI. W razie potrzeby dodatkowe informacje o wszystkich nowoczesnych modyfikacjach można znaleźć w instrukcjach firmy i dokumentacji technicznej.

A. Ogólna charakterystyka i przypisanie pinów

Rodzina MCS51 oparta jest na pięciu modyfikacjach MK (o identycznych podstawowych cechach), między którymi główną różnicą jest implementacja pamięci programu i pobór mocy (patrz Tabela 3.1). Mikrokontener jest ośmiobitowy, tj. posiada polecenia do przetwarzania ośmiobitowych słów, ma architekturę Harvardu, częstotliwość taktowania podstawowych próbek z rodziny wynosi 12 MHz.

Tabela 3.1.

Mikroukłady

Wewnętrzna pamięć programu, bajty

Typ pamięci programu

Wewnętrzna pamięć danych, bajty

Częstotliwość taktowania, MHz

Pobór prądu, mA

MK 8051 i 80C51 zawierają programowalną przez maskę pamięć ROM pamięci programu o pojemności 4096 bajtów podczas produkcji kryształu i są przeznaczone do użytku w produkcji masowej. MK 8751 zawiera EPROM o pojemności 4096 bajtów z wymazywaniem ultrafioletu i jest wygodny na etapie rozwoju systemu podczas debugowania programów, a także podczas produkcji w małych partiach lub podczas tworzenia systemów wymagających ponownego

okresowa regulacja.

MK 8031 \u200b\u200bi 80C31 nie zawierają wbudowanej pamięci programu. Podobnie jak poprzednio opisane modyfikacje, mogą wykorzystywać do 64 KB zewnętrznej pamięci programu i mogą być efektywnie wykorzystywane w systemach wymagających znacznie większej (niż 4 KB na chipie) pamięci programowej.

Każdy MCU z rodziny zawiera rezydentną pamięć danych o pojemności 128 bajtów z możliwością rozszerzenia całkowitej ilości danych RAM do 64 kB poprzez wykorzystanie zewnętrznej pamięci IC RAM.

    centralny ośmiobitowy procesor;

    4 KB pamięci programu (tylko 8751 i 87C51);

    128 bajtowa pamięć danych;

    cztery ośmiobitowe programowalne porty I / O;

    dwa 16-bitowe liczniki / liczniki wielomodowe;

    system przerwań auto-wektorów z pięcioma wektorami i dwoma sterowanymi programowo poziomami priorytetów;

    interfejs szeregowy zawierający uniwersalny dupleksowy nadajnik-odbiornik zdolny do pracy w czterech trybach;

    generator zegara.

System poleceń MK zawiera 111 podstawowych poleceń w formacie 1, 2 lub 3 bajty. Mikrokontroler posiada:

    32 rejestry ogólnego przeznaczenia RON, zorganizowane jako cztery banki po osiem rejestrów każdy o nazwach R0 ... R7, wybór konkretnego banku jest określany przez program poprzez ustawienie odpowiednich bitów w rejestrze statusu programu PSW;

    128 flag kontrolowanych programowo (procesor bitowy, patrz poniżej);

    zbiór rejestrów funkcji specjalnych sterujących elementami MK. Istnieją następujące tryby pracy mikrokontrolera:

1). Reset ogólny. 2) Normalne funkcjonowanie. 3) Tryb niskiego poboru mocy i tryb bezczynności. 4). Tryb programowania rezydentnej pamięci EPROM, jeśli istnieje.

Tutaj skupimy się na pierwszych dwóch trybach działania, szczegółowy opis składu i działania MC we wszystkich trybach podano w dodatku A1.

RON i strefa procesora bitowego znajdują się w przestrzeni adresowej rezydentnej pamięci RAM o adresach od 0 do 80h.

W górnej strefie adresów rezydentnej pamięci o dostępie swobodnym znajdują się rejestry funkcji specjalnych (SFR, Special Function Registers). Ich przeznaczenie podano w tabeli. 3.2.

Tabela 3.2.

Przeznaczenie

Imię

Bateria

Zarejestruj B

Rejestr statusu programu

Wskaźnik stosu

Wskaźnik danych. 2 bajty:

Najmniej znaczący bajt

Starszy bajt

Rejestr priorytetów przerwań

Rejestr włączania przerwania

Rejestr trybu timera / licznika

Rejestr sterowania timerem / licznikiem

Timer / licznik 0. Starszy bajt

Timer / licznik 0. Młodszy bajt

Timer / licznik 1. Starszy bajt

Timer / licznik 1. Młodszy bajt

Kontrola portu szeregowego

Bufor portu szeregowego

Zarządzanie zużyciem

* - rejestry, przyznać bitowe adresowanie

Przyjrzyjmy się pokrótce funkcjom rejestrów SFR przedstawionych w tabeli 3.2.

Bateria ACC - rejestr baterii. Polecenia zaprojektowane do działania

jeśli masz baterię, użyj mnemonika „A”, na przykład MOV I, P2 ... Mnemonik „ACC” jest używany na przykład do bitowego adresowania baterii. Tak więc symboliczna nazwa piątego bitu akumulatora podczas korzystania z asemblera A5M51 będzie wyglądać następująco: ACC. pięć. .

Zarejestrować W ... Używany podczas operacji mnożenia i dzielenia. W przypadku innych instrukcji rejestr B można uznać za dodatkowy rejestr superoperacyjny.

Zarejestrować fortuny programy PSW zawiera informacje o stanie programu i jest instalowany częściowo automatycznie na podstawie wyniku wykonanej operacji, częściowo przez użytkownika. Oznaczenia i przeznaczenie bitów rejestru podano odpowiednio w tabelach 3.3 i 3.4.

Tabela 3.3.

Przeznaczenie

Tabela 3.4.

Przeznaczenie

Przypisanie bitów

Dostęp do bitu

Noś flagę. Zmiany podczas wykonywania serii instrukcji arytmetycznych i logicznych.

Sprzęt lub oprogramowanie

Dodatkowa flaga do przenoszenia. Sprzęt ustawiony / wyczyszczony podczas instrukcji dodawania lub odejmowania w celu wskazania przeniesienia lub pożyczki w bicie 3, gdy generowany jest najmniej znaczący półbajt wyniku (D0-D3).

Sprzęt lub oprogramowanie

Flaga 0. Flaga zdefiniowana przez użytkownika.

Programowo

Programowo

Wskaźnik banku rejestru pracy

Programowo

Bank 0 z adresami (00H - 07H) Bank 1 z adresami (08H - 0FH) Bank 2 z adresami (10H - 17H) Bank 3 z adresami (18H - 1FH)

Flaga przepełnienia. Sprzęt jest ustawiany lub czyszczony podczas wykonywania instrukcji arytmetycznych w celu wskazania stanu przepełnienia

Sprzęt lub oprogramowanie

Zapasowy. Zawiera wyzwalacz odczytu / zapisu, którego można użyć

Bit parzystości. Sprzęt wyczyszczony lub ustawiony w każdym cyklu instrukcji, aby wskazać parzystą lub nieparzystą liczbę bitów baterii w stanie „1”.

Sprzęt lub oprogramowanie

Wskaźnik stos SP - Rejestr 8-bitowy, którego zawartość jest zwiększana przed zapisaniem danych na stosie podczas wykonywania poleceń PUSH i CALL. Podczas początkowego resetowania wskaźnik stosu jest ustawiany na 07H, a obszar stosu w pamięci RAM zaczyna się od 08H. Jeśli to konieczne, ponownie definiując wskaźnik stosu, obszar stosu można umieścić w dowolnym miejscu wewnętrznej pamięci RAM mikrokontrolerów.

Wskaźnik dane DPTR składa się z starszego bajtu (DPH) i młodszego bajtu

(DPL). Zawiera 16-bitowy adres podczas uzyskiwania dostępu do pamięci zewnętrznej. Może być użyty

być zapisane jako rejestr 16-bitowy lub jako dwa niezależne rejestry ośmiobitowe.

Port0 - PortZ. Oddzielne bity rejestrów funkcji specjalnych P0, P1, P2, P3 to bity - „zatrzaski” portów P0, P1, P2, P3.

Bufor zgodny port SBUF to dwa oddzielne rejestry: bufor nadajnika i bufor odbiornika. Kiedy dane są zapisywane do SBUF, wchodzą one do bufora nadajnika i zapisując bajt do SBUF automatycznie inicjuje ich transmisję przez port szeregowy. Kiedy dane są odczytywane z SBUF, są pobierane z bufora odbiornika.

Rejestry regulator czasowy. Zarejestruj pary (TH0, TL0) i (TH1, TL1) tworzą 16-

rejestry zliczające bitów odpowiednio dla timera / licznika 0 i timera / licznika 1.

Rejestry zarządzanie. Rejestry funkcji specjalnych IP, IE, TMOD, TCON, SCON i PCON zawierają bity sterujące i bity stanu systemu przerwań, timer

mierniki / liczniki i port szeregowy. Zostaną one szczegółowo omówione poniżej.

RxD TxD INT0 INT1 T0 T1 WR

P1.2 P1.3 P1.4 P1.5 P1.6 P1.7

RST BQ2 BQ1 EA

P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7

P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7

P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7

MK podczas pracy zapewnia:

    minimalny czas wykonania poleceń dodawania to 1 μs;

    mnożenie i dzielenie sprzętowe z minimalnym czasem wykonania 4 μs.

MK zapewnia możliwość ustawienia częstotliwości wewnętrznego generatora za pomocą kwarcu, łańcucha LC lub generatora zewnętrznego.

Rozszerzony system instrukcji zapewnia adresowanie bajtowe i bitowe, arytmetykę binarną i binarno-dziesiętną, wskazanie przepełnienia i parzystość / nieparzystość oraz możliwość implementacji procesora logicznego.

Najważniejszą i charakterystyczną cechą architektury rodziny MCS51 jest to, że ALU może manipulować danymi jednobitowymi oprócz wykonywania operacji na 8-bitowych typach danych. Poszczególne bity dostępne dla oprogramowania mogą być ustawiane, kasowane lub zastępowane przez ich uzupełnienie, mogą być wysyłane, sprawdzane i

Rysunek 3.2. Wnioski zewnętrzne

mikrokontroler

używane w obliczeniach logicznych. Natomiast obsługa prostych typów danych (z istniejącym

tendencja do zwiększania długości słowa) może na pierwszy rzut oka wydawać się krokiem wstecz, ta jakość sprawia, że \u200b\u200bmikrokontrolery MCS51 są szczególnie odpowiednie do zastosowań wykorzystujących kontrolery. Algorytmy tych ostatnich na swój sposób zakładają obecność wejściowych i wyjściowych zmiennych boolowskich, które są trudne do zaimplementowania przy użyciu standardowych mikroprocesorów. Wszystkie te właściwości są zbiorczo określane jako rodzina procesorów Boolean MCS51. Dzięki tak potężnej jednostce ALU rodzina instrukcji MCS51 jest równie dobrze dostosowana do aplikacji sterowania w czasie rzeczywistym i algorytmów intensywnie wykorzystujących dane.

Schemat ideowy mikrokontrolera pokazano na rys. 3.2. W wersji podstawowej jest zapakowany w 40-pinową obudowę DIP. Rozważmy cel wniosków.

Zacznijmy od pinów zasilania «0 W" i "pięć W" , na którym otrzymuje główne jedzenie. Pobór prądu podano w tabeli. 3.1.

Wynik „RST” - reset mikrokontrolera. Gdy do tego kołka zostanie zastosowany aktywny wysoki poziom, tryb generał rozładować się a MK wykonuje następujące czynności:

Ustawia licznik poleceń PC i wszystkie rejestry funkcji specjalnych, z wyjątkiem zatrzasków portów P0-P3, wskaźnika stosu SP i rejestru SBUF, na zero;

    wskaźnik stosu jest ustawiony na 07H;

    wyłącza wszystkie źródła przerwań, liczniki timerów i sekwencję

    wybiera BANK 0 RAM, przygotowuje porty P0-P3 do odbioru danych i określa

oddziela piny ALE i PME jako wejścia do zewnętrznej synchronizacji;

      w rejestrach funkcji specjalnych PCON, IP i IE, wolne bity są losowe, a wszystkie inne bity są ustawiane na zero;

      rejestr SBUF jest ustawiany na wartości losowe.

      ustawia zatrzaski-zatrzaski portów P0-P3 na „1”.

Stany rejestrów mikrokontrolera po resecie przedstawia tabela 3.5.

Tabela 3.5.

Informacja

Nieokreślony

0ХХХ0000В dla k-MOS 0XXXXXXXB dla n-MOS

Kołek RST ma również alternatywną funkcję. Dzięki niemu dostarczane jest zasilanie awaryjne, aby zawartość pamięci RAM mikrokontrolera pozostała niezmieniona po wyjęciu głównej.

wnioski BQ1, BQ2 są przeznaczone do podłączenia rezonatora kwarcowego, który określa częstotliwość taktowania MK.

Wynik EA " (mi xternal ZA sukienka zewnętrzny adres) - ma za zadanie uaktywnić tryb odczytu kodów sterujących z zewnętrznej pamięci programu w przypadku podania na to wyjście aktywnego niskiego poziomu. Kołek ma alternatywne przeznaczenie (funkcję). Zasilany jest napięciem programowania pamięci EPROM w trybie programowania.

Wynik PME (P. rogram M emory mi nable rozkład pamięć programy) - służy do sterowania cyklem odczytu z pamięci programu i jest automatycznie uruchamiany przez MC w każdym cyklu maszyny.

Wynik Ale (ZA sukienka L ength mi nable rozkład junior adresy) miga na wyjściu dolnej części adresu na porcie P0. Wyjście jest również używane podczas programowania pamięci EPROM, gdy jest do niej dostarczany impuls stroboskopowy.

MK zawiera cztery grupy portów: P0, P1, P2 i P3. To pozostałe 40 pinów mikrokontrolera. Porty te mogą służyć do przekazywania informacji we / wy bit po bicie, ale poza tym każdy z nich ma swoją własną specjalizację. Uogólniony schemat funkcjonalny portu przedstawiono na rys. 3.3. Port zawiera wyjściowe przełączniki FET podłączone do pinu, przełącznik funkcji, zatrzask przerzutnika typu D i logikę sterującą. Zatrzask na wewnętrznej magistrali MK można zapisać jako jeden lub zero. Ta informacja przechodzi przez przełącznik funkcji do klawiszy wyjściowych i wyjścia MK. W stanie jeden oba tranzystory N i N1 są wyłączone, ale N2 jest włączony. W stanie zerowym N otwiera się

xia i N2 zamykają się. W momencie, gdy port wykonuje alternatywną funkcję, do której jest wyspecjalizowany, stan pinu jest zwalniany. Mikrokontroler może osobno odczytać stan zatrzasku portu oraz stan jego wyjścia ustawiany sygnałem zewnętrznym. Do tego w asemblerze MK są specjalne polecenia, które aktywują odpowiednie linie. Aby odczytać stan pinów, odpowiedni zatrzask portu musi

być wstępnie nagrane

Z wewnętrznego

Kontrola zatrzasku

Selektor funkcji

Vcc

Weekend

jednostka. Gdy linia „read latch” jest aktywowana na wyjściu komórki „AND”, do której ta linia jest podłączona, rozszerzenie

to męczy MK D Q

Zatrzask napisz C Q

Czytanie zatrzasku

Pin portu

stan zatrzasku, który jest zasilany na magistralę wewnętrzną MC, jest aktywowany, gdy

„Read pin” - stan pinu portu zewnętrznego.

Port P0 - uniwersalny port dwukierunkowy

wejście wyjście. Za tym portem

funkcja organizowania magistrali adresowych i

Figa. 3.3. Schemat funkcjonalny portu mikrokontrolera

dane do rozszerzenia pamięci programu i pamięci danych

mikrokontroler. W przypadku dostępu do zewnętrznej pamięci programu lub wykonania polecenia dostępu do zewnętrznej pamięci danych dolna część adresu (A0 ... A7) jest ustawiana na pinach portu, która jest bramkowana wysoko na pinie ALE. Następnie przy zapisie do pamięci danych, zarejestrowane informacje z wewnętrznej szyny MC podawane są na wyprowadzenia portu P0. Natomiast w operacjach odczytu informacje z pinów portu trafiają do magistrali wewnętrznej. Cechą portu P0 jest brak tranzystora „pull-up” N2, który dostarcza moc na wyjście. Zapis do zatrzasku portu jednostki po prostu wprowadza go w stan wysokiej impedancji, który jest niezbędny do normalnej pracy magistrali danych. W przypadku konieczności zasilania jakichkolwiek urządzeń zewnętrznych przez wyjście, należy zapewnić zewnętrzne rezystory z obwodów zasilacza do wyjścia portu.

Port Р1 - uniwersalny dwukierunkowy port I / O bez alternatywnych funkcji.

Port P2 - uniwersalny dwukierunkowy port I / O, jako alternatywna funkcja, realizujący nadawanie starszej części adresu (A8 ... A15) podczas dostępu do pamięci zewnętrznej.

Port P3 - uniwersalny dwukierunkowy port wejścia-wyjścia, którego każdy bit zapewnia realizację różnych alternatywnych funkcji. W tym przypadku funkcje alternatywne są realizowane tylko wtedy, gdy jednostki są zapisywane do zatrzasków portu, w przeciwnym razie wykonywanie funkcji alternatywnych jest blokowane. Wymieńmy je osobno dla każdego bitu:

P3.0 RxD (Read e Xternal rezjadłem, odczytaj dane zewnętrzne) - wejście wbudowanego transceivera szeregowego

P3.1 TxD (Type e Xternal rezjadł, transmituj dane zewnętrzne) - wyjście wbudowanego transceivera szeregowego.

P3.2 INT0` (INTerrupt, breaking) - wejście przerwania zewnętrznego 0.

P3.3 INT1 " - wejście zewnętrznego przerwania 1.

P3.4 C / T0 - wejście zerowego wbudowanego timera / licznika.

P3.5 C / T1 - wejście pierwszego wbudowanego timera / licznika.

P3.6 WR` (Write, write) - steruje wyjściem cyklu zapisu do pamięci danych.

P3.7 RD " (Read, read) - steruje wyjściem cyklu odczytu z pamięci danych.

Piny portów P1, P2 i P3 są w stanie dostarczyć prąd o wartości około 0,2 mA w jednej jednostce i odebrać prąd o wartości 3 mA przy zerze, styki portu P0 są mocniejsze i mogą dostarczyć prąd o wartości około 0,8 mA na jednostkę i odbierać prąd o wartości 5 mA przy zera. Krótkie informacje o przeznaczeniu pinów mikrokontrolera podano w tabeli 3.6.

Tabela 3.6.

Przeznaczenie

Przydzielenie pinu

8-bitowy dwukierunkowy port P1. Wejście adresu A0-A7 podczas sprawdzania wewnętrznej pamięci ROM (EPROM)

wejście wyjście

Ogólny sygnał resetowania. Wyjście zapasowego zasilania RAM ze źródła zewnętrznego (dla 1816)

8-bitowy dwukierunkowy port P3 z dodatkowymi funkcjami

wejście wyjście

Dane szeregowe odbiornika - RxD

Dane szeregowe nadajnika - TxD

Wejście zewnętrznego przerwania 0- INT0`

Wejście zewnętrznego przerwania 1-INT1`

Wejście timera / licznika 0: - T0

Wejście timera / licznika 1: - T1

Wyjście sygnału strobującego przy zapisie do zewnętrznej pamięci danych: - WR`

Wyjście sygnału stroboskopowego przy odczycie z zewnętrznej pamięci danych - RD`

Wyprowadzenia do podłączenia rezonatora kwarcowego.

wyjście wyjście

Wniosek ogólny

8-bitowy dwukierunkowy port P2. Adres wyjścia A8-A15 w trybie pracy z pamięcią zewnętrzną. W trybie sprawdzania wewnętrznej pamięci ROM piny P2.0 - P2.6 służą jako wejście adresu A8-A14. Wniosek P2.7 - zezwolenie na odczyt ROM.

wejście wyjście

Rozdzielczość pamięci programu

Sygnał wyjściowy zezwalający na blokowanie adresu. Podczas programowania sygnału EPROM: PROG

wejście wyjście

Blokowanie pracy z pamięcią wewnętrzną. Podczas programowania pamięci EPROM podawany jest sygnał UPR

wejście wyjście

8-bitowy dwukierunkowy port P0. Magistrala adresowa / danych do pracy z pamięcią zewnętrzną. Wyjście danych D7-D0 w trybie sprawdzania wewnętrznej pamięci ROM (EPROM).

wejście wyjście

Moc wyjściowa ze źródła napięcia + 5V

Stan systemu przerwań jest odpytywany na końcu każdego cyklu maszyny w fazie S5P2, z wyjątkiem poleceń RETI i wszelkich poleceń odnoszących się do rejestrów IE i IP. Od momentu ustalenia żądania przerwania do obsługi przerwania mija od 38 do 86 okresów częstotliwości fOSC, w zależności od fazy żądania i liczby cykli maszynowych rozkazu, podczas którego odebrano żądanie.

Gdy przerwanie jest implementowane sprzętowo, wykonywana jest instrukcja LCALL addr16, która zapewnia, że \u200b\u200baktualny stan licznika programowego jest przechowywany na stosie (zapamiętanie adresu zwrotnego) oraz przejście do początkowego adresu adr16 odpowiedniej procedury serwisowej. Każde źródło żądania przerwania ma swoje własne

adres początkowy (wektor przerwania):

Przerwanie zewnętrzne INT0.

Zegar / licznik przerwania TC0.

Przerwanie zewnętrzne INT1.

Zegar / licznik przerwania TC1.

Przerwanie portu szeregowego.

2.7. Metody adresowania i system poleceń rodziny MCS-51

System dowodzenia rodziny MCS-51 koncentruje się na organizowaniu elastycznego wprowadzania i wyprowadzania danych przez uniwersalne porty P0 ... P3 i przetwarzaniu podstawowych informacji. Szczególną uwagę zwraca się na operacje na bitach i przekazywanie kontroli według ich wartości. Instrukcje wykonujące takie operacje stanowią dużą grupę i razem z odpowiednim sprzętem tworzą tzw. „Procesor boolowski” w architekturze MCS-51.

Zestaw instrukcji zapewnia programiście możliwość korzystania z większości operacji z pełnym zestawem metod adresowania i dostępnymi programowo zasobami sprzętowymi.

2.7.1. Metody adresowania

Każda instrukcja mówi procesorowi o operacji do wykonania i metodach dostępu do operandów. Kod polecenia ma kilka pól, które mają określoną funkcjonalność. Najważniejszymi polami każdego polecenia są kod operacji (CPC), który określa działanie polecenia, oraz część adresowa. Pola części adresowej zawierają informacje o adresach operandów i wyniku operacji, aw niektórych przypadkach informacje o adresie następnego polecenia.

Jeśli adres wskazuje na numer komórki pamięci, w której znajduje się operand lub gdzie jest zapisany, wówczas nazywa się to adresem bezpośrednim.

Metody adresowania to zbiór mechanizmów dostępu do operandów. Niektóre z nich są proste, prowadzą do zwartego formatu instrukcji i szybkiego dostępu do operandu, ale mają ograniczoną ilość dostępnych zasobów. Inne pozwalają operować wszystkimi dostępnymi w systemie zasobami, ale komenda okazuje się długa

wprowadzanie i wykonywanie jest czasochłonne. Zestaw metod adresowania w każdym zestawie instrukcji jest kompromisową kombinacją znanych mechanizmów adresowania, wybranych przez architektów na podstawie zestawu zadań do rozwiązania.

Poniżej przedstawiono główne metody adresowania używane w poleceniach z rodziny MCS-51.

Niejawne adresowanie... Polecenie nie zawiera jawnych instrukcji dotyczących adresu operandu uczestniczącego w operacji ani adresu, pod którym umieszczony jest wynik operacji, ale ten adres jest implikowany. W poleceniach akumulator jest najczęściej adresowany niejawnie jako odbiorca wyniku operacji. Na przykład wynik dodania zawartości akumulatora (A) i rejestru R1 bieżącej bazy danych z instrukcją ADD A, R1 jest zapisywany do niejawnie adresowalnego akumulatora. Całe podane polecenie zajmuje jeden bajt w pamięci, podczas gdy adres samego akumulatora (8Eh obszaru SFR) zawiera jeden bajt.

Adresowanie bezpośrednie... Pole adresu polecenia zawiera

nie jest to adres operandu, ale sam operand. Adresowanie bezpośrednie jest oznaczone specjalnym znakiem # przed numerem. Na przykład komendą MOV A, # 15h liczba szesnastkowa 15 (drugi bajt komendy) jest ładowana do akumulatora. W systemie poleceń adresowanie bezpośrednie jest oznaczone jako #data, gdzie dane to liczba

(dane \u003d 00h ... FFh).

Adresowanie bezpośrednie... Pole adresu polecenia wskazuje bezpośredni adres komórki pamięci danych, w której znajduje się operand lub gdzie jest zapisany. Np. Poleceniem MOV A, 15h ładuje się do akumulatora zawartość komórki DSEG o adresie 15h. Komórka pamięci jest bezpośrednio adresowalna, a akumulator jest niejawny. W zależności od lokalizacji adresowanego argumentu, adresowanie bezpośrednie jest podzielone na rejestr bezpośredni i bezwzględny.

Bezpośrednie adresowanie rejestru... Pole adresu polecenia zawiera bezpośredni adres rejestru aktualnego banku rejestrów. W każdym banku jest osiem rejestrów, a do ich zaadresowania wymagany jest trzybitowy adres przekierowania. W mnemoniku poleceń rejestr adresowalny jest oznaczony jako Rn, gdzie n \u003d 0 ... 7. Wszystkie pola poleceń mieszczą się w jednym bajcie. To adresowanie nazywa się krótkim. Na przykład MOV R4, R1.

Bezpośrednie adresowanie bezwzględneumożliwia odniesienie się do dowolnej komórki DSEG i obszaru SFR. Adres bezpośredni w tym przypadku zajmuje jeden bajt, a polecenie - dwa bajty. W systemie poleceń bajt adresu bezpośredniego jest oznaczony słowem direct (direct \u003d 00h… FFh). Na przykład instrukcja MOV 80h, R2 (lub MOV P0, R2) ładuje zawartość rejestru R2 aktualnego banku danych do portu P0 (lokalizacja 80h obszaru SFR). Jeśli oba operandy mają bezpośrednie adresowanie bezwzględne, to instrukcja staje się 3-bajtowa (np. MOV 80h, 15h).

Adresowanie pośrednie... Pole adresu wskazuje adres komórki pamięci, w której znajduje się bezpośredni adres argumentu. W systemie poleceń specjalny symbol @ oznacza adresowanie pośrednie. własność

rejestry R0 i R1 (@Ri, i \u003d 0,1) każdego banku rejestrów mają adres bezpośredni. Przykładowo, jeśli zawartość rejestru R1 aktualnego banku rejestrów wynosi 15h, to instrukcja MOV A, @ R1 wykona tę samą akcję, co powyższa instrukcja MOV A, 15h - załaduje zawartość komórki pamięci DSEG 15h do akumulatora. Jednak instrukcja MOV A, @ R1 jest jednobajtowa, ale co najważniejsze, możliwa jest programowa zmiana adresu poprzez zmianę zawartości rejestru R1.

Względne adresowanie... W przypadku adresowania względnego adres bezpośredni jest tworzony przez dodanie adresu bazowego w polu adresu polecenia. Zawartość licznika programu jest używana jako adres bazowy, a pole adresu polecenia to ośmiobitowe przesunięcie rel (względne). Numer rel jest interpretowany przez polecenie jako liczba całkowita ze znakiem, reprezentowana w uzupełnieniu do dwóch. Zakres jego prezentacji to (-128 ... + 127). Określając numer rel, należy pamiętać, że licznik programu wskazuje na następne polecenie do wykonania. Adresowanie względne jest szeroko stosowane w instrukcjach przesyłania sterowania do tworzenia relokowalnych modułów programu. Polecenia transferu sterowania z adresowaniem względnym pozwalają na organizowanie rozgałęzień względem aktualnej pozycji licznika programu PC w obu kierunkach o (-128 ... + 127) bajtów.

W programach w języku asemblerowym, pole przesunięcia może być użyte do określenia etykiety, do której należy przeskoczyć. W wyniku tłumaczenia asembler obliczy wartość przesunięcia, jeśli nie przekroczy (-128 ... + 127). W przeciwnym razie zostanie wyświetlony komunikat o błędzie.

Podstawowe adresowaniereprezentuje rodzaj adresowania względnego. W tym przypadku adres bezpośredni tworzony jest poprzez dodanie adresu podanego w poleceniu do zawartości rejestru bazowego, w którym przechowywany jest adres bazowy. Funkcją rejestru podstawowego w rodzinie MCS-51 jest rejestr wskaźników danych DPTR lub licznik programu PC. Ten typ adresowania jest szczególnie przydatny podczas przetwarzania tabel i tablic danych. W instrukcjach MOVC A, @ A + DPTR i MOVC A, @ A + PC, 16-bitowy adres do przodu jest tworzony jako suma zawartości DPTR i A lub PC i A.

Adresowanie stron... Podczas stronicowania pamięć jest dzielona na szereg stron o równej długości. Adresowanie stron jest realizowane przez oddzielny rejestr stronicowania, a adresowanie komórek pamięci w obrębie strony odbywa się poprzez adres zawarty w poleceniu. Adres bezpośredni jest tworzony przez konkatenację (dołączanie) adresu strony i adresu komórki pamięci w obrębie strony. W instrukcji MOVX A, @ Ri, port P2 (starszy bajt adresu) pełni funkcję rejestru strony, a zawartość rejestru Ri (młodszy bajt adresu) ustawia adres w obrębie strony. W tym przypadku pamięć jest podzielona na 256 stron po 256 komórek w każdej z nich.

Adresowanie stosujest używany w poleceniach nieadresowalnych i jest połączeniem metod adresowania z automatyczną inkrementacją i autodekrementacją, działającymi na zasadzie LIFO (Wejście pierwsze - pierwsze wyjście) - „ostatnie wejście - pierwsze wyjście”. Stos znajduje się w DSEG i rośnie w kierunku rosnącego adresu. Adres wierzchołka stosu jest zawarty we wskaźniku stosu SP. Kiedy bajt jest zapisywany na stosie, zawartość SP jest najpierw zwiększana, a następnie następuje zapis na ten adres. Czytając bajt ze stosu, najpierw czyta pod adres wskazany przez SP, a następnie zmniejsza SP. Korzystając ze stosu, należy pamiętać, że głębokość stosu (maksymalna liczba komórek pamięci zajmowanych przez stos) nie jest kontrolowana przez sprzęt. Przy nadmiernym wzroście stosu komórki pamięci, które nie są do niego przeznaczone, mogą zostać zajęte utratą zawartych w nich informacji. Stos sprzętowy jest używany do przechowywania adresu zwrotnego podczas obsługi przerwania.

2.7.2. Zestaw poleceń rodziny MCS-51

System poleceń przedstawiono w tabelach A2.1 ... A2.6 Załącznika 2. W tabelach podano nazwę polecenia, jego mnemonik, kod operacji binarnej, wpływ wykonywanego polecenia na flagi C, OV, AC i P, długość polecenia w bajtach (B) oraz czas wykonania w cyklach maszynowych (C), a także treść transformacji wykonywanej przez instrukcję. Przecinek jest używany jako separator pól adresu w poleceniach. Aby poprawić czytelność, możesz dodać spacje po przecinku, jeśli używany asembler je obsługuje.

Cały zestaw poleceń można podzielić na 5 grup: operacje przesyłania danych, operacje arytmetyczne, operacje logiczne, operacje bitowe i operacje przesyłania sterującego.

Grupa poleceń do operacji przesyłania danych(tabela A2.1) co

przechowuje komendy MOV (przesyłanie danych między DSEG i RSEG), MOVC (między CSEG i A), MOVX (między XSEG i A), polecenia dostępu do stosu PUSH i POP oraz dwa polecenia wymiany XCH i XCHD. Wszystkie polecenia transmisji danych, w których odbiornikiem jest bateria, ustawiają flagę parzystości P zawartości baterii, a bezpośrednie polecenia adresowe, w których rejestr PSW jest odbiornikiem, zmieniają wszystkie flagi. Najbardziej pojemna jest instrukcja MOV, która wykorzystuje cztery metody adresowania: register direct (A, Rn, DPTR), direct (direct), pośredni (@Ri), direct (#data, # data16). Drugim operandem instrukcji jest źródło, pierwszy to cel. Istnieją trzy metody adresowania (z wyjątkiem bezpośredniej) wskazujące miejsce docelowe i wszystkie cztery metody wskazania źródła. Trzy bajtowe bezpośrednie, bezpośrednie polecenie MOV zapewnia transfer między dowolnymi dwoma lokalizacjami pamięci (DSEG i SFR), w tym RSEG. Do wymiany z RSEG dostępne są specjalne formaty dwu- i jednobajtowe:

Specjalna instrukcja MOV DPTR, # data16, ładuje 16-bitowy wskaźnik DPTR danymi 16.

Instrukcja MOVC pozwala na odczytanie informacji z pamięci programu CSEG nie do rejestru rozkazów urządzenia sterującego, ale do baterii urządzenia sterującego. Polecenie używa dwóch metod adresowania: w oparciu o DPTR i względem komputera. W obu przypadkach przesunięcie w postaci liczby całkowitej bez znaku (indeks) jest przechowywane w akumulatorze. Akumulator służy również jako odbiornik wyniku. Polecenie pozwala na szybką konwersję tabel.

Dostęp do pamięci zewnętrznej uzyskuje się za pomocą instrukcji MOVX. Wymiana jest wykonywana bajtami między akumulatorem a zewnętrznym XSEG. Komórka XSEG może być adresowana na dwa sposoby: pośrednio przez 16-bitowy wskaźnik DPTR i stronicowana pośrednio przez 8-bitowy wskaźnik Ri, i \u003d 0,1. W tym drugim przypadku rejestr P2 służy jako rejestr stron.

Bezadresowe polecenia PUSH i POP zapewniają transfer danych

między DSEG, RSEG i SFR.

Instrukcja wymiany XCH zapewnia dwukierunkową wymianę bajtów, a instrukcja XCHD zapewnia najmniej znaczące tetrady operandów bajtowych.

Grupa poleceń arytmetycznych(tabela A2.2) co

zawiera instrukcje dodawania ADD, dodawania z przeniesieniem ADDC, odejmowania z pożyczaniem SUBB, zwiększania i zmniejszania o jeden INC i DEC, dodawanie BCD w spakowanym formacie, mnożenie MUL i dzielenie DIV. Operacje są wykonywane na liczbach całkowitych bez znaku. W operacjach dodawania i odejmowania akumulator jest pierwszym operandem i odbiornikiem wyniku. Rejestr bezpośredni, bezpośrednie adresowanie bezwzględne, bezpośrednie i pośrednie są używane do zdefiniowania drugiego argumentu. Operacje INC i DEC dotyczą akumulatora, bezpośrednio adresowalnego rejestru lub bezpośrednio lub pośrednio adresowalnej lokalizacji pamięci. Ponadto operacja INC dotyczy zawartości 16-bitowego rejestru wskaźników DPTR.

Operacje mnożenia i dzielenia liczb całkowitych bez znaku obejmują akumulator i rejestr B. Podczas mnożenia 8-bitowa wartość A jest mnożona przez 8-bitową wartość B, a wynik 16-bitowy jest zapisywany w parze BA. W tym przypadku rejestr B przechowuje górną część produktu. Flaga OV jest ustawiana, jeśli iloczyn jest większy niż 255. Gdy 8-bitowa wartość A jest dzielona przez 8-bitową wartość B, iloraz jest zapisywany do A, a reszta do B. Próba podzielenia przez 0 ustawia flagę przepełnienia OV.

Polecenie korekcji dziesiętnej DA z akumulatora jest umieszczane po poleceniu dodawania. Warunki muszą być przedstawione w kodzie BCD. Korekta wykonywana jest w standardowy sposób.

Grupa poleceń logicznych(tabela A2.3 ) zawiera trzy typowe operacje: ANL - logiczne AND, ORL - logiczne OR, XRL - logiczne wykluczające OR. Źródło pierwszego operandu

służy albo akumulator A, albo bezpośrednio adresowalna komórka pamięci. Drugi argument jest określany za pomocą jednej z czterech podstawowych metod adresowania. W skład grupy wchodzą również pojedyncze operacjenad zawartością akumulatora: CLR - wyczyść, CPL - inwersja, a RL, RLC, RR i RRC - operacje cyklicznych i wydłużonych przesunięć w prawo i lewo. Obejmuje to również operację wymiany notatników w akumulatorze SWAP, co można zinterpretować jako cykliczne przesunięcie bajtu o cztery cyfry.

Grupa poleceń bitowych(tabela A2.6) zawiera co

komendy SETB - ustawienie bitu na 1, CLR - resetowanie bitu do 0, CPL - inwersja bitów, ANL i ORL - logiczne AND i logiczne OR zawartości flagi C i bitu bezpośrednio adresowanego, MOV - transfer bitowy.

W operacje bitowe, flaga C działa jak akumulator logiczny. Argumentami są zawartość flagi C lub bezpośrednio adresowany bit obszaru BSEG. Operacje ANL i ORL mogą wykorzystywać zawartość bezpośrednio adresowalnego bitu (bit) lub inwersję treści (/ bit).

W ta grupa zawiera również polecenia dla gałęzi warunkowej z wartością względną8-bitowe przesunięcie rel. Skok warunkowy można wykonać zarówno za pomocą bitu ustawionego (polecenie JB), jak i wyczyszczonego (polecenie JNB). Na szczególną uwagę zasługuje polecenie JBC, które po ustawieniu bitu implementuje rozgałęzianie i jednocześnie kasuje bit do 0.

Grupa komend przekazu sterowania(tabele A2.4 i A2.5) z -

zawiera bezwarunkowe polecenia skoku AJMP, LJMP, SJMP, JMP, skok warunkowy JZ, JNZ, CJNE, wywołanie ACALL, LCALL, powrót RET, RETI i modyfikacja za pomocą skoku warunkowego DJNZ. Dołączone jest również puste polecenie NOP.

W adresowanie względne jest szeroko stosowane w poleceniach transferu sterowania, umożliwiając tworzenie relokowalnych modułów programu. Adres względny to8-bitowe przesunięcie rel to bajt ze znakiem, który zapewnia skok (–128… +127) bajtów w stosunku do aktualnej pozycji komputera. Do przeskoczenia do dowolnego innego punktu w przestrzeni adresowej 64K można użyć adresu bezpośredniego adresu 16 lub adresu pośredniego @ A + DPTR. W tym drugim przypadku zawartość A jest interpretowana jako liczba całkowita bez znaku. W celu zapewnienia kompatybilności z rodziną MCS-48 wprowadzono krótki wariant adresowania bezpośredniego addr11 na bieżącej stronie 2KB.

Wszystkie te typy adresowania są używane w instrukcjach skoku. Polecenia wywołania używają tylko metod adresowania direct addr16 i addr11 na stronie. Wszystkie polecenia warunkowe używają tylko adresowania względnego.

Gdy mikrokontroler rozpozna żądanie przerwania, generuje instrukcję LCALL addr16, która automatycznie zapewnia, że \u200b\u200badres zwrotny jest przechowywany w stosie. Informacje o stanie programu (zawartość rejestru PSW) nie są automatycznie zapisywane. W którym

DZWON

Są tacy, którzy czytają tę wiadomość przed wami.
Zapisz się, aby otrzymywać najnowsze artykuły.
E-mail
Imię
Nazwisko
Jak chcesz przeczytać The Bell
Bez spamu