INIŢIERE – Lecţia 7

24 MAI 2001

Folosirea simulatorului

Pentru a parcurge această lecţie vă sfătuiesc în primul rând să creaţi un director pe HDD denumit CURS şi să copiaţi în acesta fişierele pe care le puteţi descărca de la adresa www.electronica-azi.ro secţiunea Download. Toate aceste programe sunt programe DOS deci va trebui să le rulaţi sub DOS. Dacă folosiţi Windows treceţi vă rog în DOS Prompt deoarece toate explicaţiile şi exemplele presupun că sunteţi în DOS la linia de comandă C:CURS. Am stat ceva timp pe Internet pentru a găsi aceste fişiere. Toate sunt versiune shareware sau freeware, folosirea lor în acest curs nu vă vor creea probleme etice. Oricum ar trebui să le obţineţi legal în eventualitatea folosirii lor şi după curs. Nu vă pot facilita obţinerea unei licenţe pentru folosirea lor, dar pentru scopuri educaţionale nu cred că vor fi probleme. Majoritatea acestor programe conţin manuale de utilizare care explică cum funcţionează. Ar fi bine să le tipăriţi pentru a înţelege următoarele referiri.
Asamblorul pe care îl vom folosi este realizat de Pseudo Corp, iar simulatorul de HiTech Corp. Veţi găsi şi exemplele din lecţia 6. Editorul de texte QEdit este de la firma SemWare şi de asemenea un browser de text. Puteţi folosi orice editor de text pentru a creea fişierul sursă. Puteţi folosi şi NotePad din Windows. Veţi găsi referinţe pentru 8051.
Acesta este un TSR care poate fi încărcat o dată înaintea rulării asamblorului şi a simulatorului şi apoi poate fi apelat apăsând un grup de taste simultan. Conţine informaţii importante şi poate fi folositor în proces.
Primul pas în scrierea unui program este definirea problemei cât mai complet posibil şi după aceea veţi începe să scrieţi fişierul sursă. Am scris şi am asamblat toate exemplele din lecţia 6. Toate fişierele sursă au în final extensia .asm. Extensia creată de asamblor este .objfişier obiect şi .lstfişier listing. Listingul prezintă toate adresele rezolvate prin asamblor, toate codurile generate şi toate comentariile. Acest fişier este foarte important în folosirea simulatorului. În simulator nu sunt afişate etichete deoarece în realitate simulatorul dezasamblează fişierul obiect aşa cum este încărcat în simulator. În simulator nu este listat nici un nume deci fişierul listing este folosit pentru a verifica paşii parcurşi de simulator.
Veţi vedea toate acestea pe măsură ce le vom parcurge.
Listigul arată orice eroare ce apare în procesul de asamblare deci există posibilitatea corectării lor. Este foarte important să verificaţi listingul pentru a fi siguri că nu există erori. Încă un lucru: asamblorul crează fişiere obiect cu extensia .obj, iar simulatorul caută fişierele obiect cu extensia .hex Deci, înaintea încărcării lor în simulator va trebui să le redenumiţi. Nu este prea elegant, dar aceasta este calea ce trebuie urmată. Am redenumit deja pentru voi fişierele obiect din lecţia 6, dar în continuare orice fişier veţi creea va trebui redenumit de fiecare dată, înainte de a-l încărca în simulator.
Simularea este metoda cea mai simplă prin care vă testaţi programele înainte de a le încărca în DS5000. Aceasta înseamnă că nu este neapărat necesar să aveţi un DS5000 pentru a învăţa să-l utilizaţi.
Metoda pe care o veţi folosi de fiecare dată este următoarea: scrieţi fiecare program, îl asamblaţi şi apoi îl încărcaţi în simulator.
După testarea fiecărei componente a programului va trebui să le combinaţi într-un singur fişier ce va fi testat încă o dată şi apoi îl veţi încărca în DS5000. Acest simulator nu este modern, sunt altele mai bune, în special cele de la Pseudo Corp; am utilizat unul din acestea în alte aplicaţii (199$). Dar acesta este gratis şi îl vom folosi pentru scopurile noastre. Singurul lucru pe care nu îl poate face este simularea unei întreruperi.
Vom considera câteva din exemplele din lecţia anterioară şi le vom analiza în simulator. Prima va fi Prob01.asm. Presupun că aţi urmat sfatul meu şi aţi creat un director cu aceste fişiere. Acesta va trebui să includă, asamblorul, editorul de texte, simulatorul şi toate exemplele din lecţia anterioară. De asemenea sunteţi în DOS în acest director.
Primul lucru pe care trebuie să îl faceţi este să lansaţi în execuţie simulatorul. Tastaţi SIM51EM şi apăsaţi ENTER. Aveţi în faţă ecranul simulatorului cu toate secţiunile specifice 8051. Ecranul este împărţit în şase secţiuni. Fiecare secţiune este separată prin linie întreruptă. În zona superioară a ecranului se află secţiunea Regiştri. În partea stângă a acestei ferestre sunt adresele – Addr, codul instrucţiunii – Opcode şi instrucţiunile – Instructions. În partea dreaptă începând cu linia patru este secţiunea memoriei RAM internă Internal RAM, iar sub aceasta se află secţinuea memoriei RAM externe External RAM. Urmează secţiunea memoriei de programe Program memory şi apoi atributele tastelor funcţionale Function key. La stânga acestor două secţiuni există o zonă denumită File şi alta Select prin care se încarcă un fişier în simulator. Sub aceste zone se află linia de comandă.
Dintre aceste secţiuni vom utiliza în primul rând secţiunile Register, Code, şi Internal RAM, tastele funcţionale şi linia de comandă. Observaţi că în secţiunea Function key, este selectată F7 File IO. În secţiunea FILE situată în partea stângă există comenzile denumite fişier – Name File, citeşte fişier – Read file şi scrie fişier – Write file. Aceste comenzi pot fi introduse în linia de comandă. Sunt admise numai litere majuscule deci apăsaţi tasta CapsLock. Deci pentru a denumi un fişier apăsaţi N, pentru a citi un fişier apăsaţi R iar pentru a scrie un fişier tastaţi W.
În primul rând denumiţi fişierul ce trebuie încărcat în simulator. Tastaţi N şi introduceţi PROB01.HEX şi apoi enter. În linie ar trebui să apară PROB01.HEX. Apăsaţi enter pentru a accepta acest fişier, apoi R pentru a-l citi şi Y pentru a accepta PROB01.HEX. În acest moment PROB01.HEX este încărcat în simulator.
Privind secţiunea Code vedem sub Addr o coloană de numere formate din patru cifre. În prima linie vedem 0000 urmat de 7802, MOV R0,#02. Primul grup de numere 0000 precizează locaţia din memoria de programe (prima locaţie), grupul 7802 reprezintă codul obţinut din asamblarea instrucţiunii MOV R0,#02. 78 reprezintă codul instrucţiunii MOV imediat în registrul R0, iar 02 reprezintă valoarea ce este mutată în registrul R0. Observaţi că acestă linie este selectată. Aceasta este linia ce va fi executată în etapa imediat următoare. Observaţi de asemenea că valoarea din registrul R0 prezentată deasupra secţiunii Code este iniţial 00. Puteţi observa de asemenea că valoarea din acumulator ACC este de asemenea 00. Ultima observaţie se referă la numărătorul de programe PC care este urmat de 0000 – adică valoarea curentă din PC.
Următorul lucru ce trebuie făcut este lansarea execuţiei programului. Pentru aceasta apăsaţi tasta F5. Observaţi că în stânga s-au modificat cele două cutii în Breakpoint şi Misc. Acestea sunt comenzile ce pot fi introduse în linia de comandă la momentul actual. Observaţi meniul Single step. Deci pentru a executa pas cu pas programul tastaţi S o singură dată. Observaţi că în fereastra Code este selectată prima linie şi de asemenea observaţi că valoarea din R0 este 2. Tocmai am executat prima instrucţiune şi anume am pus valoarea 2 în registrul R0. Observaţi că valoarea din acumulator este neschimbată şi de asemenea PC are valoarea 0002. Vă reamintiţi faptul că numărătorul de programe întotdeauna punctează instrucţiunea ce va fi executată în pasul următor. Apăsaţi tasta S. Acum valoarea din acumulator este 2 la fel şi R0 iar PC este 0004. A fost executată a doua instrucţiune şi anume am încărcat valoarea 2 în acumulator. Putem în continuare să adunăm cele două valori. Apăsaţi tasta S. Acum în acumulator există 4 – rezultatul adunării valorilor conţinute în ACC şi R0. A fost executată astfel ultima instrucţiune din program.
Observaţi că în fereastra Code sub cele trei instrucţiuni care au format acest program celelalte linii conţin instrucţiunea NOP, iar codul acestei instrucţiuni este 00. Instrucţiunea NOP nu execută nimic iar Opcode are valoarea 00, acesta pentru că restul memoriei de program conţine numai 0 deoarece n-am încărcat nimic, dar sunt interpretate ca instrucţiuni NOP.
Deci Opcode este valoarea obţinută prin asamblarea unei instrucţiuni şi este valoarea pe care un microcontroler o poate înţelege şi o poate executa. Instrucţiunea este forma literară a valorii Opcode şi aceasta în beneficiul programării.
Pentru a ieşi din simulator apăsaţi tasta F1 şi apoi E(exit) şi Y(yes).
Am încheiat astfel prima lecţie de lucru cu simulatorul. Puteţi simula acest program încă o dată repetând paşii anteriori.
În continuare vom simula exemplul PROB04.ASM. Lansaţi simulatorul, tastaţi PROB04.HEX şi citiţi acest fişier. Pentru acest exemplu vom avea nevoie de listing PROB04.LST deci ar fi indicat să-l scoateţi la imprimantă pentru a vă fi mai uşor în continuare. Setaţi imprimanta pentru varianta Condensed deoarece liniile conţin mai mult de 80 de caractere.
În ceea ce priveşte fisierul PROB04.LST observaţi că acesta conţine fişierul PROB04.ASM având în plus încă trei coloane în partea stângă.
Ioana Enache

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile necesare sunt marcate *

  • Folosim datele dumneavoastră cu caracter personal NUMAI pentru a răspunde comentariilor/solicitărilor dumneavoastră.
  • Pentru a primi raspunsuri adecvate solicitărilor dumneavoastră, este posibil să transferăm adresa de email și numele dumneavoastră către autorul articolului.
  • Pentru mai multe informații privind politica noastră de confidențialitate și de prelucrare a datelor cu caracter personal, accesați link-ul Politica de prelucrare a datelor (GDPR) si Cookie-uri.
  • Dacă aveți întrebări sau nelămuriri cu privire la modul în care noi prelucrăm datele dumneavoastră cu caracter personal, puteți contacta responsabilul nostru cu protecția datelor la adresa de email: gdpr@esp2000.ro
  • Abonați-vă la newsletter-ul revistei noastre