Documente Academic
Documente Profesional
Documente Cultură
f. directiva ORG specifica de la ce adresa vor fi asamblate instruciunile (la pornire, execuia
ncepe de la adresa zero);
g. codul sursa se va ncheia cu "end"
h. baza implicita in care vor fi scrise numerele poate fi selectata cu radix (ex: radix dec)
i. regitrii/locaiile de memorie speciale si numele predefinite ale biilor se scriu cu majuscule (ex:
STATUS, FSR, Z)
6. Exemplu de program:
; suma elementelor unui vector de 10 numere, ce incep de la adresa 20h
#include "p16f887.inc"
radix dec
; selecteaza baza implicita zecimal
errorlevel 1, -305
; elimina warning-urile ce au ca destinatie f
cblock 0x20
vector:10
contor
sum
endc
;
;
;
;
ORG 0
nop
clrf
goto
ORG 4
main
movlw
10
movwf
contor
movlw
vector
movwf
FSR
; aici ar mai trebui ceva
repeta
movf
addwf
incf
decfsz
goto
INDF, w
sum
FSR
contor
repeta
gata
goto
gata
; contor = 10
; incarca in W adresa de inceput a lui vector
; FSR = 0x20
;
;
;
;
END
7. Se salveaz programul, apoi se asambleaz cu una din comenzile Make sau Build.
Erorile si atenionrile sunt semnalate in fereastra Output.
a. Warnings si Messeges de obicei pot fi ignorate;
b. Asamblorul poate fi instruit sa nu mai afieze anumite mesaje (ex: errorlevel 1, -305)
c. Daca apar erori, se da dublu-click pe eroare pentru a poziiona cursorul pe linia cu eroarea
d. In cazul erorilor de asamblare care apar chiar de la nceput, putei verifica daca este selectat
acelai PIC in Configure -> SelectDevice, in fereastra proiectului, HeaderFiles, si in program in
directiva #include.
ver.2010.04 d
8. Pentru a vedea cum arata asamblat programul si codul maina se poate da View -> ProgramMemory.
Instruciunile in limbaj de asamblare sunt in coloana din dreapta, echivalentul lor in cod maina este in
coloana Opcode. Se poate comuta afiarea intre modurile Symbolic si Machine (de jos) pentru a afia
denumirile variabilelor (locaiilor de memorie) sau adresa lor.
9. Din meniul Debugger -> SelectTool se selecteaz MPLAB SIM pentru a putea rula programul in
simulare. In momentul acesta mai apare un toolbar cu butoane pentru depanare.
10. Pentru a examina memoria PICului (RAM) se deschide fereastra View->FileRegisters
In zona adreselor mici (primele 2 rnduri) se afla locaii speciale de memorie, nu o sa umblam la ele;
insa ncepnd de la adresa 20h, se afla variabilele definite in programul din exemplu.
Pe coloana din dreapta sunt trecute adresele (ex: octetul care este colorat este cel de la adresa 20h, cel
din dreapta lui este de la adresa 21h, etc..); sunt afiai cte 16 (10h) octei pe linie.
ver.2010.04 d
In coloana din dreapta (Ascii), pentru fiecare cod hexa este afiat caracterul corespunztor.
In modul de vizualizare Symbolic, vor fi afiate locaiile de memorie, una sub alta, mpreuna cu
denumirile lor. Locaiile de memorie pot fi editate, scriind pur si simplu o alta valoare in hexa, sau
scriind un sir de caractere in zona Ascii.
11. Cu toate ca diversele variabile se pot urmri si in fereastra FileRegisters, este mai comod sa se fac acest
lucru din View->Watch; Se introduc pentru urmarire:
a. simbolurile definite in program (i, sum), cu AddSymbol,
b. registrul W (WREG) si eventual: STATUS, FSR, folosind AddSFR.
In fereastra de Watch sunt afiate: adresa de memorie, numele variabilei si coninutul;
coninutul(valoarea) poate fi vizualizat in diverse baze (10/16/2):
dnd click dreapta pe capul de tabel si adugind noi coloane;
dnd click dreapta pe variabila si selectnd Properties.
12. ncepnd de la adresa 20h se completeaz manual cele 10 valori (a cror suma va fi calculata de
program); aceste valori se trec direct in hexa; opional se poate trece un sir de caractere in coloana din
dreapta ASCII, si automat codurile lor vor apare in dreapta.
13. Cu F7 (sau F8) se face execuia pas cu pas a instruciunilor. Sgeata ce apare in dreapta (in program)
indica urmtoarea instruciune de executat.
Dup execuia fiecrei instruciuni, se examineaz variabilele / locaiile de memorie pentru a observa ce
s-a modificat. Registrul W si flagurile se pot urmri si in josul ferestrei, in StatusBar, in mijloc.
Daca se dorete rularea programului de la nceput (reset) aceasta se poate obine apsnd F6.
Rularea pina la un anumit punct se poate face fie:
a. dnd click dreapta pe instruciunea pana la care se dorete rularea si selectare RunToCursor;
b. punnd un Breakpoint, dnd dublu-click pe marginea din stnga, in dreptul instruciunii unde se
dorete oprirea execuiei; breakpointul e semnalizat pe margine cu o bulina roie.
14. Atenie, programele ce ruleaz in microcontroler nu se opresc niciodat din rulat; directiva end nu
nseamn ca programul se va termina (aa cum se ntmpla in alte limbaje), ci doar ca zona de cod scrisa
de utilizator se termina acolo. Trebuie sa facem unul din lucrurile:
a. ori facem tot programul sa ruleze intr-o bucla infinita;
b. ori la sfritul programului se poate pune o bucla infinita
c. ori avem grija sa rulam pas cu pas pina se termina instruciunile scrise de noi in program;
Varianta a) este folosita pentru a rula un program din microcontroler, insa pentru nceput, la
laborator vom folosi varianta b). Varianta c) poate fi folosita numai cnd rulam pas cu pas.
Daca lansam in execuie un program fara a respecta una din a)b)c), atunci programul va rula in
continuare, executnd secvenial instruciuni gsite in memorie (al cror coninut este aleator).
ver.2010.04 d
15. ncercai aranjarea ferestrelor astfel incit sa fie vizibile (sau sa avei acces uor): programul, zona de
memorie si watch:
16. Pentru a testa un alt program asm, fara a crea un nou proiect, se poate elimina programul curent din
fereastra proiectului, SourceFiles, Remove; si se poate aduga cel nou ca la punctul 3). Atenie la a nu
edita un program, si in proiect sa fie inclus un altul (posibil cu acelai nume insa din alt director)
Greelile ce apar la crearea unui nou proiect sunt de obicei datorita neateniei la punctele marcate cu .
ver.2010.04 d
ver.2010.04 d
FAQ:
Daca ntlnii undeva P16F876A (un model de PIC folosit in anii anteriori) nlocuii cu P16F887 (nu
P16F887A)
Nu facei modificri in directorul comun; nu tergei si nu adugai fiiere. Toate salvrile de
proiecte si modificrile le facei in directorul propriu (cel cu codul subgrupei).
In funcie de fontul folosit in editor, cteodat este uor de confundat 1 cu l
Daca avei erori ncepei corectarea lor cu prima; citii cu atenie ce mesaj de eroare avei apoi dai
dublu-clic pe el.
Instruciunile nu conteaz daca le scriei cu litere mici sau mari, insa denumirile de locaii speciale
(FSR,INDF, STATUS, Z, C,...) trebuie scrise cu majuscule.