Mikrokontroler 8051-upustvo.pdf

  • Upload
    andjela

  • View
    304

  • Download
    5

Embed Size (px)

Citation preview

  • 7/25/2019 Mikrokontroler 8051-upustvo.pdf

    1/70

    +

    _

    Katedra za

    elektroniku021/59-449

    [email protected]

    Mikroprocesorska elektronika

    MIKROKONTROLER 8051

    Skripta za vebe

    Milo#Slankamenac, Kalman Babkovi

    %, Milan Nikoli

    %i Ivan Mezei

    Novi Sad, 2001/2002.

  • 7/25/2019 Mikrokontroler 8051-upustvo.pdf

    2/70

    Mikroprocesorska elektronika 2

    Katedra za elektroniku

    SADRAJ

    1. ARHITEKTURA MIKROKONTROLERA INTEL 8051.........................................5

    2. RASPORED I FUNKCIJE POJEDINIH NOICA ................................................... 7

    2.1 OPIS FUNKCIJA POJEDINIH NO

    (ICA

    ................................ .............................................72.2 HARDVERSKA STRUKTURA PORTOVA ................................ ................................ .........9

    3. ORGANIZACIJA MEMORIJE ................................ ................................ .................9

    3.1 PROGRAMSKA MEMORIJA ................................ ................................ ..........................93.2 MEMORIJA PODATAKA ................................ ................................ ............................ 10

    4. INSTRUKCIJE..........................................................................................................12

    4.1 PRENOS PODATAKA................................................................................................. 124.2 ARITMETI*KE INSTRUKCIJE ................................ ................................ ..................... 13

    Sabiranje................................ .................................................................................... 13Oduzimanje.................................................................................................................14Mnoenje ................................ .................................................................................... 14Deljenje ................................ ................................ ................................ ..................... 14Logi#ke instrukcije................................ ........................................................................14

    4.3 POTPROGRAMI ................................ ........................................................................154.4 BEZUSLOVNI SKOKOVI ................................ ................................ ............................ 154.5 USLOVNI SKOKOVI ................................ ................................ ................................ ..164.6 UTICAJ INSTRUKCIJA NA FLEGOVE ................................ ...........................................17

    5. TAJMERI/BROJA#I ................................................................................................ 18

    5.1 KONTROLA RADA TAJMERA ................................ ................................ ..................... 185.2 MODOVI RADA TAJMERA 0 I 1................................ ................................ ..................19

    Mod 0 ........................................................................................................................19

    Mod 1 ........................................................................................................................20Mod 2 ........................................................................................................................20Mod 3 ........................................................................................................................20

    6. SISTEM PREKIDA MIKROKONTROLERA 8051................................ ................ 20

    6.1 IZVORI PREKIDA KOD 8051......................................................................................21Spolja%nji prekidi 0 i 1 (external interrupt) ................................................................ .........21Prekidi tajmera 0 i 1 (timer interrupt)................................................................................21Prekid serijskog interfejsa (serial port interrupt)................................ ................................ ..21

    6.2 MASKIRANJE PREKIDA ................................ ................................ ............................ 226.3 STRUKTURA PRIORITETA PREKIDA ................................ ...........................................226.4 PROCEDURA POZIVANJA POTPROGRAMA ZA OPSLU(IVANJE PREKIDA......................... 22

    7. LISTA INSTRUKCIJA ................................ ............................................................. 23

    7.1 ARITMETI*KE OPERACIJE ................................ ................................ ........................ 237.2 LOGI*KE OPERACIJE................................................................................................ 247.3 PRENOS PODATAKA................................................................................................. 247.4 BULOVE OPERACIJE................................................................................................. 257.5 POTPROGRAMI I SKOKOVI ................................ ................................ ........................ 26

    8. ASEMBLER A51.......................................................................................................26

  • 7/25/2019 Mikrokontroler 8051-upustvo.pdf

    3/70

    Mikroprocesorska elektronika 3

    Katedra za elektroniku

    8.1 DIREKTIVE................................ ..............................................................................268.2 RAD U ASEMBLERU A51..........................................................................................27

    9. PRIMERI................................ ................................ ................................................... 27

    10. KOMPAJLER PROGRAMSKOG JEZIKA C ZA MIKROKONTROLERE IZ

    FAMILIJE 8051................................ ................................ .............................................31

    11. STARTOVANJE VISION2 PROGRAMA I KREIRANJE PROJEKTA........... 31

    12. KREIRANJE IZVORNOG (SOURCE) FAJLA ................................ .................... 32

    13. UNOS PARAMETARA HARDVERSKE STRUKTURE MIKROKONTROLERA

    ........................................................................................................................................34

    14. TESTIRANJE PROJEKTA I KREIRANJE HEX FAJLA ................................ ...35

    15. SIMULACIJA RADA MIKROKONTROLERA 8051...........................................36

    16. PRIMERI .................................................................................................................38

    17. SIMULATOR/DIBAGER ZA MIKROKONTROLER INTEL 8051 %SAD51

    ........................................................................................................................................40

    17.1 OP,TE KARAKTERISTIKE................................ ................................ ........................ 4017.2 EKRAN I GLAVNI PROZORI................................ ................................ ...................... 40

    Prozor 1 - Disasembler ................................ ................................ ............................ 41Prozor 2'hex damp................................................................................................ 41Prozor 3' Registri................................ ................................................................... 41Prozor 4' Stek................................ ................................................................ .........42Prozor 5'Periferije ................................................................................................ 42

    17.3 RAD SA MI,EM ................................ ................................ ...................................... 42

    17.4 POMERANJE KURSORA POMO.U TASTATURE ................................ ..........................4317.5 OSTALE KOMANDE PREKO TASTATURE................................................................... 4317.6 UPRAVLJANJE PROZORIMA .................................................................................... 4417.7 SISTEM MENIJA (GLAVNI MENI).............................................................................. 4517.8 RAD SA FAJLOVIMA/FILEMENU................................................................ .........45

    Opcija LOAD CODE 'u#itavanje programa ................................ ...........................46Opcija PROGRAM RESET 'resetovanje u#itanog programa ................................ ..46Opcija SAVE 'snimanje disasembliranog listinga ................................ ................... 46Opcija SAVE HEX DUMP 'snimanje hex damp...................................................... 46Opcija AUTO LOAD 'automatsko u#itavanje fajlova nakon starta ......................... 46

    17.9 IZVR,AVANJE PROGRAMA/SIMULACIJA/RUNMENI ............................................47Opcija RUN PROGRAM 'ubrzano izvr%avanje programa................................ .......47Opcija FULL SPEED RUN 'izvr%avanje programa maksimalnom brzinom............. 48Opcija GO TO CURSOR 'izvr%avanje programa do zadate adrese ......................... 48Opcija FAS(GO TO CURSOR 'izvr%avanje do zadate adrese maksimalnom brzinom................................ ................................................................................................ 48Opcija AUTO STEP 'automatsko izvr%avanje korak po korak.................................48Opcija AUTO OVER 'proceduralno izvr%avanje korak po korak............................. 48Opcija STEP OVER MODE 'definisanje proceduralnih instrukcija ........................ 48Opcija DISPLAY MODE 'definisanje osveavanih prozora ................................ ....49

  • 7/25/2019 Mikrokontroler 8051-upustvo.pdf

    4/70

    Mikroprocesorska elektronika 4

    Katedra za elektroniku

    Opcija RESET ALL 'resetovanje simulatora ................................ ...........................49Opcija INFORMATION ' informacije o stanju procesora........................................49

    17.10 RAD SA SIMBOLIMA/SYMBOLMENI ................................ ................................ .51BIT simboli ................................ ................................ ................................ .............. 51

    17.11 PREKIDNE TA*KE/BREAKPOINTS MENI................................ ......................... 51Opcije vezane za prekidnu ta#ku 'BREAKPOINT PARAMETERS........................... 51

    Uslovi aktiviranja prekidne ta#ke 'BREAKPOINT CONDITIONS ..........................5317.12 SIMULACIJA PERIFERIJSKIH URE0AJA/PERIPHERAL MENI............................... 53

    Programabilni tajmeri simulatora - TIMERS ................................ ........................... 54Simulirani serijski port 'COM PORTS....................................................................54

    Kreiranje, izmena i brisanje periferija'CREATE-, EDIT-, DELETE DEVICE........54Pode%avanje parametara periferija 'DEVICE PARAM ...........................................54Periferijski ure*aji................................................................................................... 55Kreiranje, izmena i brisanje elemenata spojeva'CREATE-, EDIT-, DELETECONNECTION ................................ ........................................................................59

    Pode%avanje parametara veza 'CONNECTON PARAM ................................ .........59Elementi spojeva - CONNECTIONS................................ ................................ ......... 60

    17.13 ALP/ARITMETI*KO LOGI*KI PROCESOR................................ ............................ 60ALP izrazi i jedna#ine................................ ................................ ..............................62

    17.14 ADDRESS MENI................................................................................................ 64Maskiranje memorije PROGRAM MASK i DATA MASK................................ .......... 64Mapiranje programske i spolja%nje memorije za podatke 'PROGRAM MAP i DATAMAP ................................ ................................ ................................ ........................ 65Zadavanje dozvoljene oblasti memorije za stek 'STACK AREA............................... 65Punjenje memorije 'FILL PGM, FILL DATA FILL i FILL INTERNAL .................. 65Upravljanje prozorima 'WINDOW Meni ................................ ................................ 65

    17.15 RAZLI*ITE OPCIJE PROGRAMA/OPTION MENU ................................ ...............66Na#in rada ALP-a 'ALP MODE ................................ .............................................66Uslovi okidanja ALP u asinhronom radu 'ALP TRIGGER...................................... 66

    Duina rada ALP - ALP DELAY ..............................................................................6717.16 UPOTREBA HELP SISTEMA SIMULATORA/HELP MENI ........................................6717.17 STATISTIKA IZVO0ENJA PROGRAMA - TIME ANALYSER................................... 6717.18 SIMULACIJA ZADATKA 1................................ ................................ ...................... 6817.19 SIMULACIJA ZADATKA 2................................ ................................ ...................... 69

  • 7/25/2019 Mikrokontroler 8051-upustvo.pdf

    5/70

    Mikroprocesorska elektronika 5

    Katedra za elektroniku

    1. ARHITEKTURA MIKROKONTROLERA INTEL 8051

    U familiji INTEL-ovih mikrokontrolera izvedenih u vidu jednog 1ipa mikrokontroler INTEL 8051 jesintetizovan namenski da slui kao procesor u sistemima digitalnog upravljanja. Osnovna varijanta 1ipaINTEL 8051 ima strukturu prikazanu na sl.1.1. Unutar 1ipa se nalaze centralna procesorska jedinica (CPU),ROM memorija, RAM memorija, tajmeri, broja1i, paralelni i serijski ulazi/izlazi.Osnovne karakteristike mikrokontrolera INTEL 8051 su:

    8-bitni CPU;

    4KB interne ROM ili EPROM memorije za 1uvanje programa, sa mogu%no#%u pro#irenja do 64KB spolja#nje memorije;

    128 bajtova RAM memorije namenjene za upisivanje i 1itanje podataka. U ovoj memoriji senalaze 4 registarske banke od po 8 registara, kao i stek memorija;

    64 KB adresnog prostora memorije podataka;

    64 KB adresnog prostora programske memorije;

    8-bitni pokaziva1stek memorije, koji pokriva internu memoriju Dva programabilna 16-bitna tajmera/broja1a; Programabilni serijski ulaz/izlaz (puni dupleks).

    *etiri 8-bitna ulazno/izlazna priklju1ka (portovi P0, P1, P2 i P3);

    Tajmerski i ulazno/izlazni prekidi sa dva nivoa prioriteta; 111 naredbi;

    Aritmeti1ko-logi1ka jedinica (ALU) koja moe da izvr#ava aritmeti1ke operacije sabiranja,oduzimanja, mnoenja i deljenja, kao i logi1ke operacije I, ILI, EXILI, komplement i negacija;

    256 adresabilnih bita za rad sa Bulovom algebrom, od toga 128 bita u internoj memoriji i 128bita pridruenih postoje%im internim registrima.

    Slika 1.1 Struktura #ipa mikrokontrolera INTEL 8051

    Ovako sintetizovan mikrokontroler u mnogome olak#ava posao projektanta hardvera, smanjuje ukupnohardversko okruenje i broj spolja#njih veza i na taj na1in pove%ava pouzdanost sistema. Novija varijantaovog mikrokontrolera (INTEL 8052) se po strukturnoj #emi ne razlikuje od INTEL 8051. 8052 imapro#irenje ROM i RAM memorije, kao i jedan dodatni tajmer.Na sl. 1.2 prikazana je detaljnija arhitektura mikrokontrolera INTEL 8051. Ovde se vide ranije pomenutekomponente: aritmeti1ko-logi1ka jedinica (ALU) sa parom registara (TMP1, TMP2) za privremenoupisivanje podataka, akumulator (ACC) sa pomo%nim registrom B, statusni registar (PSW), registar naredbi

  • 7/25/2019 Mikrokontroler 8051-upustvo.pdf

    6/70

    Mikroprocesorska elektronika 6

    Katedra za elektroniku

    sa dekoderom, programski broja1 (PC) i registar za inkrementiranje (pove%anje za 1) programskog broja1a(PC-incrementer).

    Slika 1.2 Detaljnija struktura mikrokontrolera INTEL 8051

    Pomo%ni registar B, koji se naziva multiplikativnim registrom, slui za sme#tanje drugog operanda zaaritmeti1ke operacije mnoenja i deljenja. Posle izvr#ene operacije mnoenja ili deljenja u njemu se nalazivi#i bajt rezultata mnoenja ili ostatak deljenja, respektivno. Zajedno sa ACC pomo%ni registar B 1iniregistarski par.Pokaziva1steka (SP-Stack Pointer) slui za adresiranje vrha (najvi#e lokacije) stek memorije. Ovaj registar

    se inkrementira prilikom upisivanja podataka u stek, a dekrementira prilikom 1itanja podataka iz ovememorije.

    Mikrokontroler INTEL 8051 poseduje 4 prihvatna registra (LATCH-a) za 1uvanje stanja izlaza na portovimaP0, Pl, P2 i P3.Registar serijskog prenosa (SBUF) slui za upis podatka koji se #alje i 1itanje podatka koji se prima prekoserijske veze.Registarski parovi (THO, TLO) i (TH1, TL1) 1ine dva 16-bitna tajmera ili broja1a.Za kontrolu i upisivanje statusa prilikom prekida (INTERRUPT-a) za tajmere, broja1e i za serijski prenospodataka koriste se registri specijalne namene ozna1eni na sl 1.2 sa IP, IE, TMOD, TCON, SCON i PCON.

  • 7/25/2019 Mikrokontroler 8051-upustvo.pdf

    7/70

    Mikroprocesorska elektronika 7

    Katedra za elektroniku

    IP slui za odre2ivanje nivoa prioriteta prekida, IEza maskiranje (dozvolu ili zabranu) prekida, TMOD iTCON za odre2ivanje na1ina rada tajmera i broja1a, SCON za kontrolu serijskog prenosa i PCON zadodatnu kontrolu serijskog prenosa i reim rada mikrokontrolera.Memorijski adresni prostor mikrokontrolera INTEL 8051 je podeljen u dva osnovna dela: adresni prostorrezervisan za programe (Code Address Space) i adresni prostor rezervisan za podatke (Data Address Space).Mikrokontroler moe da adresira 64KB programske memorije; interno u samom 1ipu ima 4KB, a ostatak od60KB je predvi2en kao spolja#nja memorija. Programska memorija je tipa ROM, a sem izvo2enja

    programa mogu%e je i 1itanje nekih konstantih podataka.Memorija podatakaje tipa RAM, a sastoji se iz interne (128 bajtova) i eksterne memorije (do 64KB). Pritome, ako nema previ#e podataka, eksterna memorija ne mora da se koristi. Internu memoriju je mogu%eadresirati direktno registarski ili registarski indirektno. Od toga u prostoru od 16 bajtova mogu%e je adresiratisvaki bit (Bit Addressable Segment). U okviru interne memorije podataka nalazi se i stek, koji jeorganizovan tako da se poslednji upisani podatak prvi 1ita (Last Input First Output ili LIFO-princip), akoristi se za privremeno 1uvanje sadraja broja1a naredbi prilikom poziva na potprograme i za pam%enjeadrese izvr#enja programa u slu1aju prekida.Eksternoj memoriji se uvek pristupa indirektno, preko odgovaraju%ih registara.

    2. RASPORED I FUNKCIJE POJEDINIH NOICA

    Na slici 2.1 prikazan je izgled mikrokontrolera 8051. Ako su signali nadvu1eni to zna1i da je aktivan nizaknivo signala a pasivan visok.

    Slika 2.1 Raspored noica mikrokontrolera

    2.1 Opis funkcija pojedinih no&ica

    Od 1 do 8 - Port 1:

    Svaka od ovih noica moe da se koristi kao ulazni ili izlazni priklju1ak, prema potrebi.

    9 - Reset:

    Visok logi1ki nivo na ovom ulazu resetuje sve interne registre (registre dovodi u stanje 00000000), saslede%im izuzecima:

    P0, P1, P2 i P3 (izlazni registri svih spoljnih portova) se dovode u stanje 11111111

    SBUF se ne menja

    SP se dovodi u stanje 00000111 (07h)

    1 402 393 384 375 366 357 348 339 3210 31

    11 30

    12 29

    13 2814 2715 2616 25

    17 24

    18 2319 2220 21

    P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7RST

    RXD P3.0TXD P3.1

    0INT P3.2

    1INT P3.3T0 P3.4T1 P3.5

    WR P3.6

    RD P3.7XTAL2XTAL1

    VccP0.0 AD0P0.1 AD1P0.2 AD2P0.3 AD3P0.4 AD4P0.5 AD5P0.6 AD6P0.7 AD7

    EA Vpp

    ALE PROG

    PSEN

    P2.7 A15P2.6 A14P2.5 A13P2.4 A12P2.3 A11P2.2 A10P2.1 A9P2.0 A8

  • 7/25/2019 Mikrokontroler 8051-upustvo.pdf

    8/70

    Mikroprocesorska elektronika 8

    Katedra za elektroniku

    Neki bitovi u registrima IP, IE i PCON fizi1ki ne postoje, pa tako ne mogu ni da se resetuju Sadrina celog internog RAM-a se ne menja

    Najvanija posledica aktiviranja RESET ulaza je da se PC (Program Counter) resetuje, tako da %e zapo1etiizvr#avanje programa od adrese 0000h.

    od 10 do 17 - Port 3:

    Ako se koristi kao univerzalni ulaz ili izlaz, po svemu je sli1an portu 1, ali na svakoj noici ima jo#po neku

    specijalnu funkciju: 10 (P3.0) RXD - Serijski ulaz za asinhronu komunikaciju (mod 1, 2 i 3) ili serijski izlaz za

    sinhronu komunikaciju (mod 0)

    11 (P3.1) TXD - Serijski izlaz za asinhronu komunikaciju (mod 1, 2 i 3) ili taktni (clock) izlazsa sinhronu komunikaciju (mod 0)

    12 (P3.2) INT0 - Ulaz za prekid (interapt) 0

    13 (P3.3) INT1 - Ulaz za prekid (interapt) 1

    14 (P3.4) T0 - Ulaz spoljnjeg takta za broja10 15 (P3.5) Tl - Ulaz spoljnjeg takta za broja11 16 (P3.6) WR - Signal za upis u spoljnu memoriju

    17 (P3.7) RD - Signal za 1itanje iz spoljne memorije

    18 i 19 - X2 i X1:

    Izlaz i ulaz internog oscilatora. Ako se koristi kvarc-kristal za stabilizaciju u1estanosti oscilatora (#to jenaj1e#%i slu1aj), on se vezuje za ove dve noice, s tim #to na svaku noicu (prema masi) treba dodati jo#pojedan kondenzator od 20-40pF. Ovoje potrebno da bi se spre1ilo oscilovanje na nekom vi#em harmoniku.Opseg u1estanosti je od 1 do 12 MHz, a izra2uju se i mikrokontroleri koji rade i na znatno vi#imfrekvencijama.

    20 - Masa

    Od 21 do 28 - Port 2 ili adrese A8 do A15:

    Ako se koristi mikrokontroler sa internim ROM-om i nema spoljnjeg ROM-a ili RAM-a, mogu se koristitisve linije ovog porta kao univerzalni ulazi ili izlazi. Ako se koristi spoljna memorija, onda su ovo visokiadresni izlazi, od A8 do A15. U tom slu1aju, 1ak i ako se koriste samo neke adrese, preostale noice ovogporta ne mogu da se koriste kao ulazi ili izlazi.

    29 - PSEN:Program Select Enable (aktiviranje spolja#njeg ROM-a):

    Normalno se ovaj izlaz spaja sa CS ili OE ulazom na spoljnom EPROM-u, jer ga mikrokontroler aktivira(dovodi na nizak nivo) svaki put kad 1ita bajt iz programske memorije (za kontrolu spolja#njeg RAM-a sekoriste druge noice).

    30 - ALE:Address Latch Enable (Upis u adresni registar):Da bi sve eljene funkcije spakovao u standardno ku%i#te od samo 40 noica, Intel je morao da pribegnemultipleksiranju nekih signala. Tako je port P0 dobio dve funkcije: izlazne adrese A0-A7 i ulaz/izlazpodataka D0-D7. Pre svakog o1itavanja programa iz spoljne memorije ili prozivanja RAM-a mikrokontrolerna P0 prosle2uje nii bajt adresnog registra i aktivira izlaz ALE. Spoljni registar (naj1e#%e LATCH registartipa 373 ili 573 iz TTL 74xx familije) na visok nivo ALE memori#e stanje P0, a izlazi ovog registra se koristekao A0-A7. U drugom delu ma#inskog ciklusa mikrokontrolera P0 se koristi kao magistrala podataka (DataBus).

    31 - EA: External Access (Spoljni pristup):

    Ako je ovaj ulaz nizak, mikrokontroler %e sve instrukcije 1itati iz spoljnog ROM-a, bez obzira da li imainterni ROM, a ako je visok, prvih 4 KB (8051, 8751) ili 8 KB (8052, 8752) %e 1itati iz internog, a sve ostalodo kraja adresnog prostora iz eksternog ROM-a. Ako se koristi 8031 ili 8032, na ovaj ulaz treba uvek dovestinizak nivo (najbolje je spojiti ga sa masom).

    od 32 do 39 - Port 0, Adrese A0-A7 ili magistrala podataka:

    Sli1no portu P2, i port P0 moe da se koristi kao univerzalni ulaz i izlaz samo ako se ne koristi spoljnamemorija. Ako se koristi, tada je P0 adresni izlaz za A0-A7 kad je ALE visok, a magistrala podataka ( DataBus) kada je ALE nizak.

    40 - Napajanje+5V

  • 7/25/2019 Mikrokontroler 8051-upustvo.pdf

    9/70

    Mikroprocesorska elektronika 9

    Katedra za elektroniku

    2.2 Hardverska struktura portova

    Kao #to je prikazano, postoje 1etiri 8-bitna porta, pri 1emu kod konfiguracija sa spoljnom memorijom portoviP0 i P2 slue za adresiranje i pristup podacima iz memorije, a P1 i P3 su univerzalni i koriste se onako kakoto konkretan projekat zahteva. Svi ulazi i izlazi su kompatibilni sa TTL standardom, a to prakti 1no zna1i damoemo direktno da ih spajamo sa TTL ili kompatibilnim kolima. Ipak, neke specifi1nosti portova trebaimati u vidu kada se projektuje okruenje ovih mikrokontrolera.

    Svi portovi su realizovani sa otvorenim drejnom (Open Drain), uz dodatni MOSFET tranzistor u spojuaktivnog otpornika prema napajanju (pull-up, oko 50K), kao na slici 2.2. Ovakvo re#enje obezbe2uje dobrulogi1ku nulu (kada je izlazni tranzistor uklju1en). Kada je ovaj tranzistor isklju1en, tada samo aktivniotpornik odre2uje logi1ku jedinicu, pri 1emu se odgovaraju%a noica pona#a i kao ulazni priklju1ak, jerspolja#nje kolo moe da obori napon na logi1ku nulu (re#enje je poznato i pod nazivom 3oi1eno I4).

    Slika 2.2 Pojednostavljeni prikaz noica porta

    U slu1aju kada se na izlaz porta postavlja logi1ka jedinica, uklju1uje se kratkotrajno dodatni tranzistor prekoubrzavaju%eg kola, 1ime je obezbe2eno savla2ivanje izlaznih kapacitivnosti.Zavisno od tipa instrukcije, mogu%e je 1itanje stanja izlazne noice, ali i stanja izlaznog flip-flopa. Instrukcijekoje samo 1itaju port uzimaju informaciju o stanju direktno sa noice (ozna1eno kao 31itanje stanja noice4),dok instrukcije koje modifikuju port, tj. pro1itaju stanje, promene ga i zatim ponovo upi#u na port, pri 1itanjuuzimaju stanje izlaznog flip-flopa, a ne izlazne noice (ozna1eno kao 31itanje stanja izlaznog registra4).Ovakve instrukcije su poznate pod nazivom 3Read-Modify-Write4, a primeri su:

    ORL P1,#72h ; Port se pro1ita, uradi se logi1ka operacija OR, a zatim se vrednost u port upi#eSETB P1.2 ; Port se pro1ita, postavi se jedan bit, a zatim se vrednost u port upi#e

    Primeri instrukcija koje 1itaju izlazno stanje su:MOV A,P2ANL C,P1.1

    3. ORGANIZACIJA MEMORIJE

    Memorijski adresni prostor mikrokontrolera INTEL 8051 je podeljen u dva osnovna dela: adresni prostorrezervisan za programe (Code Address Space) i adresni prostor rezervisan za podatke (Data Address Space).

    3.1 Programska memorija

    Mikrokontroler moe da adresira 64KB programske ROM memorije, slika 3.1.

    izlaznitranzistor

    1itanje stanja noice

    +Vcc

    pull-up

    noicaporta

    Izlazni

    flip-flopupis izlaznogstanja

    1itanje stanja izlaznog registra

    ubrzavaju%ekolo

  • 7/25/2019 Mikrokontroler 8051-upustvo.pdf

    10/70

    Mikroprocesorska elektronika 10

    Katedra za elektroniku

    Slika 3.1 Programska memorija

    Donjih 4KB programske memorije moe biti interna memorija (nalazi se unutar 1ipa) ako je EA=Vcc, ilispolja#nja memorija ako je EA=0. Signal PSE se koristi za pristup spolja#njoj programskoj memoriji, tako#to se vodi na OE ulaz EPROM-a. Kada se koristi spolja#nja memorija, port P2 slui za adresiranje vi#egbajta a P0 za adresiranje nieg bajta te memorije.

    3.2 Memorija podatakaMemorija podataka je tipa RAM, slika 3.2, a sastavljena je od interne (128 bajtova) i eksterne (do 64KB)memorije. Sem toga, u zoni interne memorije (u opsegu adresa 128 - 255) se nalazi i blok specijalnihregistara (Special Function Registers - SFR) za kontrolu periferijskih jedinica i rada mikrokontrolera.

    Slika 3.2 Memorija podataka

    F8h FFhF0h B F7hE8h EFhE0h ACC E7hD8h PSW DFhD0h D7hC8h (T2CON) (RCAP2L) (RCAP2H) (TL2) (TH2) CFh

    C0h C7hB8h IP BFhB0h P3 B7hA8h IE AFhA0h P2 A7h

    98h SCON SBUF 9Fh90h P1 97h88h TCON TMOD TL0 TL1 TH0 TH1 8Fh

    80h P0 SP DPL DPH PCON 87h

    Memorijska mapa SFR zone

    60KBexternal

    4KB int.

    64KB

    external

    FFFF

    1000

    0FFF

    0000

    ili

    SFRdirektnoadresiranje

    direktno iindirektnoadresiranje

    64KBexternal

    FF

    80

    7F

    00

    0FFF

    0000

  • 7/25/2019 Mikrokontroler 8051-upustvo.pdf

    11/70

    Mikroprocesorska elektronika 11

    Katedra za elektroniku

    30h-7Fh Slobodna memorija20h-2Fh Bit-adresibilna memorija

    18h-1Fh R0..R7 GRUPA 3

    10h-17h R0..R7 GRUPA 2

    08h-0Fh R0..R7 GRUPA 1

    00h-07h R0..R7 GRUPA 0

    Memorijska mapa internog RAM-a

    Slika 3.3 Memorijska mapa internog RAM-a i SFR zone

    Na slici 3.3, registri dati u zagradi postoje samo u mikrokontroleru 8052, a registri ozna1eni sa dvostrukimokvirom su bit-adresabilni.Na slici 3.4. uo1avamo registar PSW (Program Status Word), koji je veoma vaan za rad mikrokontrolera.Kod njega nije zanimljiva njegova globalna vrednost, nego isklju1ivo sadrina pojedina1nih bita.

    7 6 5 4 3 2 1 0

    C AC F0 RS1 RS0 OV - P

    Slika 3.4 PSW registar

    C(PSW.7) Carry Flag (Bit prenosa). Ovo je ekstenzija (deveti bit) za sve aritmeti1ke operacije i instrukcijepomeranja (#iftovanja), a tako2e je i glavni registar za 1-bitne operacije.

    AC (PSW.6) Auxiliary Carry Flag (pomo%ni bit prenosa), samo za BCD operacije, a odnosi se na prenosizme2u nieg i vi#eg nibla (donja i gornja grupa od po 4 bita). Koristi ga uglavnom mikrokontroler prekonaredbi za BCD konverziju.

    F0(PSW.5) Fleg 0 stoji na raspolaganju programeru kao bit za univerzalnu upotrebu.

    RS1i RS0(PSW.4 i PSW.3) Regster Select, slue za izbor dela internog RAM-a u kome je sme#tena teku%agrupa registara (registarska banka) R0-R7, u skladu sa slede%om tabelom:

    RS1 RS0 Mesto u RAM-u

    0 0 Grupa 0 00h-07h

    0 1 Grupa 1 08h-0Fh

    1 0 Grupa 2 10h-17h

    1 1 Grupa 3 18h-1Fh

    OV (PSW.2) Overflow (prekora1enje). Setuje se (postavlja na 1) ako je rezultat aritmeti1ke operacije sapredznakom takav da ne moe da se prikae u jednom bajtu, tj. do2e do prekora1enja opsega (na primer,sabiranjem dva pozitivna broja dobije se negativan broj ili obrnuto). Ako nema prekora1enja, ovaj bit %e biti0.

    (PSW.1) Rezervisano od stane proizvo2a1a za budu%i razvoj 1ipa.

    P(PSW.0) Parnost. Ako je broj setovanih bita u akumulatoru paran, ovaj bit %e biti postavljen na 1, a ako jeneparan, bi%e resetovan na 0. Uglavnom se koristi za generisanje bita parnosti kod slanja bajta na serijski portili za testiranje parnosti posle serijskog prijema.

    Data Pointer (DPTR)je 16-bitni registar, koji se sastoji od dva 8-bitna registra: DPH (Data Pointer High

    /

    vi#i bajt) i DPL (Data Pointer Low/nii bajt).

    Ostali registri posebne namene %e biti obja#njeni u poglavljima o tajmerima/broja1ima i prekidima.

  • 7/25/2019 Mikrokontroler 8051-upustvo.pdf

    12/70

    Mikroprocesorska elektronika 12

    Katedra za elektroniku

    4. INSTRUKCIJE

    Set instrukcija za 8051 obuhvata ukupno 111 instrukcija, od kojih je 49 jednobajtnih, 45 dvobajtnih i 17trobajtnih. Ako se uzmu u obzir i varijante istih instrukcija (na primer ista instrukcija primenjena na razli1iteregistre iz registarske banke), ukupno postoji 255 instrukcija. Generalni format koji vai u svakom asembleruza ove instrukcije je slede%i (mada postoje i varijacije u ovom formatu):

    mnemonik odredi#te, izvor

    Mnemoniknosi kod instrukcije, a operandi odreditei izvorsamo nose podatke ili adresu odakle se uzimajupodaci kojima se vr#i operacija. Ako postoje dva operanda, onda se rezultat operacije uvek sme#ta u prvi kojije naveden. Recimo, ako instrukcija glasi ADD A,B to je isto kao da smo u nekom vi#em programskomjeziku napisali A=A+B.

    4.1 Prenos podataka

    ADRESSING MODESMNEMONIC OPERATION

    DIR IND REG IMM

    EXECUTION

    TIME (s)

    MOV A, A= X X X X 1

    MOV , A = A X X X 1

    MOV , = X X X X 2

    MOV DPTR,#data16 DPTR=16-bit constant X 2

    PUSH INC SP:MOV4@SP4. X 2

    POP MOV ,4@SP4:DEC SP X 2

    XCH A, ACC and exchange data X X X 1

    XCHD A, @Ri ACC and @Ri exchange lownibbles

    X 1

    Slika 4.1 Prenos podataka sa instrukcijama koje pristupaju internoj memoriji

    ADRESS WIDTH MNEMONIC OPERATION EXECUTION TIME (s)8 bits MOVX A,@Ri Read external RAM @Ri 2

    8 bits MOVX @Ri,A Write external RAM @Ri 2

    16 bits MOVX A,@DPTR Read external RAM @DPTR 2

    16 bits MOVX @DPTR,A Write external RAM @DPTR 2

    Slika 4.2 Prenos podataka sa instrukcijama koje pristupaju spolja%njoj memoriji

    MNEMONIC OPERATION EXECUTION TIME (s)

    MOVC A,@A+DPTR Read program memory at (A+DPTR) 2

    MOVC A,@A+PC Read program memory at (A+PC) 2

    Slika 4.3 Instrukcije za #itanje lookup tabele

    Kod instrukcija iz grupe prenosa podataka (MOV, MOVC i MOVX) zarez izme2u operanda moemo dashvatimo kao strelicu nalevo, jer se uvek sadrina drugog operanda upisuje u prvi, pri 1emu se drugi nemenja. Ovo ne vai za instrukcije XCH i XCHD, gde operandi me2usobno izmenjuju vrednosti (kod XCHDsamo 1etiri najnia bita).Sve instrukcije iz ove grupe obavljaju prenos 8-bitnog podatka, sa dva izuzetka: XCHD vr#i razmenu 4-bitnog podatka, a MOV DPTR, #data upisuje 16-bitnu vrednost u registre DPH i DPL.Instrukcije 1ija svrha je upis bajta iz programske memorije ili komunikacija sa spoljnim RAM-om imaju 16-bitno adresno polje. Prvi slu1aj (upis bajta iz programske memorije u akumulator) se uglavnom koristi zalookup tabele, gde se pozicija u tabeli izra1unava iz bazne adrese po1etka tabele (obi1no se sme#ta u DPTR) iofseta (koji je u akumulatoru), pa je zbog toga ova instrukcija unapred pro#irena i glasi MOVCA,@A+DPTR. Ona izvr#ava ta1no ono #to moemo i da pretpostavimo: najpre sabere 16-bitni DPTR sa 8-

  • 7/25/2019 Mikrokontroler 8051-upustvo.pdf

    13/70

    Mikroprocesorska elektronika 13

    Katedra za elektroniku

    bitnim akumulatorom, pa rezultat iskoristi za adresiranje programske memorije, pro1ita bajt i upi#e ga uakumulator. Ako nam treba samo 16-bitno adrsiranje bez ofseta, pre ove instrukcije treba upisati 0 uakumulator (CLR A).Instrukcija MOVC A, @A+PC radi isto to, ali umesto DPTR uzima 16-bitnu adresu slede%e instrukcije uprogramu. Slede%i potprogram uzima vrednost 1lana pod rednim brojem koji je upisan u akumulator (u ovomslu1aju od 0 do 4), iz tabele koja sledi odmah iza potprograma:

    REL_PC: INC AMOVC A, @A+PCRETDB 27hDB 41hDB 00hDB 5EhDB 7Fh

    Instrukcija INC A je potrebna da bi se u kalkulaciji presko 1ila instrukcija RET, koja u programu zauzimajedan bajt. Ako ovde ima jo#koda, onda broj njegovih bajtova treba sabrati sa akumulatorom.Instrukcije koje komuniciraju sa spoljnim RAM-om (MOVX) mogu svoje 16-bitno adresno polje da uzmu izDPTR, ili kombinovanjem P2 (visoki bajt) i R0 ili Rl (niski bajt).Nijedna od instrukcija iz ove grupe ne uti1e na flegove, izuzev POP i MOV instrukcija kojima je prvioperand PSW, jer njihova funkcija i jeste izmena sadr

    aja registra koji sadr

    i flegove.

    4.2 Aritmeti(ke instrukcije

    ADRESSING MODESMNEMONIC OPERATION

    DIR IND REG IMM

    EXECUTION

    TIME (s)

    ADD A, A=A+ X X X X 1

    ADDC A, A=A++C X X X X 1

    SUBB A, A=A--C X X X X 1

    INC A A=A+1 1

    INC =+1 X X X 1

    INC DPTR DPTR =DPTR+1 2

    DEC A A=A-1 1

    DEC =-1 X X X 1MUL AB B:A = B*A 4

    DIV AB A=Int[A/B] B=Mod[A/B] 4

    DA A Decimal Adjust 1

    Mikrokontroler 8051 podrava sve 1etiri osnovne aritmeti1ke operacije. Samo osmobitna aritmetika jepodrana (sa izuzetkom INC DPTR, koji uve%ava stanje 16-bitnog registra), i to sa pozitivnim brojevima,mada overflow fleg omogu%ava sabiranje i oduzimanje sa predznakom. Sabiranje moe da se obavlja i sabinarno kodiranim decimalnim (BCD) brojevima, kod kojih osmobitni registar nosi dve odvojene decimalnecifre, svaku u po 4 bita.

    Sabiranje

    INC (increment) uve%ava operand za 1.ADD sabira akumulator sa izvornim operandom i sme#ta rezultat u A. Bit C je deveti bit rezultata, zapravobit prenosa za sabiranje vi#ebajtnih brojeva.ADDC (ADD with Carry) sabira akumulator sa izvornim operandom i sa bitom C, a rezultat sme#ta uakumulator.

    Primer sabiranja vi#ebajtnih binarnih brojeva:Ako treba DPTR sabrati sa 16-bitnim binarnim brojem 1iji je vi#i bajt u R4, a nii u R5 i rezultat smestiti uDPTR, program moe da izgleda ovako:

    MOV A,DPL ; uzmi nii bajtADD A,R5 ; saberiMOV DPL,A ; smesti rezultat nieg bajta

  • 7/25/2019 Mikrokontroler 8051-upustvo.pdf

    14/70

    Mikroprocesorska elektronika 14

    Katedra za elektroniku

    MOV A,DPH ; uzmi vi#i bajtADDC A,R4 ; saberi i dodaj prenosMOV DPH,A ; smesti rezultat vi#eg bajta

    DA A (Decimal Add Adjust for Addition) koriguje rezultat posle binarnog sabiranja, tako da odgovara zaBCD brojeve. Na primer, ako akumulator i registar B sadre BCD brojeve (00-99) onda %e slede%i programsabrati ova dva BCD broja i ispravan BCD rezultat smestiti u akumulator:

    ADD A,B ; saberi binarno

    DA A ; koriguj rezultatAko je rezultat posle instrukcije DA A ve%i od 99, tada je bit C (prenos) setovan.

    Oduzimanje

    DEC (decrement) umanjuje operand za 1.SUBB (subtract with borrow) oduzima drugi operand od prvog (koji je uvek akumulator). Po#to instrukcijaSUB (oduzimanje na koje bit C ne uti1e) ne postoji u setu za 8051, moemo da ga sinteti#emo tako #to preSUBB izvedemo jedno CLR C (C=0).Oduzimanje vi#ebajtnih binarnih brojeva se vr#i sli1no kao kod sabiranja. Od DPTR treba oduzeti 16-bitnibinarni broj 1iji je vi#i bajt u R4, a nii u R5 i rezultat smestiti u DPTR:

    MOV A,DPL ; uzmi nii bajtCLR C ; da bi SUBB radio kao SUBSUBB A,R5 ; oduzmi R5MOV DPL,A ; smesti rezultat nieg bajta

    MOV A,DPH ; uzmi vi#i bajtSUBB A,R4 ; oduzmi R4 i prenosMOV DPH,A ; smesti rezultat vi#eg bajta

    Mno#enje

    MUL AB mnoi dva 8-bitna broja bez predznaka, od kojih je jedan sme#ten u akumulator, a drugi u Bregistar, i 16-bitni rezultat sme#ta u akumulator (nii bajt) i registar B (vi#i bajt). Po#to je ovde rezultat 16-bitni, prekora1enje nije mogu%e pa je bit C uvek resetovan, a bit OV je setovan ako je rezultat ve%i od 255(odnosno ako je registar B ve%i od 0), a resetovan ako je B=0.

    Deljenje

    DIV AB deli akumulator sa registrom B i celobrojni rezultat sme#ta u A, a ostatak deljenja u B. Deljenje sanulom (ako je B=0) rezultira sa nepredvidivim sadrajem registara, i u tom slu1aju bit OV %e biti setovan.Ina1e, u normalnom slu1aju (kad je B>0) bitovi OV i C su resetovani.

    Logi%ke instrukcij e

    ADRESSING MODESMNEMONIC OPERATION

    DIR IND REG IMM

    EXECUTION

    TIME (s)

    ANL A, A=A AND X X X X 1

    ANL ,A = AND A X 1

    ANL ,#data = AND #data X 2

    ORL A, A=A OR X X X X 1

    ORL ,A = OR A X 1

    ORL ,#data = OR #data X 2

    XRL A, A=A XOR X X X X 1

    XRL ,A = XOR A X 1

    XRL ,#data = XOR #data X 2CRL A A=00H 1

    CPL A A= not A 1

    RL A Rotate A left 1 bit 1

    RLC A Rotate left through Carry 1

    RR A Rotate A right through Carry 1

    RRC A Rotate right through Carry 1

    SWAP A Swap nibbles in A 1

  • 7/25/2019 Mikrokontroler 8051-upustvo.pdf

    15/70

    Mikroprocesorska elektronika 15

    Katedra za elektroniku

    MNEMONIC OPERATION EXECUTION TIME (s)

    ANL C,bit C = C AND bit 2

    ANL C,/bit C = C AND NOT bit 2

    ORL C,bit C = C or bit 2

    ORL C,/bit C = C or NOT bit 2

    MOV C,bit C = bit 1

    MOV bit,C bit = C 2CLR C C = 0 1

    CLR bit Bit = 0 1

    SETB C C = 1 1

    SETB bit bit = 1 1

    CPL C C = NOT C 1

    CPL bit Bit = NOT bit 1

    JC rel Jump if C = 1 2

    JNC rel Jump if C = 0 2

    JB bit,rel Jump if bit = 1 2

    JNB bit,rel Jump if bit = 0 2

    JBC bit,rel Jump if bit = 1;CLR bit 2

    CLR resetuje navedeni bit, a CLR A resetuje sve bitove u akumulatoru.CPL komplementira navedeni bit (menja mu stanje), a CPL A komplementira sve bitove u akumulatoru.SETB setuje navedeni bit.RL (RR) rotira nalevo (nadesno) akumulator. Bit 7 (bit 0) dolazi na mesto bita 0 (bita 7). Bit koji izlazi sakrajnje pozicije i ulazi sa druge strane, kopira se i u prenos C.RLC (RRC) rotira nalevo (nadesno) akumulator kroz bit C (9-bitna rotacija). Tako %e bit C da se preseli u bit0 (bit 7), a bit 7 (bit 0) u bit C.SWAP rotira akumulator 4 puta nalevo (odnosno na desno), tj. vr#i zamenu nieg i vi#eg nibla akumulatora.ANL izvodi logi1ku operaciju AND izme2u prvog i drugog operanda, a rezultat sme#ta u prvi operand. Ovaoperacija je mogu%a sa operandima koji zauzimaju jedan bajt ili jedan bit.ORL izvodi logi1ku operaciju OR izme2u prvog i drugog operanda, a rezultat sme#ta u prvi operand. Ovaoperacija je mogu%a sa operandima koji zauzimaju jedan bajt ili jedan bit.XRL izvodi logi1ku operaciju XOR izme2u prvog i drugog operanda (oba su 8-bitna), a rezultat sme#ta u

    prvi operand.

    4.3 Potprogrami

    ACALL (Absolute Call) i LCALL (Long Call) pozivaju potprograme na slede%i na1in: najpre 16-bitnu adresuslede%e instrukcije u programu stave na stek i uve%aju SP za dva, a onda u PC upi#u pridruenu adresu. Taadresa u slu1aju poziva ACALL moe da se na2e samo u istom bloku od 2K u kome je i prva instrukcijaposle poziva (ona koja se stavlja na stek), a kod LCALL nema ograni1enja, jer je adresa 16-bitna. Razlog zaograni1enje kod ACALL je taj #to ova instrukcija zauzima samo 2 bajta (prema 3 bajta koje zauzimaLCALL), i 5 bitova zauzima kod instrukcije, pa tako za adresno polje ostaje samo 11 bitova.RET izaziva akciju koja je inverzna instrukciji ACALL odnosno LCALL: sa steka se uzimaju dva bajta isme#taju u programski broja1. SP se umanjuje za dva. To je povratak iz potprograma, jer %e posle ovogaprogram nastaviti da se izvr#ava od instrukcije koja je sledila iza poziva.RETI radi isto #to i RET, samo #to se uz to omogu%ava i prekid teku%eg nivoa prioriteta. Ovo je standardnainstrukcija za povratak iz prekidnog potprograma.

    4.4 Bezuslovni skokovi

    MNEMONIC OPERATION EXECUTION TIME (s)

    JMP addr (*) Jump to addr 2

    JMP @A+DPTR Jump to A+DPTR 2

    CALL addr Call subroutine at addr 2

    RET Return from subroutine 2

  • 7/25/2019 Mikrokontroler 8051-upustvo.pdf

    16/70

    Mikroprocesorska elektronika 16

    Katedra za elektroniku

    RETI Return from interrupt 2

    NOP No operation 1(*) Pod naredbom JMP se podrazumeva jedna od tri naredbe skoka, AJMP, LJMP i SJMP.

    AJMP (Absolute jump) i LJMP (Long Jump) prenose pridruenu adresu u programski broja1, tako da %eprogram nastaviti da se izvr#ava nadalje od te adrese. AJMP i LJMP su po broju bitova adrese analognipozivima potprograma ACALL i LCALL.

    SJMP (Short jump) je dvobajtna instrukcija koja omogu%ava skokove u opsegu -128 do +127 u odnosu naslede%u instrukciju u programu. Sem duine skoka, razlika izme2u SJMP i AJMP je u tome #to SJMP moeda presko1i blok od 2KB, dok AJMP uvek ska1e unutar ovakvog bloka.U tabeli, kod instrukcije 3JMP addr4, re1JMP se odnosi na sve tri instrukcije skoka, AJMP, LJMP i SJMP.

    JMP @A+DPTR ska1e na adresu koja se izra1unava tako #to se sabere 16-bitni registar DPTR sa ofsetomkoji se nalazi u akumulatoru. Ovo je od koristi kod sloenih grananja u potprogramu, kad od stanjaakumulatora zavisi na koju adresu treba izvesti skok (tabelarni skokovi). Slede%i program %e izvesti skok najednu od lokacija iz tabele JP_TAB, zavisno od stanja akumulatora na ulazu:

    MOV B,3 ; priprema za mnoenjeMUL AB ; A = A*3, jer je duina LJMP instrukcije 3 bajtaMOV DPTR,#JP_TABJMP @A+DPTR ; skok na eljeno mesto

    JP_TAB: LJMP SERVICE_ALJMP SERVICE_BLJMP SERVICE_CLJMP SERVICE_D

    Svaka instrukcija u tabeli mora da zauzme po 3 bajta, a posebnu panju treba obratiti da akumulator na ulazunema vrednost ve%u od broja 1lanova tabele umanjenog za 1 (u ovom primeru A mora da bude u opsegu od 0do 3, jer ima 4 instrukcije skoka).

    4.5 Uslovni skokovi

    ADRESSING MODESMNEMONIC OPERATION

    DIR IND REG IMM

    EXECUTION

    TIME (s)

    JZ rel Jump if A = 0 2

    JNZ rel Jump if A 0 2

    DJNZ ,rel Decrement and jump if not zero X X 2

    CJNE A,,rel

    Jump if A X X 2

    CJNE,#data,rel

    Jump if #data X X 2

    Svi uslovni skokovi su mogu%i samo u opsegu -128 do +127 u odnosu na slede%u instrukciju u programu, kao#to je slu1aj kod SJMP. Ako je potrebno sko1iti na neku dalju ta1ku, treba blizu uslovnog skoka postavitirepetitor, koji se sastoji od instrukcije AJMP ili LJMP, i onda izvesti kratki uslovni skok na repetitor. Drugamogu%nost je da se komplementira uslov i presko1i repetitor, kao u ovom primeru, koji zamenjuje skok JZFAR_LAB:instrukcija

    JZ FAR_LABse zamenjuje sekvencomJNZ LAB1LJMP FAR_LAB

    LAB1:

  • 7/25/2019 Mikrokontroler 8051-upustvo.pdf

    17/70

    Mikroprocesorska elektronika 17

    Katedra za elektroniku

    Bitovi koji mogu da se iskoriste za uslovne skokove:

    JZ (Jump on Zero) izvr#ava skok ako je akumulator jednak nuliJNZ (Jump on Not Zero) izvr#ava skok ako je akumulator razli1it od nuleJC (Jump on Carry) izvr#ava skok ako je flag C setovanJNC (Jump on Not Carry) izvr#ava skok ako je fleg C resetovanJB (Jump on Bit) izvr#ava skok ako je navedeni bit setovan

    JNB (jump on Not Bit) izvr#ava skok ako je navedeni bit resetovanJBC (Jump on Bit and Clear bit) izvr#ava skok ako je navedeni bit setovan i istovremeno resetuje navedenibitCJNE (Compare and jump if Not Equal) poredi prvi operand sa drugim i ska1e ako su razli1iti. Bit C %e bitisetovan ako je prvi operand manji od drugog, u suprotnom bi%e resetovan.DJNZ (Decrement and jump if Not Zero) umanjuje operand za 1, a ako je posle umanjenja operand razli 1itod nule, ska1e na navedenu adresu, dok u suprotnom ignori#e skok i nastavlja izvr#enje programa od slede%einstrukcije (sli1no instrukciji LOOP kod mikroprocesora 8086).

    4.6 Uticaj instrukcija na flegove

    U toku izrade programa od velike je vanosti znati na koji na1in instrukcije uti1u na flegove u PSW registru.Neke instrukcije uop#te ne uti1u na flegove C (carry), OV (overflow) i AC (auxiliary carry), pa te instrukcijenisu pomenute u tabeli.

    C OV ACADD X X X

    ADDC X X X

    SUBB X X X

    MUL 0 X -

    DIV 0 X -

    DA X - -

    RRC X - -

    RLC X - -

    SETB C 1 - -

    CLR C 0 - -

    CPL C X - -ANL C,bit X - -

    ANL C,/bit X - -

    ORL C,bit X - -

    ORL C,/bit X - -

    MOV C,bit X - -

    CJNE X - -

    Legenda:

    - instrukcija ne uti1e na fleg0 instrukcija resetuje fleg1 instrukcija setuje fleg

    X fleg se menja zavisno od rezultata operacijeNapomena: instrukcije koje direktno menjaju sadraj registra PSW %e uticati na flegove, bez obzira #to ovdenisu navedene.Preostala dva flega: P (parnost) i Z (zero) nisu fizi1ki implementirani u PSW registru kao flip-flopovi, negosu zapravo grupe logi1kih kola koje testiraju stanje akumulatora. Tako %e izlaz iz logike za fleg P biti visokako je broj setovanih bita u akumulatoru paran, a za fleg Z ako su svi biti u akumulatoru jednaki nuli. Prematome, nema nikakvog smisla navoditi kako instrukcije uti1u na ove flegove, jer to zavisi samo od trenutnogstanja akumulatora.

  • 7/25/2019 Mikrokontroler 8051-upustvo.pdf

    18/70

    Mikroprocesorska elektronika 18

    Katedra za elektroniku

    5. TAJMERI/BROJA#I

    Mikrokontroler 8051 sadri dva #esnaestobitna tajmersko-broja1ka registra. Ozna1avaju se kao tajmer 0 itajmer 1. Mogu sluiti kao broja1ki registri, ili tajmeri koji mere zadati vremenski interval. Oba tajmeramogu raditi u 1etiri radna reima.Kada radi kao broja1, sadraj tajmerskog registra se uve%ava za jedan na svaku silaznu ivicu odgovaraju%egulaza mikrokontrolera (T0 za tajmer 0 i T1 za tajmer 1). Maksimalna frekvencija ulaznog signala koju broja 1

    moe da prati je 24 puta manja od radnog takta mikrokontrolera.Kad radi kao tajmer, sadraj tajmerskog registra se uve%ava za jedan u svakom ma#inskom ciklusu. Jedanma#inski ciklus traje 12 perioda radnog takta mikrokontrolera. (Ako je radni takt 12MHz, registar se uve %avasvake mikrosekunde.)

    GATEGATE M1 M1 M0C/T C/TM0

    (MSB) (LSB)

    TAJMER 1 TAJMER 0

    kontrola gejta. Kada je ovaj bit naedinici, odgovaraju%i tajmer moe daroji kada je pripadaju%i TR bit jedinica i

    pripadaju%i INT ulaz mikrokontroleravosok. Ako je vrednost GATE bita 0,

    dovoljno je da samo odgovaraju%i bit TRbude visok

    ovaj bit odre2uje da li %e odgovaraju%itajmer da radi kao broja1opadaju%ih ivicana odgovaraju%em T ulazu (C/T=1) ili kaotajmer (C/T=0)

    Mod 0. tajmer radi kao 13-bitni broja1

    Mod 1. tajmer radi kao 16-bitni broja1

    Mod 2. tajmer radi kao osmobitni broja1.Broja1ki registar je TL. nakon preticanja,TL se puni sadrajem TH registra (autoreload)

    Mod 3, Tajmer1 je u ovom moduzaustavljen, a tajmer nula radi kao dva

    odvojena osmobitna tajmera

    GATE

    C/T

    M1 M0

    0 0

    0 1

    1 0

    1 1

    Slika 5.1 Registar TMOD

    Svakom tajmeru/broja1u pripadaju po dva osmobitna registra, TH0 i TL0 tajmeru 0, a TH1 i TL1 tajmeru 1.

    5.1 Kontrola rada tajmera

    Radom tajmera upravlja se pomo%u registara TMOD (slika 5.1) i TCON (slika 5.2). Gornja 1etiri bita registraTMOD kontrol-i#u rad tajmera 1, a donja 1etiri rad tajmera 0. Bitovi TR1 i TR0 registra TCON odre2uju da

    li %e odgovaraju%i tajmer/broja1biti aktivan ili ne. Npr. ako je broja10 neaktivan on se ne%e uve%avati kadana ulazu T0 nastupi prelaz sa visokog na nizak nivo. Ovo je ilustrovano na slikama 5.3, 5.4 i 5.5. Na 1in radatajmera bira se kombinacijom bitova M1 i M0 registra TMOD.

    IE1TF1 TF0 IE0 IT0TR1 IT1TR0

    (MSB) (LSB)

    zastavica preteka tajmera 1. Automatski seri#e kada se sko1i na potprogram za

    opsluivanje prekida

    postavljanjem ovog bita tajmer 1 po1inje dabroji. U suprotnom ne broji

    zastavica detektovanog spolja#njeg zahteva zaprekidom 1. Kada je zahtev detektovan, postavljase na jedinicu, a bri#e se automatski kada sesko1i na potprogram za opsluivanje prekida

    odre2uje da li je ulaz za spolja#nji prekid 1osetljiv na opadaju%u ivicu ili na nizak nivo

    TF1

    TR1

    IE1

    IT1

    IE0

    IT0

    TF0

    TR0

    zastavica preteka tajmera 0. Automatski se

    ri#e kada se sko1i na potprogram zaopsluivanje prekida

    postavljanjem ovog bita tajmer 0 po1inje dabroji. U suprotnom ne broji

    zastavica detektovanog spolja#njeg zahteva za

    prekidom 0. Kada je zahtev detektovan, postavljase na jedinicu, a bri#e se automatski kada sesko1i na potprogram za opsluivanje prekida

    odre2uje da li je ulaz za spolja#nji prekid 0osetljiv na opadaju%u ivicu ili na nizak nivo

    Slika 5.2 Registar TCON

    Bitovi C/T registra TMOD (u vi#a ili nia 1etiri bita u zavisnosti od tajmera) defini#u da li odgovaraju%itajmer radi kao tajmer (C/T=0) ili kao broja1 (C/T=1). Bitovi GATE svojim stanjem 0 omogu%uju

  • 7/25/2019 Mikrokontroler 8051-upustvo.pdf

    19/70

    Mikroprocesorska elektronika 19

    Katedra za elektroniku

    odgovaraju%em tajmeru da radi uvek kada je odgovaraju%i TR bit jednak jedinici. Ako je GATE=1, radtajmera uslovljen je i stanjem na ulazu INT1 odnosno INT0 u zavisnosti od tajmera. Odgovaraju%i INT ulaztada mora biti jedinica da bi tajmer radio.Obja#njenja koja slede vae za oba tajmera osim tamo gde je druga1ije napomenuto.

    5.2 Modovi rada tajmera 0 i 1

    Mod 0Ovaj mod je ilustrovan na slici 5.3. U ovom modu tajmer predstavlja 13-bitni tajmer/broja1. Kada svi bitoviregistra postanu jedinice, slede%im uve%anjem sadraja registra svi bitovi postaju nule. To se zove preticanjetajmera/broja1a. Preticanje izaziva postavljanje odgovaraju%e interapt zastavice (bit TF1 registra TCON zatajmer 1 i bit TF0 za tajmer 0). Postavljanje interapt zastavice izaziva prelazak na izvr#avanje servisne rutineako je odgovaraju%i interapt dozvoljen. (Bitovi TF1 i TF0 se automatski vra%aju na vrednost 0 kada se desiskok na interapt servisnu rutinu.)

    TxUlaz

    TRx

    GATE

    INTx ulaz

    OSC

    TLx THx TFx

    C/T=0

    C/T=1

    CONTROL

    (5 ili 8 bita) (8 bita)

    interapt

    x je ili 0 ili 1 u zavisnosti od toga da li je

    u pitanju tajmer 0 ili tajmer 1

    /12

    Slika 5.3 Mod 0 i 1 Tajmera 0 ili 1

    Pomenuti 13-bitni registar sastoji se od svih osam bita TH i niih pet bita TL odgovaraju%eg tajmer registra.Vi#a tri bita TL registra u ovom modu su nedefinisana. Izbor moda 0 vr#i se postavljanjem bitova M1 i M0 uregistru TMOD na 0.

    TxUlaz

    TRx

    GATE

    INTx ulaz

    OSC

    TLx

    THx

    TFx

    C/T=0

    C/T=1

    CONTROL

    (8 bita)

    (8 bita)

    x je ili 0 ili 1 u zavisnosti

    od toga da li je u pitanju

    tajmer 0 ili tajmer 1

    /12

    RELOAD

    interapt

    Slika 5.4 Mod 2 Tajmera 0 ili 1

  • 7/25/2019 Mikrokontroler 8051-upustvo.pdf

    20/70

    Mikroprocesorska elektronika 20

    Katedra za elektroniku

    Mod 1

    Ovaj mod je po svemu isti kao i mod 0 s tim #to je broja1ki registar u ovom slu1aju 16-bitni. Koristi se svihosam bitova i TL i TH registra. Bit TF1 ili TF0 se opet postavlja pri prelasku iz stanja svih #esnaest bitajednako 1 u stanje svih #esnaest bita jednako 0.

    Mod 2

    U ovom modu tajmer radi kao osmobitni tajmer sa automatskim punjenjem inicijalne vrednosti nakon

    preticanja. Rad u modu 2 ilustrovan je na slici 5.4. Kao tajmer/broja1uve%ava se odgovaraju%i TL registar, akada do2e do preticanja postavlja se bit TF1 ili TF0 u zavisnosti od tajmera, dok se vrednost izodgovaraju%eg TH registra upisuje u TL. Vrednost TH registra ostaje neizmenjena.

    Mod 3

    Ovaj mod razli1ito prihvataju tajmer 0 i tajmer 1. Kada se tajmer 1 prebaci u mod 3 on jednostavno prestaneda broji zadravaju%i svoje prethodno stanje, kao da je bit TR1=0. Ako je tajmer 0 u modu 3, a tajmer 1 ubilo kom modu osim moda 3, tajmer 1 nastavlja svoj regularan rad u datom modu samo #to ne moe dageneri#e interapt jer je bit TF1 upravljan tajmerom 0

    Tajmer 0 u modu 3 radi kao dva odvojena osmobitna tajmera. Bitovi GATE, TR0 i C/T (i ulazi T0 i INT0)kontroli#u brojanje registra TL0 1ijim preticanjem se postavlja bit zastavica TF0. Registar TH0 brojima#inske cikluse, a njegovim preticanjem postavlja se bit zastavica TF1. Bit TR1 kontroli#e brojanje TH0.Dakle, tajmerom 0 je kontrolisano izazivanje interapta i tajmera 0 i tajmera 1.

    T0 Ulaz

    TR0

    GATE

    INT0 ulaz

    OSC

    TL0

    TH0

    TF0

    C/T=0

    C/T=1 (8 bita)

    (8 bita)

    /12

    interapt

    TF1

    interapt

    (TF0)

    (TF1)

    OSC/12

    TR1

    Slika 5.5 Mod 3 Tajmera 0

    6. SISTEM PREKIDA MIKROKONTROLERA 8051

    U mikroprocesorskim sistemima 1esto je potrebno istovremeno pratiti rad vi#e perifernih jedinica. To semoe posti%i neprestanim prozivanjem jedne po jedne jedinice, proveravaju%i njihova stanja. Ako se utvrdi daje do#lo do neke promene na nekoj od tih periferija na koju treba reagovati, preduzimaju se odgovaraju %eakcije kao odgovor na promene. Na primer, nakon startovanja konverzije A/D konvertora neprekidno se vr#i1itanje stanja BUSY noice konvertora, koje ozna1ava da li je konverzija u toku ili je zavr#ena. Ako nekoo1itavanje pokae da je konverzija zavr#ena, tada se u1ita odgovaraju%i podatak sa konvertora. U ovomslu1aju mikrokontroler je neprestano zauzet proverom stanja na liniji BUSY A/D konvertora.Drugi na1in pra%enja rada vi#e perifernih jedinica je da same jedinice jave kada je potrebno opslu ivanje. Tametoda se naziva metodom prekida, dok se prethodno opisana naziva metodom prozivanja (pooling). Dakle,kada se koristi metoda prekida, periferna jedinica posebnim signalom javlja kada je neophodna reakcijaupravlja1kog ure2aja tj. mikrokontrolera. Taj signal se zove zahtev za prekidom odnosno interaptom(interrupt request). Slu1aj iz prethodnog primera bi se mogao re#iti povezivanjem BUSY noice konvertorana odgovaraju%u INT (spolja#nji prekid) noicu mikrokontrolera. Kada se BUSY deaktivira izaziva se prekid.Nakon #to mikrokontroler uvai zahtev, prelazi na podprogram za opsluivanje prekida (u ovom slu1aju1itanje vrednosti konverzije), a nakon toga nastavlja sa izvr#avanjem programa gde je prekinut u trenutku

  • 7/25/2019 Mikrokontroler 8051-upustvo.pdf

    21/70

    Mikroprocesorska elektronika 21

    Katedra za elektroniku

    stizanja zahteva za prekidom. U ovom slu1aju mikrokontroler se ne optere%uje proverom stanja na periferijinego samo izvodi odgovaraju%u akciju kada je to potrebno. Iz ovoga je jasno da u ovom slu1ajumikrokontroler potro#i mnogo manje vremena za opslulivanje periferija, zbog 1ega je i program moe bitimnogo efikasniji.

    6.1 Izvori prekida kod 8051

    Kod ovog mikrokontrolera postoji pet izvora prekida:

    Spoljanji prekidi 0 i 1 (external i nterrupt)

    Mikrokontroler poseduje dva ulaza /INT0 i INT1 (deo su porta 3). Na njih se moe dovesti signal zahteva zaprekidom sa bilo kog ure2aja iz okruenja mikrokontrolera. Dva bita, IT0 i IT1 registra TCON (pominjankod tajmera), odre2uju ho%e li ulazi INT0 i INT1 biti osetljivi na nizak nivo ili opadaju %u ivicu signalazahteva za prekidom. Na primer, ako je IT0=0 pojava niskog nivoa na INT0 %e se smatrati zahtevom zaprekidom, dok u slu1aju IT0=1 samo opadaju%a ivica signala na INT0 izaziva prekid, a slede%i zahtev moese desiti se tek kada se INT0 vrati na visok nivo i ponovo padne na nizak (slika 6.1). U oba slu 1aja vae%izahtev za prekidom postavlja odgovaraju%i bit IE registra TCON na jedinicu (zahtev na INT0 bit IE0, a naINT1 bit IE1). Tek postavljanje ovih bita izaziva prelazak na odgovaraju%i potprogram za opsluivanjeprekida (ako je prekid dozvoljen tj . nije maskiran u registru IE). Bitovi IE0 i IE1 se automatski vra%aju ustanje 0 kada mikrokontroler pre2e na potprogram za opsluivanje odgovaraju%eg prekida. Adresa od kojepo1inje potprogram za opsluivanje spolja#njeg prekida 0 je 0003H. Za spolja#nji prekid 1 ta adresa je0013H.

    IE0INT0 IT0

    IE1INT1 IT1

    TF0

    TF1

    RI

    TI

    IZVORI

    PREKIDA

    Slika 6.1 Izvori prekida kod 8051

    Prekidi tajmera 0 i 1 (timer in terr upt)

    Preticanje tajmera 0 ili 1, u bilo kom modu, moe predstavljati zahtev za prekidom. Kao #to je pomenutoranije, preticanje tajmera 0 ili 1 postavlja bite TF0 ili TF1 registra TCON, ozna1avaju%i da je do#lo dopreticanja. Ako je odgovaraju%i prekid dozvoljen, tj. nije maskiran, prelazi se na potprogram za opsluivanjeprekida, a time se automatski bit TF0 ili TF1, u zavisnosti od opsluenog prekida, vra%a na vrednost 0.Servisni potprogram za prekid tajmera 0 po1inje na adresi 000BH, a za prekid tajmera 1 na adresi 001BH.

    Prekid serij skog int erf ejsa (serial port i nterr upt)

    Mikrokontroler poseduje i dvosmerni serijski interfejs. Ukoliko je dozvoljen prekid serijskog interfejsa,zahtev za prekidom %e se desiti svaki put kada je zavr#eno slanje re1i preko serijske veze, kao i svaki putkada je primljena cela re1. Servisni potprogram za prekid serijskog interfejsa po1inje na adresi 0023H.

  • 7/25/2019 Mikrokontroler 8051-upustvo.pdf

    22/70

    Mikroprocesorska elektronika 22

    Katedra za elektroniku

    6.2 Maskiranje prekida

    Svaki od pomenutih prekida se moe dozvoliti ili zabraniti tj. maskirati. Kada je prekid maskiran,odgovaraju%i biti (TF0, TF1, IE0 i IE1) se postavljaju na 1, ali to ne izaziva prelazak na odgovaraju%i servisnipotprogram. Kod 8051 svaki od izvora prekida se moe maskirati, #to se kontroli#e preko registra IE(interrupt enable, slika 6.2).

    Kao #to se vidi na slici 6.2, postavljanjem odre2enog bita na 1 odgovaraju%i prekid biva

    dozvoljen. U suprotnom je maskiran. Najvi#i bit EA (enable all) kontroli#e maskiranje svihprekida. Ukoliko je on 0, svi prekidi su maskirani bez obzira na stanje bitova istog registrakoji kontroli#u maskiranost pojedina1nih izvora prekida.

    ET1EA X ET0 EX0X EX1ES

    (MSB) (LSB)

    ako je ovaj bit 0, svi prekidi su maskirani.Ako je 1, svaki prekid se pojedina1nomaskira pomo%u ostalih bita ovog registraako je ovaj bit jednak jedinici, prekidserijskog porta je dozvoljen, ina1e jemaskiran

    ako je ovaj bit jednak jedinici, prekid

    zbog preticanja tajmera 1 je dozvoljen, usuprotnom je maskiran

    ako je ovaj bit jedinica, spolja #nji prekid 1e dozvoljen, u suprotnom je maskiran

    EX1

    ET0

    EX0

    EA

    ES

    ET1

    ako je ovaj bit jednak jedinici, prekid zbogpreticanja tajmera 0 je dozvoljen, usuprotnom je maskiran

    ako je ovaj bit jedinica, spolja #nji prekid 0e dozvoljen, u suprotnom je maskiran

    Slika 6.2 Registar za maskiranje prekida (IE)

    6.3 Struktura prioriteta prekida

    Kod 8051 svaki prekid moe da ima dva nivoa prioriteta. Ako se tokom opsluivanja nekog prekida desi noviprekid, opsluivanje prethodnog %e se prekinuti samo ako je novi prekid vi#eg prioriteta. Prioritet prekidaodre2uje stanje registra IP (slika 6.3). Ako je neki bit 0, njemu pripadaju %i prekid je nieg prioriteta, a usuprotnom vi#eg. Na taj na1in se svi prekidi dele u dve grupe po prioritetu. U slu1aju da dva (ili vi#e) prekidanastupe istovremeno, prvo se opsluuje prekid sa vi#im, a zatim sa niim prioritetom. Ako su oba prekidaistog prioriteta, tada je redosled prioriteta fiksan i slede%i: spolja#nji prekid 0, tajmer 0, spolja#nji prekid 1,tajmer 1 i na kraju prekid serijskog interfejsa. Naravno, ovaj redosled va i samo ako zahtevi za prekidom

    stignu istovremeno.

    PT1X X PT0 PX0X PX1PS

    (MSB) (LSB)

    postavljanjem ovog bita na jedinicu,prekid serijskog porta se programira kao

    prekid vi#eg prioriteta

    postavljanjem ovog bita na jedinicu,prekid tajmera 1 se programira kao prekidvi#eg prioriteta

    PX1

    PT0

    PX0

    PS

    PT1

    postavljanjem ovog bita na jedinicu,spolja#nji prekid 1 se programira kaoprekid vi#eg prioriteta

    postavljanjem ovog bita na jedinicu,prekid tajmera 0 se programira kao prekidvi#eg prioriteta

    postavljanjem ovog bita na jedinicu,spolja#nji prekid 0 se programira kaoprekid vi#eg prioriteta

    Slika 6.3 Registar za kontrolu prioriteta prekida (IP)

    6.4 Procedura pozivanja potprograma za opslu&ivanje prekida

    Potrebno je jo#razmotriti kako se ta1no odvija priznavanje zahteva za prekidom i prelazak na potprogram zaopsluivanje prekida. Nakon izvr#enja svake pojedine instrukcije proverava se stanje svih bita kojiozna1avaju validan zahtev za prekidom (IE0, TF0, IE1, TF1, TI i RI). Svaki od ovih bita moe biti postavljenautomatski, validnim zahtevom za prekidom (uobi1ajena situacija), ili softverski, upisivanjem u odgovaraju%i

  • 7/25/2019 Mikrokontroler 8051-upustvo.pdf

    23/70

    Mikroprocesorska elektronika 23

    Katedra za elektroniku

    registar (softversko izazivanje prekida) /efekat je isti. Ako se utvrdi da postoji zahtev za prekidom, a pritome:

    Taj prekid nije maskiran.

    Nije u toku opsluivanje prekida istog ili vi#eg prioriteta. Instrukcija koja je slede%a po redu nije RETI ili instrukcija upisa u registre IE ili IP.

    tada se na stek stavlja sadraj programskog broja1a (PC/16 bita), a sam programski broja1se puni adresompo1etka servisnog potprograma tog konkretnog prekida (registar PSW / registar stanja - se NE 1uva na

    steku). Po1etne adrese servisnih potprograma su fiksne i unapred zadate za svaku vrstu prekida:vrsta prekida po1etna adresa servisne rutine

    spolja#nji prekid 0 0003Hprekid tajmera 0 000BH

    spolja#nji prekid 1 0013Hprekid tajmera 1 001BH

    prekid serijskog porta 0023H

    Ovo je, u principu, ekvivalentno izvr#enju instrukcije LCALL sa po1etnom adresom servisnog potprogramakao argumentom.Servisni potprogram se obavezno mora zavr#iti instrukcijom RETI koja sa steka skida poslednji gurnuti 16-bitni podatak i ubacuje ga u programski broja1, #to je adresa instrukcije koja je trebalo da se izvr#i kada jeprekid nastupio. Dakle, nakon instrukcije RETI nastavlja se sa redovnim izvr#avanjem programa. Vano jeprimetiti da isto to radi i instrukcija RET samo #to ona ne obave#tava hardver mikrokontrolera da je prekidopsluen te je instrukcija RETI obavezna. Dodatno, za razliku od naredbe RET, naredba RETI bri #e interneindikatore teku%eg prekida, 1ime su novi prekidi istog prioriteta dozvoljeni.

    7. LISTA INSTRUKCIJA

    Na slede%im stranama dat je pregled svih instrukcija za mikrokontroler 8051 sa mnemonikom, kratkimopisom operacije, brojem bajtova koje instrukcija zauzima u programskoj memoriji i vremenom koje jepotrebno za izvr#enje instrukcije, datom u broju taktova oscilatora.Skra%enice kori#%ene u setu instrukcija:

    Rn - Registar R0-R7 direct - 8-bitna adresa lokacije na kojoj se nalazi podatak. Ovo moe da bude u internom RAM-u (0-

    127) ili neki od specijalnih registara (na primer neki port, upravlja1ki registar, statusni registar, itd) @Ri - lokacija u internom RAM-u (0-127) adresirana 8-bitnim registrom R0 ili Rl #data - 8-bitna konstanta neposredno pridruena u instrukciji #data16 - 16-bitna konstanta neposredno pridruena u instrukciji

    addrl6 - 16-bitna adresa, koja sledi iza instrukcija LJMP ili LCALL addr11 - 11-bitna adresa, koja sledi iza instrukcija AJMP ili ACALL. Skok koji izvode ove

    instrukcije je ograni1en samo na zaokrueni blok od 2KB u kome se nalazi prvi bajt slede%einstrukcije posle AJMP ili ACALL.

    rel - 8-bitni ofset bajt za adresiranje lokacije koja se nalazi u opsegu -128 do +127 u odnosu naadresu prvog bajta slede%e instrukcije.

    bit - direktno adresirani bit u internom RAM-u (u opsegu 0 do 127, tj na adresama interne memorijeu opsegu 20h-2Fh) ili u specijalnom registru (koji dozvoljava adresiranje pojedina1nih bita).

    7.1 Aritmeti(ke operacije

    Mnemonik Opis operacije Br.bajtova

    Br.taktova

    ADD A,Rn Saberi akumulator sa registrom 1 12

    ADD A,direct Saberi akumulator sa direktnim RAM-om 2 12

    ADD A,@Ri Saberi akumulator sa indirektnim RAM-om 1 12ADD A,#data Saberi akumulator sa priloenom vredno#%u 2 12ADDC A,Rn Saberi akumulator sa registrom i C flegom 1 12

    ADDC A,direct Saberi akumulator sa direktnim RAM-om i C flegom 2 12

    ADDC A,@Ri Saberi akumulator sa ind. RAM-om i C flegom 1 12

    ADDC A,#data Saberi akumulator sa datom vredno#%u i C flegom 2 12SUBB A,Rn Oduzmi registar i C fleg od akumulatora 1 12

    SUBB A,direct Oduzmi direktan RAM i C fleg od akumulatora 2 12

    SUBB A,@Ri Oduzmi indirektan RAM i C fleg od akumulatora 1 12

  • 7/25/2019 Mikrokontroler 8051-upustvo.pdf

    24/70

    Mikroprocesorska elektronika 24

    Katedra za elektroniku

    SUBB A,#data Oduzmi priloenu vrednost i C fleg od akumulatora 2 12INC A Uve%aj akumulator za 1 1 12INC Rn Uve%aj registar za 1 1 12INC direct Uve%aj direktan RAM za 1 2 12INC @Ri Uve%aj indirektan RAM za 1 1 12DEC A Umanji akumulator za 1 1 12

    DEC Rn Umanji registar za 1 1 12

    DEC direct Umanji direktan RAM za 1 2 12DEC @Ri Umanji indirektan RAM za 1 1 12

    INC DPTR Uve%aj Data Pointer za 1 1 24MUL AB Pomnoi A i B 1 48DIV AB Podeli A sa B 1 48

    DA A Podesi decimalno akumulator 1 12

    7.2 Logi(ke operacije

    Mnemonik Opis operacije Br.bajtova

    Br.taktova

    ANL A,Rn AND akumulator sa registrom 1 12

    ANL A,direct AND akumulator sa direktnim RAM-om 2 12ANL A,@Ri AND akumulator sa indirektnim RAM-om 1 12

    ANL A, #data AND akumulator sa priloenom vredn#%u 2 12ANL direct,A AND akumulator sa direktnim RAM-om 2 12

    ANL direct,#data AND direktni RAM sa priloenom vredn#%u 3 24ORL A,Rn OR akumulator sa registrom 1 12

    ORL A,direct OR akumulator sa direktnim RAM-om 2 12

    ORL A,@Ri OR akumulator sa indirektnim RAM-om 1 12

    ORL A,#data OR akumulator sa priloenom vredno#%u 2 12ORL direct,A OR direktni RAM sa akumulatorom 2 12

    ORL direct,#data OR direktni RAM sa priloenom vredno#%u 3 24XRL A,Rn EX-OR akumulator sa registrom 1 12

    XRL A,direct EX-OR akumulator sa direktnim RAM-om akumulatorom 2 12

    XRL A,@Ri EX-OR akumulator sa indirektnim RAM-om 1 12

    XRL A,#data EX-OR akumulator sa priloenom vredno#%u 2 12XRL direct,A EX-OR direktni RAM sa akumulatorom 2 12

    XRL direct,#data EX-OR direktni RAM sa priloenom vredno#%u 3 24CLR A Poni#ti stanje akumulatora 1 12CPL A Komplementiraj sve bitove u akumulatoru 1 12

    RL A Rotiraj nalevo akumulator 1 12

    RLC A Rotiraj nalevo akumulator kroz C fleg 1 12

    RR A Rotiraj nadesno akumulator 1 12

    RRC A Rotiraj nadesno akumulator kroz C fleg 1 12

    SWAP A Zameni gornja i donja 4 bita akumulatora 1 12

    7.3 Prenos podataka

    Mnemonik Opis operacije Br.bajtova

    Br.taktova

    MOV A,Rn Upi#i u akumulator registar 1 12MOV A,direct Upi#i u akumulator direktan RAM 2 12MOV A,@Ri Upi#i u akumulator indirektan RAM 1 12

  • 7/25/2019 Mikrokontroler 8051-upustvo.pdf

    25/70

    Mikroprocesorska elektronika 25

    Katedra za elektroniku

    MOV A,#data Upi#i u akumulator priloenu vrednost 2 12MOV Rn,A Upi#i u registar akumulator 1 12MOV Rn,direct Upi#i u registar direktan RAM 2 24MOV Rn,#data Upi#i u registar priloenu vrednost 2 12MOV direct,A Upi#i u direktan RAM akumulator 2 12MOV direct,Rn Upi#i u direktan RAM registar 2 24MOV direct,direct Upi

    #i direktan RAM u direktan RAM 3 24

    MOV direct,@Ri Upi#i u direktan RAM indirektan RAM 2 24MOV direct,#data Upi#i u direktan RAM priloenu vrednost 3 24MOV @Ri,A Upi#i u indirektan RAM akumulator 1 12MOV @Ri,direct Upi#i u indirekni RAM direktni RAM 2 24MOV @Ri,#data Upi#i u indirektni RAM priloenu vrednost 2 12MOV DPTR,#data16 Upi#i u Data Pointer priloenu 16-bitnu vrednost 3 24MOVC A,@A+DPTR Upi#i u akumulator Indirektni Code Byte @A+DPTR 1 24MOVC A,@A+ PC Upi#i u akumulator indirektni Code Byte @A+PC 1 24MOVX A,@Ri Upi#i u akumulator indirektni Ext RAM @Ri 1 24MOVX A,@DPTR Upi#i u akumulator indirektni Ext RAM @DPTR 1 24MOVX @Ri, A Upi#i u indirektni Ext RAM @Ri akumulator 1 24MOVX @DPTR,A Upi#i u indirektni Ext RAM @DPTR akumulator 1 24

    PUSH direct Stavi direktni RAM na stek 2 24POP direct Uzmi direktni RAM sa steka 2 24

    XCH A,Rn Izmeni vrednosti registra i akumulatora 1 12

    XCH A,direct Izmeni vrednosti direktnog RAM-a i akumulatora 2 12

    XCH A,@Ri Izmeni vrednosti indirektnog RAM-a i akumulatora 1 12

    XCHD A,@Ri Izmeni vrednosti donje cifre ind. RAM-a i 1 12

    7.4 Bulove operacije

    Mnemonik Opis operacije Br.bajtova

    Br.taktova

    CLR C Resetuj C fleg 1 12

    CLR bit Resetuj direktan bit 2 12SETB C Setuj C fleg 1 12

    SETB bit Setuj direktan bit 2 12

    CPL C Komplementiraj C fleg 1 12

    CPL bit Komplementiraj direktan bit 2 12

    ANL C,bit AND C fleg sa direktnim bitom 2 24

    ANL C,/bit AND C fleg sa komplementiranim direktnim bitom 2 24

    OR C,bit OR C fleg sa direktnim bitom 2 24

    ORL C,/bit OR C fleg sa komplementaranim direktnim bitom 2 24

    MOV C,bit Upi#i u C fleg direktan bit 2 12MOV bit,C Upi#i u direktan bit C fleg 2 24JC rel Sko

    1i ako je C fleg setovan 2 24

    JNC rel Sko1i ako C fleg nije setovan 2 24JB bit,rel Sko1i ako je direktan bit setovan 3 24JNB bit,rel Sko1i ako direktan bit nije setovan 3 24JBC bit,rel Sko1i ako je direktan bit setovan i resetuj bit 3 24

  • 7/25/2019 Mikrokontroler 8051-upustvo.pdf

    26/70

    Mikroprocesorska elektronika 26

    Katedra za elektroniku

    7.5 Potprogrami i skokovi

    Mnemonik Opis operacije Br.bajtova

    Br.taktova

    ACALL addr 11 Poziv potprograma na apsolutnoj (11-bitnoj)adresi unutar teku%eg bloka od 2KB

    2 24

    LCALL addr 16 Poziv potprograma na apsolutnoj 16-bitnoj adresi 3 24RET Povratak iz potprograma 1 24

    RETI Povratak iz prekidne rutine 1 24

    AJMP addr 11 Skok na apsolutnu (11-bitnu) adresuunutar teku%eg bloka od 2KB

    2 24

    LJMP addr 16 Skok na apsolutnu 16-bitnu adresu 3 24

    SJMP rel Kratki skok (8-bitna relativna adresa) 2 24

    JMP @A+DPTR Indirektni skok na adresu iz Code Mem @A+DPTR 1 24

    JZ rel Sko1i ako je akumulator jednak nuli 2 24JNZ rel Sko1i ako je akumulator razli1it od nule 2 24CJNE A,direct,rel Uporedi A sa direktnim RAM-om i sko1i ako su razli1iti 3 24CJNE A,#data,rel Uporedi A sa pridr. podatkom i sko1i ako su razli1iti 3 24CJNE Rn,#data,rel Uporedi Rn sa pridr. podatkom i sko1i ako su razli1iti 3 24

    CJNE @Ri,#data,rel Uporedi ind.RAM sa podatkom i sko1i ako su razli1iti 3 24DJNZ Rn,rel Umanji registar i sko1i ako nije jednak nuli 3 24DJNZ direct,rel Umanji direktni RAM i sko1i ako nije jednak nuli 3 24NOP No operation - bez operacije 1 12

    8. ASEMBLER A51

    Direktive koje %e ovde biti date odnose se na Franklin asembler A51, za druge asemblere oznake mogu da serazlikuju, pa o tome treba voditi ra1una.

    8.1 Direktive

    EQUdodeljuje numeri1ku vrednost navedenom simbolu.Primer:temperatura EQU 20

    Numeri1ka vrednost koja je ovom direktivom dodeljena simbolu temperatura ne moe se redefinisati uprogramu. Ovo se koristi u programu da bi kod bio 1itljiviji, jer kada se u programu nai2e na simboletemperatura ili brzina, zna se da taj simbol ozna1ava vrednost temperature ili brzine. Ako bi bile napisanesamo broj1ane vrednosti, program bi bio znatno nerazumljiviji.

    SETradi isto kao i EQU, ali se moe redefinisati neograni1en broj puta tokom izvr#avanja programa.Primer:

    Brzina SET 256Brzina SET 100

    6Brzina SET Brzina+10

    BITdodeljuje adresu bita navedenom simbolu.Primer:

    RELE BIT P1.0LED BIT P3.4RAMWR BIT WRIZLAZ BIT P2.0

  • 7/25/2019 Mikrokontroler 8051-upustvo.pdf

    27/70

    Mikroprocesorska elektronika 27

    Katedra za elektroniku

    T=1ms

    ORGdefini#e teku%u vrednost broja1a lokacija.Primer:

    ORG 2000Sada %e adresa slede%e instrukcije ili komande DB (ili DW) imati vrednost 2000.

    DSrezervi#e prostor u memoriji izraen u bajtovima.Primer:

    ORG 100 ; po1ni od adrese 100DS 7 ; rezervi#i 7 bajtovaNovaLok: ; nastavi program

    Ovo zna1i da %e labela NovaLok imati vrednost 107, i na nju se moe sko1iti ako elimo da nastavimo rad naadresi 107.

    DBupisuje navedenu vrednost bajta u programsku memoriju. Ako se navodi vi #e vrednosti, one se odvajajuzarezima. Ako se navodi ASCII niz, stavlja se pod jednostruke navodnike.Primer:

    DB 22,33,7Alarm7,0

    DWje isto kao DB, ali se upisuje 16-bitna (dvo-bajtna) vrednost. Za razliku od nekih drugih procesora (naprimer 8086), prvo se upisuje visoki, pa niski bajt.

    CSEGozna1ava da se naredni segment odnosi na programsku memoriju.

    XSEGozna1ava da se naredni segment odnosi na spoljni RAM.

    DSEGozna1ava da se naredni segment odnosi na interni RAM.

    ISEG ozna1ava da se naredni segment odnosi na gornji deo internog RAM-a, koji se moe adresiratiisklju1ivo indirektno pomo%u registara R0 i R1 (lokacije 80h-FFh, interna memorija koja nije implementiranau mikrokontroleru 8051).

    8.2 Rad u asembleru A51

    Izvorni programmoe se napisati u bilo kom editoru, ali po#to A51 radi pod operativnim sistemom DOS,ovde %e to biti opisano.Kada se startujeMSDOS potrebno je ukucati Edit. Dobi%e se editorski prozor u kom treba odabrati opcijuFile-New, i uneti izvorni kod i snimiti pod nazivom ImeProg.asm (ImeProg moe imati najvi#e 8 karaktera).Posle toga treba odabrati opciju File-Exit i vratitise u MSDOS.Asembliranjese vr#i unosom komande A51 ImeProg.asm. Posle toga se na ekranu pojavljuje informacija dali ima gre#aka ili je program ispravan. Ako ima gre#aka one se mogu videti unosom komande EditImeProg.lst.

    Kada se gre#ke isprave dobijanje hex fajla se vr#i unosom komande OHS51 ImeProg.obj.

    9. PRIMERI

    Kori#%enje prekidne rutinekod tajmera bi%e prikazano na slede%im zadacima:

    Zadatak 1.Sa mikrokontrolerom 8051, 1ija je frekvencija spolja#njeg oscilatora 12MHz realizovati povorkupravougaonih impulsa jednakog trajanja (1etvrtki) frekvencije f=1kHz na portu P1, bit 0 (P1.0).

    Mikrokontroler isprogramirati u asembleru A51.

  • 7/25/2019 Mikrokontroler 8051-upustvo.pdf

    28/70

    Mikroprocesorska elektronika 28

    Katedra za elektroniku

    Re*enje:

    Kako je potrebna kontrola vremena trajanja stanja 0 i 1 impulsa, koristi%e se Timer0. Sad je pitanje u komreimu treba tajmer da radi. Da bi se to znalo, treba prvo videti koliko impulsa tajmer treba da izbroji. Po #toje potrebno 12 perioda ciklusa takta oscilatora za jedan taktni impuls tajmera, perioda ulazne frekvencijetajmera je:

    sTT osctimer 112. ==

    Kako se tajmer uve%ava za 1 posle timerT , a potrebno je da se stanje impulsa menja svakih T/2, onda je brojkoji tajmer treba da odbroji pre nego #to napravi prekid (interapt):

    500T

    2/

    timer.

    ==T

    n

    Po#to ovoliki broj ne moe da izbroji osmobitni tajmer, uzima se 16-bitni. Sad treba odrediti od kog brojatajmer treba da po1ne da broji, imaju%i u vidu da tajmer broji na vi#e i da se prekid doga2a kada tajmerprelazi iz stanja FFFFh u stanje 0:0000 - 01F4 = FE0C jer je 500dec=01F4hex.

    Program:

    DSEG ; naredni segment se odnosi na interni RAMORG 20h

    Var1: DS 1 ; rezervisanje jednog bajta na lokaciji 20h

    Stanje BIT Var1.0 ; dodeljivanje adrese bitaIzlaz BIT P1.0 ; simbolima Stanje i Izlaz

    CSEG ; naredni segment odnosi na programsku memorijuORG 0000H ; kad se startuje, program kre%e od adrese 0000hAJMP INICIJALIZACIJA

    ORG 000BH ; adresa vektora prekida Timera0AJMP PREKID ; skok na prekidnu rutinu

    INICIJALIZACIJA:MOV IE,#82H ; dozvola interapta prekora1enja Timera0 (EA=1,ET0=1)MOV TMOD,#01H ; Timer0 je 16-bitniMOV TH0,#0FEH ; po1etna vrednostMOV TL0,#0CH ; tajmera je FE0C

    SETB Stanje ; jer je po1etno stanje porta 1SETB TR0 ; start Timer0 (TR0=1)PETLJA:

    NOP ; program se vrti u ovoj beskona1noj petlji i 1ekaSJMP PETLJA ; prekide Timera0

    PREKID:CLR TR0 ; tajmer je potrebno zaustaviti pre punjenja,MOV TH0,#0FEH ; a zatim ponovo inicijalizovati Timer0, jer onMOV TL0,#0CH ; kad jednom odbroji, nastavlja da broji od 0SETB TR0 ; start tajmeraCPL Stanje ; komplementira teku%e stanjeMOV C,Stanje ; prebacuje teku%e stanje na izlazMOV Izlaz,C

    RETI ; povratak iz prekidne rutineEND

    Zadatak 2.Sa mikrokontrolerom 8051, 1ija je frekvencija spolja#njeg oscilatora 12MHz izvr#iti kontrolurada dve LED diode. Izbor LED diode se vr#i prekida1em PR1 (kada je PR1 otvoren trep%e crvena, a kada jezatvoren trep%e zelena LED dioda), a brzina treperenja LED diode se odre 2uje prekida1em PR2 (kada je PR2otvoren dioda treba da trep%e sa u1estano#%u od 10Hz, a kada je zatvoren, dioda treba da trep %e sau1estano#%u od 0.5Hz). Obe LED diode treba da se uklju1e na nizak logi1ki nivo noice P0.0 (crvena) i P0.1(zelena).Mikrokontroler isprogramirati u asembleru A51.

  • 7/25/2019 Mikrokontroler 8051-upustvo.pdf

    29/70

    Mikroprocesorska elektronika 29

    Katedra za elektroniku

    Upro#%ena slika:

    P1.0 P0.0

    P1.1 P0.1

    PR1

    PR2

    Vcc=5V

    10k

    80C51

    270

    B

    AFER

    Vcc=5V

    Re*enje:

    Broj tajmerskih ciklusa koji treba da se odbroji kada je PR2 otvoren je N1=50ms/1s=50000, a kada je

    zatvoren N2=1s/1s=1000000

    Kako 16-bitni tajmer moe maksimalno da odbroji 65536 puta potrebno je uvesti pomo%ni broja1u prekidnojrutini za detekciju broja prekida.Po#to je N2=20*50000 vidi se da je potrebno da se desi 20 prekida pa da se onda izv #i promena logi1kognivoa signala na noici P0.0 ili P0.1, za frekvenciju od 0.5Hz.U Timer0 je potrebno uneti vrednost: 0-50000=0000h-C350=3CB0

    Program:

    DSEG ; naredni segment se odnosi na interni RAMORG 20h ; skok na adresu 20h

    F10 EQU 1 ; dodela vrednosti 1 simbolu F10 (ozna1ava da je na frekv. 10Hz; potreban 1 prekid pre promene stanja LED diode)

    F05 EQU 20 ; dodela vrednosti 20 simbolu F05 (ozna1ava da je na frekv.; 0.5Hz potrebno 20 prekida pre promene stanja LED diode)

    Mask: DS 1 ; rezervisanje jednog bajta na lokaciji 20hCount: DS 1 ; rezervisanje jednog bajta na lokaciji 21hCLED BIT P0.0 ; izlazno stanje crvene LED diodeZLED BIT P0.1 ; izlazno stanje zelene LED diodePR1 BIT P1.0 ; ulazno stanje prekida1a PR1PR2 BIT P1.1 ; ulazno stanje prekida1a PR2

    CSEGORG 0000H ; kad se startuje, program kre%e od adrese 0000hJMP INICIJALIZACIJA

    ORG 000BH ; adresa vektora prekida Timera0JMP PREKID ; skok na prekidnu rutinu

    INICIJALIZACIJA:MOV IE,#82H ; dozvola interapta prekora1enja Timera0MOV TMOD,#01H ; Timer0 je 16-bitniMOV TH0,#3CH ; po1etna vrednostMOV TL0,#0B0H ; Timera0 je 3CB0MOV R4,#1 ; R4

  • 7/25/2019 Mikrokontroler 8051-upustvo.pdf

    30/70

    Mikroprocesorska elektronika 30

    Katedra za elektroniku

    MOV A,#1 ; izbor aktivne LED diodeJB PR1,Crvena ; sko1i na labelu Crvena ako je PR1=1MOV A,#2SETB CLED ; P0.0=1 (zabrana paljenja crvene LED diode)SJMP L1

    Crvena:SETB ZLED ; P0.1=1 (zabrana paljenja zelene LED diode)

    L1: MOV MASK,AMOV A,#F10 ; Izbor frekvencijeJB PR2,PostaviBrojacMOV A,#F05

    PostaviBrojac:MOV Count,ASJMP MAIN ; nazad u petlju

    PREKID:CLR TR0 ; Tajmer0 je potrebno zaustavitiMOV TH0,#3CH ; po1etna vrednostMOV TL0,#0B0H ; Timera0 je 3CB0SETB TR0DJNZ R4,Int_KrajMOV R4,CountMOV A,MaskXRL P0,A

    Int_Kraj:RETI

    END

  • 7/25/2019 Mikrokontroler 8051-upustvo.pdf

    31/70

    Mikroprocesorska elektronika 31

    Katedra za elektroniku

    10. KOMPAJLER PROGRAMSKOG JEZIKA C ZA

    MIKROKONTROLERE IZ FAMILIJE 8051

    Kompajler koji %e ovde biti razmatran je Keil-ov C51 sa integrisanim okruenjem Vision2 koje sadri:editor izvornog koda, sistem za pode#avanje parametara i poziv kompajlera, kao i sistem za testiranje isimulaciju prevedenog programa. Vision2 se koristi za kreiranje izvornog fajla (koda) i njegovo

    povezivanje unutar projekta, koji defini#e eljenu aplikaciju. Vision2 automatski kompajlira, asemblira ipovezuje sve programe u projektu. On podrava: C51 compiler, A51 macro assembler, BL51 linker/locator,LIB51 library manager, OH51 object-hex converter i RTX-51 real-time operating system.

    Postupak kreiranja softverske aplikacije:

    Startuje se Vision2, defini#e se projekat i odabere se mikrokontroler sa ponu2ene liste.Napi#e se izvorni (source) fajlu editoru i doda se u projekat. Izvr#i se pode#avanje (unos) parametara hardverske strukture izabranog mikrokontrolera. Izvorni fajl prolazi C51 compiler ili A51 macro assembler. Procesi kompajliranja ili asembliranja

    stvaraju objektne fajlove.

    Objektni fajlovise kori#%enjem LIB51 library managera formiraju u objektne biblioteke.Objektni fajlovi i objektne biblioteke se povezuju sa BL51 Linker/Locator-om u apsolutni objektni

    modul. Ceo kod u apsolutnom objektnom fajlu zauzima fiksne memorijske lokacije.

    Zatim se izvr#i komanda build project,pri 1emu se formira HEX fajl ako nema gre#aka u programu.Ako postoje gre*ke, one se se prikazuju u donjem delu ekrana, uz kratak komentar o kakvoj je gre#ki

    re1.Kada su ispravljene sve formalne gre#ke, moe se koristiti Vision2 debugger za simulaciju rada 8051

    sistema. On prikazuje: memorijsku mapu promenljivih, lokalne promenljive i periferije.

    Na kraju se moe programirati dati 1ip, direktnim kori#%enjem HEXfajla, a po potrebi se HEXfajl preprogramiranja prvo konvertuje u binarni (BIN) fajl.

    11. STARTOVANJE VISION2 PROGRAMA I KREIRANJE

    PROJEKTA

    Program se startuje pozivom Vision2. Izgled menija i pojedinih 8prozora' prikazan je na slede%oj slici:

  • 7/25/2019 Mikrokontroler 8051-upustvo.pdf

    32/70

    Mikroprocesorska elektronika 32

    Katedra za elektroniku

    Kreiranje novog projekta se vr#i izborom opcije Project-New Project,posle 1ega se odabere mesto na harddisku gde %e biti sme#ten projekat sa ekstenzijom .uv2 (preporu1uje se prethodno kreiranje odgovaraju%egfoldera na hard disku). Na primer, ako se projekat zove PROJEKAT1.UV2:

    Odmah posle toga program zahteva izbor mikrokontrolera (CPU), kao #to je prikazano na slede%oj slici gdeje odabran Atmelov 89C51:

    12. KREIRANJE IZVORNOG (SOURCE) FAJLA

    Kreiranje novog izvornog fajla se vr#i izborom opcije File-New,pri 1emu se otvara prazan editorski prozor ukoji se unosi izvorni kod u C-u. Zatim se izabere opcija File-Save As i zada se ime fajla sa ekstenzijom .c,npr. Main.c:

  • 7/25/2019 Mikrokontroler 8051-upustvo.pdf

    33/70

    Mikroprocesorska elektronika 33

    Katedra za elektroniku

    Sada treba taj fajl dodati u projekat. To se moe uraditi tako #to se prvo otvori Project Window (View -Project Window), ako ve%nije otvoren. Zatim se klikne desnim tasterom mi#a na Source Group1, a potomizabere Add Files to Group 'Source Group1,:

    Prvi red programa sadri direktivu #include za 1itanje (ubacivanje) izvornog fajla sa deklaracijama za

    odgovaraju%i mikrokontroler. U toku kompajliranja, fajl naveden u direktivi #include se ubacuje u osnovnifajl (u ovom slu1aju u main.c). Pored #include zna1ajna direktiva je i #define kojom se defini#e makro ilikonstanta.Primeri:

    #include uklju1enje matemati1kih funkcija#include uklju1enje adresa portova, registara i specijalnih bita u memoriji#define PI 3.14159 /* definisanje konstante PI, sada se u programu svuda pi#e PI a kompajler zna da

    je to broj 3.14159 */#define Timer0H 0xE4#define Timer0L 0xF0

    Tipovi podatakakoje podrava C51:

    DATA TYPE BITS BYTES VALUE RANGE

    Bit 1 0/1Signed char 8 1 -128 to +127

    Unsigned char 8 1 0 to 255

    Enum 8/16 1/2 -128 to +127 //32768 to +32768Signed short 16 2 /32768 to +32768Unsigned short 16 2 0 to 65535

    Signed int 16 2 /32768 to +32768Unsigned int 16 2 0 to 65535

    Signed long 32 4 -2147483648 to 2147483647

    Unsigned long 32 4 0 to 4294967295

  • 7/25/2019 Mikrokontroler 8051-upustvo.pdf

    34/70

    Mikroprocesorska elektronika 34

    Katedra za elektroniku

    Float 32 4 1.175494E-38 to 3.402823E+38

    Sbit 1 0/1

    Sfr 8 1 0 to 255

    Sfr 16 16 2 0 to 65535

    Treba zapaziti da je u programu main.c promenljiva i definisana kao unsigned char, #to zna1i da jeosmobitna. Kako port P1 ima osam noica, vrednost koja mu se pridruuje mora biti osmobitna tj. u intervaluod 0 do 255. Pojedinim noicama porta P1 pristupa se pisanjem P1^x gde x ozna1ava broj noice (npr.

    P1^2=0), gde je x u opsegu od 0 do7.

    13. UNOS PARAMETARA HARDVERSKE STRUKTURE

    MIKROKONTROLERA

    Unos parametara strukture mikrokontrolera se vr#i izborom opcije Project-Options for target 'Target1,:

    Xtal(MHz) ozna1ava frekvenciju rada mikrokontrolera (bitno samo za simulator).

    Memorijski modelodre2uje koliko %e memorije biti kori#%eno za promenljive i podatke. Memorijski modelikoje podrava C51 su: Small Model / sve promenljive se nalaze u internoj memoriji podataka, i ovaj pristup

    promenljivama je jako brz (deklari#e se sa data). Compact Model / sve promenljive se nalaze u grupisanim blokovima od po 256 bajta

    spolja#nje memorije podataka (deklari#e se sa pdata). Large Model / sve promenljive se nalaze u spolja#njoj memoriji podataka (deklari#e se

    sa xdata).

    MemoryType

    Description

    code Program memory (64 KBytes); accessed by opcode by MOVC @A+DPTR

    data Directly addressable internal data memory; fastes access to variables (128 bytes)

    idata Indirectly addressable internal data memory; accessed across the full internal adress space(256 bytes)

    bdata Bit-adressable internal data memory; allows mixed bit and byte access (16 bytes)

    xdata External data memory (64 KBytes); accessed by opcode MOVX @DPTR

    pdata Paged (256 bytes) external data memory; accessed by opcode MOVX @Rn

    Programska (CODE) memorija moe se nalaziti unutar 8051 CPU (internal data memory) a moebiti i spolja#nja (external data memory). Programski kod, uklju1uju%i sve funkcije i biblioteke, kao i programkoji se izvr#ava, 1uva se u programskoj memoriji. Tako2e, konstante mogu da se 1uvaju u programskojmemoriji. Ovoj memoriji moe se pristupati kori#%enjem CODEdirektive.

  • 7/25/2019 Mikrokontroler 8051-upustvo.pdf

    35/70

    Mikroprocesorska elektronika 35

    Katedra za elektroniku

    Internal data memory se nalazi unutar 8051 CPU i u nju se mogu pisati i 1itati podaci. Internumemoriju 1ini 256 bajta, od kojih prvih 128 se mogu adresirati direktno i indirektno, a drugih 128 seadresiraju samo indirektno. Pristup internoj memoriji je jako brz zato #to se koriste 8 bitne adrese.

    Interna memorija se moe podeliti na tri tipa: data memoryozna1ava pristup prvom bloku od 128 bajtova interne memorije. Promenljivama koje su

    tamo uskladi#tene pristupa se direktnim i indirektnim adresiranjem.

    idata memory ozna1ava pristup kompletnoj internoj memoriji (svih 256 bajtova). Me2utim, adresiranjeje isklju1ivo indirektno, #to je sporije od direktnog pristupa.

    bdata memory ozna1ava pristup bit-adresibilnom delu u internoj memorijskoj oblasti 20h-2Fh (16bajtova).

    External data memoryje memorija sme#tena izvan 8051 CPU i njoj se moe pristupiti pri pisanju i1itanju podataka. Pristup spolja#njoj memoriji je dosta sporiji nego internoj, zato #to joj se pristupa indirektnopreko data pointer registra (DPTR), koji mora biti napunjen 16-bitnom adresom pre pristupa spolja#njojmemoriji, ili preko internih registara R0i R1.

    Spolja#nja memorija ima do 64 KBajta, 1iji adresni prostor ne mora biti u potpunosti kori#%en kaomemorijski. Periferijski ure2aji