Programarea aplicațiilor de timp real

Previzualizare laborator:

Extras din laborator:

Laborator 1

Facilitati C

Obiectiv: recapitulare elemente de C

Mod de lucru:

Programele vor fi realizate in C

1. Se citesc de la tastatura 10 valori intregi si memoreaza intr-un tablou unidimensional. Se

rearanjeaza octetii acestui tablou considerand o ordonare descrescatoare in raport cu bit D1.

de exemplu: ` 1011 1111

0111 1110

1111 1000

1100 1100

101 0101 etc

si apoi considerand o ordonare descrescatoare in raport cu ultimii doi biti (mai putin semnificativi)

Indicatie: puteti folosi deplasari pe biti, campuri de biti sau masti.

2. Se citesc din fisierul DAT.TXT, in ordine, maxim 400 de valori float (cuprinse intre -10 si

10). Acestea sunt reprezentate grafic si apoi sub forma de histograma (construita pentru intervale de

lungime unitate). Citirea datelor este realizata pana la perminarea fisierului sau pana la apasarea

unei taste.

3. Programul va fi rulat cu trei argumente in linia de comanda:

nume_prog par1 par2 par3

unde par1, par2 indica numele unor fisiere cu date de intrare, iar par3 numele unui fisier in care vor

fi inscrise rezultatele.

Fisierul par1 contine informatii despre dispozitivele electronice existente intr-un depozit (cod

dispozitiv, nume dispozitiv, numar exemplare existente pe stoc)

Fisierul par2 indica pentru o schema electronica ce trebuie realizata ce dispozitive sunt necesare si

in ce cantitate. Sunt specificate mai multe variante de abordare. Pentru fiecare varianta se indica pe

linii separate codul dispozitivului (sir de caractere sau cod numeric) si numarul de bucati necesare

(separate prin blanc). Separarea intre doua variante de lucru se face printr-o linie pe care scrie

“reteta” , urmat de blanc si apoi un cod al retetei.

Programul trebuie sa indice in fisierul par3, pentru fiecare reteta daca exista dispozitivele necesare

si daca nu ce mai trebuie cumparat. Afisare se va face in ordine descrescatoare a numarului de

bucati pentru fiecare reteta in parte.

Laborator 2

Facilitati C pentru lucrul in intreruperi

– biblioteca DOS.H

Obiectiv: elaborarea de programe C care genereaza intreruperi

Breviar teoretic- Vezi note de curs

C pune la dispozitie prin biblioteca DOS.H functii pentru:

- gestionarea vectorilor de intreruperi

- generarea intreruperilor

Date (necesare pentru accesarea registrilor microprocesorului):

union REGS {

struct WORDREGS x;

struct BYTEREGS h; };

struct WORDREGS {unsigned int ax,bx,cx,dx,si,di,cflag,flags;};

struct BYTEREGS {unsigned char al,ah,bl,bh,cl,ch,dl,dh;};

struct SREGS {

unsigned int es,cs,ss,ds;

};

struct REGPACK {

unsigned r_ax,r_bx,r_cx,r_dx;

unsigned r_bp,r_si,r_di,r_ds,r_es,r_flag;};

Aceste structuri/uniuni vor permite inscrierea registrilor microprocesorului prin apelul functiilor de

generare de intrerupere, respectiv citirea registrilor la iesirea din rutina de tratare a intreruperii

AX, BX, CX, DX – pentru registrele de lucru

SI, DI – pentru registrele de index (sursa si destinatie)

BP – pentru registru de baza (Base Pointer)

SP – pentru pointer de stiva (Stack Pointer)

CS, DS ,SS, ES – pentru registre de segment: cod, date, stiva,extrasegment.

Flag – pentru registrul de flaguri

Campurile din aceste structuri reprezinta variabile C, legatura cu registrii este realizata numai

prin apelul functiilor de generare intreruperi explicate mai jos

Functii pentru generare intreruperi INT21H (DOS)

Obs: valoarea inscrisa in AH inainte de generarea INT 21H indica numarul

functiei/serviciului DOS

int bdos(int dosfun,unsigned dosdx,unsigned dosal);

IN: dosfun, dosdx (DX), dosal (AL)

OUT: returneaza continut AX;

Efect: genereaza intreruperea DOS indicata de dosfun

int bdosptr(int dosfun,void *argument,unsigned dosal); Ex

IN: dosfun,

*argument: model “small”: DX; model “large” DS:DX),

dosal (AL)

OUT: returneaza

- succes: continut AX;

- esec: -1 (si seteaza _doserrno sau errno)

Efect: genereaza intreruperea DOS indicata de dosfun

int intdos(union REGS *inregs,union REGS *outregs); Ex

IN: union REGS * inregs: continut registri inainte de generare intrerupere

OUT: union REGS *outregs: continut registri la iesirea din rutina de tratare intrer.

returneaza: AX;

Efect: genereaza intrerupere 21H, functia inregs->h.ah

pozitioneaza dupa tratarea intreruperii: x.cflag si x.flags

pozitioneaza _doserrno (daca CF=1)

int intdosx(union REGS *inregs,union REGS *outregs, struct SREGS *segregs);

IN: union REGS * inregs: continut regsitri inainte de generare intrerupere

union SREGS *sregs

OUT: union REGS *outregs: continut registri la iesirea din rutina de tratare intrer.

union SREGS *sregs

Returneaza: AX

Efect: genereaza intrerupere 21H, functia inregs->h.ah, copiind:

sregs->ds in DS; sregs->es in ES;

pozitioneaza dupa tratarea intreruperii: x.cflag si x.flags

restaureaza dupa tratare intrerupere ES si DS

pozitioneaza _doserrno (daca CF=1)

Functii pentru generarea oricaror intreruperi – echivalent INT XX

int int86(int intno,union REGS *inregs,union REGS *outregs); Ex

IN: intno,

union REGS * inregs: continut registri inainte de generare intrerupere

OUT: union REGS *outregs: continut registri la iesirea din rutina de tratare intrer.

returneaza: AX;

Efect: genereaza intrerupere software intno

pozitioneaza dupa tratarea intreruperii: x.cflag si x.flags

pozitioneaza _doserrno (daca CF=1)

int int86x(int intno,union REGS *inregs,union REGS *outregs, struct SREGS *segregs);

IN: intno

union REGS * inregs: continut registri inainte de generare intrerupere

union SREGS *sregs

OUT: union REGS *outregs: continut registri la iesirea din rutina de tratare intrer.

union SREGS *sregs

returneaza: AX

Efect: genereaza software intno, copiind sregs->ds in DS; sregs->es in ES;

pozitioneaza dupa tratarea intreruperii: x.cflag si x.flags

pozitioneaza _doserrno (daca CF=1

Download gratuit

Documentul este oferit gratuit,
trebuie doar să te autentifici in contul tău.

Structură de fișiere:
  • Programarea Aplicatiilor de Timp Real
    • LUCRAREA_1.pdf
    • LUCRAREA_10.pdf
    • LUCRAREA_11.pdf
    • LUCRAREA_12.pdf
    • LUCRAREA_13.pdf
    • LUCRAREA_2.pdf
    • LUCRAREA_3.pdf
    • LUCRAREA_4.pdf
    • LUCRAREA_5.pdf
    • LUCRAREA_6.pdf
    • LUCRAREA_8.pdf
    • LUCRAREA_9.pdf
Alte informații:
Tipuri fișiere:
pdf
Nota:
7/10 (1 voturi)
Nr fișiere:
12 fisiere
Pagini (total):
50 pagini
Imagini extrase:
52 imagini
Nr cuvinte:
14 484 cuvinte
Nr caractere:
84 275 caractere
Marime:
674.79KB (arhivat)
Publicat de:
NNT 1 P.
Nivel studiu:
Facultate
Tip document:
Laborator
Domeniu:
Automatică
Predat:
la facultate
Materie:
Automatică
Sus!