Programarea porturilor MK movoy z 51. Microcontrolere MCS-51: model de program, structură, comenzi

Programarea porturilor MK movoy z 51. Microcontrolere MCS-51: model de program, structură, comenzi

Lumea microcontrolerelor este condusă de Intel cu familiile sale de microcontrolere pe opt biți 8048 și 8051. Arhitectura MCS-51 își ia numele de la primul reprezentant al acestei familii - microcontrolerul 805. 1, lansat în 1980 pe baza tehnologiei HMOS. În plus, un set de dispozitive periferice, posibilitatea unei alegeri flexibile a memoriei de programe externe și interne și un preț rezonabil au asigurat succesul acestui microcontroler pe piață. În ceea ce privește tehnologia, microcontrolerul 8051 a fost pentru vremea sa un dispozitiv foarte pliabil - cristalul avea un vicoristan de 128 de mii. tranzistori, care a fost de 4 ori mai mare decât numărul de tranzistori din microprocesorul pe 16 biți 8086.

Elementele principale ale arhitecturii de bază sunt:
- LSA pe 8 biți bazat pe arhitectura bateriei;
- 4 banci de registre, cate 8 pentru fiecare;
- S-a adăugat memoria de program de 4Kbyte;
- RAM interna 128 bytes;
- Procesor boolean
-2 cronometre pe șaisprezece biți;
- Controler de canal serial (UART);
- operatorul de prelucrare întrerupe între două niveluri de priorități;
- deși există porturi I/O pe 8 biți, dintre care două sunt folosite ca magistrală de adrese/date pentru accesarea programelor externe și a memoriei de date;
- Generator de ceas încorporat.

Acest microcontroler în sine este cel mai bine cunoscut producătorilor și este o metodă populară de instalare în dispozitivele din cea mai largă gamă. Fără emulatori, dezvoltatori și programatori de cipuri 8051, nu există dificultăți în dezvoltarea software-ului.

Să începem cu dezvoltarea MCS-51, cu transferul tehnologiei de producție către CHMOS. Acest lucru a făcut posibilă implementarea modurilor Idle și Power Down, care au permis o reducere drastică a consumului de energie al cristalului și au deschis calea pentru ca microcontrolerul să fie utilizat în programe care consumă energie, de exemplu, în dispozitive autonome cu durata de viata a bateriei.

Ultima etapă importantă a dezvoltării sale direct de către Intel în cadrul arhitecturii pe 8 biți a fost lansarea microcontrolerelor 8xC51FA/FB/FC, care sunt adesea denumite 8xC51FX. Caracteristica principală a acestui grup de cristale este prezența unei serii de vindecători programabili (PCA). Diagrama bloc a PCA este prezentată în Fig. 2.

Depozitul PCA include:

Temporizatorul de tratament deservește toate cele cinci module de prelevare și numărul care poate fi programat pentru una dintre următoarele funcții:

Eșantionarea pe 16 biți a valorii temporizatorului după marginea pozitivă a semnalului extern;
Eșantionarea pe 16 biți a valorii temporizatorului după marginea negativă a semnalului extern;
Eșantionarea pe 16 biți a valorii temporizatorului în spatele oricărei margini a semnalului extern;
Temporizator software pe 16 biți;
dispozitiv HSO pe 16 biți;
PWM pe 8 biți

Toate funcțiile revizuite sunt instalate în PCA la nivel hardware și nu implică procesorul central, ceea ce vă permite să avansați ascuns capacitatea de debit sisteme, îmbunătățește acuratețea temporizării și procesării semnalului și reduce timpul de răspuns al microcontrolerului la intrările externe, ceea ce este deosebit de important pentru sistemele în timp real. Implementările PCA 8xC51FX au dezvăluit că arhitectura microcontrolerelor FX a devenit un standard industrial de facto, iar PCA în sine a fost implementat pe scară largă în diferite modificări ale microcontrolerelor de la diverse companii.

Inițial, cele mai „universitare” părți ale arhitecturii MCS-51 au fost un ALU de 8 biți bazat pe o baterie și un manual de instrucțiuni foarte cuprinzător (pentru cele mai avansate instrucțiuni, sunt necesare 12 perioade). frecvența ceasului). Acest lucru a separat familia de microcontrolere de suplimente care generează coduri avansate de viteză și calcule complexe (16 și 32 de biți). Principiul modernizării arhitecturii vechi a devenit mai important. Problema modernizării a fost complicată de faptul că înainte de începutul anilor 90 se crease deja multă dezvoltare în domeniul software și hardware, iar una dintre sarcinile principale în dezvoltarea noii arhitecturi a fost implementarea hardware-ului. și software.Informații despre dispozitivele vechi bazate pe MCS-51. Pentru această sarcină, a fost creat un grup mare de fakhivtsev de Intel acel Philips. Drept urmare, în 1995 Au apărut 2 familii distincte: MCS-251/151 de la Intel și 51XA de la Philips (în același timp mai mici).

Principalele caracteristici ale arhitecturii MSC-251:

Spațiu de adrese liniar de 24 de biți, care asigură adresarea până la 16M de memorie(Microcontrolerele din familia MCS-251, care sunt în prezent lansate, au un spațiu de memorie adresabil de 256K);
Sistemul de comandă al microcontrolerelor din familia MCS-251 conține 111 comenzi care sunt incluse înaintea sistemului de comandă al microcontrolerelor din familia MCS-51 (comenzi „vechi”) și, în plus, include 157 de comenzi „noi”. Kodi folosește o serie de comenzi noi în format de 4 octeți.
Înainte de a instala microcontrolerul, acesta trebuie ajustat. Cu ajutorul programatorului, „ardeți” octeții de configurare, care indică ce seturi de instrucțiuni vor deveni active după pornirea vieții. Dacă instalați setul de instrucțiuni MCS-51, atunci MSC-251 va funcționa cu MCS-51 la același nivel ca un cod dublu. Acest mod se numește modul binar. Cu toate acestea, extensiile de comandă în acest mod sunt disponibile și prin „quat” - codul de instrucțiuni de rezervare 0A5h. Desigur, costul fiecărei instrucțiuni extinse crește cu 1 octet. Dacă instalați un set de instrucțiuni extinse de la început, atunci acest set de programe scrise pentru MCS-51 va trebui să fie recompilat la părțile încrucișate pentru MCS-51, deoarece Acum, instrucțiunile standard vor fi disponibile prin același „quadrant” 0A5h și vor crește, de asemenea, cu 1 octet. Acest mod se numește Modul sursă. Permite, cu eficiență maximă, extinderea instrucțiunilor pentru a obține cea mai mare viteză posibilă, dar nu necesită reluare a software-ului.
arhitectura de registry, care permite extragerea de registre, precum și octeți, șiruri și șiruri subordonate;
modul de adresare alăturat pentru preluarea mai rapidă a instrucțiunilor din memoria externă a programului;
instrucțiuni de desen;
extensii de set de instrucțiuni pentru a include instrucțiuni aritmetice și logice pe 16 biți;
extinderea spațiului de adrese al stivei până la 64K;
Explicați cele mai avansate instrucțiuni în 2 pași;
Valoarea este chiar mai mare decât cea a unui cod dublu cu programe pentru MCS-51.

Pentru clienții care doresc să instaleze microcontrolere MCS-251 ca înlocuitor mecanic pentru MCS-51, Intel lansează microcontrolere MCS-251 cu biți de configurare preprogramați sau modul binar. Astfel de microcontrolere au primit indexul MCS-151.

Pe lângă Intel în sine, microcontrolerele MCS-251 sunt produse sub licență de către Temic Semiconductors.

Universal Serial Bus sau USB extinde tehnologia plug-and-play la dispozitivele moderne I/O găsite pe computerele personale de înaltă performanță de astăzi.

Pentru a asigura capacitatea de a conecta o varietate de dispozitive periferice, standardul USB are patru moduri de transmisie: Coruptive, Isochronous, Pulse și transmisie matrice. Fiecare dispozitiv periferic trebuie să accepte un mod diferit de transfer al parametrilor de configurare, comenzilor și informațiilor despre dispozitiv către dispozitiv. Transmisia izocronă asigură acces garantat la magistrală, debit constant și rezistență la erori, acest mod de transmisie putând fi utilizat în dispozitivele de ieșire audio și telefoanele computerizate. Transmisia cu impulsuri este destinata dispozitivelor de intrare precum mouse, joystick sau tastatura, care transmit informatii rar si in portiuni mici, intercalate cu o perioada de intretinere. Transferul masiv permite dispozitivelor precum scanere, faxuri sau camere digitale să transfere cantități mari de date pe un computer personal de îndată ce este conectat un canal de magistrală.

Principalele caracteristici ale produsului

Valoare mare cu „Specificația Universal Serial Bus 1.0”
Transceiver USB Serial Bus Interface Engine (SIE)
Chotiri chergi FIFO pentru transfer
Trei carduri FIFO de 16 octeți
Chotiri chergi FIFO pentru receptie
Trei carduri FIFO de 16 octeți
Un fișier FIFO configurat (până la 1024 de octeți)
Recepție/transmisie automată în format FIFO
Operațiuni de upgrade/upgrade
Trei vectori de întrerupere a magistralei USB
Ciclu de blocare a fazelor
Viteze de transfer de date: 12 Mbit/s și 1,5 Mbit/s
Mod ciclu extins
Spațiu de adrese extern cu o capacitate de 256 KB
Moduri de economisire a energiei: pornire și oprire
Parametri care trebuie solicitați de către koristuvach
Ochіkuvannya în timp real
1 KB RAM pe cristal
Chotiri porti introducere/vivodu
Programarea unei serii de pacienți (PCA)
Microcontroler UART standard (MCS 51).
Temporizator watchdog hardware
Trei cronometre/killere pe 16 biți cu capacități grozave
Înțelegerea setului de comandă al microcontrolerelor din arhitecturile MCS 51 și MCS 251
Arhitectură microcontroler MCS 251, în baza registrelor
Frecventa de operare 6 sau 12 MHz

Controlerul 8x930Hx are caracteristici suplimentare:

mufa USB
Posibilitatea folosirii unui hub USB
Managementul comunicațiilor
Conexiune/deconectare dezvăluită de la dispozitivul de ieșire
Managementul vieții, inclusiv upgrade/actualizare
Detectarea și reînnoirea defecțiunilor anvelopelor
Suport pentru dispozitive de ieșire de mare viteză și viteză mică
Contact de ieșire pentru comunicație prin port
Contact de intrare pentru detectarea supratensiunii

Mai multe moduri diferite de transfer de date USB sunt asigurate de funcționarea fără întreruperi a trei elemente: Gazdă, Hub, Dispozitiv funcțional. Gazda controlează transmiterea informațiilor generale și de bază prin magistrală. Dispozitivele funcționale extind sistemele gazdă. Aceasta include tipuri tipice de lucru cu un computer: intrare de la tastatură sau joystick, afișare pe monitor; precum și tipuri mai complexe de activități, cum ar fi telefonia digitală și transmisia de imagini. Un microcontroler Intel 8x930Ax a fost proiectat pentru a controla dispozitivele funcționale. După cum puteți vedea, hub-urile sunt un punct de expansiune USB, care oferă acces la alte dispozitive funcționale. Microcontrolerul Intel 8x930Hx, care combină funcțiile unui dispozitiv funcțional cu un hub USB, este primul hub USB serial conceput pentru dispozitivele periferice PC actuale.

Hub-urile USB joacă un rol important într-o gamă largă de utilizatori de computere. Din faţă dispozitiv periferic- tastaturi, monitoare, imprimante și altele - cu hub-urile furnizate, conectarea sau conectarea unui dispozitiv nou este la fel de simplă precum conectarea acestuia la o priză. Rubarbă nouă Câștigurile de productivitate și conexiunea USB extinsă ar putea duce la o nouă generație de dispozitive pentru serviciu și programe personale. Zilele de cărți noi, conflicte IRQ și bile de fire încurcate sunt respectate.

Cablul de magistrală USB este format din patru fire: Vbus, D+, D- și GND – ceea ce permite o conexiune mai simplă și mai consistentă. Această metodă include, de asemenea, un singur conector standard pentru conectarea dispozitivelor periferice la magistrala USB. Datele sunt transmise diferit prin cablurile D+ și D-: fie la o viteză mare de 12 Mbit/sec, fie la o viteză mică de 1,5 Mbit/sec. Utilizarea cristalelor este o necesitate pentru lăncile electronice de astăzi. Este necesar să instalați un rezistor terminal vantage pe ambele linii D+ și D-, care este necesar pentru tipul de dispozitiv: de mare viteză și de mică viteză.

O privire asupra familiei
Familia Intel 8x930 este formată din două controlere cu un singur cip.

Controlerul Intel 8x930Ax este un dispozitiv pe 8 biți bazat pe arhitectura microcontrolerului MCS 251 și este proiectat să funcționeze cu dispozitive periferice care sunt conectate la magistrala USB. Pe de altă parte, 8x930Hx utilizează același nucleu de microcontroler MCS 251 plus capacitățile extinse ale hub-ului de bus USB încorporat. Implementarea arhitecturii MCS 251 în ambele controlere de magistrală USB oferă următoarele avantaje:

Productivitate ridicată
Definirea tipurilor mixte de memorie și adresare
Consum redus de energie
Zgomot redus de rubarbă
Suport eficient pentru limbajul de nivel înalt
Extensii la setul de comenzi
Fezabilitate inspirată

În gama de comenzi pentru 8x930Ax, puteți utiliza instrucțiuni atât din setul de microcontroler MCS 51, cât și din kitul de microcontroler MCS 251. Această abordare economisește investiția clientului în software de securitate Prioritizează productivitatea maximă din aditivi.

Desktopurile cu microcontrolere 8x930 sunt pline cu diverse caracteristici modelate care le fac să arate mai groase decât doar microcontrolerele. Programed Accelerator Array (PCA) oferă o varietate de suplimente care necesită alinierea și stocarea datelor în timp real, schimbul de date de mare viteză și modularea lățimii impulsului. În plus, stocul controlerului include un port serial extins, trei temporizatoare/dezactivatoare pe 16 biți, un watchdog hardware, porturi de intrare/ieșire de 8 biți, precum și două moduri de economisire a energiei: răcire și oprire.

Controlerele din familia 8x930Ax echipate cu 1 KB de memorie pot fi selectate dintre opțiunile fără memorie persistentă sau cu memorie persistentă de 8 sau 16 KB. Acestea pot adresa până la 256 KB de memorie externă pentru a găzdui comenzi și date și 40 de octeți de registre pentru scopuri generale, care sunt stocați în procesorul central ca fișier de registru. În funcție de combinația selectată, în fișierul de registru pot fi extinse registre de 16 octeți, 16 registre pe dublu octet și 10 registre pe mai mulți octeți.

Controlerele de transfer au o interfață flexibilă cu memorie externă. Pentru a crește la dispozitive cu memorie mare, este posibil să adăugați trei cicluri de curățare și să generați un număr mai mare de cicluri - scalați până la funcția în timp real. Selectarea comenzilor externe poate îmbunătăți productivitatea utilizând un mod suplimentar side-by-side, în care datele sunt transferate la octetul înalt al adresei.

Controlerele 8x930 sunt echipate cu o mulțime de carduri FIFO pentru suport dispozitive interne vysnovka: care sunt chergi pentru transmitere și care sunt chergi pentru primire. Mai multe carduri FIFO pentru recepție/transmitere acceptă mai multe dispozitive funcționale finale (de la 0 la 3). Linia 0 este formată din 16 octeți și este destinată transmiterii de informații care controlează. Cardul 1 este inclus în categoria setărilor computerului și are o capacitate de până la 1024 de octeți. Cardurile 2 și 3 constau din 16 octeți fiecare și pot suporta transferul de informații în moduri de transfer în impuls, izocron și matrice. Când este atribuit controlerul 8x930Hx, o pereche de carduri FIFO este utilizată pentru dispozitivele de intrare. Aceste semnale din controlerul 8x930Hx sunt suportate de repetiții suplimentare, care indică retransmiterea fluxurilor de date generate de dispozitivele de ieșire.

O privire asupra arhitecturii
Implementarea de proiectare a USB în microcontrolerele 8x930Ax și 8x930Hx poate fi împărțită în patru blocuri: blocuri FIFO, un bloc de interfață cu dispozitive funcționale, un bloc de interfață cu o magistrală serială și un bloc de recepție-transmisie. Controlerul 8x930Hx conține blocuri cu mai multe linii pentru a îndeplini funcțiile hub-ului: blocați interfața cu hub-ul și repetați.

Circuitele FIFO pentru recepție și transmisie pe ambele controlere sunt în formă de inel. Cardurile acceptă până la două seturi de date adiacente de dimensiuni redimensionabile și creează un registru de curățare de octeți care arată numărul de octeți din seturile de date. Sertarele sunt în proporții, care arată completitatea sau golirea sertarelor și, de asemenea, repetă recepția sau transferul unui set continuu de date. Blocul de interfață cu dispozitive funcționale (IFU) distribuie transmisiile și recepțiile USB de date Depinde de tipul de transmisie și va deveni un desen. În plus, blocul IFU urmează etapa tranzacției, care este reprezentată de FIFO și, pe lângă faptul că este întrerupt, informează despre starea curentă a sistemului care controlează procesorul central 8x930.

Blocul de interfață magistrală serială implementează protocolul de transmisie USB: ordonarea secvențială a pachetelor, generarea și recunoașterea semnalelor, generarea și verificarea sumelor de control, codificarea/decodarea datelor folosind metoda NRZI, înlocuirea bit-bit nya, generarea și recunoașterea identificatorului de pachet ( PID).

Integrarea transmisiei-receptorului pe microcontrolere USB cu o interfață simplă, cu o singură lățime, care respectă specificația USB 1.0. Familia de controlere 8x930 are trei interfețe conectate la USB. Semnele sunt generate atunci când pielea pornește cadrul, recepția/transmiterea datelor este finalizată la dispozitivele funcționale finale, în timpul downgradării globale sau actualizării robotului. Pentru hub-ul 8x930Hx, blocul de interfață cu hub-ul este utilizat pentru a conecta conexiunea la porturile de ieșire. Confirmă în mod repetat extinderea semnalelor în porturile USB, care pot fi mărite sau reduse.

Arhitectura microcontrollerului

Arhitectura sofisticată a microcontrolerelor este cheia programării de tip asamblare. Structura asamblatorului, formatul instrucțiunilor acestuia, adresarea operanzilor sunt de asemenea direct determinate de arhitectură. Metoda de modificare a arhitecturii este:

· Identificarea setului de registre disponibile pentru programare, scopul funcțional și structura acestora;

· organizarea rezonabilă a memoriei operaționale și a ordinii;

· Conștientizarea tipurilor de date;

· Formatul Vivchenya al comenzilor mașinii;

· Întreruperea organizării muncii.

Arhitectura familiei MCS-51 este determinată în mod semnificativ de obiectivele sale - fiind compactă și ieftină dispozitive digitale. Toate funcțiile MK sunt implementate folosind un singur microcircuit. Stocul familiei MCS-51 include o gamă întreagă de microcircuite, de la cele mai simple microcontrolere până la câteva pliabile. Microcontrolerele din familia MCS-51 pot fi configurate ca o fabrică diverse anexeși implementați componentele circuitelor analogice. Toate microcircuitele din această familie funcționează cu același sistem de comandă, majoritatea sunt instalate în carcase noi cu o bază care este evitată (numerotarea bazelor pentru carcasă). Acest lucru permite producerea de microcircuite de la diverși producători (cum ar fi Intel, Dallas, Atmel, Philips etc.) fără reprocesare. diagrame de principiu instalați și programați.

MCS-51 se bazează pe arhitectura Harvard, unde spațiile adresabile ale memoriei programului și ale datelor sunt separate.

Schema bloc a controlerului este prezentată în Fig. 2.3 și constă din următoarele unități funcționale principale: o unitate de control, un dispozitiv aritmetic-logic, un bloc de temporizatoare/dozatoare, o interfață serială și întrerupere, o listă de comenzi a distribuitorului de programe) , memorie de date și memorie de programe yati

Comunicarea bidirecțională are loc printr-o magistrală de date internă de 8 biți. Să aruncăm o privire la raportul despre semnificația blocului de piele. Aproape toți reprezentanții familiei MCS-51 au fost creați în cadrul acestei scheme. Diferitele microcircuite ale acestei familii sunt împărțite pe registre motiv special(Acest lucru include un număr de porturi). Sistemul de comandă al tuturor controlerelor din familia MCS-51 conține 111 comenzi de bază în format de 1, 2 sau 3 octeți și nu se modifică la trecerea de la un microcircuit la altul. Acest lucru va asigura portabilitatea miraculoasă a programelor de la un microcircuit la altul.

Unitate de control și sincronizare Aplicații (Cronometrare și control) pentru sincronizarea vibrațiilor și semnalele de control pentru a asigura coordonarea Practica somnului Unități OEOM în toate modurile de funcționare permise Unitatea de control include:


  • dispozitiv pentru formarea intervalelor de oră,
  • schema combinata de introducere-retragere,
  • registru de comenzi,
  • decodor de comenzi.

Weekend-uri și weekenduri semnale către unitatea de control și sincronizare:

1 PSEN- Stocare separată a memoriei programului;

2 ALE- Semnal de ieșire pentru permisiunea de a fixa adresa;

3 PROG- Programare semnal;

4 E.A.– blocarea robotului din memoria internă;

5 VPP- Programare tensiune;

6 RST- Semnal de aruncare zagalny.

Dispozitivul creează intervale de ceas care sunt necesare pentru a sincroniza secvența opririlor CPU, pentru a menține ciclul mașinii și pentru a asigura funcționarea corectă a tuturor terminalelor interne și a bufferelor portului de ieșire. Ciclul mașinii constă din șase stări finale (stări) de la S1 la S6, care sunt, la rândul lor, împărțite în două faze:

faza 1 (Faza 1 - P1) și faza 2 (Faza 2 - P2). Astfel, ciclul mașinii poate fi măsurat ca o secvență de intervale orare S1P1, S1P2, S2P1, ..., S6P2. Durata fazei este aceeași cu perioada impulsurilor directe de ceas, astfel încât ciclul mașinii durează 12 perioade de ceas.

Numărul de cicluri de mașină înseamnă complexitatea secvenței de comenzi. Aproape toate comenzile sunt executate în unul sau două cicluri de mașină, cu excepția comenzilor de înmulțire, care pot fi executate în mai multe cicluri de mașină. Logica de intrare-ieșire este concepută pentru a recepționa tipurile de semnale care asigură schimbul de informații cu clădiri exterioare prin porturile P0-P3.

Registrul de comenzi Scopul înregistrării este de a salva opcode-ul de 8 biți al comenzii care este adăugată. Codul de operare, cu ajutorul unui decodor de comandă și al logicii de control EOM, este convertit în microprogramul comenzii.

Orez. 2.3. Schema bloc a microcontrolerului cu un singur cip Intel 8051

(casa MCS-51)

Dispozitiv aritmetico-logic(ALU) este un dispozitiv paralel pe opt biți care oferă o varietate de operații aritmetice și logice. ALU este format din:

  • registre de economisire a timpului -TMP1 și TMP2,
  • constante ROM,
  • sumatora,
  • registru suplimentar - registru,
  • baterie - ACC,
  • registrul cuvântului va deveni program (registru de ensign) - PSW.

Registrul de economisire a timpului TMP1, TMP2- registre de opt biți, menite să capteze și să salveze operanzi pentru ora de execuție a operațiunilor asupra acestora. Aceste registre nu sunt accesibile programatic.

ROM constant va asigura generarea unui cod corectat în timpul transmiterii datelor sub a zecea, un cod masca în timpul operațiunilor pe biți și un cod constant.

Sumator paralel de opt biți este o schemă de tip combinațional cu transfer ulterior, concepută pentru calculul operațiilor aritmetice de adunare, adunare și operații logice de adunare, înmulțire, ambiguitate și identitate.

Registrul B- un registru de opt biți, care se modifică în timpul operației de înmulțire. Pentru alte instrucțiuni, poate fi considerat un registru operațional suplimentar.

Baterie- un registru de opt cifre pentru primirea si salvarea rezultatului obtinut din operatii aritmetico-logice sau operatii de stocare.

Înregistrarea va deveni un program PSW (Program Status Word) Pentru a salva cuvântul, voi deveni comenzile care vor fi semnate. Când sunt introduse un număr mare de comenzi ALU, se formează o serie de simboluri de operare (semne), care sunt înregistrate în registrul cuvântului program (PSW). In masa 1 este schițată traducerea steagurilor PSW, sunt date denumirile lor simbolice și este descrisă formarea mentală.

Bloc pentru întreruperea interfeței seriale - UART (Universal Asynchronous Receiver/Transmitter) scopuri de organizare a intrărilor - afișarea fluxurilor ulterioare de informații și organizarea unui sistem de întrerupere a programelor.

La urma urmei, întrerupere înseamnă implementarea îndelungată a procesului principal de calcul al execuției diferitelor acțiuni planificate și neplanificate, declanșate de echipamente și programe robotizate.

Aceste acțiuni pot fi de natură de serviciu, fiind alimentate de programe de service paralele sau reacționând la situații de rutină.

ARHITECTURA FAMILIEI DE MICROCONTROLLERMCS-51

Note de curs de la cursuri

„Microprocesoare în sistemele de control”, „Tehnologia microprocesoarelor”

„Funcțiile și sistemele microprocesorului”

pentru studenţii de toate formele de specializare

072000 – Standardizare și certificare

210200 – Automatizarea proceselor tehnologice

230104 – Sisteme automate de proiectare

Tambov 2005

INTRARE.. 3

1. STRUCTURA MICROCONTROLLERULUI INTEL 8051. 3

1.1. Organizarea memoriei. 5

1.2. Dispozitiv aritmetico-logic. 6

1.3. Memoria programului rezident. 7

1.4. Bateria și registrul au un scop special. 8

1.5. Registrul cuvântului va deveni un program și un principiu. 9

1.6. Registre-dusuri. 10

1.7. Registrul funcțiilor speciale. unsprezece

1.8. Dispozitiv pentru service și sincronizare. unsprezece

1.9. Porturi paralele pentru intrare/ieșire de informații. 12

1.10. Temporizatoare/dozatoare. 13

1.11. Port serial. 18

1.11.1. Înregistrați SBUF.. 18

1.11.2. Moduri de operare a portului serial. 18

1.11.3. Înregistrați SCON.. 19

1.11.4. Viteza de recepție/transmisie. 21

1.12. Depășește sistemul. 22

2. SISTEMUL DE COMANDĂ AL MICROCONTROLLERULUI INTEL 8051. 26

2.1. Zagalnye Vidomosti. 26

2.1.1. Tipuri de comenzi. 27

2.1.2. Tipul de operand. 28

2.1.3. Metode de adresare a datelor. treizeci

2.1.4. Apreciază rezultatul. 31

2.1.5. Adresarea simbolică. 32

2.2. Transfer comenzi. 33

2.2.1. Structura legăturilor de informații. 33

2.2.2. Zvernennya la baterie. 33

2.2.3. Actualizarea datelor la cea mai recentă memorie. 34

2.2.4. Upgrade la memoria programului.


2.2.5. Zvernennya la stiva. 35

2.3. Operatii aritmetice. 35

2.4. Operații logice. 39

2.5. Controlul comenzilor de transfer. 43

2.5.1. Tranziție lungă. 43

2.5.2. Tranziție absolută. 43

2.5.3. Tranziție Vidnosny. 44

2.5.4. Tranziție indirectă. 44

2.5.5. Pasageri inteligente.. 44

2.5.6. Subprogram.. 47

2.6. Operații cu biți. 48

Controlați nutriția... 49

LITERATURA.. 50

Anexă SISTEMUL DE COMANDĂ INTEL 8051. 51

INTRARE

Începând cu anii 80 și secolul XX, tehnologia microprocesoarelor a cunoscut o clasă independentă de circuite integrate - microcontrolere cu un singur cip, care sunt destinate instalării în dispozitive în diverse scopuri. În clasa microprocesoarelor cu un singur cip, vizibilitatea acestora este în creștere memorie interna, eliminând modul de interacțiune cu dispozitivele externe.

Microcontrolerele cu un singur cip pe 8 biți din familia MCS-51 au devenit disponibile pe scară largă. Această familie a fost creată pe baza microcontrolerului Intel 8051, care și-a pierdut o mare popularitate în rândul comercianților. sisteme cu microprocesoare controlul a scăpat complet de sub controlul arhitecturii proiectate. Arhitectura microcontrolerului este o combinație de resurse hardware și sisteme de comandă accesibile de software interne și externe.

În continuare, Intel a lansat aproximativ 50 de modele bazate pe nucleul de operare al microcontrolerului Intel 8051. În același timp, multe alte companii, precum Atmel, Philips, au început să producă propriile microcontrolere, împărțite în standardul MCS-51. Există, de asemenea, un analog comercial al microcontrolerului Intel 8051 - microcircuitul K1816BE51.

2. STRUCTURA MICROCONTROLLERULUI INTEL 8051

Microcontroler Intel 8051 bazat pe tehnologia n-MOS de înaltă calitate. Principalele sale caracteristici sunt:

· Procesor central de opt biți, optimizat pentru implementarea funcțiilor de control;

· Generator de ceas încorporat (frecvență maximă 12 MHz);

· spațiu de adrese din memoria programului – 64 KB;

· spațiu de memorie de date adresabil – 64 KB;

· Memorie internă de program - 4 KB;

· Memoria internă de date - 128 octeți;

· posibilități suplimentare cu operații viconice ale algebrei booleene (operații pe biți);

· 2 temporizatoare/dozatoare bogate de șaisprezece biți;

· Receptor asincron full-duplex (port serial);

· Sistemul vectorial alternează cu două niveluri de prioritate și cinci niveluri de prioritate.

Malyunok 1 - Diagrama bloc a microcontrolerului Intel 8051

Baza diagramei bloc (Fig. 1) este creată de o magistrală internă bidirecțională de 8 biți, care conectează nodurile și dispozitivele principale ale microcontrolerului: memoria de program rezidentă (RPM), memoria rezidentă de date (RDM), unitatea logică aritmetică (ALU), unitate de registru cu funcții speciale, unitate CU, porturi paralele de intrare/ieșire (P0-P3), precum și temporizatoare programabile și port serial.

2.1. Organizarea memoriei

Acest microcontroler are memorie de program internă (rezidentă) și externă. Memoria de program rezidentă (RPM) are o dimensiune de 4 KB, memoria rezidentă de date (RDM) este de 128 de octeți.


La modificarea microcontrolerului, RPM este configurat ca o masca ROM, un ROM programabil unic sau un ROM reprogramabil.

Pentru consum, puteți extinde memoria de program a PZP-ului extern instalat. Accesul la PZP intern sau extern este atribuit valorilor semnalului de pe ieșirea EA (Acces extern):

EA = VCC (tensiune de viață) - acces la PZP intern;

EA = VSS (earth potential) – acces la ROM extern.

Memoria externă a programelor și a datelor poate avea până la 64 KB și poate fi adresată prin porturile suplimentare P0 și P2. Figura 2 prezintă cardul de memorie Intel 8051.

Figura 2 - Organizarea memoriei Intel 8051

Strobe pentru citirea PZP-ului extern - (Program Store Enable) este generat atunci când programul este descărcat în memoria externă și este inactiv în timpul descărcării în PZP care se află pe cip.

Zona adreselor inferioare ale memoriei programului (Fig. 3) este întreruptă de sistem. Arhitectura de microcircuit INTEL 8051 oferă suport pentru cinci elemente de întrerupere. Adresele prin care controlul este transferat prin întrerupere se numesc vectori de întrerupere.

Malyunok 3 - Harta zonei inferioare a memoriei programului

2.2. Dispozitiv aritmetico-logic

Unitatea logică aritmetică de 8 biți (ALU) poate gestiona operații aritmetice precum adunarea, scăderea, înmulțirea și înlocuirea; operațiile logice I, ABO, care include ABO, precum și operațiile de încărcare ciclică, debaratare, inversare etc. rezultatul operațiunii (PSW).

Cea mai simplă operație este adăugată la ALU pentru incrementarea registrelor, inserarea registrului de afișare a datelor (RAR) și calcularea automată a adresei gazdă a memoriei rezidente a programului. Cea mai simplă operație este efectuată în ALU pentru a decrementa registrele și a nivela variabilele.

Cele mai simple operații sunt efectuate automat „în tandem” înainte de finalizarea operațiunilor precum, de exemplu, incrementarea perechilor de registre pe 16 biți. ALU implementează un mecanism pentru executarea în cascadă a celor mai simple operații pentru implementarea comenzilor compuse. Deci, de exemplu, atunci când se adaugă una dintre comenzile transferului inteligent al controlului, rezultatul alinierii în tricity ALU este incrementat de procesorul de comenzi (PC), citirea din RDM este finalizată, alinierea aritmetică a se completează cele două valori Dintre acestea, se formează o adresă de tranziție pe 16 biți și se iau decizii cu privire la cele care să opereze sau nu ezitați să urmați programul. Toate operațiunile finalizate se finalizează în mai puțin de 2 μs.

O caracteristică importantă a ALU este că poate gestiona atât octeți, cât și biți. Numărul de biți disponibili de software poate fi instalat, șters, inversat, transferat, transferat și modificat în operațiuni logice. Acest fapt este important, deoarece pentru gestionarea obiectelor, algoritmii sunt adesea utilizați pentru a efectua operații asupra variabilelor booleene de intrare și de ieșire, a căror implementare prin intermediul microprocesoarelor de bază este asociată cu dificultăți de cantare.

Astfel, ALU poate opera pe mai multe tipuri de obiecte informaționale: boolean (1 bit), digital (4 biți), octet (8 biți) și adresă (16 biți). ALU finalizează 51 de operațiuni diferite de retrimitere sau reluare a acestor date. Deoarece există 11 moduri de adresare (7 pentru date și 4 pentru adresă), apoi prin combinarea modului de operare și adresare, numărul de bază de comenzi 111 se extinde la 255 de la 256 posibil cu un cod de operare pe un singur octet.

2.3. Memoria programului rezident

Memoria de program rezidențială (pe cip) (RPM) și memoria de date (RDM) sunt separate fizic și logic, funcționează sub diferite mecanisme de adresare, funcționează sub controlul diferitelor semnale și comunică diferite funcții.

Memoria programului RPM are o capacitate de 4 KB și este folosită pentru stocarea comenzilor, constantelor, altor date de inițializare, a unui tabel de conversie pentru variabilele de intrare și ieșire etc. Data Renderer (DPTR). DPTR înlocuiește funcțiile registrului de bază pentru tranzițiile indirecte de program și înlocuiește operațiunile din tabel.

Memoria de date RDM este concepută pentru a stoca modificări în timpul procesului de instalare a unui program de aplicație, este adresată de un octet și are o capacitate de stocare
128 de octeți. În plus, adresele registrelor de funcții speciale, așa cum sunt rearanjate în tabel, se alătură spațiului de adrese. 1.

Memoria programului, precum și memoria datelor, pot fi extinse la
64 KB este modalitatea de conectare a microcircuitelor externe.

tabelul 1

Bloc de registre de funcții speciale

Nume

Baterie

Registrul de extindere a bateriei

Cuvântul va deveni un program

Registrul indicator al stivei

Registrul de date

Întrerupeți registrul prioritar

Registrul măștilor este întrerupt

Înregistrați-vă pentru modul temporizator/dozator

Controlează starea registrului/temporizatorului

Temporizator 0 (octet mare)

Temporizator 0 (octet scăzut)

Temporizator 1 (octet mare)

Temporizator 1 (octet scăzut)

Acceptăm registrul de control

Prime tampon

Registrul de management al tensiunii

Notă. Registrele ale căror nume sunt marcate cu un semn (*) permit adresarea mai multor biți.

2.4. Baterie și înregistrare în scopuri legale

Acumulatorul (A) este nucleul operandului și fixează rezultatul operațiilor aritmetice, logice și operațiunilor de transfer redus. În plus, doar cei cu baterie vikoristan pot anula funcționarea pieselor, verificând la zero, formând steagul la paritate etc.

Koristuvacha ordonată are mai multe bănci de 8 registre cu semnificație juridică R0-R7 (Fig. 9). Cu toate acestea, este posibil să selectați registre din unul dintre cele patru bănci care sunt selectate pentru bitul de registru PSW suplimentar.

2.5. Registrul cuvântului devenit program și yogo prapori

Atunci când sunt introduse un număr mare de comenzi ALU, se formează o serie de simboluri de operare (semne), care sunt înregistrate în registrul cuvântului de program (PSW). In masa 2 este schițată traducerea steagurilor PSW, sunt date denumirile lor simbolice și este descrisă formarea mentală.

masa 2

Formatul cuvântului Voi deveni un program PSW

Am acea recunoștință

Ensign a fost transferat. Instalat și resetat în hardware și software pentru operații aritmetice și logice

Ensign de transfer suplimentar. Este instalat și eliminat doar de hardware atunci când comenzile sunt adăugate și afișate și semnalează transferul sau poziția în bit 3

Ensign 0. Pot exista instalări, aruncate sau reverificări de către program ca ensign, care este specificat de corespondent

Selectați înregistrarea băncii. Instalat și șters programatic pentru a selecta o bancă de registre de lucru (Tabelul 3)

Prapor redenumit. Instalat și resetat de hardware atunci când se efectuează operații aritmetice

Nu vikorist

Paritate prapor. Este instalat și eliminat de hardware în ciclul de piele și fixează numărul neîmperecheat/împerecheat de biți unici din baterie, ceea ce are ca rezultat controlul parității

Tabelul 3

Selectați o bancă de registru de lucru

adresa Cordoni

Cea mai „activă” comandă a PSW este comanda de transfer, care este modificată în procesul diferitelor operațiuni, inclusiv adăugarea, extinderea și distrugerea. În plus, flag-ul de transport (CY) controlează funcțiile „acumulatorului boolean” în comenzile care manipulează biții. Regula de reevaluare (OV) fixează reevaluarea aritmetică atunci când se efectuează operații pe numere întregi fără semn și permite aritmetica vicoristică în codurile subordonate. ALU nu selectează băncile de registre (RS0, RS1), valorile acestora sunt determinate de programul de aplicație și sunt folosite pentru a selecta una dintre cele patru bănci de registre.

Dintr-o privire, registrul PSW poate fi reprezentat în următoarea ordine:

În microprocesoarele a căror arhitectură se bazează pe baterie, majoritatea comenzilor sunt emise de la aceasta, folosind adresarea core și implicită. Intel 8051 din dreapta este diferit. Dacă procesorul are o baterie la bază, puteți anula toate comenzile și partea sa. De exemplu, datele pot fi transferate din orice RDM de mijloc în orice registru, orice registru poate fi capturat de un operand de mijloc etc. Multe operații logice pot fi efectuate fără participarea unui acumulator. În plus, modificările pot fi incrementate, decrementate și transferate fără a înlocui bateria. Elementele și cheile pot fi inversate și modificate în același mod.

2.6. Registre-dusuri

Un pointer de stivă de 8 biți (SP) poate fi adresat zonei RDM. Aceasta este în schimb incrementată înainte ca datele să fie stocate pe stivă în timpul execuției comenzilor PUSH și CALL. În schimb, SP este decrementat după executarea comenzilor POP și RET. Această metodă de adresare a elementelor stivei se numește pre-incremental/post-decremental. În timpul procesului de inițializare a microcontrolerului, după semnalul RST, SP-ului i se atribuie automat codul 07H. Aceasta înseamnă că, dacă programul de aplicație nu remapează stiva, atunci primul element de date din stivă este mutat în RDM din mijloc cu adresa 08H.

Registrul de date pe doi octeți DPTR este utilizat pentru a captura adresa de 16 biți în operațiunile din memorie în memoria externă. Prin comenzile microcontrolerului, registrul de afișare a datelor poate fi selectat fie ca un registru de 16 biți, fie ca două registre independente de 8 biți (DPH și DPL).

2.7. Registre de funcții speciale

Registrele cu denumirile simbolice IP, IE, TMOD, TCON, SCON și PCON sunt utilizate pentru fixarea și schimbarea programului de biți cheie și biți care vor deveni circuite întrerupătoare, circuite temporizator/distribuitor, intrare portului serial și pentru gestionarea energiei. Organizarea lor va fi descrisă în detaliu în secțiunile 1.8-1.12, analizând caracteristicile microcontrolerului în diferite moduri.

2.8. Dispozitiv pentru service și sincronizare

Rezonatorul de cuarț, care este conectat la pinii externi ai microcontrolerului, operează un oscilator intern care generează semnale de sincronizare. Unitatea de control (CU), bazată pe semnale de sincronizare, formează un ciclu de mașină de putere fixă, care este echivalent cu 12 perioade de generator. Majoritatea comenzilor microcontrolerului sunt procesate pe ciclu de mașină. Toate instrucțiunile care funcționează pe cuvinte de 2 octeți sau sunt legate la memoria externă sunt finalizate în două cicluri de mașină. Doar câteva comenzi necesită mai multe cicluri de mașină. Pe baza acestor caracteristici ale robotului și construcției centralei, se realizează dezvoltarea de programe aplicate.

Pe circuitul microcontrolerului, registrul de comandă (IR) este adiacent dispozitivului hardware. Funcția sa este de a salva codul de comandă care este introdus.

Semnale de intrare și ieșire ale dispozitivului pentru calibrare și sincronizare:

1. PSEN – clădire separată a memoriei programului,

2. ALE – semnal de ieșire pentru permisiunea de a fixa adresa,

3. PROG - semnal de programare,

4. EA – blocarea roboților cu memorie internă,

5. VPP – programare tensiune,

6. RST - semnal zagal,

7. VPD – afișarea memoriei de rezervă de pe dispozitivul extern,

8. XTAL – intrări pentru conectarea unui rezonator de cuarț.

2.9. Porturi paralele pentru intrare/ieșire de informații

Toate aceste porturi (P0-P3) sunt folosite pentru a introduce și ieși informații octet cu octet. Portul de piele conține o supapă de registru ceramică, un tampon de intrare și un driver de ieșire.

Driverele de ieșire pentru porturile P0 și P2, precum și bufferul de intrare pentru portul P0, sunt actualizate la memorie externă. În acest caz, prin portul P0 în modul de multiplexare sensibil la timp, este inițial scos cel mai mic octet de adresă, iar apoi octetul de date este văzut sau primit. Cel mai semnificativ octet al adresei este scos prin portul P2 dacă capacitatea adresei este mai mare de 16 biți.

Toate conexiunile la portul P3 pot fi utilizate pentru a implementa funcțiile alternative enumerate în tabel. 4. Aceste funcții pot fi atribuite înregistrării 1 la bitul de registru de ieșire (P3.0-P3.7) la portul P3.

Tabelul 4

Funcții alternative la portul P3

Am acea recunoștință

Citind. Semnal activ nivel scăzut format în hardware atunci când datele sunt transferate în memoria externă

Record. Semnalul activ de nivel scăzut este generat în hardware atunci când datele sunt transferate în memoria externă

Intrarea temporizatorului/distribuitorului 1 sau intrarea testului

Intrare temporizator/dozator 0 sau intrare test

Intrare de întrerupere 1. Semnalul de nivel scăzut este primit prin

Intrarea de întrerupere este 0. Se primește un semnal de nivel scăzut.

Ieșire pentru transmiterea portului serial în modul UART. Ieșire de sincronizare în modul registru

Intrarea pentru primirea portului serial este UART. Introducerea/afișarea datelor în modul registru

Portul 0 este dublu direcționat, iar porturile 1-3 sunt cvasi-direcționate. Linia de piele a porturilor poate fi tratată cu Vicoristan pentru administrare și îndepărtare.

În urma semnalului RST, unitățile sunt scrise automat în registrele de intrare ale tuturor porturilor pentru a le configura pentru modul de intrare.

Toate porturile pot fi folosite pentru a organiza intrarea/ieșirea informațiilor de-a lungul liniilor de transmisie bidirecționale. Cu toate acestea, porturile P0 și P2 nu pot fi utilizate în acest scop, deoarece sistemul utilizează memorie externă, a cărei conexiune este organizată prin intermediul magistralei externe de adrese/date, care este divizată și funcționează în modul multiplex cu ceas de timp.

Revenirea la porturile de intrare/ieșire se poate face cu un număr de comenzi care operează pe un octet, un bit atașat sau orice combinație de biți. În astfel de cazuri, când un port are simultan un operand și apoi atribuie un rezultat, dispozitivul implementează automat un mod special numit „citire-modificare-scriere”. Acest mod de conversie transferă semnalele de intrare nu de la pinii externi la port, ci din registrul acestuia, ceea ce vă permite să opriți citirea incorectă a informațiilor afișate anterior. Acest mecanism de scalare la porturi este implementat în următoarele comenzi:

UDC 681.5, 681.325.5 (075.8)

BBK 32.973.202-018.2 i 73

Shcherbina O.N.Mașini de calcul, sisteme și măsuri. Microcontrolere și microprocesoare în sistemele de control: cheb. Pos_bnik/O.M. Shcherbina, P.A. Nechaev-SPb.: Institutul de Politehnică. Univ., 2012.-226 p.

Înlocuiește standardul național pentru pregătire și specialități în departamentul de management sisteme tehnice, inginerie electrică și inginerie electrică și în locul programului de bază al disciplinei „Mașini de calcul, sisteme și măsuri”.

Nutriția fundamentală a organizării logice a sistemelor cu microprocesoare este examinată folosind arhitectura de bază a familiei de microcontrolere MCS-51 de la Intel. Este descrisă tehnologia de programare a microcontrolerelor folosind limbaje Assembler și CI.

Poate fi util pentru studenți și dezvoltatori de cunoștințe tehnice avansate, specialiști în automatizarea proceselor și producție, precum și pentru inginerii proiectanți ai sistemelor cu microprocesoare.

De asemenea, înlocuiește standardul național al disciplinei „Microcontrolere și microprocesoare în sisteme de control” și „ Dispozitive electronice automatizare" licență, inginerie și masterat direct 140400 "Inginerie energetică și inginerie electrică".

Acordați asupra deciziilor editoriale și editoriale de dragul

Universitatea Politehnică de Stat din Sankt Petersburg.

© Shcherbina A. N., Nechaev P. A., 2012

© Statul Sankt Petersburg

Universitatea Politehnică, 2012

ISBN 978-5-7422-3553-8


Intrarea.. 7

Secțiunea 1. Arhitectura familiei MCS51. 10

1.1 Caracteristicile gazului 10

1.2 Diagrama bloc 11



1.3 Scopul componentelor microcontrolerului 8051 15

1.4 Organizarea memoriei 17

1.4.1 Memoria programului (PPM) 18

1.4.2 Memoria de date (DMS) 19

1.4.3 Registre de funcții speciale. 20

1.4.4 Registrul mandatelor (PSW) 23

1.5 Instalare și sincronizare 26

1.6 Organizarea porturilor de intrare-ieșire 27

1.6.1 Rapoarte din culise. 27

1.6.2 Funcții alternative. 27

1.7. Temporizatoare / microcontrolere din familia 8051. 28

1.7.1. Structura cronometrelor de tratament. 28

1.7.2 Moduri de funcționare a temporizatoarelor de tratament. treizeci

1.8. Port serial 32

1.8.1. Structura portului serial. 32

1.8.2. Registrul de stare de service/preț SCON.. 34

1.8.3. PCON.. registrul 36

1.9. Sistemul 37

1.9.1. Schimbați structura sistemului. 37

1.9.2 Subprogramele Vikonannya perervaniya. 40

Capitolul 2. Caracteristici ale microcontrolerului 80C51GB.

2.1 Caracteristici funcționale 42

2.2 Porturi I/O P0-P5 43

2.2.1 Funcționarea porturilor I/O. 43

2.2.2 Înregistrare la port.

2.3 Caracteristici ale sistemului de întrerupere 8XC51GB.

Permis/gard să întrerupă. 50

Întrerupeți gestionarea priorităților. 51

Întreruperi externe. 54

2.3. Vuzol ADC 56

2.4. Watchdog hardware 61

2.5. S-a dezvăluit defecțiunea generatorului de ceas 63

2.6. Matricea medicilor programați RSA 64

2.6.1. Structura PCA..64

2.6.2. Registrul medicului medic RSA (CMOD) 66

2.6.3. Registrul managementului medical al APC (CON) 67

2.6.4. Module de aliniere/fixare. 68

2.7. Extinderea portului serial 76

2.8. Temporizatoare/dozatoare 79

Plasarea microcontrolerelor din grupul 8XC51GB.

Secțiunea 3. Programare MK 8051GB.

3.1. Model software 89

3.2 Tipuri de date 93

3.3 Metode de adresare a datelor 93

3.4 Sistemul de comandă 95

3.4.1. Zagalny caracteristică. 95

3.4.2 Tipuri de comenzi. 96

3.4.3 Tipuri de operanzi. 97

3.4.4 Comenzi pentru suprascrierea datelor microcontrolerului. 98

3.4.5 Instrucțiuni de operații aritmetice 8051. 101

3.4.6 Comenzile operațiilor logice ale microcontrolerului 8051. 104

3.4.7 Comenzi pentru operații pe biți ai microcontrolerului 8051. 106

3.5 Configurarea programului 111

Secțiunea 4. Programarea limbajului ASM-51. 112

4.2 Înregistrarea programului text 113

4.3. Alfabetul limbajului. 114

4.4 Identificatori. 115

4.5 Numerele 117

4.6 Directiva 118

4.7 Implementarea subprogramului ASM51 122

4.7.1 Structura subprogramului-procedura al meu ASM51. 122

4.7.2 Transferarea parametrilor modificabili în subprogram. 123

4.7.3 Implementarea funcției de subprogram a ASM51 al meu. 123

4.7.4 Implementarea rutinelor de procesare folosind ASM51 meu. 124

4.8 Asamblator programat structural. 125

4.9 Caracteristici ale difuzării de programe bogat modulare. 126

4.10 Selectarea segmentului 128

4.10.1 Împărțirea memoriei MK în segmente. 128

4.10.2. Segmente de memorie absolută. 129

4.10.2 Segmente de memorie mutate. 131

Capitolul 5. Programarea limbajului S-51. 134

5.1 Caracteristicile Zagalnaya ale filmului 134

5.3 Structura programului S-51 136

5.3. Programare film Elementi S-51 138

5.3.1. Simboluri.. 138

5.3.2. Unități lexicale, separatoare și compensații. 141

5.3.3 Identificator 142

5.3.4 Cuvinte cheie. 143

5.3.5 Constant.. 143

5.4. Virazi în operatori de film 146

programare C-51 146

5.5. Prioritățile operațiunilor militare 148

5.6. Operatori programare film C-51 149

5.6.1. Operatorii sunt uluiți. 150

5.6.2 Operatori, ce să semneze. 150

5.6.3 Operator de atribuire. 151

5.6.4 Operator mental. 151

5.6.5 Operator structural (). 152

5.6.6 Operator pentru buclă. 152

5.6.7 Operator pentru o buclă cu o inversare cap la cap a buclei while. 153

5.6.8 Operator pentru bucla de la inversarea minții după corp la bucla do while. 154

5.6.9. Pauza operatorului. 155

5.6.10 Continuare operator. 155

5.6.11 Comutare operator de selecție. 155

5.6.12 Accesare operator. 157

5.6.13 Operator Virazu. 158

5.6.14 Retur operator de rotație din subprograme. 158

5.6.15 Operator gol. 158

5.7. Uimit de modificările mele în programarea C-51. 159

5.7.1. Uimit de schimbare. 159

5.7.3 Scopurile tipurilor de date. 161

5.7.4 Numerele cu un bulgăre plutitor. 162

5.7.5 Tipuri răi pentru a fi în siguranță. 162

5.7.6. Masive uluite în programul C-51. 164

5.7.7. Structuri.. 165

5.7.8. Ob'ednannya (sumishi) 166

5.8. Vikoristannya prezentând în movі C-51 167

5.8.1. Expozitori uluiți. 167

5.8.2. Indicatori netipificați. 168

5.8.3. Memorie a afișajelor învechite. 169

5.9. Uimirea noilor tipuri de schimbare 169

5.10. Inițializarea datelor 170

5.11. Subprogramul Vikoristannya u movі programare S-51. 170

5.11.1. Subprogram important.. 171

5.11.2. Parametrii firmware 173

5.11.3. Subprogramare înainte 174

5.11.4 Subprogramul Viklik.. 176

5.11.5 Subprogram apel recursiv. 176

5.11.6 Întreruperea subprogramelor. 177

5.11.7 Domenii de schimbare și subprograme. 178

5.12. Programe cu module bogate 179

Capitolul 6. Pregătirea programelor pentru nucleul integrat al Keil μVision2. 182

6.1 Crearea proiectului meu ASM-51 182

6.2 Aplicație creată de proiectul meu C pentru controlerul inițial în miezul integrat al Keil μVision2 188

Capitolul 7. Descrierea controlerului inițial. 199

7.1. Structura controlerului 199

7.2. Spatiu de adresa 200

7.2.1. Împărțit amintirea. 200

7.2.2 Memorie externă. 201

7.2.3. Memoria internă a datelor. 202

7.3. Lista de porturi pentru inserare și îndepărtare 202

7.4. Port secvenţial………………………………...203

7.5. Robot z RKI 205

7.6. Panourile de control……………………………………………………………………213

SUPLIMENT P2 STRUCTURA RAPORTULUI DESPRE LAB ROBOT……..217

Anexă P3 comenzile aparatului Kodi. 217

Referințe... 224


introduce

În specialitățile stăpânite legate de automatizarea proceselor tehnologice și de fabricație, dezvoltarea microcontrolerelor este una dintre secțiunile importante.

Lumea se confruntă cu o dezvoltare continuă și apariția de noi și noi microcontrolere și microprocesoare pe 16 și 32 de biți, dar cea mai mare parte a pieței de microprocesoare ușoare este încă pierdută pentru dispozitivele pe 8 biți. Conform tuturor previziunilor companiilor de analiză, poziția de lider a microcontrolerelor pe 8 biți pe piața iluminatului va rămâne în viitorul apropiat.

În prezent, dintre toate microcontrolerele pe 8 biți, familia MCS-51 este liderul incontestabil în numărul de soiuri și numărul de companii care produc modificările acestuia. Și-a luat numele de la primul reprezentant al familiei sale - microcontrolerul 8051. Pe lângă setul de dispozitive periferice, capacitatea de a alege fie memorie de program externă, fie internă și un preț rezonabil pentru Nu ne-a păsat de succesul acestui microcontroler în piața.

Avantajele familiei MCS-51:

· arhitectura, care este un standard de facto;

· Lărgimea extremă a familiei și diversitatea posibilităților;

· Disponibilitatea unor versiuni foarte productive și avansate de procesoare;

· Numărul de opțiuni software și hardware disponibile pe scară largă este semnificativ;

· Ușurință în programarea hardware, inclusiv programarea circuitelor interne;

· Ieftinitatea și disponibilitatea cipurilor de bază;

· Disponibilitatea unor versiuni speciale de controlere pentru minți speciale

· Disponibilitatea versiunilor de controler cu un nivel redus de tranzitori electromagnetici;

· Popularitate largă în rândul generațiilor mai în vârstă de copii, atât în ​​lume, cât și în țările cu LIC;

· Susținerea arhitecturii cu principiile de bază ale luminii.

Și, știți, principalul avantaj: stăpânind cipul de bază al familiei, este ușor să începeți să lucrați cu astfel de monștri de calcul precum microcontrolere de la Cygnal, Dallas Semiconductor, Analog Devices, Texas Instruments.

Stocul familiei MCS-51 include o gamă întreagă de microcircuite, de la cele mai simple microcontrolere până la câteva pliabile. Astăzi există peste 200 de modificări ale microcontrolerelor din familia 8051, care sunt produse de aproximativ 20 de companii. În curând apar noi variante de reprezentanți ai acestei familii.

Principalele direcții de dezvoltare sunt:

· Cod de viteză crescută (frecvență de ceas crescută și arhitectură reproiectată);

· Tensiune redusă și consum de energie;

· Utilizare sporită a memoriei RAM și FLASH pe cip cu posibilitatea de programare a circuitelor interne;

· introducerea în depozitul de la periferia microcontrolerului a dispozitivelor de pliere precum un sistem de rulotă cu acționări, CAN și interfețe USB etc.

Microcontrolerele din familia MCS-51 vă permit să configurați controlul diferitelor dispozitive, precum și să implementați diverse componente ale circuitelor analogice. Toate microcircuitele din această familie funcționează cu același sistem de comandă. Cele mai multe dintre ele sunt instalate în carcase noi cu o bază care este evitată (numerotarea bazei pentru carcasă). Acest lucru vă permite să utilizați microcircuite de la diferite companii - producători fără a relua schemele de circuit ale dispozitivului și ale programelor.

Principalii producători de specii din a 51-a familie din lume sunt Philips, Siemens, Intel, Atmel, Dallas, Temic, Oki, AMD, MHS, Gold Star, Winbond, Silicon Systems și alții.

Caracteristicile analogilor microcontrolerelor din familia MCS-51 (Intel 8XC51FA, 8XC51GB, 80C152) cu capacități extinse sunt prezentate în tabel. ÎN 1.

Tabelul B.1

RAM ROM RSA ADC WDT T/C Slide Canale Caracteristici
Atmel: AT89C2051
- - - - UART Flash 2 KB
AT89C4051 - - - - UART Flash 4 KB
AT89S4D12 128K - - - UART, SPI Flash 4 KB
DALLAS Semiconductor: DS5000FP
- - - + UART Încărcător bootstrap
DS5001FP - - - + UART Încărcător bootstrap
DS8xC520 16K - - + 2xUART 2 DPTR
SIEMENS: C505C
16K - + + UART, CAN 8 DPTR
C515C 64K - + + UART+ SSC+CAN 4 PWM, 8 DPTR
Philips: *89C51RA+
- + - + UART 2 DPTR, 4 nivel. rev., ceas out, Flash 8K
P51XAG1x 8K - - + 2 UART
Intel: 8xC51RA
8K - + + UART 4 nivele IRQ, ceas out
8XC196KC 64K 16K - + - UART 3 PWM
80C196KB 64K 8K - + - UART PWM

Secțiunea 1. Arhitectura familiei MCS51

Microcontrolerele cu un singur cip pe 8 biți din familia MCS-51 au câștigat o mare popularitate în rândul dezvoltatorilor de sisteme de control cu ​​microprocesor în funcție de designul arhitecturii. Arhitectura microcontrolerului este o colecție de resurse hardware și sisteme de comandă accesibile de software interne și externe. Arhitectura familiei MCS-51 este condusă în mod semnificativ de obiectivele sale de a crea dispozitive digitale compacte și cu costuri reduse. Microcontrolerele care combină toate funcțiile micro-EOM într-un singur microcircuit au fost numite EOM cu un singur cip (SOC).

Intel a lansat aproape 50 de modele bazate pe nucleul de operare al microcontrolerului Intel 8051. În același timp, multe alte companii, precum Atmel, Philips, au început să producă propriile microcontrolere, împărțite în standardul MCS-51.

caracteristicile subterane

Principalele caracteristici ale familiei:

· Procesor central (CPU) pe 8 biți, orientat spre controlul dispozitivelor computerizate;

· CPU este echipat cu un circuit de multiplicare hardware pe 8 biți;

· Faptul că setul de instrucțiuni are un număr mare de operații pentru lucrul cu biți adresați direct face posibil să vorbim despre un procesor pentru lucrul cu date pe biți (procesor boolean);

· Memorie de program internă (rotită pe cristal) de tip mascat sau reprogramat, care poate fi pentru diferite cristale cu un volum de la 4 la 32 KB, în unele versiuni în fiecare zi;

· Cel puțin 128 de octeți de memorie RAM rezidentă de date, care este utilizat pentru organizare, înregistrarea băncilor, stiva și stocarea datelor;

· Cel puțin 32 de linii de interfață bidirecționale (porturi), care pot fi configurate individual pentru a introduce sau a ieși informații;

· două vindecători/temporizatoare multi-mode pe 16 biți care sunt folosite pentru a menține procesele externe, pentru a organiza ceasurile de timp și pentru a verifica portul de comunicare;

· Bidirectional duplex asynchronous receiver (UART), utilizat pentru organizarea canalelor de comunicație între microcontroler și dispozitive externe cu o gamă largă de viteze de transfer de informații. Є caracteristici pentru integrarea hardware și software a microcontrolerelor în sistemul asociat;

· sistem prioritar de udare casnic, care suportă cel puțin 5 vectori de udare din 4 jeturi de apă interne și 2 exterioare;

· Generator de ceas intern.

Diagramă bloc

Schema bloc a controlerului este prezentată în Fig. 1.1 și constă din următoarele unități funcționale principale: o unitate de control, o unitate aritmetic-logică, un bloc temporizator/distribuitor, o interfață serială și bloc de întrerupere, un controler de program, o memorie memorie de date și programe. Comunicarea bidirecțională are loc printr-o magistrală de date internă de 8 biți. Aproape toți reprezentanții familiei MCS-51 au fost creați în cadrul acestei scheme. Diverse microcircuite ale acestei familii sunt împărțite în registre cu scop special (registre și număr de porturi).

Bloc de sincronizare și control- scopuri pentru vibrarea semnalelor de sincronizare și control pentru a asigura coordonarea funcționării integrate a unităților OEOM în toate modurile de funcționare admise. Unitatea de control al depozitului include:

formarea viitoare a intervalelor de oră;

logica intrare-ieșire;

registru de comenzi;

registru de gestiune a alimentării cu energie electrică;

decodor de comandă, logica de control EOM.

Mic 1.1. Schema bloc a controlerului I8051.

Dispozitiv pentru formarea intervalelor de oră Destinat pentru formarea și formarea semnalelor interne de ceas de fază, cicluri și cicluri de ceas. Numărul de cicluri de mașină înseamnă complexitatea secvenței de comenzi. Aproape toate comenzile OEOM sunt executate în unul sau două cicluri de mașină, cu excepția comenzilor de înmulțire, și a căror trivialitate are loc în mai multe cicluri de mașină. În mod semnificativ, frecvența generatorului, care este setată prin F r. Frecvența ciclului mașinii este de 12/F sau setați 12 perioade la semnalul generatorului care se setează. Logica de intrare-ieșire este concepută pentru a primi tipurile de semnale care asigură schimbul de informații de la dispozitive externe prin porturile de intrare-ieșire P0-P3.

Registrul de comenzi Scopul înregistrării este de a salva opcode-ul de 8 biți al comenzii care este adăugată. Codul de operare, cu ajutorul unui decodor de comandă și al logicii de control EOM, este convertit în microprogramul comenzii.

Registrul de control al membrilor (PCON) Vă permite să schimbați robotul microcontroler pentru a modifica cantitatea de energie electrică consumată și pentru a modifica nivelul de intrare de la microcontroler. O schimbare și mai mare a cantității de energie electrică și o schimbare a transcodării pot fi realizate prin deconectarea generatorului de microcontroler care îl setează. Acest lucru poate fi realizat cu ajutorul inversării registrului de biți în legătură cu PCON. Pentru versiunea fabricată folosind tehnologia n-MOS (seria 1816 sau microcircuite străine, ale căror nume au litera „c” în mijloc), registrul de registru PCON conține doar un bit, ceea ce asigură o transmisie lină de portul serial SMOD și va să fie conectat la alimentarea cu energie electrică în fiecare zi.

Unitate logică aritmetică (ALU) este un dispozitiv paralel pe opt biți care oferă o gamă largă de operații aritmetice și logice. ALU este format din:

registre baterie, registre de economisire a timpului TMP1 și TMP2;

constante PZP;

sumatora;

registru suplimentar (registru B);

baterie (ACC);

registrul va deveni un program (PSW).

Registru baterie și registru de economisire a timpului- registre de opt biți, menite să capteze și să salveze operanzi pentru ora de execuție a operațiunilor asupra acestora. Aceste registre nu sunt accesibile programatic.

ROM constant va asigura generarea unui cod corectat în timpul transmiterii datelor sub a zecea, un cod masca în timpul operațiunilor pe biți și un cod constant.

Sumator paralel de opt biți este o schemă de tip combinațional cu transfer ulterior, concepută pentru calculul operațiilor aritmetice de adunare, adunare și operații logice de adunare, înmulțire, ambiguitate și identitate.

Registrul B- un registru de opt biți, care se modifică în timpul operației de înmulțire. Pentru alte instrucțiuni, poate fi considerat un registru operațional suplimentar.

Baterie- un registru de opt cifre pentru primirea si salvarea rezultatului obtinut in timpul executarii operatiilor sau operatiilor aritmetico-logice.

Bloc de interfață serială (SIP) scopuri de organizare a intrărilor - afișarea fluxurilor ulterioare de informații și organizarea unui sistem de întrerupere a programelor. Blocul depozit include:

tampon PIP;

logica keruvannya;

registru de control;

tampon de transmisie;

tampon primar;

acceptor port serial;

întreruperea registrului prioritar;

se permite întreruperea registrului;

Se întrerupe logica procesării însemnelor și schema vibrației vectoriale.

Contor de comenzi (Contor de programe) Scopuri pentru formarea unei adrese filetate de 16 biți a memoriei interne de program și a unei adrese de 8/16 biți a memoriei externe de program. Depozitul de stocare a comenzilor include un buffer PC de 16 biți, un registru PC și o schemă de incrementare (mărește cu 1).

memorie de date (RAM) Proiectat pentru salvarea din timp la oră a informațiilor care sunt colectate în timpul procesului de instalare a programului.

Porti P0, P1, P2, P3 Are porturi de intrare-ieșire cvasi-bidirecționale pentru a asigura schimbul de informații OEOM cu dispozitive externe, creând 32 de linii de intrare-ieșire.

Înregistrarea va deveni un program (PSW) Scopuri pentru salvarea informațiilor despre instalația LSA în timpul instalării programului.

Memoria programului (EPROM) Proiectat pentru salvarea de programe și dispozitive de memorie permanentă (ROM). Unele microcircuite au măști stagnante care pot fi șterse prin expunere la ultraviolete sau FLASH ROM.

Registrul de afișare a datelor (DPTR) scopul pentru stocarea adresei de 16 biți a memoriei de date externe.

Indicator de stivă (SP) Este un registru de opt biți folosit pentru a organiza o zonă specială de memorie de date (stivă), în care puteți salva rapid orice cantitate de memorie.

1.3 Scopul componentelor microcontrolerului 8051(Fig. 1.2)

· U ss - potenţialul drotu-ului subteran („pământ”);

· U cc - tensiunea de alimentare principală +5 V;

· X1, X2 – conectori pentru conectarea unui rezonator de cuarț;

· RST - intrarea microcontrolerului;

· PSEN - a permis ca memoria externă a programului să fie vizibilă numai atunci când este actualizată la noul ROM;

· ALE – stroboscopul adresei memoriei externe;

· EA - activarea memoriei interne a programului; Nivelul 0 la care intrarea determină microcontrolerul să termine programul numai de la PZP extern; Ignorarea interiorului (cum rămâne);

Mic 1.2. Atribuirea pinii 8051.

· P1 - port de intrare/ieșire cvasi-bidirecțional de opt biți, fiecare port poate fi programat atât pentru intrarea cât și pentru ieșire de informații, independent de alte categorii;

· P2 este un port cvasi-bidirecțional de opt biți, similar cu P1, ai cărui pini sunt utilizați pentru a afișa informații despre adrese atunci când programul sau datele sunt descărcate în memoria externă (deoarece se folosește adresarea pe 16 biți). rămânerea). În plus, pinii portului sunt selectați atunci când sunt programați pentru a introduce adrese de ordin înalt în microcontroler;

· РЗ - port cvasi-bidirecțional de opt biți, similar cu P1, ai cărui pini pot fi echipați cu o serie de funcții alternative, cum ar fi cele utilizate în funcționarea temporizatoarelor, portul serial de intrare-ieșire, controlerul de întrerupere , și tributuri de memorie de program extern;

· P0 - multiplexarea portului bidirecțional de opt biți pentru intrare-ieșire a informațiilor, prin acest port octetul mic al adresei și al datelor este scos în momente diferite.

Organizarea memoriei

Întreaga serie MCS-51 folosește arhitectura Harvard pentru a oferi programe adresabile și memorie de date. Structura memoriei este prezentată în Fig. 1.3.

Cantitatea de memorie internă (rezidentă) de program (ROM, EPROM sau OTP ROM) care este stocată pe cristal poate fi setată la 0 (fără ROM), 4K (cristal de bază), 8K, 16K sau 32K, în funcție de tipul de microcircuit. Pentru consum, puteți extinde memoria de program a PZP-ului extern instalat. Accesul la PZP intern sau extern este atribuit valorilor semnalului de pe ieșirea EA (Acces extern):

EA = V cc (tensiune de viață) - acces la PZP intern;

EA = V ss (potențial de masă) – acces la ROM extern.

Pentru cristalele fără PZP (fără ROM), conexiunile EA trebuie să fie conectate permanent la V ss.

Mic 1.3. Organizarea memoriei familiei MCS-51

Strobe pentru citirea PZP-ului extern - (Program Store Enable) este generat atunci când programul este descărcat în memoria externă și este inactiv în timpul descărcării în PZP care se află pe cip. Zona adreselor inferioare de memorie a programului este întreruptă de sistem. Arhitectura cipului de bază 8051 acceptă cinci funcții:

· întrerupe două exterioare;

· întrerupeți cronometrele de două ori;

· Întreruperea portului serial.

În fig. Figura 1.4 prezintă o hartă a zonei inferioare a memoriei programului.

Mic 1.4. Harta zonei inferioare a memoriei programului

Memorie program (PPM)

În microcontrolerele din familia 8051, memoria de program și memoria de date sunt dispozitive independente și independente, adresate prin diferite comenzi și semnale care sunt controlate.

Volumul memoriei de programe stocate pe cipul microcontrolerului 8051 este de până la 4 KB (în familie până la 32). Când programele vor fi intermitente într-o memorie nouă, toate microcontrolerele din familia 8051 vor folosi întotdeauna o adresă de 16 biți, care va oferi acces la până la 64 KB de ROM. Microcontrolerul trece la memoria programului în momentul citirii codului de operare și operanzilor (procesorul de comandă al computerului) și trimite comenzile pentru a copia octetul din memoria programului în baterie. La utilizarea acestor comenzi, copierea datelor este adresată în mijlocul memoriei programului din care vor fi citite datele, poate interacționa cu controlerul de date al PC-ului și registrul special de date dublu octet DPTR.

Memoria tributurilor (MP)

Volumul memoriei de date stocate pe cip este de 128 de octeți. Volumul memoriei externe de date poate ajunge până la 64 KB. Primii 32 de octeți sunt organizați în patru bănci de registre de importanță primară, care sunt desemnate banca 0 - banca 3. Fiecare dintre ele este format din opt registre R0-R7. În orice moment, programul are o singură bancă de registre disponibile în timpul adresei de registre, numărul cărora se află în al treilea și al patrulea biți ai cuvântului va deveni programul PSW.

Adresele zonei de memorie de biți a microcontrolerului 8051

Tabelul 1.1

Adrese de octeți (hexadecimale) Adresele bătăliilor pe rânduri
D7 D6 D5 D4 D3 D2 D1 D0
2F 7F 7E 7D 7C 7B 7A
2E
2D 6F 6E 6D 6C 6B 6A
2C
2B 5F 5E 5D 5C 5B 5A
2A
4F 4E 4D 4C 4B 4A
3F 3E 3D 3C 3B 3A
2F 2E 2D 2C 2B 2A
1F 1E 1D 1C 1B 1A
0F 0E 0D 0C 0B 0A
20h

Spațiul de adrese, care se pierde, poate fi configurat de dezvoltator la discreția sa: poate găzdui zone de stivă, sistem și date personale. Rechemarea memoriei acestor date se poate face în două moduri. Prima metodă este adresarea directă la mijlocul memoriei. Ce tip de adresă din mijloc este operandul comenzii de intrare. O altă metodă este adresarea indirectă a registrelor indicatoare suplimentare R0 sau R1: înainte de introducerea comenzii externe, adresele din mijloc pot fi introduse într-una dintre ele până când este necesară deschiderea lor.

Pentru a transfera date în memoria externă, este necesară adresarea indirectă pentru registrele suplimentare R0 și R1 sau registrul indicator de 16 biți DPTR.

O parte a memoriei de date este zona de biți, în ea există capacitatea de a aborda descărcarea de piele a memoriei de mijloc folosind comenzi speciale de biți. Adresele biților adresați direct pot fi, de asemenea, înregistrate în același mod (AddressByte). (Descărcare). Relevanța acestor două metode de adresare poate fi văzută în tabel. 1.1.

Baza microcontrolerului (div. Fig. 1) este o unitate aritmetică logică (ALU) pe 8 biți. Atunci, memoria lui MK este similară cu arhitectura Harvard. împărțit logic: în memorie de program - PP (internă sau externă), adresată de un procesor de comandă pe 16 biți (CC) și memorie de date - internă (memorie de date rezidentă - RPD) 128 (sau 256) octeți și, de asemenea, extern (memorie de date) ) - VPD) până la 64 KB. Din punct de vedere fizic, memoria programului este implementată pe PZP (disponibilă doar pentru citire), iar memoria de date este în RAM (disponibilă pentru înregistrare și citire a datelor).

Recepția și ieșirea semnalelor externe se realizează prin 4 porturi de opt biți P0..P3. Când faceți upgrade la memorie externă de program (PMS) și memorie de date (DRAM), porturile P0 și P2 sunt alocate deoarece magistrala externă Adresă/Date este multiplexată. Liniile către portul P3 pot fi configurate cu funcții alternative (vezi tabelul 1).

Registrul DPTR pe 16 biți formează adresa VPD-ului sau adresa de bază a memoriei de program a comenzii de reconstrucție a bateriei. Registrul DPTR poate fi folosit și ca două registre independente de 8 biți (DPL și DPH) pentru a stoca operanzi.

Registrul intern de comandă (RC) de 8 biți primește codul comenzii atribuite; Acest cod este descifrat de circuitul de control, care generează semnale care sunt controlate (div. Fig. 1).

Revenirea la registrele de funcții speciale - RRF (SFR - încercuit în linie punctată în Fig. 1) este posibilă numai cu adresare directă de octeți în intervalul de adrese de la 128 (80h) și mai mult.


Memoria rezidentă de date (RDM) a primelor modele de microcontrolere din familia MCS-51 este mică - 128 de octeți. Cei mai tineri 32 de octeți ai RPD sunt simultan și registre de importanță primară - RON (4 bănci a câte 8 RON fiecare). Programul se poate extinde la unul dintre cei 8 lei din banca activă. Selecția băncii active de PON-uri este determinată de programarea a doi biți în registrul procesorului – PSW.


Tabelul 1 - Alocarea pinii MCS-51

Viv nr. Programare Misiune
1..8 P1 Port I/O cvasi-bidirecțional pe 8 biți
9 RST

Semnal de picătură (rubarbă activă – ridicat);

Semnalul RST resetează: PC și majoritatea registrelor cu funcții speciale (SFR), protejând toate întreruperile și funcționarea temporizatoarelor; selectați Banca RONiv 0; scrie „toate unitățile” pe portul P0_P3, gata de intrare; scrie codul 07H pe indicatorul de stivă (SP);

10..17

Port I/O cvasi-bidirecțional pe 8 biți; După scrierea cifrei de ieșire „1”, sunt disponibile următoarele funcții suplimentare (alternative):

Intrare port serial – RxD;

Ieșire port serial – TxD;

Intrare de întrerupere externă 0 - ~ INT0;

Intrare de întrerupere externă 1 - INT1;

Intrare temporizator/dozator 0 – T0;

Intrare temporizator/dozator 1 – T1;

Ieșire stroboscop. semnal la ora înregistrării la VPD – ~ WR;

Ieșire stroboscop. semnal la ora citirii din VPD – ~ RD;

18, 19 X1, X2 Conectori pentru conectarea unui rezonator de cuarț sau a unui circuit LC;
20 GND Zagalny visnovok;
21..28 P2 Port I/O cvasi-bidirecțional pe 8 biți; sau ieșiți din adresa A în modul robot din memoria externă (ZPS sau VPD);
29 PME Strobe pentru citirea memoriei externe a programului, vizibilă numai când este actualizat la noul ROM;
30 ALE Strobe pentru adrese de memorie externă (ZPS sau VPD);
31 EA Când RPP este pornit, nivelul „0” la această intrare schimbă MK la selectarea comenzilor doar de pe pistă ;
39..32 P0 Port de intrare/ieșire bidirecțional pe 8 biți; când este actualizat la memorie externă, vede adresele A (care sunt scrise în registrul extern în spatele semnalului ALE), apoi schimbă un octet sincron cu semnalul ~PME (pentru comenzi) sau ~WR, ~RD (pentru date de la VPD), atunci când sunt actualizate la În memoria externă, toate unitățile, alte informații stocate acolo, sunt scrise în registrul portului P0;
40 Ucc Durata de viață a tensiunii Vividennya

Schimbarea băncilor de lei va fi mai ușoară cu ajutorul unui subprogram și întreruperea procesării, deoarece nu este nevoie să împingeți programul principal pe stivă în locul RON-urilor atunci când subprogramele fac clic (este suficient ca subprogramul să se mute într-o altă bancă activă de RON).

Trecerea la RPD este posibilă folosind adresarea indirectă sau directă pe octeți (adresarea directă pe octeți permite scalarea până la primii 128 de octeți ai RPD).

Zona RPD a fost extinsă (pentru microcontrolere din familia MCS-52 și alte familii) de la adresele 128 (80h) la 255 (FFh) pot fi adresate folosind metoda de adresare indirectă.

Tabelul 2 – Blocul de registre de funcții speciale (s f r)

Cod Menimo Nume
0E0h * ACC Baterie
0F0h *B Registrul de extindere a bateriei
0D0h *PSW Word va deveni un procesor
0B0h *P3 Portul 3
0A0h *P2 Portul 2
90h *P1 Portul 1
80h * P0 Portul 0
0B8h *IP Întrerupeți registrul prioritar
0A8h *IE Registrul măștilor este întrerupt
99h SBUF Buffer serial recepție-transmisie
98h * SCON Registrul de control/starea portului serial
89h TMOD Registrul cronometrului/modurilor de tratament
88h * TCON Registrul de control / starea cronometrelor / vindecătorilor
8Dh TH1 Temporizator 1 (octet mare)
8Bh TL1 Temporizator 1 (octet scăzut)
8Ch TH0 Temporizator 0 (octet mare)
8Ah TL0 Temporizator 0 (octet scăzut)
83h DPH Registrul de registru de date (DPTR) (octet mare)
82h DPL Registrul de afișare a datelor (DPTR) (octet mic)
81h SP Registrul stivei
87h PCON Registrul pentru managementul stresului

2. PROGRAM MODEL MCS–51


TIP DE COMANDĂ MCS-51

Aproximativ jumătate din comenzi sunt executate într-un ciclu de mașină (MC). Cu o frecvență a oscilatorului de cuarț de 12 MHz, timpul de oscilație al unei astfel de comenzi este de 1 µs. Alte comenzi sunt completate în 2 cicluri de mașină, apoi. în 2μs. Numai comenzile de multiplicare (MUL) și subdivizare (DIV) sunt finalizate în 4 cicluri de mașină.

Într-o oră dintr-un ciclu de mașină, se fac doi pași către memoria programului (internă și externă) pentru a citi doi octeți ai comenzii și un pas către memoria externă de date (EDM).

3. METODE (CĂI) DE ADRESAREA MCS–51

1. ADRESA DE ÎNREGISTRARE - operandul de 8 biți se află în RON al băncii de registre selectate (activ);

2 ADRESARE NEMIJUNĂ (indicată prin semnul - #) - operandul este situat într-un alt octet de comandă (și pentru un operand de 16 biți în al treilea);

3 INDICARE ADRESARE (indicată prin semnul – @) – operandul este localizat în Memoria de Date (RDD sau VPD), iar adresele din mijlocul memoriei sunt situate într-unul dintre RON-urile de adresare indirectă (R0 sau R1) ; în comenzile PUSH și POP, adresele sunt situate în indicatorul stivei SP; Registrul DPTR poate fi setat la adresa VPD până la 64K;

4 ADRESARE DIRECT BYTE – (dir) – se folosește pentru maparea la mijlocul RPD (adresele 00h...7Fh) și la registrele funcțiilor speciale SFR (adresele 80h...0FFh);

ADRESAREA DE 5 BIȚI DIRECT – (bit) – este folosită pentru scalarea până la cei 128 de biți adresați direct, distribuiți la mijlocul RPD-ului în spatele adreselor 20H ... 2FH și până la exteriorul biților adresabili ai registrelor cu funcții speciale ( div. Tabelul 3 și despre modelul gramnu);

6 ADRESARE INDEX SĂPTĂMÂNALĂ (indicată prin semnul – @) – este ușor să priviți tabelul din Memoria Programului, adresele PP sunt alocate registrului de bază (PC sau DPTR) și registrului index (Baterie);

7 ADRESARE IMPLICITĂ (IMPLICITĂ) – cod de comandă pentru a plasa o adresă implicită (din greșeală) pe unul dintre operanzi (cel mai adesea pe Acumulator).

4. FORMATUL CUVINTULUI PENTRU PROCESATOR (PSW)

C - transfer ensign (CARY) sau poziții, care include și funcțiile „acumulatorului boolean” în comenzile care operează cu biți;

AC – ordinea transferului suplimentar (suplimentar) – este setată la „1”, dacă în comanda de adăugare (ADD, ADDC) a existat un transfer de la cel mai mic la cel mai mare (adică de la al 3-lea bit la al 4-lea bit). );

F0 – ensign al koristuvachului – instalat, resetat și verificat programatic;

RS1 RS0 bancă Adrese (dir)
0 0 0 00h..07h
0 1 1 08h..0Fh
1 0 2 10h..17h
1 1 3 18h..1Fh

RS1,RS0 - Selectați banca de înregistrare:

OV – Prapor of aritmetic revival; Valoarea acestuia este determinată de operația „Pornește ABO” a semnalelor de intrare și de ieșire care transferă bitul de ordin înalt al ALU; Valoarea unică a acestui semn indică faptul că rezultatul unei operații aritmetice în codul addendum este în intervalul acceptabil: –128…+127; la sfârșitul operațiunii, ensignul OV este resetat la zero, iar când diviziunea este setată la zero, este setat; cu mai multe steaguri OV, rezultatul este mai mare de 255 (0FFH);

Descărcare PSW - Rezervă, declanșare, disponibilă pentru înregistrare sau citire;

P – dreptul la paritate – un număr suplimentar de bătăi simple în acumulator până la dublu; format dintr-un circuit combinat (software accesibil doar pentru cititori).

Microcontrolerele MCS-51 au o denumire zilnică de „Z”. Dar în comenzile tranziției mentale (JZ, JNZ) se verifică printr-un circuit combinațional de flux (zero sau non-zero) în loc de o baterie.

Toate comenzile pentru transferul și schimbul operandului pot fi executate prin intermediul acumulatorului (div. Fig. 3). Mai mult, transferurile de la/la Memoria Externă (Memorie de program sau Memoria de date) pot fi efectuate numai prin intermediul bateriei.

Majoritatea transferurilor se pot face și prin intermediul unui octet (dir). Se pare că dir – dir a fost depășit (div. Fig. 3).

Transferurile zilnice de la RVN la RON pot fi implementate ca transferuri de la RVN la octeți de direcționare directă (înțelegând că RON se află în zona principală a memoriei de date rezidente, mesajele care pot fi adresate ca dir).

Comenzile de schimb XCH vă permit să transferați octeți fără a modifica ambii operanzi.

Comenzile aritmetice sunt stocate în acumulator. Prin urmare, primul operand trebuie mai întâi plasat în acumulator și apoi îndepărtat sau celălalt operand eliminat. Rezultatul se află în baterie.


Comanda SUBB este asociată doar cu poziția (deci rezultatul este ensign Cary). Prin urmare, pentru a elimina comanda dintr-o poziție fără poziție, este necesar să introduceți mai întâi comanda de ștergere a ensign C (CLRC).

Comanda pentru multiplicarea operanzilor pe un singur octet - MULAB - plasează un rezultat pe dublu octet (16 biți): octetul scăzut - în acumulator, octetul înalt - în registru.

Rezultatul introducerii comenzii sub operanzi pe un singur octet – DIVAB – se află: privat – și Acumulator, surplus – în registru.

Instrucțiunea de aritmetică INC adaugă unul la operandul selectat. Instrucțiunea aritmetică DEC setează operandul selectat la unu. Comanda Reglarea acumulatorului de zeci (DAA) vă permite să adăugați numere duble zecimale (numere BCD) fără a le converti în format hexazecimal (format hex). Operanzii de ieșire sunt scrieți în format BCD, atunci. Fiecare octet conține mai mult de un număr de la 0 la 9 (nu pot exista numere hexazecimale: A, B, C, D, E, F). Astfel, într-un octet pot exista numere de la 00 la 99 pentru numerele BCD împachetate sau numere de la 0 la 9 pentru numerele BCD dezambalate.

Comanda DA A – a zecea corecție se execută peste locul bateriei după adunarea numerelor BCD din procesor (numerele au fost adunate conform legilor aritmeticii hexazecimale) în următoarea ordine (cap magnific):

· dacă, în loc de o baterie nouă, există mai mult de 9 sau semne de transfer suplimentare (AC = 1), atunci bateriei se adaugă 6 (adică șase cifre în format hex);

· dacă există mai mult de 9 în locul zonei majore a bateriei sau este instalat ensign C, atunci numărul 6 este adăugat la zona principală a bateriei.

A zecea comandă de corecție DA A nu stagnează după comanda de creștere (INC), deoarece comanda de creștere nu se aplică (nu se modifică) comenzilor C și AC.

Comenzi logice:

„Eu” mai logic – ANL,

"ABO" mai logic - ORL,

Comanda logică "ON ABO" - XRL - se află în Acumulator (ca aritmetică), și este posibil să introduceți comenzi logice și în octetul care este adresat direct (dir). În acest caz, se poate folosi un alt operand:

În baterie sau

Operandul de mijloc al comenzii.

Comenzile Wrap (RR A, RL A) și comenzile Wrap prin CARY ensign (RRC A, RLC A) sunt distruse ciclic în loc de Acumulator cu 1 bit. Trimiterea operanzilor de biți are loc numai prin flag C.

 

 

Tse tsikavo: