Creeaza.com - informatii profesionale despre


Simplitatea lucrurilor complicate - Referate profesionale unice
Acasa » tehnologie » electronica electricitate
Set de Instructiuni in Familia Microcontrolerului PIC16Cxx

Set de Instructiuni in Familia Microcontrolerului PIC16Cxx




Set Instructiuni

Introducere

Set de Instructiuni in Familia Microcontrolerului PIC16Cxx Transfer Date Aritmetica si logica Operatii cu biti Directionarea debitului de program Perioada de Executie a Instructiunilor Lista de cuvinte

Introducere

Am mentionat deja ca microcontrolerul nu este ca orice alt circuit integrat. Cand ies din productie cele mai multe circuite integrate sunt gata de a fi introduse in aparate ceea ce nu este cazul cu microcontrolerele. Pentru a 'face' microcontrolerul sa indeplineasca o sarcina, trebuie sa-i spunem exact ce sa faca, sau cu alte cuvinte trebuie sa scriem programul pe care microcontrolerul sa-l execute. Vom descrie in acest capitol instructiunile care alcatuiesc assembler-ul, sau limbajul de programare cu nivel scazut pentru microcontrolerele PIC.



Set de Instructiuni in Familia Microcontrolerului PIC16Cxx

Setul complet care cuprinde 35 de instructiuni este dat in tabela urmatoare. Un motiv pentru un numar asa de mic de instructiuni sta in primul rand in faptul ca discutam despre un microcontroler RISC ale carui instructiuni  sunt bine optimizate avand in vedere viteza de lucru, simplitatea arhitecturala si compactitatea codului. Singurul neajuns este ca programatorul trebuie sa controleze o tehnica 'neconfortabila' in a utiliza un set modest de 35 de instructiuni.

Transfer de Date

Transferul de date intr-un microcontroler este facut intre registrul de lucru (W) si un registru 'f' ce reprezinta orice locatie in RAM-ul intern (indiferent daca acestia sunt registri speciali sau de scop general).

Primele trei instructiuni (a se vedea urmatorul tabel) fac ca o constanta sa fie inscrisa in registrul W (MOVLW este prescurtarea pentru MOVe Literal to W), si ca datele sa fie copiate din registrul W in RAM si datele din RAM sa fie copiate in registrul W (sau in aceeasi locatie RAM, la care punct numai starea steguletului Z se schimba). Instructiunea CLRF scrie constanta 0 in registrul 'f ', iar CLRW scrie constanta 0 in registrul W. Instructiunea SWAPF schimba locurile campului de nibbles- bucati de 4 biti in interiorul unui registru.

Aritmetica si logica

Din toate operatiile aritmetice, PIC ca majoritatea microcontrolerelor, accepta doar scaderea si adunarea. Steguletele C, DC si Z sunt setate functie de rezultatul adunarii sau scaderii, dar cu o exceptie: pentru ca scaderea se face ca o adunare a unei  valori negative, eticheta C este inversa urmand scaderii. Cu alte cuvinte, este setata daca operatia este posibila, si este resetata daca un numar mai mare a fost scazut din unul mai mic.



Unitatea logica a PIC-ului are capabilitatea de a face operatiile AND (SI), OR (SAU), EX-OR (SAU-EXCLUSIV), complementare (COMF) si rotatie (RLF si RRF).
Instructiunile ce rotesc continutul registrului muta bitii in interiorul registrului prin eticheta C cu un spatiu la stanga (catre bitul 7), sau la dreapta (catre bitul 0). Bitul ce 'iese' din registru este scris in steguletul C, si valoarea steguletului C este scrisa intr-un bit al 'partii opuse' a registrului.

Operatii cu biti

Instructiunile BCF si BSF fac setarea sau stergerea unui singur bit oriunde in memorie. Chiar daca pare o simpla operatie, este executata in asa fel ca CPU citeste mai intai intregul byte, schimba un bit in el si apoi scrie intregul byte in acelasi loc.

Directionarea debitului unui program

Instructiunile GOTO, CALL si RETURN sunt executate in acelasi fel ca si in celelalte microcontrolere, numai stiva este independenta de RAM-ul intern si limitata la opt nivele.
Instructiunea 'RETLW k' este identica cu instructiunea RETURN, cu exceptia ca inainte de a se intoarce dintr-un subprogram, constanta definita operandul de instructiuni este scrisa in registrul W. Aceasta instructiune ne permite sa proiectam usor tabelele (listele) Look-up. Cel mai mult le folosim la determinarea pozitiei datelor in tabelul nostru adaugand-o la adresa la care incep tabelele, si apoi citim datele din acea locatie (care este uzual gasita in memoria program).



Tabelul poate fi format ca un subprogram ce consta dintr-o serie de instructiuni 'RETLW k', unde constantele 'k' sunt membri ai tabelului.

Scriem pozitia unui membru al tabelului nostru in registrul W, si folosind instructiunea CALL apelam un subprogram care creaza tabelul. Prima linie de subprogram ADDWF PCL, f adauga pozitia unui membru al registrului W la adresa de start a tabelului nostru, gasita in registrul PCL, si astfel obtinem adresa datelor reale in memoria program. Cand ne intoarcem dintr-un subprogram vom avea in registrul W continutul unui membru al tabelului adresat. In exemplul anterior, constanta 'k2' va fi in registrul W urmand unei intoarceri dintr-un subprogram.

RETFIE (RETurn From Interrupt - Interrupt Enable) este o intoarcere dintr-o rutina de intrerupere si difera de o RETURN numai in aceea ca seteaza automat bitul GIE (Global Interrupt Enable). La o intrerupere, acest bit este automat sters. Cand incepe intreruperea, numai valoarea contorului de program este pusa in varful stivei. Nu este prevazuta memorarea automata a valorilor si starii registrului.

Jump-urile (salturile) conditionale sunt sintetizate in doua instructiuni: BTFSC si BTFSS. Functie de starea bitului in registrul 'f' ce este testat, instructiunile sar sau nu peste instructiunea de program urmatoare.

Perioada de Executie a Instructiunii

Toate instructiunile sunt executate intr-un ciclu cu exceptia instructiunilor ramura conditionale daca conditia a fost adevarata, sau daca continutul contorului de program a fost schimbat de o anumita instructiune. In acest caz, executia cere doua cicluri de instructiuni, iar al doilea ciclu este executat ca NOP (No Operation-Fara operatii). Patru clock-uri oscilator fac un ciclu instructiune. Daca folosim un oscilator cu frecventa de 4 MHz, timpul normal pentru executia instructiunii este 1 µs, si in caz de branching-ramificare conditionala, perioada de executie este 2 µs.



Lista de cuvinte

f   orice locatie de memorie intr-un microcontroler
W registru de lucru
b  pozitie bit in registru 'f'
d  bit destinatie
label grup de opt caractere ce marcheaza inceputul unei parti de program
TOS  varful stivei
[]  optiune
<>   pozitie bit in  registru

*1 Daca portul I/O este operand sursa, este citita starea pinilor microcontrolerului
*2 Daca aceasta instructiune este executata in registrul TMRO si daca d=1, prescaler-ul asignat acelui timer va fi automat sters
*3 Daca PC s-a mo





Politica de confidentialitate







.com Copyright © 2022 - Toate drepturile rezervate.
Toate documentele au caracter informativ cu scop educational.


Proiecte

vezi toate proiectele
 Proiect didactic Clasa: a-IX-a, Luarea deciziilor
 PROIECT DIDACTIC 3-5 ani dezvoltarea limbajului si a comunicarii orale - „Cine face, ce face”
 PROIECT MOTOR ASINCRON - Determinarea parametrilor schemei echivalente si a caracteristicilor de functionare in regim stabilizat de la gol la sarcina
 TEMA DE PROIECTARE - arbore de masina rotativa

Lucrari de diploma

vezi toate lucrarile de diploma
 PROIECT DE DIPLOMA CHIRURGIE ORO-MAXILO-FACIALA - SUPURATIILE LOJELOR PROFUNDE DE ETIOLOGIE ODONTOGENA
 Relatiile diplomatice dintre Romania si Austro- Ungaria din a doua jumatate a secolului al XIX-lea
 LUCRARE DE DIPLOMA MANAGEMENT - MANAGEMENTUL CALITATII APLICAT IN DOMENIUL FABRICARII BERII. STUDIU DE CAZ - FABRICA DE BERE SEBES
 Lucrare de diploma tehnologia confectiilor din piele si inlocuitor - proiectarea constructiv tehnologica a unui produs de incaltaminte tip cizma scurt

Lucrari licenta

vezi toate lucrarile de licenta
 Lucrare de licenta contabilitate si informatica de gestiune - politici si tratamente contabile privind leasingul (ias 17). prevalenta economicului asupra juridicului
 LUCRARE DE LICENTA - FACULTATEA DE EDUCATIE FIZICA SI SPORT
 Lucrare de licenta - cercetare si analiza financiara asupra deseurilor de ambalaje la sc.ambalaje sa
 LUCRARE DE LICENTA - Gestiunea stocurilor de materii prime si materiale

Lucrari doctorat

vezi toate lucrarile de doctorat
 Diagnosticul ecografic in unele afectiuni gastroduodenale si hepatobiliare la animalele de companie - TEZA DE DOCTORAT
 Doctorat - Modele dinamice de simulare ale accidentelor rutiere produse intre autovehicul si pieton
 LUCRARE DE DOCTORAT ZOOTEHNIE - AMELIORARE - Estimarea valorii economice a caracterelor din obiectivul ameliorarii intr-o linie materna de porcine

Proiecte de atestat

vezi toate proiectele de atestat
 Atestat la informatica cu tema “gestionarea unui magazin de confectii”
 Proiect atestat electrician constructor - tehnologia montarii instalatiilor electrice interioare
 ATESTAT PROFESIONAL LA INFORMATICA - programare FoxPro for Windows
 ATESTAT PROFESIONAL TURISM SI ALIMENTATIE PUBLICA, TEHNICIAN IN TURISM

AUTOMAT PROGRAMABIL COMPACT CU AFISAJ LCD CBM 550
Cmos
Arhitectura sistemelor electroenergetice
Ce este un circuit serie-paralel
Circuit cu rezistor, inductanta si condensator legate in serie
Comparatii intre familiile logice integrate
Caiete de sarcini pentru cabluri de 20kv
Intreruptoare automate de joasa tensiune



Termeni si conditii
Contact
Creeaza si tu