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
   3   4   5   6   7   8   9   10   11   12   13