Sunteți pe pagina 1din 5

Probleme suplimentare microcontrolere & microsisteme.

HN Teodorescu.

Unele probleme de utilizare a microcontrolerelor elementare

1. Care dintre următoarele afirmații este adevărată: a) microcontroler RISC tipice au peste 200
de instrucțiuni; b) acumulatorul este un registru al stivei; c) orice ALU are doi regiștri
aferenți; d) expresia „microcontroler pe 8 biți” se referă la numărul de biți ai cuvintelor
memoriei de program; e) puterea consumată de un microcontroler crește cu frecvența de tact.
Explicați pe scurt răspunsurile.

2. Dorim să citim pinii B1-B3 la microcontroler 16F84, iar valoarea citită să o transferăm cât
mai rapid pe pinii B4-B6. Scrieți programul care să realizeze aceasta. Cât va dura transferul,
în cicli mașină?

3. Explicați structura unui microcontroler pe 4 biți, care are 250 de cuvinte în memoria de
program, 60 de cuvinte în memoria de date, 20 de instrucțiuni, iar numărul maxim de bucle
imbricate este 2. Precizați lărgimea (capacitatea în biți) a magistralelor de la PC, ALU, stiva,
numărul de biți în memoria de date. (Există un grad relativ mare de libertate în răspuns,
deoarece unele elemente, precum tipul instrucțiunilor, nu au fost precizate. Puteți alege orice
răspuns permis de problemă.)

4. Se citește un cuvânt din bancul al doilea de memorie al unui microcontroler 16F84. Primii 4
biți sunt operați AND cu ultimii patru biți și sunt puși în locul primilor 4 biți ai cuvântului
inițial. Rezultatul este trimis la portul B. (microcontroler 16F84).
Se citește un cuvânt de la portul B și se determină paritatea acestuia, adică se determină dacă
numărul se divide la 2; dacă da, numărul este pus într-o locație de memorie din bancul al
doilea, dacă nu, numărul este divizat la 2 și rezultatul este pus în bancul întâi (microcontroler
16F84).

5. Se citește un cuvânt de la portul B (microcontroler 16F84) și se determină paritatea


numărului de biți 1 (de ex., dacă numărul citit conține 2 biți ‚1’, numărul de biți 1 este par);
dacă rezultatul este „par”, numărul este pus înapoi pe portul B.

© HN Teodorescu 2017-2020 (Autorul crede ca aceste probleme sunt noi.)


Probleme suplimentare microcontrolere & microsisteme.
HN Teodorescu.

6. Să se scrie un program care să urmărească modificarea biților B4-B7 și, la apariția unei
modificări, să genereze pe B2 trenuri de câte 5 impulsuri cu durata de 16 cicli mașină și cu
factorul de umplere reprezentat de partea întreagă a numărului 𝑛/8, unde 𝑛 este numărul citit
de pe port. Generarea celor 5 impulsuri va fi urmată de o pauză de cel puțin 4 cicli mașină.
Procesul (generarea trenului de impulsuri + pauză) nu va putea fi întrerupt de o nouă
modificare a portului B4-B7, dar va putea fi stopată de o modificare pe pinul B0. Puteți alege
orice soluție de rezolvare a problemei (testare în buclă, întreruperi etc.). Cu ce întârziere față
de modificarea stării pe pinii B4-B7 va începe programul generarea trenului de impulsuri
(secvenței PWM) în soluția Dvs.? (microcontroler 16F84).

7. Să se scrie codul în limbaj de asamblare și în C pentru a realiza următoarele operații


(microcontroler 16F84).:
a) Se preia de la portul B4-B7 un număr binar de 4 biți.
b) Se înmulțește de 4 ori succesiv cu 2.

c) Se pune în memorie rezultatul la o locație în fila a doua (bank-ul al doilea).


d) Se adună cu constanta zecimală 5 și se determină dacă apare depășire. La depășire se

pune pe 1 pinul B3.


e) Se reiau de 4 ori operațiile începând cu (a).
f) Estimați durata executării programului, dacă 𝑓 1 MHz (16F84).

8. Să se scrie codul în limbaj de asamblare și în C pentru a realiza următoarele operații


(microcontroler 16F84).:
a) Se generează continuu pe pinul B2 impulsuri de durata a 50 de cicli mașină și factor de
umplere 1/25.
b) La pinul B3 se conectează punctul comun al unui rezistor și al unui comutator; rezistorul

este conectat la +5V cu un capăt, iar comutatorul (un buton) este conectat la masă. La
închiderea comutatorului, a cărui poziție normală este „circuit deschis”, microcontrolerul
trebuie să genereze 5 impulsuri cu factor de umplere variabil, în ordinea 1/25, 2/25, 3/25,
4/25, 1/5. Rezolvați prin monitorizarea în buclă a pinului B3.

© HN Teodorescu 2017-2020 (Autorul crede ca aceste probleme sunt noi.)


Probleme suplimentare microcontrolere & microsisteme.
HN Teodorescu.

c) Circuitul comutatorului nu este bine ales. Ce se va putea întâmpla „în lumea reală” la
apăsarea butonului? Cum ați putea corecta circuitul? Ce valoare de rezistență ați alege?
d) Rezolvați punctul (b) folosind întreruperi.

e) Să se determine timpul de răspuns la modificarea valorii pe pinul B3 în cele două


variante (monitorizare, întreruperi). Se dă 𝑓 1 MHz (16F84).

9. a) Explicaţi ce sunt pinii multiplexaţi. b) explicați cum se corelează numărul de bucle


imbricate ce se pot programa cu o dimensiune a stivei precum și legătura dintre dimensiunea
memoriei de program și o dimensiune a stivei, la un microcontroler oarecare. c) Explicați cu
exemple cum se alege numărul de biți ai identificatorului de operații la un microcontroler.
(microcontroler 16F84).
Suplimentar: Explicați și desenați circuitul de activare a întreruperilor la 16F84.

10. Să se scrie codul în limbaj de asamblare și în C pentru a realiza următoarele operații


(microcontroler 16F84).:
a) Se preia de la portul B0-B7 un număr binar.
b) Se determină dacă numărul este par sau impar.
c) Dacă numărul este par, se aplică operația SAU între număr și constanta zecimală 9, iar la
rezultat se adună constanta zecimală 5.
d) Rezultatul se pune în memorie la o locație în fila a doua (bank-ul al doilea).
e) Dacă numărul citit este impar, se împarte la 2, iar rezultatul se pune în memorie.
f) Estimați durata executării programului, dacă 𝑓 1 MHz (16F84), pentru cazul
numărului impar la punctul (b).

11. Să se scrie codul în limbaj de asamblare și în C pentru a realiza următoarele operații


(microcontroler 16F84).:
a) Se generează continuu pe pinul B2 impulsuri de durata – măsurată în cicli mașină - egală
cu valoarea numărului prezentat la portul B pe pinii B4-B7 și cu factor de umplere 1/2.
b) La pinul B3 se conectează capătul unui rezistor care, printr-un comutator; este conectat la
+5V; celălalt capăt al rezistorului se pune la masă. La închiderea comutatorului, a cărui
poziție normală este „circuit deschis”, microcontrolerul trebuie să genereze impulsuri cu
© HN Teodorescu 2017-2020 (Autorul crede ca aceste probleme sunt noi.)
Probleme suplimentare microcontrolere & microsisteme.
HN Teodorescu.

factor de umplere variabil, începând de la factorul 1/10 până la factorul 9/10, cu pas de
2/10, în buclă infinită (chiar dacă butonul nu mai este apăsat). Rezolvați prin
monitorizarea în buclă a pinului B3.
c) Circuitul comutatorului nu este bine ales. Ce se va putea întâmpla „în lumea reală” la
apăsarea butonului? Cum ați putea corecta circuitul? Ce valoare de rezistență ați alege?
d) Rezolvați punctul (b) folosind întreruperi.
e) Să se determine timpul de răspuns la modificarea valorii pe pinul B3 în cele două
variante (monitorizare, întreruperi). Se dă 𝑓 1 MHz (16F84).

12. a) (microcontroler 16F84). Explicaţi în detaliu structura şi rolul stivei şi utilitatea ei în


întreruperi și bucle. b) Explicaţi cum se corelează dimensiunea (lărgimea) magistralei
de date, pe de o parte, și cea a numărătorului de program, pe de altă parte, cu memoria de
program, la un microcontroler oarecare. c) Explicați cum şi de ce se corelează frecvența de
tact cu puterea consumată.
Suplimentar: explicați cu detalii rolul timerelor de protecție.

13. Un microcontroler execută (doar) 8 operații, dintre care două folosesc constante, iar patru
accesează valori din memoria de date. Memoria de date este organizată pe cuvinte de 12 biți
(ne-uzual), ca și dimensiunea regiștrilor ALU, iar capacitatea completă a memoriei de date
este de 1 𝑘-cuvânt (1024 cuvinte de 12 biți). Codul instrucțiunilor care accesează memoria de
date are doar 8 biți tip (𝑓𝑓𝑓 … 𝑓).
a) De câți biți avem nevoie pentru a identifica o instrucțiune?
b) Câți biți sunt necesari pentru codul instrucțiunilor? De ce?
c) Câți biți are un cuvânt din memoria de program?
d) Este necesar să organizam memoria de date pe file de memorie (bankuri)? De ce?
e) Câte cuvinte include o fila de memorie (un bank)?
f) Câte bancuri are memoria de date?
g) Care este legătura dintre numărul de biți ai numărătorului de program și cele de mai sus?
Explicați.
h) Explicați legătura (relația) dintre numărul de biți ai regiștrilor ALU și consumul de putere al
ALU.
© HN Teodorescu 2017-2020 (Autorul crede ca aceste probleme sunt noi.)
Probleme suplimentare microcontrolere & microsisteme.
HN Teodorescu.

i) Este vreo legătură între tipul de capsulă folosită pentru un microprocesor și frecvența
maximă de tact a procesorului? Explicați.

14. Desenați cât mai complet schema bloc a unui microcontroler elementar– cat mai general;
particularizati la tip: microcontroler 16F84.

15. Explicați cum se corelează dimensiunea (numărul de cuvinte al) stivei cu numărul de bucle
imbricate care pot fi realizate într-un program pe microsistemul respectiv.

16. Explicați cu cine și cum se corelează numărul de biți ai unui cuvânt al stivei.

17. Scrieți, pentru microcontrolerul PIC 16F84, un fragment de program care :


a) acceptă o întrerupere prioritară pe B0, iar la sosirea întreruperii respective:
b) salvează acumulatorul și conținutul registrului de stare
c) apoi adună conținutul acumulatorului cu 1000111, împarte rezultatul la 4, apoi
d) pune rezultatul pe portul B setat ca ieșire.

© HN Teodorescu 2017-2020 (Autorul crede ca aceste probleme sunt noi.)

S-ar putea să vă placă și