Page 8 - Microcontrolere - Indrumator de laborator
P. 8
Lucrarea nr. 1
Noțiuni introductive de programare a microcontrolerului
PIC16F887 în limbaj de asamblare
1. Scopul lucrării
Lucrarea are ca scop principal familiarizarea studenților cu noțiunile de bază
necesare dezvoltării unor aplicații de complexitate mică și medie, folosind
programarea în limbaj de asamblare. Pentru exemplificare, se va face referire la
microcontrolerul PIC16F887 produs de către compania Microchip. Exemplele de
rutine / subrutine din această lucrare vor fi orientate către înțelegerea modului de
adresare a memoriei program de tip Flash a microcontrolerului. Lucrarea este utilă și
pentru aprofundarea modului de funcționare a unor resurse interne de bază ale
microcontrolerului, în cazul de față, accesarea memoriei program.
2. Considerații teoretice
Pentru familiile de microcontrolere de 8 biți [1], [2], 16 biți sau 32 de biți,
realizate de către diferite companii, sunt concepute seturi de instrucțiuni care să
asigure următoarele funcționalități: operații orientate pe bit, operații orientate pe octet
– registre sau constante și operații de control al programului. În [2, p. 227] este indicat
setul de instrucțiuni al microcontrolerului PIC16F887. Acest microcontroler este
realizat în tehnologie RISC (engl. Reduced Instruction Set Computer), fapt ce
semnifică că acest dispozitiv programabil recunoaște doar 35 de instrucțiuni,
instrucțiuni care vizează în primul rând resursele interne ale microcontrolerului:
setarea modului de funcționare a microcontrolerului și a resurselor sale integrate prin
intermediul registrelor de stare și control, transferul de date între unitatea centrală și
resursele integrate specializate ale microcontrolerului, respectiv funcționalitățile lui de
bază: calcul aritmetic elementar, executarea unor funcții logice, ramificare
necondiționată sau condiționată a programului, apeluri de subrutină și revenirea din
subrutină etc.
Programarea microcontrolerelor în limbaj de asamblare [1] (limbaj de
programare de nivel scăzut – engl. low level) prezintă o serie de avantaje cum ar fi:
executarea instrucțiunilor are efect direct asupra resurselor interne ale
microcontrolerului, utilizarea eficientă a resurselor interne de memorie de date și
memorie de program, adaptarea foarte bună la aplicații de timp real, aprofundarea
cunoștințelor legate de funcționarea resurselor interne etc. Dintre dezavantaje putem să
amintim faptul că timpul de dezvoltare a aplicațiilor software de complexitate medie și
mare este semnificativ, programarea în limbaj de asamblare nu este întotdeauna
atractivă deoarece, pe lângă cunoștințele abstracte de programare, presupune o
cunoaștere profundă a modului de funcționare a unității centrale a microcontrolerului
și a resurselor sale integrate specializate. Întrucât fiecare companie producătoare de
5