Structura sistemului cu microprocesor PDF

Summary

This document provides a detailed overview of the general structure of a microprocessor system, including the microprocessor (CPU), memory, and I/O devices. It explains the roles of each component and the different architectures such as Harvard and von Neumann. The document is likely part of a course on computer architecture or digital systems.

Full Transcript

1. Structura generală a unui sistem cu microprocesor (microprocesor, spațiu de memorie și de I/E) Microprocesorul (UCP - Unitate Centrală de Prelucrare) Este nucleul unui sistem cu microprocesor, format dintr-o unitate aritmetică și logică (ALU) și reg...

1. Structura generală a unui sistem cu microprocesor (microprocesor, spațiu de memorie și de I/E) Microprocesorul (UCP - Unitate Centrală de Prelucrare) Este nucleul unui sistem cu microprocesor, format dintr-o unitate aritmetică și logică (ALU) și registre speciale pentru procesarea datelor și control. Controlează transferul de informații pe magistrala sistemului (MS), decide între ce componente și când se face schimbul de date. Memoria (MEM) Memorie pentru stocarea programelor (instrucțiunilor) și datelor utilizate. Poate fi impartita in: 1. Memorie program (MEMP): stochează instrucțiunile programului. 2. Memorie de date (MEMD): stochează datele utilizate de program. Accesibilă prin magistrale dedicate (la arhitectura Harvard) sau printr-o magistrală unică (la arhitectura von Neumann) Dispozitive de Intrare/Ieșire (I/E) Permit interacțiunea cu dispozitive externe, prin porturi dedicate de intrare și ieșire. Funcționează fie pentru transfer de date cu memoria (în cazul arhitecturii Harvard), fie prin microprocesor (la arhitectura von Neumann) Magistrala Sistemului (MS) Interconectează toate componentele sistemului (microprocesor, memorie și dispozitive I/E). Asigură schimbul de date între componente, fiind împărțită în: 1. Magistrală de adrese (pentru locația datelor). 2. Magistrală de date (pentru conținutul datelor). 3. Magistrală de control (pentru comenzi și semnale de sincronizare). 2. Regimul de funcționare normală a unui microprocesor (etapele de execuție a instrucțiunilor) 1. Extragerea Instructiunii (Fetch) Microprocesorul citește instrucțiunea din memoria program, utilizând contorul de program (PC - Program Counter) pentru a indica adresa memoriei de unde trebuie preluată instrucțiunea. Instrucțiunea extrasă este stocată într-un registru intern, denumit registru al instrucțiunii curente (RIC). Contorul de program este incrementat automat pentru a indica următoarea instrucțiune. 2. Decodificarea instrucțiunii (Decode): Instrucțiunea din RIC este analizată de unitatea de control a microprocesorului pentru a determina tipul de operație care trebuie efectuată și resursele implicate (registre, memorie, ALU etc.). Pe baza codului operației (opcode), microprocesorul generează semnalele de control necesare pentru execuția instrucțiunii 3. Execuția instrucțiunii (Execute): Microprocesorul realizează operațiile corespunzătoare, care pot fi: 1. Operații interne: aritmetice, logice, sau de transfer între registre. 2. Operații externe: transfer de date între memorie și registre sau între dispozitive I/E și registre. Rezultatul execuției este stocat fie într-un registru, fie într-o locație de memorie. După execuție, ciclul reîncepe cu următoarea instrucțiune. În cazul arhitecturii Harvard, instrucțiunile și datele pot fi prelucrate simultan datorită separării memoriei de program și memoriei de date, ceea ce îmbunătățește performanța 3. Caracteristicile arhitecturii von Neumann a unui sistem cu microprocesor. Memorie unificată pentru instrucțiuni și date. Magistrală unică de sistem (MS). Execuție secvențială. Simplitatea implementării. Eficiență redusă. Flexibilitate. 4. Caracteristicile arhitecturii Harvard a unui sistem cu microprocesor. Memorii separate pentru instrucțiuni și date. Magistrale separate. 1. Magistrala de program (MSP) pentru accesul la memoria de instrucțiuni. 2. Magistrala de date (MSD) pentru accesul la memoria de date. Execuție mai rapidă. Complexitate mai mare a hardware-ului. Eficiență ridicată în aplicații integrate. Flexibilitate redusă. Aplicații practice. 5. Caracteristicile arhitecturii Harvard modificate a unui sistem cu microprocesor. Magistrală unică pentru anumite operații. Stocarea datelor constante în memoria program. Performanță optimizată prin mecanisme suplimentare. Integrare pentru microcontrolere. Flexibilitate pentru programare și reprogramare. 6. Componentele unui sistem cu microprocesor și rolul lor. 1. Microprocesorul (Unitatea Centrală de Prelucrare - UCP) Este nucleul sistemului, responsabil de executarea instrucțiunilor și controlul întregului sistem. Roluri: 1. Execută operații aritmetice și logice folosind unitatea aritmetică și logică (ALU). 2. Controlează fluxul de date și sincronizarea dintre componente prin semnalele de control. 3. Stochează date temporare și adrese în registre speciale. Poate include un contor de program (PC), un registru de instrucțiuni (RIC), și alte registre interne. 2. Memoria (MEM) Roluri: 1. Memorie program (MEMP): stochează instrucțiunile care trebuie executate de microprocesor. 2. Memorie de date (MEMD): stochează datele care trebuie prelucrate și rezultatele. 3. Poate fi organizată pe mai multe niveluri (ex. RAM, ROM, memorie cache) pentru a optimiza viteza și capacitatea de stocare. Memoria este accesată de microprocesor pentru extragerea instrucțiunilor și datelor necesare. 3. Dispozitive de Intrare/Ieșire (I/E) Permite interacțiunea cu dispozitivele externe și utilizatorul. Roluri: 1. Intrare: colectează date din surse externe (ex. tastaturi, senzori). 2. Ieșire: trimite rezultatele procesării către dispozitive externe (ex. ecrane, actuatoare). Este organizat prin porturi de intrare și ieșire care fac parte din spațiul de memorie sau din registre speciale. 4. Magistrala Sistemului (MS) Asigură conectarea și transferul de date între componentele sistemului. Include: 1. Magistrala de adrese (MA): transportă adresele locațiilor de memorie. 2. Magistrala de date (MD): transportă conținutul datelor sau instrucțiunilor. 3. Magistrala de control (MC): transportă semnalele de comandă și sincronizare. Roluri: 1. Coordonarea schimbului de date între microprocesor, memorie și dispozitivele I/E. 5. Generatorul de tact Produce semnalul de ceas utilizat pentru sincronizarea componentelor sistemului. Rol: Controlează viteza de execuție a instrucțiunilor prin semnale periodice (clock pulses). 6. Circuitul de resetare Pune sistemul în starea inițială la pornire sau după un eveniment de resetare. Inițializează componentele sistemului și încarcă prima instrucțiune. 7. Controlerul de întreruperi Gestionează cererile de întrerupere din partea componentelor interne sau externe. Permite microprocesorului să întrerupă execuția curentă și să răspundă unor evenimente urgente (ex. finalizarea unei operații I/E). 7. Tipuri de transfer de date într-un sistem cu microprocesor. 1. Transfer sincronizat (controlat de ceas) Transferul se realizează la un anumit moment determinat de semnalul de ceas. 2. Transfer asincron Transferul începe atunci când un semnal de control (ex. READY, ACK) indică disponibilitatea datelor sau pregătirea destinatarului. 3. Transfer prin acces direct la memorie (DMA - Direct Memory Access) Un controler DMA preia controlul magistralei și transferă date direct între memorie și dispozitivele I/E, fără implicarea directă a microprocesorului. 4. Transfer prin întreruperi Transferul de date este declanșat de o cerere de întrerupere generată de dispozitive externe sau de evenimente interne. 5. Transfer programat (controlat de procesor) Microprocesorul inițiază și controlează fiecare operație de transfer de date. 6. Transfer serial și paralel Serial: Datele sunt transferate bit cu bit pe o singură linie (ex. UART, SPI, I2C). Paralel: Datele sunt transferate simultan pe mai multe linii (ex. magistrala de date). 8. Organizarea memoriei (legătura dintre numărul de linii de adrese, de date și numărul de locații, respectiv capacitatea memoriei). 1. Linii de adrese (A): Numar locatii = 2^A. A: Numarul de linii de adrese. De exemplu, cu 8 linii de adrese, sistemul poate avea 2^8 = 256 locatii de memorie. 2. Linii de date (D): Dimensiunea locației de memorie (cuvânt de memorie): D Biti De exemplu, 8 linii de date permit stocarea unui octet (8 biți) în fiecare locație. 3. Capacitatea totală a memoriei Capacitate memorie: 2^A * D octeti. 4. Organizarea liniilor de adresă și dată Liniile de adresă sunt utilizate pentru a selecta locația de memorie dorită. Liniile de date transferă conținutul locației de memorie către microprocesor (sau invers). Dacă numărul de linii de adresă este mai mare decât necesar pentru un circuit de memorie specific, memoria ocupă doar o parte din spațiul de adresare total 9. Rolul logicii de decodificare și selecție într-un sistem cu microprocesor. 1. Roluri principale ale logicii de decodificare și selecție Decodificarea adreselor. Generarea semnalelor de selecție. Interfațarea magistralei cu componentele periferice. Optimizarea spațiului de adresare. Controlul accesului exclusiv. Gestionarea dispozitivelor periferice. 2. Componente interne ale logicii de decodificare și selecție Decodor de adrese Circuite logice combinaționale Semnale de control 10. Magistrala de adrese (cine o generează și la ce servește). Magistrala de adrese este un subsistem fundamental într-un sistem cu microprocesor, având ca scop specificarea locației din memorie sau dispozitivul de intrare/ieșire care urmează să fie accesat. Este generată de microprocesor și servește drept canal pentru transmiterea informațiilor despre locațiile de memorie. Magistrala de adrese este generată de microprocesor. La ce servește magistrala de adrese? a. Localizarea locațiilor de memorie b. Selectarea dispozitivelor de intrare/ieșire (I/E) c. Extinderea spațiului de adresare d. Sincronizarea transferurilor 11. Magistrala de date (rolul ei). Magistrala de date este utilizată pentru a transporta: 1. Instrucțiuni: Preluate din memoria program și încărcate în microprocesor pentru execuție. 2. Date: Transferate între memorie și microprocesor sau între microprocesor și dispozitivele de intrare/ieșire (I/E). 3. Rezultate: Obținute în urma procesării, care sunt apoi stocate în memorie sau transmise către dispozitive externe. Magistrala de date este de obicei bidirecțională, permițând: 1. Citirea datelor (ex. din memorie sau dispozitive I/E către microprocesor). 2. Scrierea datelor (ex. din microprocesor către memorie sau dispozitive I/E). Interfațarea microprocesorului cu memoria și I/E: 1. Magistrala de date facilitează schimbul de informații între microprocesor și: 1. Memoria program: Instrucțiuni pentru execuție. 2. Memoria de date: Variabile și rezultate. 3. Dispozitivele de intrare/ieșire: Date de la senzori sau comenzi către actuatoare. 12. Magistrala de comandă (cine o generează și la ce servește) Este utilizată pentru a transporta semnalele de control care sincronizează și coordonează operațiile între microprocesor, memorie și dispozitivele de intrare/ieșire (I/E). Microprocesorul este principalul generator al semnalelor de comandă. Semnalele sunt produse de unitatea de control a microprocesorului, care interpretează instrucțiunile și determină operațiile necesare. La ce servește magistrala de comandă? a. Coordonarea operațiilor de citire și scriere b. Validarea și activarea componentelor sistemului c. Gestionarea transferurilor pe magistrala de date d. Sincronizarea componentelor sistemului e. Controlul accesului la magistrala sistemului 13. Formatul instrucțiunilor și amplasarea lor în memorie. Instrucțiunile sunt compuse din două părți principale: 1. Codul operației (Opcode): Specifică acțiunea care trebuie realizată (ex. adunare, scriere în memorie, ramificare). 2. Operanzii: Indică locațiile sau valorile implicate în operație (registre, locații de memorie, constante). Lungimea instrucțiunilor Instrucțiunile pot avea lungimi diferite, în funcție de complexitate și numărul de operanzi: 1 octet: Instrucțiuni simple (ex. incrementare, schimbare de stare). 2 octeți: Instrucțiuni care includ un operand (ex. adresă de 8 biți sau o constantă). 3 octeți: Instrucțiuni care includ un operand de 16 biți (ex. adresă extinsă de memorie). Structura generală a unei instrucțiuni Octet 1: Codul operației (Opcode). Octet 2 și 3 (opționale): Operanzii (adrese, valori imediate). Amplasarea instrucțiunilor în memorie Instrucțiunile sunt stocate în memoria program (ROM, Flash) în ordine crescătoare de adrese. Fiecare instrucțiune este împărțită în octeți care sunt amplasați consecutiv. Instrucțiunile sunt plasate secvențial, iar fiecare instrucțiune începe de la o adresă specificată de contorul de program (PC). Dacă o instrucțiune are mai mulți octeți, aceștia sunt stocați consecutiv, primul octet fiind codul operatiei iar urmatorii fiind operanzii. Moduri de adresare asociate instrucțiunilor Adresare directă: Operandul este specificat printr-o adresă explicită de 8 biți (ex. MOV A, 30H). Adresare indirectă: Adresa operandului este stocată într-un registru (ex. MOV A, @R0). Adresare imediată: Operandul este inclus direct în instrucțiune (ex. MOV A, #30H). Adresare relativă: Deplasamentul față de adresa curentă este specificat (ex. SJMP REL). Adresare indexată: Adresa operandului este calculată folosind un registru pointer (ex. MOVC A, @A+DPTR) 14. Formatul datelor și amplasare lor în memorie (little endian vs. big endian). Little Endian Octetul cel mai puțin semnificativ (Least Significant Byte - LSB) este stocat la adresa cea mai mică din memorie. Octetul cel mai semnificativ (Most Significant Byte - MSB) este stocat la adresa cea mai mare. Big Endian Octetul cel mai semnificativ (MSB) este stocat la adresa cea mai mică din memorie. Octetul cel mai puțin semnificativ (LSB) este stocat la adresa cea mai mare. 15. Dispozitivele de I/E (structura internă, rolul lor, tipuri de semnale) Structura internă a unui dispozitiv de I/E 1. Interfața hardware: Include porturi fizice (pini) pentru conectarea dispozitivului la magistrala sistemului (adrese, date, control). Permite transferul de date către sau dinspre microprocesor. 2. Registre de funcționare Registru de date Registru de control Registru de stare Registre de adresare (opțional) 3. Logica de comandă și control 4. Buffere și convertoare Rolul dispozitivelor de I/E a. Intrare: a. Permite sistemului să colecteze informații din mediu. b. Ieșire: a. Permite sistemului să comunice cu mediul extern sau să controleze alte dispozitive. Tipuri de semnale a. Semnale de control b. Semnale de stare c. Semnale de date d. Semnale de sincronizare 16. Microprocesorul - categorii de semnale la pini Semnale de adrese 1. Transportă informații despre locațiile de memorie sau porturile I/E care trebuie accesate. Semnale de date 1. Transportă datele efective între microprocesor și memorie sau periferice. Semnale de control 1. Asigură coordonarea operațiilor și sincronizarea transferului de date între microprocesor și componentele sistemului. Semnale de sincronizare 1. Coordonează sincronizarea între microprocesor și celelalte componente. Semnale de alimentare 1. Asigură alimentarea microprocesorului. Semnale de întrerupere 1. Permite gestionarea evenimentelor externe prin întreruperi. Semnale pentru acces direct la memorie (DMA - Direct Memory Access) 1. Gestionate de un controler DMA pentru transferuri de date rapide fără implicarea microprocesorului. Semnale pentru intrări/ieșiri periferice 1. Utilizate pentru conectarea directă a microprocesorului la dispozitivele de I/E. 17. Structura internă a unui microprocesor - principalele componente (ALU, RIC, registre speciale și de uz general) și rolul lor. 1. Unitatea aritmetică și logică (ALU - Arithmetic Logic Unit) Este responsabilă pentru efectuarea operațiilor aritmetice (ex. adunare, scădere, înmulțire, împărțire) și logice (ex. ȘI, SAU, XOR, complement). Poate lucra cu valori binare stocate în registre sau în memorie. Produce rezultate care pot afecta indicatorii de condiții (cunoscuți și ca flaguri), stocați în registrele de stare. 2. Registrul instrucțiunii curente (RIC - Instruction Register) Stochează instrucțiunea care este în curs de execuție. RIC preia codul instrucțiunii din memoria program (specificat de contorul de program - PC). 3. Registrul contor de program (PC - Program Counter) Conține adresa următoarei instrucțiuni care trebuie executată. Este incrementat automat după extragerea fiecărei instrucțiuni. 4. Registre speciale și de uz general DPTR (Data Pointer Register) Acumulatorul (A) Registrul B Registre de uz general 1. Exemple: Registrele R0-R7 (în microcontrolere precum 8051). 18. ALU și indicatorii de condiții (rolul lor) Indicatorii de condiții sunt biți specifici din registrul de stare al microprocesorului (PSW - Program Status Word). Ei reflectă rezultatul operațiilor efectuate de ALU și sunt utilizați pentru luarea deciziilor în cadrul instrucțiunilor condiționale. Semnalează evenimente sau stări rezultate din operații, cum ar fi transportul, depășirea sau rezultatele zero. Permit microprocesorului să ia decizii bazate pe rezultatele obținute. Carry (C), Zero (Z) etc... 19. Etapele execuției unei instrucțiuni. MP depune pe Magistrala Adresei adresa instructiunii. MP activeaza semnalele de citire memorie. MP citeste in registrul instructiune codul operatiei din memorie pe Magistrala Date MP decodifica instructiunea MP executa instructiunea (cu operatii interne, transfer, aritmetice, logice, operatii pe magistrala, transfer de operanzi, etc). 20. Ordinea operațiilor la citirea din memorie sau port de intrare. 1. Generarea adresei 2. Activarea semnalelor de control 3. Validarea dispozitivului (Chip Select - CS) 4. Transferul datelor pe magistrala de date 5. Dezactivarea semnalelor 21. Ordinea operațiilor la scrierea în memorie sau port de ieșire. 1. Generarea adresei 2. Plasarea datelor pe magistrala de date 3. Activarea semnalelor de control 4. Validarea dispozitivului (Chip Select - CS) 5. Transferul datelor către dispozitivul țintă 6. Dezactivarea semnalelor 22. Structura internă a microcontrolerelor MCS-51 (componente și rolul lor). 23. Microcontrolere MCS-51 - categorii de semnale la pini 24. Registrul PSW (informații conținute) Registrul PSW are o lungime de 8 biți și este localizat în memoria de registre speciale (SFR) la adresa D0h. Fiecare bit al registrului are o semnificație specifică: Bit Nume Semnificatie 7 CY Carry Flag: Reflectă transportul/împrumutul la operațiile aritmetice sau rezultatul unor comparații. 6 AC Auxiliary Carry Flag: Indică transportul dintre bitul 3 și bitul 4 la operații aritmetice (util pentru BCD). 5 F0 Flag general de uz liber, utilizat de programator pentru operații specifice aplicației. 4 RS1 Register Bank Select 1: Selectează bancul de registre curent (împreună cu RS0). 3 RS0 2 OV Overflow Flag: Indică depășirea capacității de reprezentare a unui număr semnat. 1 - Rezervat: Nu este utilizat, valoarea este ignorată. 0 P Parity Flag: Indică paritatea acumulatorului. Setat dacă numărul de biți "1" din acumulator este impar. Operații aritmetice și logice Selectarea bancurilor de registre Control personalizat 25. Microcontrolerul C8051F040 - facilități si resurse interne 26. Organizarea memoriei program la MCS-51 (internă, externă) 27. Conectarea memoriei program externe la MCS-51. 28. Organizarea memoriei interne de date la MCS-51. 29. Caracteristicile zonei inferioare vs. superioare (capacitate, mod de adresare). Zona inferioare a memoriei RAM 1. Dimensiune: 128 octeți (adrese de la 0x00 la 0x7F). 2. Moduri de adresare 1. Adresare directă 2. Adresare indirectă 3. Adresare pe bit Zona superioară a memoriei RAM 1. Dimensiune: 128 octeți (adrese de la 0x80 la 0xFF). 2. Include registrelor cu funcții speciale (SFR - Special Function Registers). 3. Este utilizată pentru stocarea configurațiilor și starea componentelor interne. 4. Moduri de adresare 1. Adresare directă 2. Adresare pe bit 3. NU suportă adresare indirectă: 30. Zona registrelor cu funcții speciale la MCS-51 (ce conține, mod de adresare) 31. Configurația detaliata a zonei inferioare de memorie internă de date. 32. Funcționarea stivei la MCS-51. 1. Caracteristici generale ale stivei la MCS-51 a. Structura stivei Stiva este implementată în memoria RAM internă a microcontrolerului. Este o stivă LIFO (Last In, First Out), adică ultimul element introdus este primul care este extras. Pointerul de Stivă (SP - Stack Pointer): o Este un registru de 8 biți localizat în memoria SFR, la adresa 81h. o Conține adresa locației din memorie unde se va face următoarea operație de stocare sau citire din stivă. b. Capacitatea stivei Este limitată de dimensiunea memoriei RAM interne, exclusiv celelalte zone utilizate pentru registre, RAM-ul general sau locații adresabile pe bit. În mod implicit, stiva începe la adresa 08h, imediat după bancurile de registre. c. Operații suportate PUSH: Adaugă un element pe stivă. POP: Scoate un element de pe stivă. Operațiile PUSH și POP modifică automat valoarea registrului SP. 33. Zona pentru amplasarea variabilelor booleene (spațiu ocupat, adrese de bit) Spațiu ocupat de zona pentru variabile booleene Dimensiune totală: 16 octeți. Capacitate: o Fiecare octet conține 8 biți, deci zona poate adresa 128 de biți. Adresele utilizate: 0x20h – 0x2Fh în RAM internă. 34. Bancurile de registre R0-R7 - mod de organizare și de selecție Organizarea registrelor R0-R7 Microcontrolerul MCS-51 are 4 bancuri de registre, fiecare conținând 8 registre: o Bancul 0: Adresele 0x00 – 0x07. o Bancul 1: Adresele 0x08 – 0x0F. o Bancul 2: Adresele 0x10 – 0x17. o Bancul 3: Adresele 0x18 – 0x1F. Total registre: 32 (4 bancuri × 8 registre). Pentru a selecta un banc, se modifică valorile biților RS1 și RS0 din PSW: 35. Registre SFR adresabile pe bit (localizare, adrese de bit). 36. Organizarea memoriei externe de date la MCS-51 (capacitate, mod și linii de acces) 37. Conectarea memoriei externe de date la MCS-51. 38. Conectarea memoriei von Neumann (comună) la MCS-51. 39. Particularități de organizare a memoriei la C8051F040. 40. Inițializarea registrelor interne la MCS-51 la resetare. 41. Funcțiile porturilor P0 și P2 la MCS-51. 42. Porturile de I/E ale microcontrolerului C8051F040 43. Condiții de utilizare a pinilor porturilor ca Intrare sau Ieșire digitală la C8051F040. 44. Instrucțiuni care accesează registrul latch al unui port la MCS-51. În microcontrolerul MCS-51, fiecare port de intrare/ieșire (P0, P1, P2, P3) are asociat un registru latch. Acest registru este utilizat pentru a stoca starea pinilor portului în cazul operațiilor de ieșire sau pentru a citi valorile din pinii portului în cazul operațiilor de intrare. Registrul latch este localizat în memoria SFR (Special Function Registers) și este utilizat pentru a controla sau citi starea pinilor unui port. 45. Instrucțiuni care citesc starea pinilor unui port la MCS-51. 46. Limbaj mașină – limbaj de asamblare 47. Unelte de dezvoltare programe – asamblor (assembler), compilator (compiler), editor de legături (linker), simulator, programator, depanator (debugger). 48. Instrucțiuni de transfer – descriere operație, surse și destinații posibile, localizarea operanzilor, efecte asupra indicatorilor de condiții 49. Instrucțiuni aritmetice – tipuri de operații, localizarea operanzilor, efecte asupra indicatorilor de condiții 50. Instrucțiuni logice - tipuri de operații, localizarea operanzilor, efecte asupra indicatorilor de condiții 51. Instrucțiuni de ramificare – tipuri de ramificare, moduri de realizare, utilizarea stivei 52. Instrucțiuni de control – tipuri de operații 53. Modul de adresare directă – unde și cum este localizat operandul, exemple Operandul este localizat într-o locație specifică de memorie, identificată printr-o adresă explicită specificată în instrucțiune. 54. Modul de adresare indirectă – unde și cum este localizat operandul , ce registre se folosesc, exemple Operandul este localizat într-o locație de memorie, dar adresa acestuia este stocată într-un registru intermediar. MOV R0, #30h ; R0 conține adresa 0x30 MOV A, @R0 ; Încarcă valoarea din adresa indicată de R0 în acumulator 55. Modul de adresare implicită - unde și cum este localizat operandul, exemple Operandul nu este specificat explicit în instrucțiune; locația operandului este predefinită. INC A ; Incrementează valoarea din acumulator 56. Modul de adresare imediată - unde și cum este localizat operandul, exemple Operandul este specificat direct în instrucțiune, sub forma unei valori constante. MOV A, #55h ; Încarcă valoarea imediată 0x55 în acumulator 57. Modul de adresare indexată - unde și cum este localizat operandul , ce registre se folosesc, exemple Operandul este localizat într-o locație de memorie program (ROM), iar adresa acestuia este calculată prin adăugarea unei valori dintr-un registru (index) la o adresă de bază. MOVC A, @A+DPTR ; Încarcă în A valoarea din memoria program la adresa DPTR + A 58. Modul de adresare relativă – cum se calculează adresa efectivă (cea la care se face saltul), registrul folosit, exemple Modul de adresare relativă este utilizat pentru a realiza salturi în cadrul unui program. Acesta permite modificarea valorii Contorului de Program (PC), calculând adresa efectivă pe baza unei deplasări (offset) specificate în instrucțiune. SJMP, LJMP, JZ ETC.. 59. Instrucțiunile MCS-51 – dată fiind o instrucțiune sau o secvență de instrucțiuni, să se indice în ce constă execuția ei (care este efectul asupra registrelor/memoriei/indicatorilor de condiții). 60. Din ce este compus și cum funcționează un numărător de evenimente (counter)? 2. Cum funcționează un numărător de evenimente? a. Mod de operare: Numărătorul incrementează valoarea din registrele THx și TLx la fiecare tranziție pozitivă a semnalului extern aplicat la pinul Tx (T0 pentru Timer 0, T1 pentru Timer 1). Configurarea modului numărător se face setând bitul C/T (Counter/Timer) din registrul TMOD. b. Configurarea numărătorului: 1. Setarea modului de funcționare: o Se utilizează registrul TMOD: ▪ C/T = 1: Funcționează ca numărător. ▪ C/T = 0: Funcționează ca temporizator. o Se selectează modul de operare (ex. 8 biți, 16 biți, auto-reîncărcare). 2. Pornirea numărătorului: o Se activează numărătorul utilizând bitul TRx (Timer Run) din registrul TCON. 3. Monitorizarea depășirii: o Când valoarea din registrele THx și TLx depășește capacitatea maximă, bitul TFx (Timer Overflow Flag) din TCON este setat. o Acesta poate genera o întrerupere dacă este activată. 61. Din ce este compus și cum funcționează un temporizator (timer)? Citeste mai sus, doar trebuie setat TMOD pt timer (adica pe 1!) 62. Surse posibile pentru impulsurile de incrementare a numărătoarelor la T0 și T1 la MCS-51 și la C8051F040. Sursele posibile sunt: a) SYSCLK b) SYSCLK/12 c) SYSCLK/4 d) SYSCLK/48 e) XOSCLK/8 63. Cum poate fi pornită/oprită prin program numărarea la Timerele 0 și 1? Controlul timerelor 0 și 1 se face prin biții TR0 și TR1 din registrul TCON. În funcție de modul de configurare, numărătoarea poate fi pornită/oprită direct sau condiționată de semnale externe. SETB TR1 ; Pornește Timerul 1 CLR TR1 ; Oprește Timerul 1 64. Cum poate fi pornită/oprită prin semnal extern numărarea la Timerele 0 și 1? Pentru a porni/opri numărătoarea prin semnal extern: Activează bitul GATE din TMOD. Asigură-te că semnalul extern este aplicat corect pe pinul T0/T1 și este sincronizat cu ciclul de tact al microcontrolerului. Controlează pornirea/opriția finală utilizând bitul TRx din TCON. MOV TMOD, #09H ; Timerul 0 în modul 1, cu GATE activat SETB TR0 ; Permite pornirea Timerului 0 65. Cum poate fi detectată depășirea numărătoarelor la T0 și T1? Depășirea numărătorilor T0 și T1 este indicată de flagurile TF0 și TF1. Flaguri de depășire: TF0 (Timer 0 Overflow Flag): Avertizează depășirea la Timerul 0. TF1 (Timer 1 Overflow Flag): Avertizează depășirea la Timerul 1. Aceste flaguri sunt biți din registrul TCON (Timer Control Register): o TF0: Bitul 5 din TCON. o TF1: Bitul 7 din TCON. 66. Care este dimensiunea numărătoarelor la T0 și T1 în fiecare mod de functionare? Modul 0: 13 biți. Modul 1: 16 biți. Modul 2: 8 biți (cu reîncărcare automată). Modul 3: 8 biți (două numărătoare independente pentru Timerul 0). 67. Cum se selectează modul de lucru pentru T0 și T1? 68. Cum funcționează T0 și T1 în modurile 0 și 1? 69. Cum funcționează T0 și T1 în modul 2? 70. Cum funcționează T0 în modul 3? 71. Ce se întâmplă cu T1 în modul 3? 72. Cum se selectează sursa semnalului de numărare pentru Timerele 2, 3 si 4? 73. Cum se poate controla direcția de numărare la Timerele 2, 3 și 4? 74. Cum funcționează Timerele 2, 3 și 4 în modul captură? 75. Cum funcționează T2, 3 și 4 în modul reîncărcare? 76. Ce sunt întreruperile? 77. Cum funcționează mecanismul de întreruperi? 78. De ce sunt utilizate întreruperile, care sunt avantajele lor? 79. Care sunt sursele de întrerupere la 8051 (cele 5 surse standard)? 80. Care sunt evenimentele care determină setarea flagurilor de întrerupere? 81. Care sunt bistabilele care se setează și declanșează cereri de întrerupere (flag-urile de întreruperi)? 82. Care sunt flagurile de validare individuală a cererilor de întrerupere și ce rol au ele? 83. Care este rolul flagului de validare globală a întreruperilor? 84. Când și cum sunt detectate cererile de întrerupere? 85. Care sunt condițiile în care este acceptată o cerere de întrerupere? 86. Ce se întâmplă la acceptarea unei cereri de întrerupere? 87. Care sunt adresele la care trebuie să se afle amplasate rutinele de tratare a întreruperilor? 88. Ce se întâmplă dacă apar cereri de întrerupere, acestea sunt validate, dar nu a fost prevăzută o secvență de tratare pentru acea întrerupere la adresa corespunzătoare? 89. Odată acceptată cererea, ce se întâmplă cu flagul de întrerupere (se șterge automat/trebuie șters prin program/poate să nu fie șters? 90. Cum se ajunge la execuția secvenței de tratare a întreruperii (rutina de întrerupere)? 91. Cum se revine la instrucțiunea următoare din programul principal, la terminarea tratării întreruperii? 92. Într-o rutină de tratare a întreruperii putem modifica valorile registrelor? Ce se întâmplă dacă le modificăm? 93. Ce se întâmplă dacă există mai multe cereri de întrerupere active la un moment dat? Care dintre cereri e servită mai întâi? 94. Pe câte nivele de prioritate se poate afla o sursa de întrerupere și care este regula de prioritate aplicată pentru cererile de la surse amplasate pe același nivel, dacă sunt mai multe active la un moment dat? 95. Ce se întâmpla odată ce a fost acceptată o cerere de întrerupere, mai sunt acceptate alte cereri înainte de a se termina tratarea celei în curs? 96. Cum află microcontrolerul că s-a terminat tratarea unei cereri de întrerupere și de ce are nevoie să știe acest lucru? 97. Ce este un port serial, cum se face transferul informației, prin comparație cu transferul paralel? 98. Transfer serial sincron vs. asincron – comparație. 99. Modul 0 de funcționare al portului serial (modul sincron) – sursa semnalului de tact, linia de transmisie/recepție date, linia de transmisie/recepție a semnalului de tact, viteza de comunicație. 100. Transferul serial asincron – formatul unui caracter în modul 1 (10 biti/caracter) – rolul bitului de START și al bitului de STOP. 101. Transferul serial asincron – formatul unui caracter în modurile 2 și 3 (11 biti/caracter) – rolul celui de-al 9-lea bit de date (de unde este transmis, unde este recepționat, la ce ar putea să fie folosit. 102. Surse posibile pentru semnalul de tact pentru portul serial la C8051F040. 103. Cum se declanșează transmisia unui caracter în modul asincron? 104. Cum se declanșează recepția unui caracter în modul asincron? 105. Ce indică flag-ul TI și ce trebuie să facă programul când acesta este setat? 106. Ce indică flag-ul RI și ce trebuie să facă programul când acesta este setat? 107. Ce este eroarea de încadrare și cum se detectează aceasta la recepție? 108. Ce este eroarea de suprapunere și cum se detectează aceasta la recepție? 109. Ce este un convertor A/D? 110. Care sunt sursele de semnal analogic care pot fi aduse la intrarea convertorului ADC0 la C8051F040? 111. Ce este un semnal single-ended și unul diferențial? 112. Care este rolul multiplexorului analogic? 113. Care este rolul amplificatorului programabil din structura ADC0 la C8051F040? 114. Care este rolul circuitului de eșantionare - reținere din structura ADC0 la C8051F040? 115. Care este rolul tensiunii de referință la un convertor A/D? 116. Cum se poate declanșa o conversie la ADC0 din C8051F040? 117. Cum se poate afla că s-a terminat conversia și se poate citi rezultatul la ADC0 din C8051F040?? 118. Cum se poate detecta încadrarea într-o fereastră sau ieșirea dintr-o fereastră cu limite programabile la ADC0 din C8051F040? 119. Ce este un convertor D/A? 120. Cum se poate declanșa actualizarea ieșirilor analogice la DAC0 și DAC 1 din C8051F040?

Use Quizgecko on...
Browser
Browser