Documente Academic
Documente Profesional
Documente Cultură
Simulator+Programator+Depanator:
Instrucțiunile trebuie să indice tipul operației, numărul de operanzi (1, 2 sau mai
mulți), valorile sau localizarea acestora (registre, memorie, porturi de I/E), precum și
locul unde se va memora rezultatul operației. De regulă, tipul operației este indicat
de numele instrucțiunii, cele mai multe instrucțiuni aritmetice au 2 operanzi
principali, iar unul dintre aceștia este amplasat implicit în registrul acumulator, care
memorează și rezultatul operației (dacă arhitectura este orientată pe acumulator).
De regulă, tipul operației este indicat de numele instrucțiunii, cele mai multe
instrucțiuni logice au 2 operanzi principali, iar unul dintre aceștia este amplasat
implicit în registrul acumulator, care memorează și rezultatul operației (dacă
arhitectura este orientată pe acumulator).
Ex: MOV @R0, A ; octetul din A este stocat în memoria internă de date, la adresa din
R0
MOVX A, @R1 ; transferă în A conţinutul locaţiei din RAM extern adresată cu R1
MOVX A, @DPTR ; transferă în A conţinutul locaţiei din RAM extern adresată cu
DPTR
In care drept registre index se utilizează DPTR sau PC. Acestea conţin adresa de
bază, iar deplasamentul locaţiei adresate se află implicit în acumulator, ceea ce
permite codificarea instrucţiunilor cu adresare indexată pe un singur octet. Acest
mod de adresare se foloseşte doar la adresarea operanzilor stocaţi în memoria
program, facilitând procedura de consultare a tabelelor organizate în această
memorie (“lookup tables”), precum şi la o instrucţiune de salt indirect.
JNZ rel ; salt relativ la adresa instrucţiunii curente, dacă valoarea din A e diferită de
0
Note extra:
Din punct de vedere logic, un program poate avea acces la mai multe tipuri de
segmente de memorie:
de cod (CODE);
de date externe (DATA);
de date externe (XDATA);
de date interne (IDATA);
de biţi în memoria RAM internă (BIT).
Se consideră că a apărut un front descrescător dacă un pin este găsit în “0” logic,
după ce în ciclul maşină anterior fusese găsit pe “1” logic.
Incrementarea se produce în starea S3P1 a ciclului maşină următor celui în care
a fost detectată tranziţia active
Depăşirea unui contor divizor prin 16, fapt ce asigură sincronizarea transferului
biţilor.
Timerul 1 este oprit. Canalul realizat cu TH0 poate lucra doar ca temporizator
(numărător de cicluri maşină) şi foloseşte semnalele TR1 şi TF1 de la Timerul 1. La
depăşire, ambele canale pot lansa cereri de întrerupere: TL0 prin TF0, iar TH0
controlează întreruperea Timerului 1.
În modul “captură” există două opţiuni care pot fi selectate prin bitul EXEN2 din
T2CON. Dacă EXEN2=0, atunci Timerul 2 lucrează ca un numărător/temporizator de
16 biţi obişnuit, care îşi setează fanionul TF2 la depăşire şi poate lansa o cerere de
întrerupere. Dacă EXEN2=1, Timerul 2 va avea o facilitate suplimentară: o tranziţie
1->0 pe intrarea T2EX determină “captarea” conţinutului registrelor TL2 şi TH2 în
registrele RCAP2L şi respectiv RCAP2H. Odată cu captarea informaţiei Timerului 2,
se setează şi fanionul EXF2 din T2CON şi se poate lansa o cerere de întrerupere
spre CPU.
Modul generator de semnal de tact pentru Portul serial este selectat prin
RCLK=1 şi/sau TCLK=1. Mai multe informaţii asupra acestui mod de funcţionare vor
fi prezentate în paragraful următor.
Conditii propriu-zise:
Cea de-a treia condiţie indică faptul că, dacă instrucţiunea curentă este RETI sau
accesează IE sau IP, se va mai executa încă cel puţin o instrucţiune până când se
va răspunde la o solicitare de întrerupere.
Se sterge automat
la revenirea dintr-o rutină de tratare, prin RETI, nu se acceptă nici o altă cerere
decât după execuţia următoarei instrucţiuni din program.
posedă registre distincte pentru date: SBUF–T, respectiv SBUF–R, dar care sunt
“văzute” de către utilizator ca un singur registru – SBUF (Serial BUFfer register).
permite o funcţionare de tip asincron (UART) cu un bit de START (“0” logic), 8 biţi
de date şi un bit de STOP (“1” logic). Viteza de comunicaţie este variabilă (110 Baud
÷ 62,5 KBaud) şi este controlată de Timerul 1 la 8051 sau de Timerul 2 (numai la
8052). De obicei, Timerul 1 se foloseşte în modul 2, cu auto-încărcare
Dacă valoarea acceptată la eşantionarea primului bit pe linia RxD nu este “0” (bitul
de START), logica de recepţie se resetează şi se aşteaptă o nouă tranziţie 10.
Procedura menţionată asigură rejecţia unor biţi de start falşi. Dacă bitul de start
este corect, acesta încărcarea registrului SBUF cu octetul recepţionat, setarea
fanionului RI şi încărcarea bitului de STOP în RB8. este transmis la intrarea
registrului de deplasare şi apoi sunt transmişi şi restul biţilor (data şi bitul de STOP).
La recepţie, cel de-al 9-lea bit de date este încărcat în bitul RB8 din SCON, iar bitul
de STOP este ignorat.
La transmisie, cel de-al 9-lea bit de date (TB8) poate fi forţat fie pe “0”, fie pe “1”. La
recepţie, cel de-al 9-lea bit de date ajunge în RB8 din SCON
Viteza de comunicaţie este variabilă (110 Baud ÷ 62,5 KBaud) şi este controlată
de Timerul 1-folosit ca divisor de frecventa-la 8051 sau de Timerul 2 (numai la
8052)
În acelaşi scop, pentru recepţie este prevăzut indicatorul RI (buffer de recepţie plin),
care este setat hardware de îndată ce un nou caracter a fost recepţionat şi este
disponibil în SBUF. Acest flag generează o întrerupere de recepţie, care poate fi
utilizată de unitatea centrală pentru a prelua din SBUF caracterul recepţionat.