Este dat sistemul de expresii:
daca A+B < A-7
C = A-B+13D = A|B >>2
daca A+B > A-7
C = (A-B)>>1
D = (A-B)<<1
daca A+B = A-7
C = B-A
D = A
Se recomanda informarea despre realizările construcţiilor algoritmice de bază: condiţii, selecţie, cicluri.
Majoritatea problemelor necesare de a fi soluționate cu ajutorul unor circuite electronice presupun careva condiții și ramificări. În caz că acestea nu necesită ramificări, ele pot fi soluționate cu ajutorul electronicii analogice sau a circuitelor digitale combinaționale care vor soluționa problema mult mai rapid. De aceea trebuie să folosim corect posibilitățile microcontrollerului de a executa diferite secvențe de program in dependență de condiții.
Microcontrollerele AVR au 2 tipuri de instrucțiuni de ramificare conditionata:
SBxx - ignoră urmatoarea instrucțiune în caz dacă condiția este satisfăcută.
BRxx - sare la o oarecare etichetă în caz dacă condiția este satisfăcută.
Echivalentul acestor instrucțiuni în limbajele de nivel înalt este:
if (condiția){
...
}else{
...
}
Evaluarea expresiei se va evalua într-o subrutină reintrantă. Subrutina reintrantă este o subrutină care nu depinde de variabile globale și în orice moment de timp la apelul cu același parametru vom avea același rezultat.
Schena bloc a programului:
Portul A şi B se vor pune pe intrare şi conectate la rezistenţa de Pull Up pentru colectarea rezultatelor iar C şi D pe ieşire pentru afişarea rezultatelor.
Schema bloc a subrutinei de prelucrare
Unde parametrii de intrare sunt registrii de uz general R16 si R17, în R16 sau pastrat datele de pe portul A iar în R17 de pe portul B. Parametrii de iesire la fel vor fi registrii R16 si R17, in R16 se vor salva rezutlatele care se vor afisa la portul C iar in R17 rezultatele care se vor afisa la portul D.
Rezolvarea unor probleme particulare:
neg B; B+17.
2) Schimbarea valorilor a 2 registrii fără al treilea suplimentar:
push Rx
push Ry
pop Rx
pop Ry
Astfel mai întîi se va face complementul cu 1 si apoi se aduna cu 17, ceea ce este echivalent cu 17-(-B).
3) Lucrul cu numere negative. Posibil vom avea nevoie de a introduce numere negative. Astfel înainte de a înscrie într-un registru registru de uz general datele de pe PINx se va seta flagul N din SREG prin comanda sen.
Reprezentarea numerelor negative:
Daca bitul N=0 => 0 ... 255
N=1 => -128 ... +127
Niciun comentariu:
Trimiteți un comentariu