Sunteți pe pagina 1din 11

1. Explicai rolul Access Bank-ului.

Accesarea unui reg de uz special se realizeaz prin schimbarea bank-ului de lucru, iar aceasta conduce
la creterea nr de instruciuni i timpului de execuie. De aceea a fost introdus Acces Bank-ul, care
mapeaz primii 96 reg GPR i 160 reg SFR ntr-o zon de memorie virtual accesibil fr modificarea
bank-ului.
2. Cum se face accesul la memorie prin Bank-uri?
Memoria de date este mprit n 16 bank-uri, 8 implementate de PIC18F4455. Accesul se face
folosind o adres complet de 12 bii sau printr-un octet pt specificarea octetului n cadrul bank-ului i
4 bii reprez nr bank-ului accesat, aflai n BSR. (ex: MOVLB 2 sau MOVLW 2, MOWF BSR)
3. Ce nelegei prin arhitectura Harvard?
Microcontrolerele PIC se bazeaz pe arhitectura de tip Harvard. Aceasta presupune c datele i
instruciunile sunt stocate separat i sunt accesate prin magistrale diferite. Avantajul acestei arhitecturi
este posibilitatea de a accesa datele i instruciunile n acelai timp, de unde rezult o arhitectur
intern mai complex.
4. Ce nseamn RISC?
n cazul arhitecturii Harvard, pentru a reduce complexitatea circuitului de control, microcontrolerul
implementeaz un set redus de instruciuni (RISC). Procesoarele RISC au un set mai compact de
instruciuni i mai puine moduri de adresare, astfel obinndu-se timpi de execuie mai buni pentru
instruciuni la aceeai frecven fa de CISC.
5. Ce nelegei prin termenul pipeline?
Arhitectura microcontrolerului este bazat pe un pipeline pe 2 nivele pentru execuia instruciunilor i
asigur c la fiecare 4 microcicluri (tacturi) se termin de executat o instruciune scurt.
6. Explicai forma general a instruciunii cod f, d, a. Ce nseamn parametrii f,d,a?
Este o instruciune pe octet.
f=registru, adresa de 8 bii a unui registru din memorie (adr fiz/adr simb)
d=bitul de destinaie al rezultatului (0=rez n WREG, 1=rez n f)
a=zona de memorie accesat (0=acces bank, 1=banked)
7. Explicai instruciunea BTFSS f, b, a. Dai un exemplu de utilizare.
BTFSS f,b,a = instruc de comparaie, testeaz starea lui b, face salt peste instr urm dac b=1
(ex: echivalentul lui IF din C, BTFSS reg 1, 3)
8. Ce rol are stiva?
Implementarea subrutinelor i a rutinelor de tratare a ntreruperilor necesit utilizarea unei stive
pentru salvarea adresei de revenire (31 nivele=maxim 31 apeluri de rutine imbricate). La execuia unei
instruciuni CALL se pune pe stiv adresa de revenire, iar la apelul RETURN, val de pe vrful stivei este
transferat n PC, revenindu-se la execuia urmtoarei instruciuni dup CALL.
9. Ce rol are stiva rapid? Cnd se utilizeaz?
Stiva rapid este o stiv temporar cu un singur nivel, n care se pot salva reg WREG, STATUS i BSR
(automat). Prin utilizarea FAST la instr de revenire, se specific dac reg sunt refcui. Stiva rapid se
folosete de ex n cazul n care, dup execuia rutinei, WREG nu conine valoarea stocat anterior.
10. Ce diferene exist ntre arhitectura von Neumann i Harvard?
Diferena esenial dintre cele dou arhitecturi const n modul n care memoria sistemului este
mprit.

Arhitectura Harvard presupune o memorie pentru date i o memorie pentru cod, care sunt distincte i
conectate cu procesorul prin intermediul a dou ansamble de magistrale diferite (de date i de adrese).
Accesul la cele dou memorii se poate face simultan, pe durata unui singur ciclu main, spre
deosebire de arhitectura von Neumann. Aceasta presupune o memorie comun att pentru date ct i
pentru cod.
11. Care sunt fazele unei instruciuni?
Execuia complet a instruciunilor (2x4 taci) are 2 faze:
-faza de extragere a instruc. din mem. n reg intern al UCP (fetch)
-faza de execuie p.zis a instruciunii (execute)
-decodificare instruciune Q1
-citire date Q2
-procesare date Q3
-scrierea de date Q4
12. Ce rol ndeplinete argumentul d al instruciunilor? Dai un exemplu de utilizare.
COD OPERAIE f,d,a; d apare la instruciunile pe octet i reprezint bitul de destinaie al rezultatului
(0=rez n WREG, 1=rez n f) (ex: ADDWF 0x20,0,1 = adun WREG cu 0x20, rez n WREG)
13. Ce rol ndeplinete argumentul a al instruciunilor? Dai un exemplu de utilizare.
Arg a reprezint zona de memorie accesat (0=acces bank, 1=banked) (ex: ADDWF 0x20,0,1)
14. Ce nelegei prin termenii: adres, variabil, registru? Dai cte un exemplu de utilizare.
Adres: locaia din memorie la care se afl o variabil/registru.
Variabil: o instan a unui tip de date; o locaie n memorie care poate fi accesat (citit/modificat).
Se pot efectua operaii asupra lor.
Registru (acumulator): o locaie n memorie (octet), sunt asemntori variabilelor. Toate operaiile
aritmetice / logice / acces la memorie se fac prin intermediul regitrilor.
15. Ce rol ndeplinete registrul BSR? Dai un exemplu de utilizare.
BSR (Bit Select Register) este un registru de uz general, pentru selecia bank-urilor.
(ex: MOVLW 2; MOVWF BSR)
16. Explicai rolul regitrilor FSR0 i INDF0. Dai un exemplu de utilizare.
Se folosesc la adresarea indirect.
FSR0: registru de adresare, conine adresa absolut (12 bii), se poate accesa orice zon din memorie
fr a se ine cont de Access Bank sau BSR (ex: LFSR FSR0, 0x234)
INDF0: registru de accesare coninut, permite accesul la coninutul stocat n adresa specificat prin
FSR0 (8 bii) (ex: LFSR FSR0, 0x234; MOVWF INDF0,W)
17. Explicai modul n care se face citirea tabelar.
Citirea tabelar folosete instruciuni de manipulare a numrtorului de program i instruc RETLW.
Accesul la valori se realizeaz indexat folosind ca variabil index, registrul de lucru WREG.
Incrementarea PCL nu conduce la incrementarea automat a lui PCLATH, PCLATU la trecerea FFh>00h
18. Care sunt etapele iniializrii porturilor?
-se terge coninutul regitrilor LATx, PORTx (A,B,C,D,E)
-se configureaz conv A/D pt a face din pinii utilizai pini de I/O digitali (A,B,E)
-se configureaz comparatoarele (A,E)
-se configureaz direcia (A,B,C,D,E)
19. Ce nelegei prin post-incrementare? Dai un exemplu.

Post-incrementarea se face cu ajutorul reg POSTINC0, care ndeplinete acelai rol ca i INDF0 (registru
de accesare coninut, permite accesul la coninutul stocat n adresa specificat prin FSR0), iar n plus
incrementeaz coninutul din FSR0 (file select register) (ex: LFSR FSR0, 0x307; BCF POSTINC0, 3)
20. Ce nelegei prin post-decrementare? Dai un exemplu.
Post-decrementarea se face cu ajutorul reg POSTDEC0, care ndeplinete acelai rol ca i INDF0
(registru de accesare coninut, permite accesul la coninutul stocat n adresa specificat prin FSR0), iar
n plus decrementeaz coninutul din FSR0 (ex: LFSR FSR0, 0x307; BCF POSTDEC0, 3)
21. Cum se calculeaz i care este valoarea de iniializare a Timerului 0 pentru implementarea unei
temporizri cu durata de 50ms? (Fosc=48MHz)
(mod de lucru 16 biti = max 65535)
Tdorit=N*Predivizare*4/Fosc
N=Tdorit*Fosc/Predivizare*4
N=0,05s*48*10^6/16*4
N=2400000/64=37500
TMR0H i TMR0L trebuie ini cu val 65535-N=28035
22. Cum se calculeaz i care este valoarea de iniializare a Timerului 0 pentru implementarea unei
temporizri cu durata de 150ms? (Fosc=20MHz)
(mod de lucru 16 biti = max 65535)
Tdorit=N*Predivizare*4/Fosc
N=Tdorit*Fosc/Predivizare*4
N=0,15s*20*10^6/16*4
N=3000000/64=46875
TMR0H i TMR0L trebuie ini cu val 65535-N=37500
23. Ce rol are predivizorul la timere?
n unele situaii este util ca timerul s nu se incrementeze la fiecare tact, ci doar la un anumit nr de
tacturi recepionate. n acest caz timerul dispune de un predivizor, pentru a diviza tactul de
incrementare. Predivizorul poate lua una din valorile {1,2,4,8,16,32,64,128,256}
24. Care sunt etapele de iniializare ale Timerului 0 pentru realizarea unei temporizri cu durata de
100ms.
Etapele de iniializare ale Timer0:
-oprirea timerului
-selectarea sursei de incrementare (bit T0CS, reg T0CON)
-selectarea utilizrii predivizorului (bit PSA, reg T0CON)
-selectarea modului de funcionare (bit T08BIT, reg T0CON)
-tergerea flag-ului de semnalizare (bit TMR0IF, reg INTCON)
-pornirea timerului (bit TMR0ON, reg T0CON)
Tdorit=N*Predivizare*4/Fosc
25. Care este durata maxim de temporizare care se poate obine cu ajutorul Timerului 0 dac
Fosc=48MHz?
Tdorit=65535*256*4/48=1398080
26. Ce este un semnal PWM?
Un semnal PWM (Pulse Width Modulation) este un semnal modulat n lime, periodic dreptunghiular,
a crui lime (factor de umplere) poate fi modificat.
27. Ce nelegei prin termenul factor de umplere?

La semnalele PWM, factorul de umplere (limea) reprezint intervalul de timp dintr-o perioad
(TPWM) ct semnalul este n starea 1. Acest factor poate fi modificat.
28. Ce rol ndeplinete numrtorul de program (PC= program counter) i care este structura sa?
Numrtorul de program (PC) conine adresa instruciunii urmtoare. Are 21 de bii mprii n 3
regitri: PCL (primii 8 bii), PCH (urm 8 bii), PCU (5 bii superiori).
29. Cum se face accesul atomic (scriere / citire) la regitrii numrtorului program?
Doar PCL se poate citi i scrie direct. Pentru PCH i PCU s-au introdus reg tampon PCLATH, PCLATU. La
citirea PCL (instr CALL, GOTO sau citire direct) val din PCH i PCU se transf n PCLATH, PCLATU. Dac se
modific val PCL, atunci val care se afl n PCLATH i PCLATU sunt transferate napoi n PCH i PCU,
aadar scrierea celor 3 reg ale PC se va face ntr-un singur pas.
30. Cum se face accesul atomic (scriere / citire) la regitrii TMR0H:TMR0L?
Accesul atomic se face direct. Scrierea unei valori n TMR0L det i transferul din TMR0H n TMR0HB.
Citirea valorii din TMR0L det transferul din TMR0HB n TMR0H. Trebuie respectat ordinea:
valH>TMR0H; valL>TMR0L (scriere); TMR0L>valL; TMR0H>valH (citire)
31. Ce rol ndeplinete bitul TMR0IF? Dai un exemplu de utilizare.
Bitul TMR0IF este un bit de semnalizare. De ex, la Timer0, mod de lucru 8 bii, dac se depete
capacitatea de numrare (255>0), se va seta flagul TMR0IF.
32. Ce ntelegei prin nume simbolic? Dai un exemplu de utilizare.
La adresarea simbolic se folosesc denumiri (simboluri) n locul adreselor fizice. Numele simbolic
asociat poate fi interpretat fie sub form de adres, fie valoare (ct). (ex: Var EQU 0x07)
33. Ce nelegei prin adresare direct? Dai un exemplu.
Adresarea direct reprezint utilizarea adreselor fizice din mem n cadrul instruciunilor. Instruciunile
conin adresa registrului accesat. (ex: INCF 0x07, ACCESS)
34. Ce nelegei prin adresare indirecta? Dai un exemplu.
Adresarea indirect permite accesarea locaiilor din memoria de date RAM fr a utiliza o adres fix n
instruciuni (asemntor pointerilor din C). Se folosesc regitri de adresare FSR0, FSR1, FSR2. (ex: LFSR
FSR0, 0x234)
35. Ce nelegei prin adresare indexat? Dai un exemplu.
Adresarea indexat este utilizat la implementarea tablourilor, oferind prin regitrii virtuali (PREINCn,
POSTINCn, POSTDECn, PLUSWn) un acces secvenial rapid la datele din memoria RAM. (ex: LFSR FSR0,
0x100; CLRF POSTINC0; SETF POSTDEC0, F; INCF PREINC0, F)
36. Explicai rolul registrului WREG. Dai un exemplu.
Registrul de lucru (WREG) este un acumulator pe 8 bii. n cazul instruciunilor cu doi operanzi, unul se
va afla n WREG, iar rez poate fi stocat n WREG sau alt reg din mem date. (ex: ADDWF 0x20, 1, 0)
37. Ce este o subrutin i ce se ntmpl la apelul acesteia?
n C, subrutinele sunt funcii, care au nume, tip returnat i set de parametrii. n asamblare, subrutinele
iau forma unor etichete opionale i instruciuni de revenire la o adres de salt. Instruciunea de apel
este CALL, urmat de o etichet ce reprez adresa la care se face salt. Acesta determin:
-se salveaz adresa instruciunii urmtoare n stiv
-PC va indica spre prima instruciune din subrutin
-se execut instr din subrutin pn la RETURN

38. Ce este o nterupere i ce se ntmpl cnd aceasta apare?


ntreruperea este mecanismul de suspendare a firului de execuie la apariia unui eveniment. La
apariia unui eveniment se apeleaz subrutina de tratare a ntreruperii, dar nu de utilizator. RETFIE
39. Descriei principiul de funcionare al timerului0.
Accesul la regitrii TMR0L i TMR0H se face astfel:
Cnd Timer0 fc ca numrtor pe 8 bii (TO8BIT=1), val numrtorului este accesibil direct prin reg
TMR0L. n aceast stiuaie TMR0H nu se utilizeaz.
Cnd Timer0 fc ca numttor pe 16 bii (TO8BIT=0), val numrtorului este accesibil prin cei doi
regitri TMR0L, TMR0H. TMR0H va conine octetul superior al valorii, iar TMR0L cel inferior.
La citirea TMR0L, val octetului superior se transfer n reg TMR0H. Acest reg este accesibil direct.
La scrierea TMR0L, val stocat n TMR0H se va transfera n octetul superior al timerului.
Timer0 va genera o ntrerupere la depirea capacitii de numrare, semnalat prin setarea bitului
TMR01F din reg INTCON. Pentru detecia unei noi depiri, flagul TMR0IF trebuie ters.
40. Care este diferena ntre comunicaiile seriale sincrone i cele asincrone?
Pentru transmiterea/recepionarea datelor, setrile sunt aceleai pentru amndou modurile,
diferena const n setarea biilor SYNC i CSRC la sincron.
41. Descriei principiul de funcionare al timerului2.
Timer2 numr doar impulsuri interne (tact de execuie a instr Fosc/4), este pe 8 bii. Se folosete cu
PWM. Poate genera ntrerupere la atingerea unei valori prestabilite. Structura:
-reg TMR2 conine val acumulat
-reg PR2 conine val prescris
-cnd TMR2=PR2, se reseteaz TMR2
-modificarea valorii din reg PR2 (12CON) conduce la resetarea TMR2 i resetare postdivizor.
42. De ce trebuie resetat manual bitul indicator de ntrerupere?
Bitul indicator de ntrerupere trebuie resetat manual pentru a ncepe o nou temporizare.
43. Ce nelegei prin interogare i ntrerupere?
Interogarea i ntreruperea sunt 2 metode pentru a determina dac starea unui periferic s-a modificat.
Interogarea reprez testarea n mod repetat a perifericului. ntreruperea anun programul de
modificarea strii perifericului.
44. Care este principiul de funcionare al modulului CCP n mod de lucru captur?
n mod de lucru captur, modulele CCP se folosesc mpreun cu Timer1 sau Timer3. La apariia unui
eveniment din urmtoarele, se va copia n reg CCPRxH:CCPRxL val pe 16 bii a Timer1 din
TRM1H:TMR1L sau Timer3 din TMR3H:TMR3L. Evenimentele:
-front cresctor pe pinul CCPx
-front descresctor pe pinul CCPx
-fiecare al 4lea front cresctor pe pinul CCPx
-fiecare al 16lea front cresctor pe pinul CCPx
La realizarea capturii se va seta flagul CCPxIF din reg PIRx, care va trebuie ters din program.
45. Care este principiul de funcionare al modulului CCP n mod de lucru comparare?
Val din reg CCPR1 este tot timpul comparat cu val TMR1 sau TMR3. La fiecare comparaie reuit se
seteaz CCP1IF (bit indicator) i se genereaz un eveniment: pin pus pe 1/0, pinul i schimb
starea/rmne nemodificat. Apar i evenimente speciale: semnal intern (hardware), resetare TMR,
conversie AD.

46. Prezentai o metod de a determina perioada unui semnal de intrare conectat la un pin al
microcontrolerului.
Pentru determinarea perioadei se citesc regitrii de captur la fiecare front cresctor. Perioada
semnalului se obine ca diferen a 2 valori capturate succesiv. Dac dup fiecare captur se reseteaz
valoarea timerului utilizat atunci valoarea capturat indic perioada.
47. Prezentati o metod de a determina factorul de umplere al unui semnal de intrare conectat la un
pin al microcontrolerului.
Pentru determinarea factorului de umplere se poate configura modulul de captur pentru a realiza
captura succesiv pe front cresctor, apoi pe front descresctor. Factorul de umplere se obine ca
diferen a celor dou valori.
48. Ce rol ndeplinesc biii xxxIF, xxxIE, xxxIP?
Controlul operaiei ntreruperilor se face prin biii:
-xxxIF, bit indicator de ntrerupere, care se seteaz la apariia unui eveniment de ntrerupere
-xxxIE, bit de activare/dezactivare, care permite selectarea individual a surselor de ntrerupere
utilizate prin activarea/dezactivarea acestora
-xxxIP, bit de prioritate, care permite stabilirea nivelului de prioritate pentru fiecare nrerupere
49. De ce programele scrise la laborator ncep la adresa 0x800? Care este linia de cod care indic acest
lucru?
Programele trebuie compilate de la adresa 0x800 deoarece spaiul de memorie cuprins ntre 0x000 i
0x800 este rezervat Boot Loader-ului. (linia de cod: ORG 0x800)
50. Pentru comanda servomotoarelor se utilizeaz semnale PWM cu frecvena de 50Hz i factorul de
umplere de 2ms. Calculai parametrii de iniializare ai modulului CCP pentru generarea acestui semnal.
PredivTMR2 = {1,4,16}
FU=val*PredivTMR2*4/Fosc
val=FU*Fosc/PredivTMR2*4
val=2ms*50/1*4=25
51. Explicai principiul de funcionare al unui convertor A/D cu aproximri succesive.
Pas 1: MSB=1, restul 0. Dac Vref/2 > Vin, MSB rmne 1, altfel devine 0
Pas 2: MSB-1=1, restul 0. Dac Vx > Vin, MSB rmne 1, altfel devine 0
Conversia nu se face instantaneu, apare timpul de conversie al unui bit TAD.
nainte de a declana conversia trebuie ateptat 3uS.
52. Care sunt paii necesari pentru configurarea convertorului A/D?
-configurare pini, Vref (ADCON1) TRISx, LATx, PORTx
-untare canal de intrare (ADCON0)
-TAQ, TAD (ADCON2)
-aliniere rezultat (ADCON2)
-activare modul (ADCON0)
53. Care este diferena ntre realizarea unei conversii A/D n mod manual i n mod automat?
Mod manual: biii ACQT2:ACQT0=000, achiziia ncepe la selectarea canalului analogic, iar la setarea
bitului GO/DONE se ntrerupe achiziia i ncepe conversia. Utilizatorul va fi responsabil cu asigurarea
timpului minim necesar achiziiei.
Mod automat: biii ACQT2:ACQT0 au restul valorilor, timpul de execuie ia valori ntre 2T AD-20TAD, iar la
setarea GO/DONE se realizeaz achiziia pe durata de timp selectat prin biii ACQT2:ACQT0, apoi
conversia ncepe automat.
n ambele situaii, la terminarea conversiei se reseteaz GO/DONE i se seteaz flagul ADIF (reg PIR1)

54. Implementai n asamblare o bucl for cu 100 de iteraii. Explicai codul.


movlw d'100' ;salveaza 100 in WREG
movwf 0x00 ;val din WREG la 0x00
for: ;declarare for
decfsz 0x00, 1 ;decrementeaza 0x00, cand e 1 sare peste urm linie
goto for ;apel for
55. Ce elemente ar trebui s cuprind o rutin de tratare a ntreruperii?
Etichet, cod, RETFIE (care seteaz bitul GIE)
56. Care este diferena ntre un microcontroler i un microprocesor?
Unui microprocesor trebuie s i se adauge componente ca memorie, componente de primire/trimitere
de date. Microcontrolerul este proiectat s fie toate acestea ntr-unul singur. Nu sunt necesare alte
componente externe, astfel se economisete timpul i spaiul necesare construirii de aparate.
57. Explicai sistemul de prioriti la ntreruperi.
Prioritatea se seteaz prin biii xxxIP. ntreruperile cu prioritate high se pot activa independent de
ntreruperile cu prioritate low, prin bitul GIEH al reg INTCON. La fel i cele low, care se pot controla prin
bitul GIEL al reg INTCON. Toate sursele de ntrerupere pot concura pe cele 2 nivele de ntrerupere.
Activarea/dezactivarea ntreruperilor provenite de la periferice se face prin bitul PEIE al reg INTCON.
58. Cum ai implementa o temporizare cu durata de 1min?
59. Care este echivalentul n C al urmtorului cod din asamblare?
#define Reg 0x02
Reg=0b11011011;
60. Cum se realizeaz temporizrile software? Dai un exemplu.
Temporizrile software se pot realiza prin utilizarea timpului de execuie al instruciunilor (0,2us0,6us). ex:
Delay1us:
NOP ;0.2us
RETURN ;0.4us
...
CALL Delay1us ;0.4us
61. Cum sunt implementate prioritile n cazul sistemului de ntreruperi?
Exist bitul IPEN (interupt priority enable) n reg RCON care permite activarea/dezactivarea
prioritilor. Dac IPEN=0 nu se folosesc prioriti, dac IPEN=1 exist 2 nivele de prioritate: high i low.
62. Care este diferena ntre modul de realizare al temporizrilor software i hardware?
Temporizrile software se pot realiza prin utilizarea timpului de execuie al instruciunilor (0,2us0,6us), iar cele hardware prin intermediul timerelor 0 (eantionri), 2 (PWM), 1 i 3 (CAD/CCP).
63. Ce este un macro? Dai un exemplu.
Macro-urile sunt secvene de instruciuni care nlocuiesc un apel al macroului (ex: Adunare macro n1,
n2, reg; movlw n1; movwf reg; movlw n2; addwf reg,f; endm; >Adunare D1, D2, 0x01)
64. Prezentai un avantaj i un dezavantaj al utilizrii macrourilor.
Avantaje: claritatea i reducerea dimensiunii codului, eficien la execuia instruciunilor incluse n
macro, deoarece acestea sunt introduse n cod la compilare.

Dezavantaje: la compilare, apelul este nlocuit cu corpul macroului, pot introduce erori subtile de
programare.
65. n utilizarea porturilor sunt implicai 3 regitri. Care sunt acetia i ce rol ndeplinesc?
-TRIS, de configurare a direciei pinilor portului
-PORT, de citire/scriere a datelor pe port
-LAT, de stocare a datelor citite de pe port
66. La ce se poate folosi al noulea bit de date n cazul comunicaiilor seriale?
Al 9-lea bit de date (TX9D) poate fi folosit fie ca un bit obinuit, fie pentru verificarea paritii, sau ca bit
indicator de adres la comunicaii seriale cu adresare.
67. Ce nelegei prin mod master i mod slave n cazul comunicaiilor seriale?
Se folosesc la comunicarea serial sincron.
-mod slave: USART_SYNC_SLAVE
-mod master: USART_SYNC_MASTER
68. Ce nelegei master sincron i slave sincron n cazul comunicaiilor seriale?
Sunt 2 tipuri de comunicaii seriale half-duplex.
-master-sincron: echipamentul genereaz un tact de comunicaie pe pinul RC6/TX/CK i poate
recepiona/trimite date sincron cu tactul pe pinul RC7/RX/DT
-slave-sincron: tactul nu este generat local, ci recepionat pe pinul RC6/TX/CK, echipamentul putnd
transmite/recepiona date sincron cu tactul pe pinul RC7/RX/DT
69. Prezentai cteva recomandri de care ar trebui s se in cont n cazul rutinei de tratare a
ntreruperilor.
Se recomand activarea numai a ntreruperilor utilizate. Rutina s fie scurt, fr procesri, datele s se
prelucreze n progr principal. Nu se lucreaz cu mai multe periferice. Se practic salvarea evenim ntr-o
var testat n bucla principal.
70. Cum este organizat memoria RAM de date?
Memoria RAM este organizat pe octet, fiecare purtnd denumirea de registru. Sunt de 2 tipuri: SFR
(160 reg speciali) i GPR (restul reg de uz general)
71. Ce se ntmpl dac n timpul deservirii unei ntreruperi low apare o ntrerupere high?
ntreruperea High o va ntrerupe pe cea Low. (GIEL=0)
72. Ce se ntmpla dac n timpul deservirii unei ntreruperi high apare o ntrerupere low?
Nu se va ntmpla nimic, deoarece high nu poate fi ntrerupt cu nimic (GIEH=0 GIEL=0)
73. Prezentai 2 metode de a accesa coninutul locaiei de memorie de la adresa 0x215. Exemplificai
prin cod i comentarii.
Adresare dierct:
MOVLB 2 ;selectare bank2
MOVF 0x15, W, BANKED ;salvam n WREG val de la 0x215
Adresare indirect:
LFSR FSR0, 0x215 ;val de la 0x215 n reg de adresare
MOVWF INDF0 ;n WREG din reg accesare coninut
74. Care sunt paii de iniializare ai modulului CCP n vederea realizrii capturii?
Iniializare CCP pt captur (reg CCP1CON):
0000 dezactivat

0001
0010 comparare cu schimbare de stare a pinului
0011
0100 captur la fiecare front cresctor
0101 captur la fiecare front descresctor
0110 captur la 4 fronturi cresctoare
0111 captur la 16 fronturi cresctoare
75. Care sunt paii de iniializare ai modulului CCP n vederea realizrii comparrii?
-iniializare pin pt ieire
-config timer (predivizor, impulsuri interne)
-config modul CCP (reg CCP1CON)
-iniializare reg CCPR1H:CCPR1L cu val dorit
-la apariia unui eveniment (bit CCP1IF): reset flag, reset timer, toggle pin
76. Care sunt paii de iniializare ai modulului CCP n vederea generrii unui semnal PWM?
-se stabilete TPWM prin iniializarea reg PR2
-se stabilete FU prin iniializarea reg CCPR1L+CCP1CON<5,4>
-pinul CCP1 pin de ieire
-se stabilete val de predivizare a TMR2 (reg T2CON)
-se pornete TMR2 (reg T2CON)
-se configureaz modulul CCP pt mod PWM (reg CCP1CON)
77. Prezentai principiul de funcionare al timerului 1.
Activarea/dezactivarea timerului se face prin TMR1ON. Accesarea atomic a reg TMR1L i TMR1HB se
face prin reg TMR1L i TMR1H pt octetul superior. Citirea TMR1L transfer con reg TMR1HB n TMR1H.
TMR1IF semnalizeaz depirea capacitii de numrare. Oscilatorul intern este conectat ntre pinii
T10S1 i T10S0.
78. Ce nelegei prin preincrementare? Dai un exemplu.
Se folosete la adresarea indexat. Reg virtual PREINCn incrementeaz cu 1 adresa din FSRn, apoi
acceseaz coninutul noii adrese. (ex: INCF PREINC0, F)
79. Microcontrolerul dispune de instruciuni scurte (16 biti) i cteva instruciuni lungi (32 biti). Dai un
exemplu de instruciune lung i explicai-o.
CALL n,s este o instr de control (lung) care face apel de subrutin. Se poate folosi FAST ca al doilea
argument, pentru folsirea stivei rapide. (ex: CALL subrutina FAST)
80. Care sunt evenimentele care pot determina o captur?
Front cresctor/descresctor, al 4-lea/16-lea front cresctor, toate pe pinul CCPx.
81. Care sunt evenimentele care pot fi generate de modulul CCP n mod de lucru comparare?
Evenimente: pin pus pe 1/0, pinul i schimb starea/rmne nemodificat. Apar i evenimente speciale:
semnal intern (hardware), resetare TMR, conversie AD.
82. Explicai forma general a instruciunii cod f, b, a. Dai un exemplu de asemenea instruciune.
COD f,b,a este o instruciune pe bit. (ex: BCF, BSF, BTFSS)
f=adresa de bii a unui reg din memorie
b=poziia bitului n reg
a=zona de memorie accesat
83. Explicai forma general a instruciunii cod k. Dai un exemplu de asemnea instruciune.

COD k este o intruciune cu constante. k=val pe 8 bii a constantei. (ex: ADDLW, MOVLW)
84. Explicai forma general a instruciunii cod n. Dai un exemplu de asemenea instruciune.
COD n este o instruciune de control. n=adresa de start din memoria program (20 bii), corespunde
etichetei din codul surs, afecteaz PC; instruciunile ncep la adrese pare (ex: GOTO, CALL, RETURN)
85. Explicai instruciunea CALL n, s. Dai un exemplu de utilizare. Ce nseamn argumentul s?
CALL n,s este o instr de control care face apel de subrutin. Se poate folosi FAST ca al doilea argument,
pentru folsirea stivei rapide. (ex: CALL subrutina FAST)
86. Explicai instruciunea DECFSZ f, d, a. Dai un exemplu de utilizare.
DECFSZ f,d,a este o instr de comparaie (pe octet), decrementeaz f, salt peste urm instr dac 0.
(ex: ntr-o bucl for, decfsz 0x01, 1)
87. Explicai instruciunea ADDWF f, d, a. Dai un exemplu de utilizare.
ADDWF f,d,a este o instruciune aritmetic (pe octet), adun WREG cu f.
f=registru, adresa de 8 bii a unui registru din memorie (adr fiz/adr simb)
d=bitul de destinaie al rezultatului (0=rez n WREG, 1=rez n f)
a=zona de memorie accesat (0=acces bank, 1=banked)
(ex: ADDWF 0x02, 1, 0)
88. Explicai instruciunile PUSH i POP.
PUSH adaug n vrful stivei (salveaz PC), POP scoate elementul din vrful stivei (reface PC).
89. Explicai instruciunea GOTO n. Dai un exemplu de utilizare.
GOTO n este instruciune de control i face salt la o adres/etichet (ex: GOTO main)
90. Care este echivalentul n asamblare al urmtorului cod C?
i EQU 0x00
j EQU 0x01
movlw d'50'
movwf i
movlw d'0'
movwf j
for
incf j
decfsz i, 1
goto for
91. Care este echivalentul n asamblare al urmtorului cod C?
BTFSS PORTB, RB0
BSF LATB, LATB3
BCF LATB, LATB3
92. Explicai instruciunea BCF f, b, a. Dai un exemplu de utilizare.
BCF f,b,a este o instr logic (pe bit) care seteaz pe 0 bitul b din reg f (ex: BCF 0x00, 3, ACCESS)
93. Care este echivalentul n C al urmtorului cod din asamblare?
if (T0CONbits.TMR0IF == 1)
94. Este disponibil un microcontroler i un afisaj pe 7 segmente cu 4 digii. Cum ai face legturile i
care este principiul de comand al acestui afiaj pentru afiarea unor cifre diferite pe cei 4 digii?

Sunt 2 variante, cu anod sau catod comun. Se multiplexeaz afiajul. (schema JPG)
95. Utilizai una din funciile din biblioteca <delays.h> pentru a implementa o temporizare software de
10ms. Prezentai modul n care ai calculat argumentul funciei. Fosc=20MHz
Delay1KTCYx(50); // 50*1000*0.2us = 10ms
Delay100TCYx(500); //500*100*0.2us = 10ms
96. Enumerai cel puin 5 surse de nterupere existente la microcontrolerul PIC18F4455 i prezentai n
ce condiii se produc ntreruperile respective.
Externe:
-3 linii de intr distincte (RB0/INT0, RB1/INT1, RB2/INT2): modif strii fiecrei linii va genera cte o ntr.
-biii PORTB<4:7>: modificarea strii acestor bii de intrare va genera o ntrerupere
Interne:
-Timer0, 1, 2, 3: fiecare timer va genera cte o ntrerupere la depirea capacitii de numrare
-CCP1, 2: se va genera cte o ntrerupere la fiecare captur realizat sau comparare reuit
-Convertorul A/D: se va genera ntrerupere la terminarea conversiei
97. Prezentai principiul de funcionare al modulului de conversie A/D.
Modulul poate fi config prin modif unor reg speciali, iar citirea datelor prin citirea a 2 regitri (ADRESH:
ADRESL). Modulul de conversie A/D dispune de 3 regitri de configurare (ADCON0, ADCON1, ADCON2).
CAD are ataat un bit pt activarea/dezactivarea lui (ADON din reg ADCON0). Exist o sg linie de intrare
n CAD, dar sunt 13 canale care pot fi selectate ca linii de intrare prin biii CHS3:CHS0 ai reg ADCON0.
Pinul corespunztor trebuie configurat ca pin de intrare (reg TRIS coresp). Val convertite max i min
sunt alese prin biii VCFG1:VCFG0. naintea conversiei trebuie ateptat un timp minim n starea de
achiziie, pentru stabilizarea amplificatorului intern.
98. Care este rolul registrului STATUS?
STATUS este un registru de stare, n care pot fi stocai o serie de indicatori, generai de operaiile
aritmetice i logice. Ex de indicatori: transport (C), depire (OV), semn (N), rezultat zero (Z), transport
auxiliar (DC). Reg de stare poate fi i reg de destinaie.
99. Care este echivalentul n asamblare al urmtorului cod C?
BTFSS PORTB, RB0
BTFSC PORTB, RB1
goto CAZ2
BCF LATB
goto iesire
CAZ2:
movlw 0xAA
movwf LATB
iesire:

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