Laborator 11 - Microcontrolere an univ. 2004 / 2004 , sem II asistent Aghion Cristian
1 Programmable Integrated Controller (PIC)
n cele ce urmeaz se va prezenta o alt familie de Microcontrolere (similar cu cea prezentat n laboratoarele anterioare), realizat de firma MICROCHIP TECHNOLOGY INC. Aceste tipuri de microcontrolere au cunoscut o dezvoltare rapid ntr-un scurt interval de timp ca urmare a uurinei de programare i de utilizare a acestora. Programatoarele pentru aceste microcontrolere sunt uor de realizat i uor de interfaat cu calculatoarele personale. Mai mult dect att, exist controlere care au inclus n interior i oscilatorul intern, nemaifiind nevoie de rezonator extern. Important de reinut este c la astfel de controlere bus-ul intern pentru memoria de Date este diferit de cel pentru memoria Program am avantaj cu lucru simultan pe cele dou bus uri = vitez mai mare de execuie a instruciunilor.
n continuare sunt prezentate cteva trsturi importante ale microcontrolerului PIC16F84
- toate instruciunile sunt executate ntr-un singur ciclu, excepie fcnd cele de ramificare - are doar 35 cuvinte de instruciuni - memorie program accesibil pe 14 bii - memorie de date accesibil pe 8 bii - 15 registre cu funcii speciale - stiva pe 8 nivele de adncime - moduri de adresare: direct, indirect i relativ - 4 surse de ntrerupere - memoria program poate fi renscris de 1.000.000 ori. - reinerea datelor n memoria program, fr alimentare, peste 40 ani. - frecvena de lucru maxim 10MHz
Arhitectura intern pentru PIC16F84 este prezentat n Fig. 2
Fig. 1 Vedere de sus a capsulei microcontrolerului PIC16F84
Facultatea de Electronic i Telecomunicaii Laborator 11 - Microcontrolere an univ. 2004 / 2004 , sem II asistent Aghion Cristian
2 Memoria Program i memoria de Date n Fig. 3 este prezent harta Memoriei Program. PIC16F84 are PC (Program Counter = numrtorul de program) pe 13 bii (de la 0 la 12), capabil s acceseze adrese din memoria program pn la 8K x 14 bii. Memoria Program a lui PIC16F84 este de 1K (1024 cuvinte de 14 bii). (0000H 03FFH), restul pn la 1FFFH este neimplementat. Litera F din PIC16F84 semnific faptul c Memoria Program poate fi reinscriptibil. (la PIC12C509, Memoria Program poate fi nscris doar o singur dat, avnd avantajul c, odat ars Memoria Program, aa va rmne pentru totdeauna pe cnd la variantele cu memorie Flash, exist varianta teoretic prin care se pot modifica datele (n mod greit) din Memoria Program. Stiva PIC16F84 are o stiv de 13 bii cu 8 nivele, sau cu alte cuvinte, un grup de 8 locaii de memorie de 13 bii lime cu funcii speciale. Rolul su de baz este de a pstra valoarea contorului de program dup un salt din programul principal la o adres a unui subprogram. Pentru ca un program s tie cum s se ntoarc la punctul de unde a pornit, trebuie s napoieze valoarea contorului programului din stiv. Cnd se mut dintr-un program ntr-un subprogram, contorul programului este mpins n stiv (un exemplu de acesta este instruciunea CALL). Cnd se execut instruciuni ca RETURN, RETLW sau RETFIE ce au fost executate la sfritul unui subprogram, contorul programului a fost luat dintr-o stiv, astfel nct programul s poat continua de unde a fost oprit nainte de a fi ntrerupt. Aceste operaii de plasare ntr-o i luare dintr-o stiv de contor de program sunt numite PUSH i POP.
n Fig. 4 este prezentat toat memoria (programe + date) la PIC16F84.
Fig. 3 Fig. 4
Facultatea de Electronic i Telecomunicaii Laborator 11 - Microcontrolere an univ. 2004 / 2004 , sem II asistent Aghion Cristian
3 Memoria de Date este partiionat n dou arii, prima este destinat Regitrilor cu Funcii Speciale, iar cea de-a doua fiind de uz general (regitrii GPR- Global Purpose Register). La rndul ei, zona SFR este i ea mprit n dou (bank0 i bank1), selectabile prin valoare lui RP0 (bit aflat n registrul STATUS). Fiecare registru este pe 8 bii (inclusiv zona EEPROM). Pe lng SFR i GPR, mai exist i memoria EEPROM, de 64 de cuvinte pe 8 bii (64 bytes), accesibil tot prin regitrii din SFR. Aceast zon de memorie, cu toate c este de Date, nu pierde valoarea, la RESET sau scoaterea de sub tensiune, putndu-se stoca aici setri (instantanee) pentru aplicaia curent. Zona GPR (General Purpose Register) nu ine cont de bank0 sau bank1 valoarea fiind aceeai. Zonele 50H 7Fh i D0H FFH nu sunt implementate la microcontrolerul PIC16F84.
n Fig. 5 sunt prezentai toi Regitrii cu Funcii Speciale, pentru PIC16F84 Porturile Acestei familii de microcontrolere trebuie spus cum s fie Portul (de intrare sau de ieire). Dac este de intrare, atunci citesc valoarea Portului, iar dac este de ieire scriu n Port. Definirea Porturilor s fie intrare / ieire se realizeaz cu ajutorul Regitrilor TRISA pentru PORTUL A i TRISB pentru PORTUL B. Valoare n TRIS = 1 bitul din PORT este programat ca intrare TRIS = 0 bitul din PORT este programat ca ieire
Fig. 5
Facultatea de Electronic i Telecomunicaii Laborator 11 - Microcontrolere an univ. 2004 / 2004 , sem II asistent Aghion Cristian
4 n Fig. 6 este prezentat setul de instruciuni (35 mnemonice). Atenie: - d este destinaie - d = 0 > rezultatul va fi dus in W d = 1 > rezultatul va fi lsat n operand (notat cu f) - b este numrul bitului dintr-un operand (f) exp. BTFSS f,4 = testeaz bitul 5 (LSB - 0,1,2,3,4,5,6,7 - MSB) din operandul (f).