Sunteți pe pagina 1din 3

Scrierea si rularea unui program simplu in MPLAB

Greelile ce apar la crearea unui nou proiect sunt de obicei datorita neateniei la punctele marcate cu . 1. Se lanseaz mediul MPLAB, si se selecteaz Project -> ProjectWizard a. Next> b. Se selecteaz modelul de PIC cu care se va lucra (exemplu: PIC16F887); Next> c. La Active Toolsuite se selecteaz Microchip MPASM Toolsuite(in fereastra aceasta nu modificai nici un director (din Location), altfel vor apare x-uri roii in dreptul lor si nu va funciona); Next> d. Se specifica directorul si numele proiectului ce va fi creat; (ex: c:\users\pam\5321a\test7); se specifica calea completa (att directorul cat si numele proiectului); Next> e. (nu adugai inca fiiere la proiect); Next> f. Finish> 2. Se creeaz un nou fiier sursa cu File -> New, urmat de File->SaveAs, se selecteaz acelai director ca mai sus (acolo unde a fost creat proiectul) si se da un numele fiierului, cu extensia asm (Ex: test.asm). Nu maximizai (inc) ferestrele; o sa avei nevoie sa vizualizai mai multe ferestre simultan. 3. Daca fereastra proiectului din coltul stnga-sus nu este vizibila(cea mica cu extensia .mcw/.mcp), se activeaz cu View->Project. In aceasta fereastra se da click dreapta pe SourceFiles, AddFiles si se selecteaz fiierul cu extensia .asm salvat (ex: test.asm), din directorul de unde a fost salvat (fiierul o sa apar sub SourceFiles, nu in alta parte; o sa fie un singur fiier la SourceFile, nu mai multe). 4. Presupunem ca avem da fcut programul: aa=(bb+ee)*4-7 5. Se presupune ca avem scris programul pe foaie att in limbajul W cat si transformat in limbaj de asamblare. 6. In directorul curent crem un fiier text pe care l editam cu notepad (exemplu oper.txt):
W=bb W=ee+W aa=W C=0 aa=aa<<^1 C=0 aa=aa<<^1 W=7 aa=aa-W

7. Mergem in directorul comun\w si lansam programul w (w.bat) 8. Ii dam (ca input file) numele fiierului pe care l-am creat (relativ la directorul comun\w unde se afla executabilul ), exemplu: ..\..\2531a\oper.txt si la output file numele fiierului in care va fi generat codul asm, exemplu: ..\..\2531a\operasm.txt
Obs: cile si numele de fiiere sunt relative la directorul in care se afla programul w.bat; deci pentru a ajunge in comun avem un ..\ apoi pentru a ajunge in pam mai avem un ..\ si de acolo urmeaz numele subdirectorului (subgrupa) in care lucrai.

ver.2011.03 f

9. Din fiierul text generat se copie totul in MPLAB, in programul asm, si se mai fac in plus cteva adugiri (marcate mai jos cu bold):
#include "p16f887.inc" radix dec CBLOCK 0x20 ;variables are declared in here, between CBLOCK and ENDC aa bb ee ENDC ORG clrf movlw movwf goto ORG main: 0x0000 STATUS 0x00 PCLATH main 4 movf addwf movwf bcf rlf bcf rlf movlw subwf infinit: goto infinit end bb, w ee, w aa STATUS, C aa STATUS, C aa 7 aa ;; ;; ;; ;; ;; ;; ;; ;; ;; W=bb W=ee+W aa=W C=0 aa=aa<<^1 C=0 aa=aa<<^1 W=7 aa=aa-W

Numele variabilelor folosite in program se trec una sub alta in zona CBLOCK La sfrit se pune un goto care sa realizeze blocarea programului intr-o bucla infinita (cnd ajungem cu rularea programului acolo, tim ca s-a terminat) 10. Se salveaz programul, apoi se asambleaz cu una din comenzile Make sau Build. . Daca apare vre-o eroare citii cu atenie care e eroarea si dai dublu-click pe ea, pentru a va duce la linia cu problema. 11. 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. 12. Deschidem fereastra pentru urmri variabilele View->Watch; Se introduc pentru urmrire: a. simbolurile definite in program (aa, bb, ee), 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): 13. Aranjam ferestrele astfel incat si codul sursa si fereastra de Watch sa poate fi urmrite simultan. 14. Cu F7 se face execuia pas cu pas a instruciunilor. Sgeata ce apare in dreapta (in program) indica urmtoarea instruciune de executat (ce nu s-a executat inca). 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. 15. Nu rulai programul cu Run (sgeata verde din toolbar). Rulai doar pas cu pas pana cnd ajungei la bucla infinita. Acolo considerai ca s-a terminat programul.

ver.2011.03 f

16. Iniializai variabilele folosite (aa=0, bb=2, ee=3) din Watch (la pornirea programului) 17. Continuai sa rulai programul astfel: a. gndii-va ce efect are instruciunea pe care e sgeata verde; b. calculai nainte care ar trebui sa fie rezultatul; c. executai instruciunea (cu F7); d. vedei daca a produs rezultatul ateptat; 18. Dup o rulare completa, rulai programul de la nceput (F6) si la pasul 5 iniializai cu alte valori (aa=0, bb=0, ee=1)

Variabilele se pot iniializa si din program, imediat dup main::


clrf movlw movwf movlw movwf aa 2 bb 3 ee

ver.2011.03 f