+ All Categories
Home > Documents > Microprocesoare,capitol 2

Microprocesoare,capitol 2

Date post: 14-Oct-2015
Category:
Upload: petrovai-alexandru
View: 43 times
Download: 5 times
Share this document with a friend
Description:
Microprocesoare,curs nr 2

of 22

Transcript
  • 5/24/2018 Microprocesoare,capitol 2

    1/22

    SETUL DE INSTRUCIUNI

    24

    2. SETUL DE INSTRUCIUNI

    Cuprins

    Introducere

    Obiective

    2.1 FORMATUL INSTRUCIUNILOR

    2.1.1 Instruciuni pe octet

    2.1.2 Instruciuni pe bit

    2.1.3 Instruciuni cu constante

    2.1.4 Instruciuni de control

    2.2 CLASIFICAREA INSTRUCIUNILOR N FUNCIE DE

    OPERAIILE REALIZATE

    2.2.1 Instruciuni matematice pe octet

    2.2.2 Instruciuni logice pe octet

    2.2.3 Instruciuni matematice i logice cu constante

    2.2.4 Instruciuni logice pe bit

    2.2.5 Instruciuni de comparaie pe bit

    2.2.6 Instruciuni de comparaie pe octet

    2.2.7 Instruciuni de mutare

    2.2.8 Instruciuni de control

    2.2.9 Alte instruciuni

    Concluzii

    ntrebri de autoevaluareTermeni eseniali

  • 5/24/2018 Microprocesoare,capitol 2

    2/22

    SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455

    25

    Introducere

    Un program const dintr-o serie de instruciuni scrise ntr-o anumit

    ordine n vederea realizrii unor sarcini. Instruciunile disponibile pentru

    acest lucru sunt n strns legturcu arhitectura microcontrolerului, iar

    un dezvoltator de microsisteme ncorporate trebuie s fie foarte bine

    familiarizat att cu arhitectura software ct i cu cea hardware, mai alesdacva scrie programele sale n limbaj de asamblare.

    Acest capitol cuprinde prezentarea instruciunilor disponible pentru

    microcontrolerul PIC18F4455, precum i modul n care acestea sunt

    reprezentate n memoria program.

    Obiective

    Dupparcurgerea acestui capitol cursantul va trebui:

    - s cunoasc instruciunile disponibile pentru microcontrolerulPIC18F4455;

    - s cunoasc modul n care sunt codificate instruciunile n

    memoria program;

    - scunoascrolul pe care l au parametrii instruciunilor;

    - s utilizeze n mod adecvat instruciunile pentru implementarea

    operaiilor necesare diferitelor programe.

    2.1 FORMATUL INSTRUCIUNILOR

    Scrierea unui program se poate asemna, ntr-o oarecare msur, cu ridicarea unei

    case. Avnd la dispoziie o serie de materiale de costrucii, constructorul le asambleaz pe

    acestea ntr-o anumit ordine pentru a obine produsul finit. Etapele necesare construciei:

    sparea fundaiei, zidirea, tencuirea etc. pot fi asociate instruciunilor implementate de UCP,

    iar materialele i echipamentele de construcii necesare: crmizi, mortar, ciment etc.

    reprezintdatele cu care lucreazinstruciunile.

    n conformitate cu arhitectura de tip RISC pe care este bazat, microcontrolerul

    PIC18F4455 implementez un set redus de instruciuni standard, format din 75 de

    instruciuni, care este completat cu 8 instruciuni opionale care formeazsetul extins.[15]

    Din setul standard de instruciuni, majoritatea (71) au lungimea de un cuvnt (16 bii),

    dar exist i 4 instruciuni avnd lungimea de dou cuvinte (32 bii). Pentru reprezentarea

    acestor instruciuni n memoria program sunt necesari 16, respectiv 32 de bii, adic 2,

    respectiv 4 locaii de memorie consecutive. Instruciunile lungi au fost introduse pentru a

  • 5/24/2018 Microprocesoare,capitol 2

    3/22

    SETUL DE INSTRUCIUNI

    26

    putea stoca toat informaia necesar execuiei operaiilor pe care le implementeaz (ex.

    instruciunea MOVFF utilizeaz ca operanzi dou adrese absolute din memorie reprezentate

    fiecare pe cte 12 bii).

    n esen majoritatea instruciunilor utilizeaz date stocate n memorie. n aceste

    condiii, o instruciune trebuie saibposibilitatea de a informa UCP despre tipul operaieipe care o implementeaz, respectiv despre locul unde se gsesc datele cu care aceast

    instruciune opereaz. Astfel, o instruciune va codifica binar urmtoarele informaii:

    - codul operaiei

    - unul sau mai muli operanzi (adres, constant, bit de destinaie, bit de acces)

    Existi cteva excepii de la aceastregulcum ar fi, de exemplu, instruciunea NOP

    (No OPeration), care consumtimpul procesorului fra realiza nso operaie.

    Pentru acest microcontroler au fost definite mai multe formate de instruciuni.Lungimea cmpului corespunztor codului operaiei variaz n funcie de tipul instruciunii,

    permind astfel o utilizare mai eficienta lungimii instruciunii.

    Setul de instruciuni al microcontrolerului PIC18F4455 poate fi mprit n patru

    categorii de baz:

    - Instruciuni pe octet

    - Instruciuni pe bit

    - Instruciuni cu constante (literali)

    - Instruciuni de control

    2.1.1 Instruciuni pe octet

    Majoritatea instruciunilor orientate pe octet au trei operanzi:

    1. Registrul (specificat prin operandul f)

    2. Destinaia rezultatului (specificatprin operandul d)

    3. Zona de memorie accesat(specificatprin operandul a)

    n instruciunile pe octet, operandul fspecificregistrul care urmeaza fi folosit de

    instruciune. Registrul fpoate fi specificat fie prin numele su simbolic (dac are) fie prin

    adresa sa de 8 bii.

    Operandul d, denumit i bit de destinaie al rezultatului, specific locul n care va fi

    plasat rezultatul operaiei realizate de instruciune. Dacd=0 (d=W)rezultatul operaiei va

    fi plasat n registrul de lucru WREG. Dac d=1 (d=F) rezultatul operaiei va nlocuiconinutul registrului fspecificat n instruciune.

  • 5/24/2018 Microprocesoare,capitol 2

    4/22

    SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455

    27

    Operandul a, denumit i bit de acces, specificmodul de acces la registrul f. Dac

    a=0 (a=ACCESS)atunci registrul fse gsete n Access Bank. Daca=1 (a=BANKED)

    atunci registrul f se gsete n Bank-uri, iar pentru a-l accesa se utilizeaz registrul BSR.

    Asupra modului de acces se va reveni n capitolul 3.

    n Fig. 2.1 se prezintformatul instruciunilor pe octet. Acest format reprezintmoduln care acest tip de instruciuni sunt codificate binar n memoria program a

    microcontrolerului. Se poate observa c pentru codul instruciunii sunt alocai 6 bii (biii

    ), pentru adresa registrului fsunt alocai 8 bii (biii ), rmnnd 2 bii necesari

    pentru operanzii d(bitul 9), respectiv a(bitul 8).

    15 10 9 8 7 0

    Cod operaie d a f(adresa registrului)Fig. 2.1.Formatul general al instruciunilor orientate pe octet

    n program, aceste instruciuni vor fi scrise sub forma prezentatn Tabelul 2.1. Tot n

    acest tabel se pune n eviden i cazul unor instruciuni care opereaz cu octei, dar care

    utilizeazdoar douargumente

    Tabel 2.1. Formatul general al instruciunilor orientate pe octet

    Format instruciuni orientate pe octet Exemplu de utilizarecod_operaie f,d,acod_operaie f,a

    f=adresa pe 8 bii a registruluid=0 (d=W)destinaia rezultatului este registrul de lucru WREGd=1 (d=F)destinaia rezultatului este registrul fa=0 (a=ACCESS)registrul fse gsete n Access Banka=1 (a=BANKED)registrul fse gsete n Bank-uri

    Excepie: MOVFF fs,fdfs=adresa pe 12 bii a registrului surs

    fd=adresa pe 12 bii a registrului destinaie

    ADDWF REG1, W, BANKEDCLRF 0x01, ACCESS

    MOVFF REG_s, REG_d

    Excepie de la modul de reprezentare din Fig. 2.1 face instruciunea de mutare a unui

    octet de la o adressursla o adresdestinaie (MOVFF). Aceastinstruciune face parte din

    categoria instruciunilor lungi i necesit32 de bii pentru reprezentare. Formatul general al

    acestei instruciuni se prezintn Fig. 2.2.

    15 12 11 0

    Cod operaie fs(adresa registrului surs)

    15 12 11 01 1 1 1 fd(adresa registrului destinaie)

    Fig. 2.2.Formatul general al instruciunilor de mutare octet MOVFF

  • 5/24/2018 Microprocesoare,capitol 2

    5/22

    SETUL DE INSTRUCIUNI

    28

    n cazul instruciunii MOVFF, prezentatmai sus, cmpurile alocate adreselor sursi

    destinaie au dimensiunea de 12 bii. Astfel, aceastinstruciune permite utilizarea adreselor

    absoulute n realizarea operaiei de mutare a unui octet ntre cele dou locaii de memorie.

    Pentru codul operaiei sunt rezervai 4 bii (biii din cuvntul superior), iar cei 4 bii

    rmai neutilizai sunt ntotdeauna 1 (biii din cuvntul inferior).

    2.1.2 Instruciuni pe bit

    Toate instruciunile orientate pe bit au trei operanzi:

    1. Registrul (specificat prin operandul f)

    2. Bitul din registru (specificat prin operandulb)

    3. Zona de memorie accesat(specificatprin operandul a)

    n aceste instruciuni, operandul b, format din trei bii, are rolul de a specifica poziia

    bitului n cadrul registrului fcare este afectat de operaia realizatde instruciune. Operandul

    fconine adresa de opt bii a registrului din memorie implicat n instruciune, iar operandul a,

    zona de memorie n care se gsete registrul accesat.

    n Fig 2.3 se prezint modul de reprezentare al instruciunilor pe bit n memoria

    program, iar n Tabelul 2.2 se prezintformatul general al acestor instruciuni i un exemplu

    de utilizare.

    15 12 11 9 8 7 0

    Cod operaie b (poziie bit) a f(adresa registrului)Fig. 2.3.Formatul general al instruciunilor orientate pe bit

    Tabel 2.2.Formatul general al instruciunilor orientate pe bit

    Format instruciuni orientate pe bit Exemplu de utilizarecod_operaie f,b,a

    f=adresa pe 8 bii a registruluib=poziia bitului (0:7) n cadrul registrului fa=0 (a=ACCESS)registrul fse gsete n Access Banka=1 (a=BANKED)registrul fse gsete n Bank-uri

    BSF REG, 4, ACCESS

    2.1.3 Instruciuni cu constante (literali)

    Instruciunile cu constante utilizeazun singur operand k. Acesta are rezervai cei opt

    bii inferiori ai instruciunii i reprezintvaloarea unei constante, denumiti literal. Modul

    de reprezentare al acestor instruciuni n memoria program se prezintn Fig. 2.4.

  • 5/24/2018 Microprocesoare,capitol 2

    6/22

    SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455

    29

    15 8 7 0

    Cod operaie k(constant)Fig. 2.4. Formatul general al instruciunilor orientate pe bit

    Excepia de la acest mod de reprezentare o constituie instruciunea LFSR, care este o

    instruciune lungi care va ncrca o constantde 12 bii n unul din cei trei regitrii specialiFSR.

    Tabelul 2.3 pune n evidenmodul de utilizare al acestor instruciuni n program.

    Tabel 2.3. Formatul general al instruciunilor cu constante

    Format instruciuni cu constante Exemplu de utilizarecod_operaie k

    k=valoarea efectivpe 8 bii

    Excepie: LFSR f,kf=registrul FSR utilizatk=adresa pe 12 bii

    MOVLW d23

    LFSR FSR0, h100

    2.1.4 Instruciuni de control

    n funcie de tipul operaiei implementate, instruciunile de control pot utiliza

    urmtorii operanzi:

    - o adresdin memoria program / etichet(specificatprin operandul n)

    - utilizarea stivei rapide n cazul instruciunilor CALL, RETURNi RETFIE(specificat

    prin operandul s)

    - froperand

    Aceste instruciuni au rolul de a controla execuia programului prin implementarea de

    bucle, salturi, apeluri de subrutina etc. Operandul n, specific o adresa de salt n memoria

    program. n urma apelului acestor instruciuni se va modifica valoarea stocatn numrtorul

    de program, lucru care va conduce la realizarea efectiv a saltului. Aceast adres de salt

    corespunde etichetelor care se introduc n codul surs pentru a marca adresa de nceput a

    anumitor seciuni de cod.

    n funcie de tipul operaiei realizate, pentru instruciunile de control sunt definite mai

    multe moduri de reprezentare, prezentate succint n Tabelul 2.4, dar asupra crora nu se va

    insista n acest capitol. Totui, cu scop informativ, n Fig. 2.5 se prezintformatul instruciunii

    de control GOTOcare permite realizarea de salturi n ntreg spaiul de adresare al memoriei

    program.

  • 5/24/2018 Microprocesoare,capitol 2

    7/22

    SETUL DE INSTRUCIUNI

    30

    15 8 7 0

    Cod operaie n (adresdin memoria program)15 12 11 01 1 1 1 n(adresdin memoria program)

    Fig. 2.5.Formatul general al unei instruciuni de control

    Tabel 2.4. Formatul general al instruciunilor de control

    Format instruciuni de control Exemplu de utilizarecod_operaie ncod_operaie n,{s}cod_operaie scod_operaie

    n=etichet(adresdin memoria program)s= utilizare stivrapid

    Excepie: RETLW kk=constantpe 8 bii

    GOTO main_loopCALL rutinaRETURN FASTNOP

    RETLW 0x15

    2.2 CLASIFICAREA INSTRUCIUNILOR N FUNCIE DE OPERAIILE

    REALIZATE

    Pentru o mai bun nelegere i pentru identificarea facil a instruciunilor necesare

    implementrii diferitelor programe, acest paragraf conine o clasificare a instruciunilor

    disponibile n funcie de operaiile realizate.

    2.2.1 Instruciuni matematice pe octet

    n acestcategorie s-au considerat instruciunile care realizeaz operaii matematice

    elementare asupra datelor cu dimensiunea de opt bii. Operaiile realizate sunt: adunarea,

    scderea, incrementarea, decremenetarea i nmulirea.

    Exemplu

    Se analizeazcazul instruciunii cu forma general:

    ADDWF f, d, a

    Aceast instruciune adun coninutul registrului de lucru WREG cu

    coninutul registrului a crui adreseste specificatprin parametrul f. Dac

    bitul de destinaie al rezultatului va fi d=0 (d=W), rezultatul obinut n

    urma operaiei va fi depus n registrul de lucru WREG. Dac bitul de

    destinaie al rezultatului va fi d=1 (d=F), rezultatul obinut n urma

    operaiei va fi stocat n registrul f, nlocuind astfel operandul care se gsea

  • 5/24/2018 Microprocesoare,capitol 2

    8/22

    SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455

    31

    acolo. Cele dousituaii posibile sunt puse n evidenn Fig. 2.6.

    Parametrul a intervine n modul de formare al adresei f. Asupra acestui

    parametru se va reveni n capitolul 3. n exemplele care vor urma acest

    parametru se considerca avnd valoarea a=0.

    Fig. 2.6.Selectarea destinaiei rezultatului pentru instruciunea ADDWF

    n continuare se va analiza exemplul prezentat n Fig. 2.6. Se considerc

    naintea execuiei instruciunii n registrul de lucru WREG se gsete

    valoarea b00101001=h29=d41, iar n registrul de la adresa

    0x02Cse gsete valoarea b01100111=h67=d103.

    n cazul a., n urma realizrii operaiei:

    ADDWF 0x2C, W, 0

    rezultatul obinut b10010000=h90=d144 va fi stocat n

    registrul de lucru WREG, nlocuind operandul 1.

  • 5/24/2018 Microprocesoare,capitol 2

    9/22

    SETUL DE INSTRUCIUNI

    32

    n cazul b.:

    ADDWF 0x2C, F, 0

    se produce acelai rezultat, dar acesta va fi stocat n memorie la adresa

    0x02C, nlocuind operandul 2.

    Dup cum se poate vedea i din figur, operaiile realizate pot influena istarea biilor indicatori din registrul STATUS. Bineneles, pentru valorile

    alese ale operanzilor, registrul STATUSnu este influenat n urma execuiei

    instruciunii.

    n aceeai categorie a instruciunilor matematice pe octet se regsesc i instruciunile

    din Tabelul 2.5.

    Tabel 2.5. Instruciuni matematice pe octetInstruciuni Descriere Cicluri instr.

    ADDWF f,d,a AdunWREGcu f 1ADDWFC f,d,a AdunWREGcu fi cu bitul de transport 1SUBWF f,d,a Scade WREGdin f 1SUBWFB f,d,a Scade fdin WREGcu bitul de mprunut 1SUBFWB f,d,a Scade WREGdin fcu bitul de mprumut 1INCF f,d,a Incrementeazf 1DECF f,d,a Decrementeazf 1MULWF f,a nmulete fcu WREG1 1NEGF f,a Negare f 1

    2.2.2 Instruciuni logice pe octet

    n acestcategorie s-au considerat instruciunile care realizeazoperaii logice asupra

    datelor cu dimensiunea de opt bii. Printre operaiile realizate se pot aminti: I logic, SAU

    logic, SAU-EXCLUSIV, Complement, rotire de bii etc.

    Tabelul 2.6 cuprinde instruciunile care se ncadreaz n categoria instruciunilorlogice pe octet.

    O analizcomparativ ntre instruciunile din aceastcategorie i cele din categoria

    instruciunilor matematice pe octet pune n evidenfaptul cparametrii acestor instruciuni

    (f,d,a) sunt aceeai i ndeplinesc acelai rol. Se pot identifica totui cteva instruciuni, a

    cror nelegere poate ridica mici probleme. Este vorba despre instruciunile de rotire, la

    stnga sau la dreapta, cu sau fr bit de transport (en. Carry). Aceste instruciuni vor fi

    analizate n exemplul urmtor.

    1rezultatul acestei operaii se va regsi n regitrii PRODH:PRODL

  • 5/24/2018 Microprocesoare,capitol 2

    10/22

    SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455

    33

    Tabel 2.6. Instruciuni logice pe octet

    Instruciuni Descriere Cicluri instr.ANDWF f,d,a I logic ntre WREGi f 1IORWF f,d,a SAU logic ntre WREGi f 1XORWF f,d,a SAU-EXCLUSIV ntre WREGi f 1

    COMF f,d,a Complement f 1CLRF f,a Resetare bii din registrul f 1SETF f,a Setare bii din registrul f 1SWAPF f,d,a Interschimbare semioctei din registrul f 1RLCF f,d,a Rotire fla stnga cu bit de transport 1RLNCF f,d,a Rotire fla stnga frbit de transport 1RRCF f,d,a Rotire fla dreapta cu bit de transport 1RRNCF f,d,a Rotire fla dreapta frbit de transport 1

    Exemplu

    Se analizeazcazul instruciunii cu forma general:

    RLCF f, d, a

    Aceast instruciune realizeaz rotirea spre stnga cu bit de transport a

    coninutului de la adresa specificatprin parametrul f. Rezultatul obinut

    va fi stocat n registrul f sau n registrul de lucru WREG, n funcie de

    starea bitului de destinaie al rezultatului d.

    Rotirea spre stnga cu bit de transport este evideniatn Fig. 2.7. Bitul de

    transport (en. Carry) este un bit al registrului STATUS.

    Fig. 2.7.Rotirea spre stnga cu bit de transport RLCF

    Modul de utilizare al instruciunii de rotire cu bit de transport este

    evideniat n continuare:

    RLCF REG, W, 0

    naintea instruciunii:REG = 11100110C = 0

    Dupinstruciune:REG = 11100110WREG = 11001100C = 1

  • 5/24/2018 Microprocesoare,capitol 2

    11/22

    SETUL DE INSTRUCIUNI

    34

    Exemplu

    Se analizeazcazul instruciunii cu forma general:

    RLNCF f, d, a

    Aceast instruciune realizeaz rotirea spre stnga frbit de transport a

    coninutului de la adresa specificatprin parametrul f. Rezultatul obinut

    va fi stocat n registrul f sau n registrul de lucru WREG, n funcie destarea bitului de destinaie al rezultatului d.

    Rotirea spre stnga frbit de transport este evideniatn Fig. 2.8.

    Fig. 2.8.Rotirea spre stnga cu bit de transport RLNCF

    Modul de utilizare al instruciunii de rotire fr bit de transport este

    evideniat n continuare:

    RLCF REG, W, 0

    naintea instruciunii:REG = 11100110

    C = 0

    Dupinstruciune:

    REG = 11100110WREG = 11001101C = 1

    n cele douexemple prezentate anterior, parametrul f al instruciunii este specificat

    prin intermediul unei nume simbolic care nlocuiete adresa fizica registrului. Acest nume

    simbolic trebuie declarat anterior utilizrii. Mai multe detalii despre numele simbolice vor fi

    prezentate n capitolul 4.

    Rotirile spre dreapta, implementate de instruciunile RRCFi RRNCF, se realizeaznmod asemntor.

  • 5/24/2018 Microprocesoare,capitol 2

    12/22

    SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455

    35

    2.2.3 Instruciuni matematice i logice cu constante

    Aceste instruciuni au fost grupate ntr-o singurcategorie deoarece respectacelai

    format i acelai principiu de funcionare, dupcum se poate vedea din Tabelul 2.7, dar i n

    exemplul considerat.

    Tabel 2.7. Instruciuni matematice i logice cu constante

    Instruciuni Descriere Cicluri instr.ADDLW k AdunWREGcu literal 1SUBLW k Scade WREGdin literal 1MULLW k nmulete WREGcu literal 1ANDLW k I logic ntre WREGi literal 1IORLW k SAU logic ntre WREGi literal 1

    XORLW k SAU-EXCLUSIV ntre WREGi literal 1

    Cu excepia instruciunii de nmulire MULLW, toate instruciunile din aceast

    categorie vor avea unul dintre operanzi n registrul de lucru WREG, cel de-al doilea operand va

    fi constanta k, iar rezultatul obinut n urma operaiei va fi stocat n registrul de lucru.

    Instruciunea de nmulire cu o constantMULLW, la fel ca i cealaltinstruciune de

    nmulire MULWF, amintit n categoria instruciunilor matematice pe octet, va depune

    ntotdeauna rezultatul n doi regitri speciali PRODH:PRODL. Acest lucru se datoreazfaptului cnmulirea a douvalori reprezentate pe opt bii poate conduce la un rezultat cu o

    dimensiune mai mare de opt bii, care nu poate fi stocat nici n registrul de lucru WREG, nici n

    registrul f. (10 x 30 = 300. 300 este o valoare care se reprezintpe 9 bii)

    Exemplu

    Se analizeazcazul instruciunii cu forma general:

    ANDLW k

    Aceastinstruciune realizeazoperaia logicI ntre coninutul registrul

    de lucru i constanta de 8 bii k. Rezultatul obinut va fi stocat n registrul

    de lucru WREG.

    Modul de utilizare al acestei instruciuni este evideniat n continuare:

    ANDLW 0x0F

    naintea instruciunii:WREG = 11100110

    Dupinstruciune:WREG = 00000110

  • 5/24/2018 Microprocesoare,capitol 2

    13/22

    SETUL DE INSTRUCIUNI

    36

    2.2.4 Instruciuni logice pe bit

    n aceastcategorie au fost grupate instruciunile care manipuleazstarea unui singur

    bit prin realizarea unor operaii de setare, resetare sau negare a strii (en. toggle). De altfel,

    aceast categorie cuprinde doar trei instruciuni cu format asemntor care implementeazcele trei operaii amintite anterior. Tabelul 2.8 centralizeazaceste instruciuni.

    Tabel 2.8. Instruciuni logice pe bit

    Instruciuni Descriere Cicluri instr.BCF f,b,a Reseteazbitul bdin registrul f 1BSF f,b,a Seteazbitul bdin registrul f 1BTG f,b,a Neagstarea bitului bdin registrul f 1

    Pentru a exemplifica modul de utilizare al acestor instruciuni se considerurmtorul

    exemplu.

    Exemplu

    Se analizeazcazul instruciunii cu forma general:

    BCF f, b, a

    Aceastinstruciune realizeazoperaia de resetare, sau punere pe 0 logic,

    a bitului de pe poziia b din registrul a crui adres se sprecific prin

    parametrul fal instruciunii. Rezultatul obinut n urma acestei operaii se

    va regsi ntotdeauna n registrul f.

    Avnd n vedere cregitrii microcontrolerului sunt de 8 bii, parametrul

    bal acestor instruciuni va avea ntotdeauna o valoare cuprinsntre 0 i

    7, unde 0 identificbitul cel mai puin semnificativ, iar 7 identificbitul

    cel mai semnificativ al unui octet.

    Modul de utilizare al acestei instruciuni este evideniat n continuare:

    BCF REG, 2, 0

    naintea instruciunii:REG = 11100110

    Dupinstruciune:REG = 11100010

  • 5/24/2018 Microprocesoare,capitol 2

    14/22

    SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455

    37

    2.2.5 Instruciuni de comparaie pe bit

    O categorie aparte de instruciuni sunt instruciunile de comparaie, deoarece acestea

    permit implementarea ramificaiilor de tip ifn programele realizate n limbaj de asamblare.

    Instruciunile de comparaie pe bit sunt doar dou la numr i permit testarea strii unuianumit bit dintr-un registru. n Tabelul 2.9 sunt menionate cele douinstruciuni.

    Tabel 2.9. Instruciuni de comparaie pe bit

    Instruciuni Descriere Cicluri instr.BTFSC f,b,a Testeazbitul bdin reg. f, salt daceste 0 1 (2 sau 3)BTFSS f,b,a Testeazbitul bdin reg. f, salt daceste 1 1 (2 sau 3)

    Exemplu

    Se analizeazcazul instruciunii cu forma general:BTFSC f, b, a

    Aceast instruciune compar dac bitul de pe poziia b din cadrul

    registrului f este 0. Dac bitul este 0 se face salt peste instruciunea

    urmtoare. Fig. 2.9 curpinde o diagram care prezint principiul de

    funcionare al acestei instruciuni.

    Fig. 2.9.Principiul de funcionare al instruciunii BTFSC

    n cazul prezentat n Fig. 2.9, avnd n vedere c n registrul cu numele

    simbolic REG se gsete valoarea 01011001, care are bitul 3 setat,

    instruciunea care se va executa dupa BTFSCva fi instruciunea 1.

  • 5/24/2018 Microprocesoare,capitol 2

    15/22

    SETUL DE INSTRUCIUNI

    38

    2.2.6 Instruciuni de comparaie pe octet

    Instruciunile de comparaie pe octet pot fi grupate n dousub-categorii: instruciuni

    cu doi parametri, care realizeaz doar o comparaie urmat sau nu de un salt, respectiv

    instruciuni cu trei parametri care mai realizeaz n plus o operaie de incrementare saudecrementare. n funcie de specificul lor aceste instruciuni vor fi utilizate fie la

    implementarea unor ramificaii de tip if, fie la implementarea unor bucle iterative de tip

    for.

    Pentru a evidenia principiul de funcionare al instruciunilor din cele dou sub-

    categorii se va considera cte un exemplu semnificativ pentru ambele formate de instruciuni.

    Exemplu

    Se analizeazcazul instruciunii cu forma general:CPFSEQ f, a

    Aceastinstruciune comparconinutul registrului fcu cel al registrului

    de lucru WREG. Dac cele dou sunt identice se face salt peste

    instruciunea urmtoare. n Fig. 2.10 se prezintprincipiul de funcionare

    al acestei instruciuni.

    Fig. 2.10. Principiul de funcionare al instruciunii CPFSEQ

    Exemplu

    Se analizeazcazul instruciunii cu forma general:

    DECFSZ f, d, a

    Aceast instruciune realizeaz o decrementare a valorii stocate n

    registrul f, iar dac rezultatul obinut n urma decrementrii este 0 se

    excutun salt peste instruciunea urmtoare. Prezena parametrului d n

    codul instruciunii indicfaptul crezultatul decrementrii poate fi stocat

    fie n registrul de lucru WREG, fie la adresa specificatprinf.

  • 5/24/2018 Microprocesoare,capitol 2

    16/22

    SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455

    39

    n Fig. 2.11 se prezintprincipiul de funcionare al acestei instruciuni.

    Fig. 2.11. Principiul de funcionare al instruciunii DECFSZ

    Instruciunea DECFSZ, prezentat anterior poate fi utilizat cu uurin pentru

    realizarea unor bucle de tip for. Exemplul urmtor consider o seciune de cod care

    realizeazacest lucru.

    Exemplu

    Se consider cazul implementrii unei bucle de tip for care permite

    execuia unei instruciuni oarecare de o sutde ori.

    Se pornete de la premisa conform creia registrul REG, utilizat pe post de

    iterator, este n prealabil iniializat cu valoarea 100. n aceste condiii

    secvena urmtoare de cod permite execuia instruciunii CLRF de o sut

    de ori.

    Bucla_forCLRF 0x00, 0

    DECFSZ REG, F, 0GOTO Bucla_for

    Instruciunile de comparaie pe octet sunt centralizate n Tabelul 2.10.

  • 5/24/2018 Microprocesoare,capitol 2

    17/22

    SETUL DE INSTRUCIUNI

    40

    Tabel 2.10. Instruciuni de comparaie pe octet

    Instruciuni Descriere Cicluri instr.CPFSEQ f,a Comparfcu WREG, salt dacf=WREG 1 (2 sau 3)CPFSGT f,a Comparfcu WREG, salt dacf>WREG 1 (2 sau 3)CPFSLT f,a Comparfcu WREG, salt dacf

  • 5/24/2018 Microprocesoare,capitol 2

    18/22

    SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455

    41

    2.2.8 Instruciuni de control

    Majoritatea instruciunilor din aceast categorie controleaz modul de execuie al

    programului ca urmare a modificrii valorii numrtorului de program, prin realizarea de

    salturi condiionate sau necondiionate, apeluri de subrutin, revenire din subrutin etc.Tabelul 2.12 cuprinde lista acestor instruciuni.

    Tabel 2.11. Instruciuni de control

    Instruciuni Descriere Cicluri instr.BC n Salt dacbitul de transport (carry) este 1 1 (2)BN n Salt dacbitul negativ este 1 1 (2)BOV n Salt dacbitul de depire (overflow) este 1 1 (2)BZ n Salt dacbitul zero este 1 1 (2)BNC n Salt dacbitul de transport (carry) este 0 1 (2)BNN n Salt dacbitul negativ este 0 1 (2)BNOV n Salt dacbitul de depire (overflow) este 0 1 (2)BNZ n Salt dacbitul zero este 0 1 (2)BRA n Salt necondiionat 2GOTO n Salt la adresa / etichet 2PUSH Pune n stiv(SalveazPCn stiv) 1POP Scoate din stiv(Reface PC) 1CALL n,s Apel de subrutin 2RETURN s Revenire din subrutin 2

    RETLW k Revenire din subrutincu literal n WREG 2RETFIE s Revenire din rutina de tratare a ntreruperii 2NOP Nici o operaie 1

    Instruciunile de salt condiionat (BC, BN, BNC, BNN, BNOV, BNZ, BOV,

    BZ) realizeaz saltul la o instruciune destinaie marcat printr-o etichet dac rezultatul

    operaiilor anterioare ndeplinete anumite criterii care pot fi verificate prin intermediul biilor

    indicatori din registrul STATUS.

    Instruciunile de salt necondiionat vor realiza saltul prin modificarea directa valoriinumrtorului program. Astfel, instruciunea BRA realizeaz un salt la o instruciune

    destinaie prin adaugarea unui offset la adresa curent stocat de numrtorul program, iar

    instruciunea GOTO realizeaz saltul direct la orice adres din spaiul de memorie al

    programului. n consecin, instruciunea BRA realizeaz un salt relativ, iar instruciunea

    GOTOrealizeazun salt absolut n memoria program.

    Modul de execuie al celor douinstruciuni se prezintn Fig. 2.12.

  • 5/24/2018 Microprocesoare,capitol 2

    19/22

    SETUL DE INSTRUCIUNI

    42

    Fig. 2.12. Exemplificarea diferenei ntre saltul necondiionat relativ (BRA)i cel absolut (GOTO)

    Conform figurii de mai sus, la execuia instruciunii BRA .+6, numrtorul de

    program (PC) indic, din cauza existenei pipeline-ului, spre instruciunea urmtoare

    (PC=h008). Execuia acestei instruciuni modific valoarea efectiv a numrtorului de

    program, realiznd un salt peste n cuvinte (n x 16 bii) din memoria program. Deci, noua

    adres a numrtorului de program, i implicit a noii instruciuni care va fi extras din

    memorie n vederea execuiei, va fi: PC = h008+2xn = h008+h00C=h014.

    Pe de altparte, instruciunea GOTOdeterminsaltul absolut n memoria program la

    instruciunea gsitla adresa fizich07F2, codificatprin Eticheta_2.

    Asupra instruciunilor de apel i revenire din subrutin (CALL, RETURN,

    RETFIE, RETLW) i a celor care intervin n utilizarea stivei (PUSH, POP) se va reveni n

    capitolele urmtoare.

    2.2.9 Alte instruciuni

    Instruciunile cuprinse n aceastcategorie permit realizarea scrierii i citirii tabelare

    din memoria program. Aceste instruciuni, vor fi doar amintite n acest capitol, n Tabelul

    2.12, fiind prezentate mai detaliat n unul din capitolele urmtoare.

  • 5/24/2018 Microprocesoare,capitol 2

    20/22

    SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455

    43

    Tabel 2.11. Instruciuni de scriere i citire tabelar

    Instruciuni Descriere Cicluri instr.TBLRD* Citire tabelar 2TBLRD*+ Citire tabelarcu post incrementareTBLRD*- Citire tabelarcu post decrementareTBLRD+* Citire tabelarcu pre incrementareTBLWT* Scriere tabelar 2TBLWT*+ Scriere tabelarcu post incrementareTBLWT*- Scriere tabelarcu post decrementareTBLWT+* Scriere tabelarcu pre incrementare

    Concluzii

    Acest capitol cuprinde prezentarea setului de instruciuni al

    microcontrolerului PIC18F4455. Este prezentat modul n care suntcodificate aceste instruciuni n memoria program, sunt prezentai

    parametrii instruciunilor, iar clasificarea din subcapitolul 2.2 are scopul

    de a facilita identificarea diferitelor instruciuni necesare pentru realizarea

    programelor n funcie de tipul de operaie realizat. De asemenea,

    exemplele ntlnite n acest capitol au rolul de a evidenia caracteristicile

    comune ale diferitelor grupe de instruciuni.

    n vederea unei ct mai bune nelegeri a instruciunilordisponibile i a modului de utilizare al acestora, se propune ncheierea

    capitolului cu urmtorul exemplu:

    Exemplu

    Se consider urmtoarea aplicaie, care implementeaz succesiv nite

    operaii dupcum urmeaz:

    - se iniializeazregistrul de la adresa 0x37 cu valoarea 71

    - se incrementeazaceastvaloare de 50 de ori

    - se seteazbitul 4 al rezultatului

    - dac rezultatul obinut este mai mare dect 200 se terge

    coninutul registrului de la adresa 0x37

    - dacrezultatul obinut este mai mic dect 200 se seteaztoi biii

    registrului de la adresa 0x37

    Se cere codul surscare implementeazfuncionalitatea propus.

    REG EQU 0X37CONTOR EQU 0X00

  • 5/24/2018 Microprocesoare,capitol 2

    21/22

    SETUL DE INSTRUCIUNI

    44

    MOVLW D71MOVWF REG, 0MOVLW D50MOVWF CONTOR, 0

    Bucla_for:

    INCF REG, F, 0DECFSZ CONTOR, F, 0GOTO Bucla_for

    BSF REG, 4, 0

    MOVLW D200CPFSGT REG, 0SETF REG,0CLRF REG,0

    1. Ce rol ndeplinete parametrul dn codul instruciunii?

    2. Care este diferena ntre instruciunile GOTOi BRA?

    3. Care va fi coninutul registrului de lucru WREG ca urmare a celor

    douoperaii implementate prin urmtorul cod surs:

    ADDWF REG, WSUBWF REG, W

    4. Cum s-ar implementa o operaie de deplasare la stnga cu 2 bii?

    5. Ce reprezintoperandul fdin codul instruciunii?

    6. Identificai cele 4 instruciuni reprezentate pe 32 de bii

    7. Explicai instruciunea IORWF.

    ntrebri de

    autoevaluare

    8. Sse scrie un mic program care iniializeaz registrul de lucru cu

    valoarea 100, rotete la stnga coninutul registrului de lucru de 100

    de ori apoi seteazbitul 3 i reseteazbitul 2.

    Termeni

    eseniali

    Carry

    Bit de transport. Se gsete n registrul STATUS

    Codul operaiei

    Tipul de operaie implementat de o anumitinstruciune

    Cuvnt

    Doi octei. 16 bii

    Decrementare

    Operaie matematicechivalentcu scderea cu 1

  • 5/24/2018 Microprocesoare,capitol 2

    22/22

    SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455

    45

    Etichet

    Identificator introdus n codul surspentru a marca adresa de nceput a

    unei instruciuni

    Incrementare

    Operaie matematicechivalentadunrii cu 1Instruciuni

    Comenzi codificate binar pe care le executUCP

    Literal

    Valoarea numericconstant

    Memorie

    Spaiu de stocare

    Memorie de dateSpaiu de stocare temporar (RAM) pentru datele cu care lucreaz

    programul

    Memorie program

    Spaiu de stocare pentru program

    Numrtor de program

    Numrtor binar utilizat pentru adresarea instruciunilor. Conine adresa

    instruciunii care urmeaza fi executat

    Octet

    1 Byte = 8 bii. Capacitatea de stocare a unui registru

    Registru

    Spaiu de stocare . Locaie de memorie .

    Resetare

    Punerea unui bit sau a unui grup de bii pe 0 logic

    RISC

    Reduced Instruction Set Computer

    Setare

    Punerea unui bit sau a unui grup de bii pe 1 logic

    STATUS

    Registru care indic starea operaiilor aritmetice executate de unitatea

    aritmetici logic

    WREG

    Registru de lucru / acumulator. n general conine unul din operanzii

    instruciunilor


Recommended