Se întrerupe în microcontroler 8051 și structură și programare

Încercați Instrumentul Nostru Pentru Eliminarea Problemelor





Cele mai puternice și importante caracteristici sunt întreruperile în 8051 microcontroler . În majoritatea proceselor în timp real, pentru a gestiona anumite condiții în mod corespunzător, sarcina reală trebuie oprită pentru o perioadă de timp - necesită acțiunile necesare - și apoi trebuie să revină la sarcina principală. Pentru executarea unui astfel de tip de programe, sunt necesare întreruperi. Acesta diferă în totalitate de metoda de interogare în care procesorul trebuie să verifice secvențial fiecare dispozitiv și să întrebe dacă serviciul este necesar sau nu în timp ce consumă mai mult timp de procesor.

Se întrerupe în microcontrolerul 8051

Se întrerupe în microcontrolerul 8051



Întreruperile în microcontrolerul 8051 sunt mai de dorit pentru a reduce verificarea regulată a stării dispozitivelor interfațate sau a dispozitivelor încorporate. Întreruperea este un eveniment care suspendă temporar programul principal, trece controlul către o secțiune specială de cod, execută funcția legată de eveniment și reia fluxul principal al programului de unde a rămas.


Întreruperile sunt de diferite tipuri, cum ar fi software și hardware, pot fi mascate și nemascate, întreruperi fixe și vectoriale și așa mai departe. Rutina de servicii de întrerupere (ISR) apare în imagine atunci când are loc întreruperea și apoi îi spune procesorului să ia măsurile adecvate pentru întrerupere, iar după executarea ISR, controlerul sare în programul principal.



Tipuri de întreruperi în microcontroler 8051

Microcontrolerul 8051 poate recunoaște cinci evenimente diferite care determină întreruperea programului principal de la execuția normală. Aceste cinci surse de întreruperi în 8051 sunt:

  1. Timer 0 overflow interrupt- TF0
  2. Timer 1 overflow interrupt - TF1
  3. Intrerupere hardware externa- INT0
  4. Intrerupere hardware externa- INT1
  5. Întreruperea comunicării în serie - RI / TI

Timerul și întreruperile seriale sunt generate intern de microcontroler, în timp ce întreruperile externe sunt generate de suplimentare dispozitive de interfață sau comutatoare care sunt conectate extern la microcontroler. Aceste întreruperi externe pot fi declanșate la margine sau la nivel. Când apare o întrerupere, microcontrolerul execută rutina de servicii de întrerupere, astfel încât locația de memorie să corespundă întreruperii care o activează. Întreruperea corespunzătoare locației memoriei este dată în tabelul cu vectori de întrerupere de mai jos.

Tabel vector de întrerupere

Tabel vector de întrerupere

Structura de întrerupere a microcontrolerului 8051

După „RESET”, toate întreruperile sunt dezactivate și, prin urmare, toate aceste întreruperi trebuie activate de un software. În toate aceste cinci întreruperi, dacă cineva sau toate sunt activate, aceasta setează semnalizatoarele de întrerupere corespunzătoare așa cum se arată în figură. Toate aceste întreruperi pot fi setate sau șterse pe biți într-un anumit registru de funcții speciale care este activat pentru întrerupere (IE), iar acesta, la rândul său, depinde de prioritate, care este executată de registrul de prioritate de întrerupere IP.


Structura de întrerupere a microcontrolerului 8051

Structura de întrerupere a microcontrolerului 8051

Înregistrare activare întrerupere (IE): Acest registru este responsabil pentru activarea și dezactivarea întreruperii. Este un registru puțin adresabil în care EA trebuie setat la unul pentru activarea întreruperilor. Bitul corespunzător din acest registru permite întreruperi particulare, cum ar fi temporizator, intrări externe și seriale. În registrul IE de mai jos, bitul corespunzător 1 activează întreruperea și 0 dezactivează întreruperea.

Înregistrați activarea întreruperii (IE)

Înregistrați activarea întreruperii (IE)

Registr de prioritate de întrerupere (IP): De asemenea, este posibil să modificați nivelurile de prioritate ale întreruperilor prin setarea sau ștergerea bitului corespunzător din registrul de prioritate de întrerupere (IP) așa cum se arată în figură. Aceasta permite întreruperii cu prioritate redusă să întrerupă întreruperea cu prioritate ridicată, dar interzice întreruperea cu o altă întrerupere cu prioritate redusă. În mod similar, întreruperea cu prioritate ridicată nu poate fi întreruptă. Dacă aceste priorități de întrerupere nu sunt programate, microcontrolerul se execută în mod predefinit și ordinea acestuia este INT0, TF0, INT1, TF1 și SI.

Registrul IP

Registrul IP

TCON Register: În plus față de cele două registre de mai sus, registrul TCON specifică tipul de întrerupere externă la microcontrolerul 8051, așa cum se arată în figură. Cele două întreruperi externe, indiferent dacă sunt declanșate de margine sau de nivel, sunt specificate de acest registru de un set sau sunt eliminate de biții corespunzători din acesta. Și, este, de asemenea, un registru puțin adresabil.

TCON Register

TCON Register

Programare de întrerupere în 8051

1. Programarea întreruperii temporizatorului

Timerul 0 și întreruperile Timerului 1 sunt generate de biții de registru timer TF0 și TF1. Aceste întreruperi programare prin cod C presupune:

  • Selectarea temporizatorului prin configurarea registrului TMOD și a modului său de funcționare.
  • Alegerea și încărcarea valorilor inițiale ale TLx și THx pentru modurile adecvate.
  • Activarea registrelor IE și bitul de timer corespunzător din acesta.
  • Setarea bitului de rulare a temporizatorului pentru a porni temporizatorul.
  • Scrierea subrutinei pentru temporizatorul pentru timpul necesar și ștergerea valorii temporizatorului TRx la sfârșitul subrutinei.
Programarea întreruperii temporizatorului

Programarea întreruperii temporizatorului

2. Programare externă de întrerupere a hardware-ului

Microcontrolerele 8051 sunt formate din două întreruperi hardware externe: INT0 și INT1 așa cum am discutat mai devreme. Acestea sunt activate la pinul 3.2 și pinul 3.3. Acestea pot fi declanșate la margine sau la nivel. În declanșarea nivelului, scăderea la pinul 3.2 permite întreruperea, în timp ce la pinul 3.2 - tranziția de la înalt la scăzut permite întreruperea declanșată de margine. Această declanșare de margine sau declanșare de nivel este decisă de registrul TCON care a fost discutat mai sus. procedura de programare în 8051 este după cum urmează:

  • Activați bitul corespunzător de întrerupere externă în registrul IE.
  • Dacă este declanșator de nivel, scrieți doar subrutina corespunzătoare acestei întreruperi sau altfel activați bitul de registru TCON corespunzător întreruperii declanșate de margine - indiferent dacă este INT0 sau INT1.
Programare externă de întrerupere a hardware-ului

Programare externă de întrerupere a hardware-ului

3. Programarea întreruperii comunicării seriale

Întreruperile de comunicare în serie intră în imagine atunci când este nevoie să trimiteți sau să primiți date. Deoarece un bit de întrerupere este setat atât pentru semnalizatoarele TI (Transfer Interrupt), cât și pentru RI (Receiver Interrupt), rutina de servicii de întrerupere trebuie să examineze aceste semnalizatoare pentru a cunoaște întreruperea reală.

Operațiunea logică SAU a acestor două semnalizatoare (RI și TI) provoacă această întrerupere și este ștearsă doar de software. Aici, un registru special SCON este utilizat pentru control comunicare operațiune activând biții corespunzători din acesta.

  • Configurați registrul IE pentru activarea întreruperii seriale
  • Configurați registrul SCON pentru primirea sau transferul operațiunii
  • Scrieți subrutina pentru această întrerupere cu funcția adecvată și ștergeți steagurile TI sau RI cu această rutină.
Programare de întrerupere în serie

Programare de întrerupere în serie

Este vorba despre întreruperi în microcontroler 8051, tipuri, structura și programarea lor. Sper că ați fi primit informații bune din acest articol. De asemenea, ne puteți scrie în secțiunea de comentarii de mai jos pentru implementarea în timp real a proiecte de microcontrolere astfel încât să vă putem ajuta pentru o experiență practică mai bună.

Credite foto