Creeaza.com - informatii profesionale despre


Evidentiem nevoile sociale din educatie - Referate profesionale unice
Acasa » referate » informatica » catia
Utilizarea mai multor biti in cadrul unor aplicatii mai complexe

Utilizarea mai multor biti in cadrul unor aplicatii mai complexe




Utilizarea mai multor biti in cadrul unor aplicatii mai complexe

In cazul exemplelor din cele 2 paragrafe anterioare s-a utilizat cate o singura intrare sau iesire a µC utilizat. exista o mare varietate de aplicatii care presupun utilizarea mai multor intrari/iesiri, situatii care se vor trata in continuare.

1. Resurse soft pentru transmiterea datelor. Utilizarea mastilormastilor.

a) GeneralitatiGeneralitati.

Independent de tipul circuitului de interfata interfata utilizat (8212 in cazul aplicatiilor mai simple, sau 8255 in cazul celor mai complexe) transmiterea informatiei se face pe magistrala de date prin intermediul unui octet sau unui cuvant cuvant transmis sau citit de la adresa corespunzatoare portului utilizat.



Sunt utilizabile mai multe metode de transmitere a datelor, uzual fiind folosit transferul datelor prin program cu apelul instructiunilor specializate in acest sens:

-IN si OUT in cazul limbajelor de asamblare;

-int inport(int adresa_port) si void outport(int adresa_port, int valoare) in cazul limbajului C;

Deoarece, dupa cum s-a precizat, datele se transmit sub forma de octeti sau cuvinte, pentru utilizare individuala numai a anumitor biti se folosesc mastile. pentru aceasta se folosesc instructiunile (operatorii) la nivel de bit. in limbaje de asamblare acestia sunt foarte cunoscuti, in schimb in limbajele de nivel inalt aceste facilitati au aparut ulterior. In continuare se prezinta exemple de utilizare a mastilor in limbajul 'C'. in tabelul 3.2 sunt ilustrate efectele principalilor operatori la nivel de bit:

Tabelul 3.2. Efectul operatorilor booleeni

x

y

x&y

si

x|y

sau

x^y

sau exclusiv

~x

negare

b) Mascari.

Operatia de mascare (retinerea bitilor care intereseaza si anularea celorlalti) este o operatie tipica a operatorilor prezentati:

1. utilizarea functiei SI..

de exemplu: 

pentru operatia: a = a&0x5f, masca este: 0x5f = 0101 1111, conducand la punerea pe 0 a bitilor 5 si 7 dintr-un octet. Astfel, daca:

a = 0x62 = 0110 0010

rezultatul operatiei si logic pe bit este:

a & 0x5f = 0100 0010

bitii 5 si 7 fiind puti pe 0, iar ceilalti ramanand neschimbati.

2. utilizarea functiei SAU EXCLuSIV. cuvantul masca va avea bitii de valoarea 0 pentru bitii care nu necesita modificare si valoarea 1 pentru bitii care necesita complementare. exemplu:

a = 0x25 = 25H = 0010 0101

masca:  m = 0xfa = FAH = 1111 1010

-------- ----- ------ ------

a^m = 1101 1111

3. utilizarea functiei SAU. cuvantul masca va avea bitii egali cu 1 in pozitiile care se doresc setate pe 1 si bitii egali cu 0 pentru pozitiile a caror valoare se doresc a ramane nemodificate . De exemplu:

daca masca este m = 81H = 1000 0001, bitii 0 si 7 rezultati vor avea valoarea 1, restul ramanand neschimbati.

c) ComplementariComplementari

Cu ajutorul operatorului ~ (negare) se pot obtine valorile in complement fata fata de 1 si si 2 a unor numere binare (algoritmi prezentati in § ). de exemplu daca j este un numar numar binar i=~j+1 va fi complementul fata de 2 al acestuia.

d) Deplasari cu un numar de pozitii

Se pot utiliza operatorii:

val<<nr.pozitii,

val>>nr.pozitii,

avand ca efect deplasarea la stanga si respectiv la dreapta cu numarul de pozitii a valorii din stanga operatorului. de exemplu, pentru :



a=2310 = 17h = 0x17 = 0001 0111

operatia v<<2 va avea ca efect:

v= 0101 1100 =0x5C =92

se observa deplasarea codului binar cu 2 pozitii spre stanga, cei doi biti mai semnificativi fiind eliminati, dar in schimb se insereaza in dreapta 2 biti de 0. in cazul numerelor fara semn aceasta deplasare echivaleaza cu o inmultire cu 2 la puterea numerelor de pozitii. in cazul de fata: 92 = 23*22.

in mod similar se interpreteaza deplasarea la dreapta cu precautii mai mari la interpretarea bitului de semn.

2 Interfatarea unui sesizor optic pentru digitizarea curbelor 2D

Prin digitizare se intelege determinarea perechilor de coordonate (x,y) ale unor puncte apartinand unei curbe (in acest caz curba plana 2D). numarul de puncte luate in considerare este un parametru la latitudinea utilizatorului.

Din punct de vedere constructiv se utilizeaza 2 axe comandabile, eventual cu MPP (vezi § ), dupa legile impuse de µP si acestea in concordanta cu semnalele percepute de sesizorul optic (fig.3.23). acesta furnizeaza la iesire semnalul SETSŘ (compatibil TTL) avand valoarea 0 in momentul sesizarii unei zone intunecate a desenului si valoarea logica 1 atunci cand este in dreptul hartiei albe fara desen.


fig.3.23. Schema de principiu al unui digitizor.

Conectarea sesizorului optic la interfata programabila 8255 se face prin intermediul unui circuit basculant bistabil RS realizat din 2 porti, cu rolul de a elimina zgomotele care apar in semnalul SETSŘ datorita vibratiilor caruciorului. se reaminteste logica unui CBB-RS (bistabil asincron sau latch) care functioneaza dupa urmatorul tabel de adevar:

Domeniul curbelor digitizate este determinat de cei 8 biti pentru fiecare dintre cele 2 axe, biti furnizati de porturile PA si PB ale lui 8255. In fapt, numarul de 8 biti determina finetea digitizarii, domeniul de lucru fiind determinat de modul concret de realizare a deplasarilor:

- corespondenta rotatiei unghiulare a motorului

pentru 1 bit;

- eventuale raporturi de reducere pe axe;

- raportul de transformare a miscarii de rotatie motor in miscare de translatie a saniei.

Cursele maxime Xmax si Ymax vor corespunde valorii octetilor: FFh.

Digitizarea se realizeaza prin deplasarea cu pas constant a caruciorului pe axa X si determinarea ordonatei Y a curbei desenate pentru fiecare pozitie a caruciorului. Determinarea valorii ordonatei se face printr-un algoritm convergent de injumatatire desfasurat pe parcursul a cel mult 8 pasi, delimitandu-se din ce in ce mai strans zona pe axa Y unde se gaseste ordonata corespunzatoare a curbei:

-in primul pas al delimitarii pe Y se considera cursa jumatate din cea maxima: y=ymax/2. variabila de sens este s=1, pentru ca in cadrul acestui pas y a crescut; primul bit b0 (MSB) este 0, fiindca y>ynec, conform fig. (y necunoscut al curbei de digitizat);

-din analiza logica a valorii lui s si a inegalitatii anterioare in cel de-al doilea pas se comanda noua valoare curenta a lui y: y= ymax/2 - ymax/4; sensul variatiei lui y fiind scazator, s= -1; conform figurii, y>ynec (inca),

deci b1 va fi de asemenea 0;

-in pasul al treilea, noul y curent pentru comparatie va fi:

y=ymax/2-ymax/4-ymax/8; sensul variatiei este scazator, deci s= -1; conform figurii, y<ynec , deci rezulta b2=1;


fig. 3.24. Explicativa la algoritmul de digitizare.

-procesul continua similar pentru determinarea celor 8 biti in 8 pasi;

La nivel de pseudocod, programul de comanda este urmatorul:

1. programarea lui 8255, cu PA, PB, PCl ca porturi de iesire si PCh ca semiport de intrare;

2. pozitionarea initiala in x=y=00h a sesizorului;

3. anulare bistabil;

4. X=X+pas;

5. determinarea lui Y conform algoritmului de injumatatire;

6. memorare pereche de coordonate

7. salt la punctul 4, daca Xk < Xmax;

3 Cuplarea unor LED-uri si si comutatoare.

Este una dintre cele mai simple aplicatii posibile. se utilizeaza interfata paralela programabila 8255, la portul A fiind conectate 8 comutatoare fiecare avand posibilitatea de a furniza independent nivelele logice 1 sau 0 (fig.3.25). la portul C s-au conectat cele 8 led-uri, care vor fi aprinse sau stinse dupa cum bitii corespunzatori PC sunt 0 sau 1. Ne propunem ca aprinderea unui led sa reflecte starea apasata a butonului omolog. programul care realizeaza soft aceasta aplicatie este urmatorul:

programarea corespunzatoare a lui 8255. Cuvantul de comanda este:

43h = 0100 0011;

citirea portului B intr-de un registru al µP;

transmiterea continutului aceluias registru la portul C pentru comanda corespunzatoare a led-urilor;

subrutina de intarziere sau apelarea periodica a ceasului de timp real pentru realizarea unei temporizari pana la noua inspectare a starii contactelor;

salt la punctul 2.


fig. 3.25. Cuplarea unor LED-uri si comutatoare la interfata paralela 8255







Politica de confidentialitate







creeaza logo.com Copyright © 2024 - Toate drepturile rezervate.
Toate documentele au caracter informativ cu scop educational.