Download as rtf, pdf, or txt
Download as rtf, pdf, or txt
You are on page 1of 44

.........................

...

MIKROUPRAVLJAČI 1 – MK1

..........................
Mikroupravljači

1 ON-LINE SUSTAV............................................................................................................3
2 ARHITEKTURA RAČUNALA.......................................................................................5
3 MIKROUPRAVLJAČI (MIKROUPRAVLJAČI).........................................................7
3.1 POJAM, NAMJENA.................................................................................................7
3.2 OSNOVNI MODULI MIKROUPRAVLJAČA........................................................7
3.3 UNUTARNJA STRUKTURA MIKROUPRAVLJAČA...........................................8
4 MIKROUPRAVLJAČ ATMEL AT89C2051.................................................................11
4.1 OSNOVNA OBILJEŽJA................................................................................................11
4.2 KONFIGURACIJA PINOVA..........................................................................................12
4.3 UŠTEDA ENRGIJE................................................................................................13
4.4 RADNI UVJETI......................................................................................................14
4.5 OSNOVNE IZVEDBE KUČIŠTA MIKROUPRAVLJAČA AT89C2051..............15
4.6 MIKROUPRAVLJAČ ATMEL AT89C2051- BLOK SHEMA, PROGRAMSKI MODEL.......17
4.7 MEMORIJA MIKROKONTOLERA.................................................................................18
4.7.1 PROGRAMSKA MEMORIJA.............................................................................18
4.7.2 PODATKOVNA MEMORIJA..............................................................................18
4.7.3 RAM MEMORIJA...............................................................................................19
4.7.4 MEMORIJSKO PODRUČJE SPECIJALNIH FUNKCIJSKIH REGISTARA
(SFR) 21
5 ASEMBLER....................................................................................................................30
5.1 ADRESNI DIO INSTRUKCIJE.............................................................................30
5.2 ADRESE U INSTRUKCIJAMA ZA OBAVLJANJE ARITMETIČKIH I
LOGIČKIH OPERACIJA......................................................................................................31
5.3 SIMBOLIČKI OBLIK ADRESA U MEMONIČKOM JEZIKU............................34
5.4 INSTRUKCIJE ZA PROVOĐENJE ARITMETIČKIH OPERACIJA.......................................34
5.4.1 Instrukcije za zbrajanje i oduzimanje (ADD, ADDC, SUBB).............................34
5.4.2 Instrukcije za množenje i dijeljenje (MUL, DIV)................................................35
5.5 LOGIČKE INSTRUKCIJE.....................................................................................36
5.6 UPRAVLJAČKE INSTRUKCIJE...........................................................................38
6 KOMBINACIJSKI I SEKVENCIJSKI ZADACI.......................................................41
6.1 KOMBINACIJSKI ZADACI..................................................................................41
6.2 SEKVENCIJSKI ZADACI.....................................................................................42

Tehnička škola Ruđera Boškovića Zagreb 2


Mikroupravljači

1 ON-LINE sustav
ON-LINE sustav je dobio ime po tome što se podaci prenose po liniji u
računalo. Pod tom "linijom" podrazumijevamo razne električne vodiče i
sustave potrebne za prijenos podataka.
Podaci u jednom on-line sustavu se obrađuju u tzv.realnom vremenu.
Vrijeme potrebno da neka informacija dođe sa mjesta nastanka do
računala se najčešće mjeri u mikrosekundama. S obzirom na sredine u
kojima se nešto mjeri ili upravlja, to kratko vrijeme obrade vrlo često zna
biti veoma važno, čak i presudno za rad pojedinog procesa.
Sve ono što se može mjeriti i pratiti, vrši se na on-line način. Ti se
sustavi najčešće upotrebljavaju u industriji, građevinarstvu,
brodogradnji, itd.
Neki problemi se naprosto ne mogu riješiti bez on-line sustava, jer ništa
drugo nema takvu moć obrade i brzinu prijenosa podataka kao on-line
sustav. Pritom se uzima u obzir da, kad moć i nije dovoljna za rad
nekog sustava, mogu se upotrijebiti i više procesora, što zadovoljava
čak i najzahtjevnije sustave.
Osnovni zaključak je da se upotrebom on-line sustava može brzo i
kvalitetno dobiti informacija o stanju procesa. Ako još sustav i odlučuje
o tome što treba poduzeti, a on to i poduzme, onda je njegova moć i
veća.
Osnovni sklopovski elementi za on-line način rada

Osnovni elementi za funkcioniranje jednog on-line sustava ima tri


osnovne cjeline:
0 sredina u kojoj se mjeri ili upravlja
1 elementi koji služe za povezivanje na on-line način
2 mikroračunalo
Sredinom kojom se mjeri ili upravlja podrazumijevamo bilo koju ili kakvu
sredinu, u kojoj se nešto mijenja, odnosno događa, što dovodi do
promjena veličina, kao što su npr. razne informacije (0 i 1),temperatura,
pritisak, kut zakreta, itd.
Senzori u mjernoj sredini odnosno u procesu registriraju promjenu
veličine i tu promjenu prikazuju u obliku električnih signala u analognom
ili digitalnom obliku. Prema toj podjeli, imamo tri vrste senzora:
 senzori sa analognim izlazom
 senzori sa digitalnim izlazom
 "pametni" senzori.
Električni signali koji dolaze iz senzora predstavljaju mjerenu veličinu i
mogu imati različiti oblik. To je često kontinuirani analogni napon. Izlaz
iz senzora može biti i impuls čija amplituda predstavlja informaciju. A/D
pretvarač prihvaća signale koji imaju određeni oblik i veličinu. Da bi se
to postiglo, potrebno je ulaznu veličinu dodatno obraditi. Svi postupci
analogne obrade signala svode se na to da se signalu da potrebna
veličina i oblik. Pri tom postupku analogne obrade signala informacija
se ne smije izmijeniti ili izgubiti.

Tehnička škola Ruđera Boškovića Zagreb 3


Mikroupravljači

U složenijim procesima, u računalo se moraju unositi više podataka iz


više senzora. Zbog toga mora postojati multipleksor koji bi analogne
signale iz više ulaza dovodio na jedan zajednički izlaz.
Mjerne veličine iz procesa, najčešće su kontinuirani analogni signali.
Oni se ne mogu izravno unositi u digitalno računalo, nego se uzorci tog
signala uzimaju u diskretnim razmacima. Sklop za uzimanje uzoraka i
A/D pretvorbu uzimaju uzorke analognog signala i pretvaraju u
vrijednost (postupak kvantizacije). Oni se zatim unose u računalo i tamo
obrađuju tj.izvrši se diskretizacija po vremenu i po amplitudi. Pri ovoj
pretvorbi se javljaju greške, koje moraju biti svedene na prihvatljive
granice.
Interface-i za ulaz i izlaz podataka služe da bi se razni vanjski sklopovi
povezali sa računalom, prenoseći kvalitetno digitalne podatke
razumljive računalu. Računalo mora u on-line sustavu imati
tzv.upravljački algoritam, prema kojemu bi se upravljalo i nadgledalo.Za
prikaz izlaznih veličina najčešće se upotrebljavaju monitori. Pod
izvršnim elementom podrazumijevamo neku vanjsku silu (elektromotor,
ventil), koji po zapovijedi računala utječe na proces i dovodi ga u
definirano stanje.

Sredina koja
se
mjeri ili
upravlja

obrada uzimanje ulazni


senzor analognog multiplexor uzoraka i interface
signala A/D
pretvorba digitalno
računalo

izvršni prilagodjenje D/A izlazni


element signala demux interface
pretvorba
izv. elementu

ekran
prikaz podataka

Tehnička škola Ruđera Boškovića Zagreb 4


Mikroupravljači

2 Arhitektura računala

von Neumann arhitektura

 Memorija sadrži podatke i instrukcije.


 CPU polazi po instrukcije iz memoriju.
 U jednoj memoriji nalaze se programi i podaci
 CPU surađuje sa: programskim brojilom (PC), instrukcijskim
registrom (IR), registrima opće namjene, itd.

CPU + Memorija

Harvard arhitektura
ADRESE

PODATKOVNA
PODATCI
MEMORIJA PC
CPU
ADRESE

PROGRAMSKA
PODATCI
MEMORIJA

von Neumann vs Harvard

 Harvard ne može koristiti samo-modificirajući kod.


 Harvard dozvoljava dva istovremena pristupa memoriji.

Tehnička škola Ruđera Boškovića Zagreb 5


Mikroupravljači

 Većina DSPs koriste Harvard arhitekturu za rad s tokom


podataka:
- veći memorijski opseg
- veća prediskazivost (proricljivost) opsega.

RISC vs. CISC


Računalo sa složenim setom instrukcija (CISC - Complex instruction set
computer):
- više načina adresiranja
- više opercija
Računalo s reduciranim setom instrukcija (RISC - Reduced instruction
set computer):
- učitaj/pospremi (load/store)
- ''cijevne'' instrukcije

Karakteristike seta instrukcija

 fiksirana vs. promjenjiva duljina


 načini adresiranja
 broj operanda
 tipovi operanda

Programski model
- Programski model: registri vidljivi programeru
- Neki registri nisu vidljivi (IR).

Asemblersi jezik

''jedan-na-jedan'' sa instrukcijama

Osnovne karakteristike:
- Jedna instrukcija po redu
- Labele daju imena za adresu (obično u prvoj koloni)
- Instrukcije često počinju u kasnijim kolonama
- kolone se izvode do kraja reda

Tehnička škola Ruđera Boškovića Zagreb 6


Mikroupravljači

3 MIKROUPRAVLJAČI (MIKROKONTROLERI)
POJAM, NAMJENA

 pojam: mikroupravljač – mikroračunalo zaduženo za upravljanje i


kontrolu određenih procesa
 vrlo rasprostranjena primjena u različitim uređajima i sustavima
 arhitektura mikroupravljača izravno je zavisna o njegovoj primjeni
 pored procesora, memorija, ulaza i izlaza, tu pripadaju i posebne
izvedbe U/I sklopova, pojačala, pretvarača i sl.
 posebno područje su integrirani mikroupravljači (svi sklopovi
standardizirani i izvedeni u jednom čipu)
 mikroupravljač je integrirani sklop koji sadrži sve navedene
elemente te predstavlja osnovu pri dizajniranju cjelovitog sustava
za nadzor i upravljanje
 veliku primjenu imaju 8-bitni mikroupravljači (bazirani na 8-bitnim
CISC procesorima)
 postoje izvedbe brzih mikroupravljača na osnovi RISC procesora
 prednosti mikroupravljača je standardiziranost, masovna
proizvodnja, niska cijena, ušteda broja elemenata, ušteda
prostora, pouzdanost i sl.
 postoje razvojni sustavi za potporu primjene mikroupravljača
 oni se koriste za razvoj programske podrške, simulaciju rada i
programiranje mikroupravljača
 programi se upisuju u PROM, EPROM i EEPROM memoriju
 većina univerzalnih programatora posjeduje i programsku
podršku za programiranje svih poznatijih mikroupravljača
OSNOVNI MODULI MIKROUPRAVLJAČA

BROJAČI
GENERATOR TAKTA R A M ROM

CPU U/I PORT

A/D
WATCHDOG

SERIJSKI PORT

Tehnička škola Ruđera Boškovića Zagreb 7


Mikroupravljači

 mikroupravljač sadrži sve osnovne elemente mikroračunala:


o mikroprocesor
o radna i programska memorija
o ulazno/izlazni međusklopovi
o generator takta
 ovisno o tipu, namjeni i mogućnosti mikroupravljači sadrže i:
o sustav za kontrolu i obradu prekida (interrupta)
o sustav za serijsku komunikaciju i komunikaciju između
mikroupravljača
o A/D i D/A pretvarače
o brojila i mjerače vremena različitih namjena
o brojilo za praćenje ispravnosti rada samog
mikroupravljača (Watchdog)
 mikroupravljači su najčešće građeni kao nadogradnja postojećih
procesora
UNUTARNJA STRUKTURA MIKROUPRAVLJAČA

MIKROPROCESOR
 najčešće 8-bitni procesori s poznatijim setom instrukcija
 mogu biti CISC ili RISC (za brže mikroupravljače)

MEMORIJA MIKROUPRAVLJAČA
 memoriju mikroupravljača dijelimo na radnu i programsku
memoriju
 programska memorija sadrži programske instrukcije i po tipu
mogu biti ROM, PROM, EPROM i EEPROM
 programska memorija može biti ugrađena na samom čipu ili
izvedena kao vanjska (najčešće kombinirano)
 programatorima se upisuje sadržaj u programsku memoriju
 programski kod je zaštićen od neovlaštenog čitanja
 radna memorija je tipa RAM, a koristi se za rukovanje podacima,
čuvanje i prikupljanje podataka
 kapacitet ove memorije nije velik, ali je moguće vanjsko
proširivanje (do 64k)
 sastavni dio ove memorije mogu piti pojedini registri procesora

ULAZNO/IZLAZNI SKLOPOVI
 sklopovi za paralelni ulaz i izlaz podataka sastavni su dio svakog
mikroupravljača
 svi ti izvodi mogu biti definirani kao ulazni ili izlazni, što se
određuje preko odgovarajućih registara
 U/I izvodi se mogu koristiti i za proširenje memorije, kontrolu
prekida i sl.
 pristup ulazima ili izlazima obavlja se preko za to predviđenih
registara

Tehnička škola Ruđera Boškovića Zagreb 8


Mikroupravljači

GENERATOR TAKTA
 u sve mikroupravljače standardno se ugrađuje generator takta,
koji zahtjeva jedino vanjski kvarc kristal
 uz izvor stabilne frekvencije dodaje se jedino nekoliko diskretnih
komponenti (ponekad je dovoljno dodati RC kombinaciju)
 preko posebnog ulaza može se dovesti takt generiran negdje
izvana

PREKIDNI SUSTAV
 namjena sustava je nadziranje svih izvora interrupta (prekida
rada) vanjskih i unutrašnjih
 prekide dijelimo na maskirane i nemaskirane, a razlikuju se i po
prioritetu
 prekidna maska može onemogućiti prekid
 vanjski prekidi nisu predviđeni za posebne namjene i o njima
odlučuje korisnik
 unutrašnji se uglavnom koriste za usklađivanje izvršenja tekućeg
programa
 neki jednostavniji mikroupravljači nemaju prekidni sustav

BROJILA I MJERAČI VREMENA


 sklopovi za različito mjerenje vremena, prebrojavanje impulsa,
generiranje potrebnih signala
 namjena im je višestruka, i moguće ih je programirati da rade na
više načina

WATCHDOG
 specijalno brojilo za praćenje rada mikroupravljača
 sadržaj brojila se povećava, a ispravni način rada vraća brojilo
na početnu vrijednost
 ako mikroupravljač radi nepravilno, brojilo raste i kada dostigne
određenu vrijednost, prekida izvršenje tekućeg programa

ODABIR MIKROUPRAVLJAČA

 prilikom odabira mikroupravljača potrebno je znati za što će taj


mikroupravljač obavljati
 prije odabira potrebno je napraviti listu zahtjeva na osnovu koje
će se doći do rješenja za koji se mikroupravljač odlučiti.
 prije nego što se sastavi takva lista, potrebno je znati što sve
mikroupravljač može
 odluka o tome koji mikroupravljač odabrati za vaš uređaj svodi se
na pitanje cijene, mogućnostima, podrška, i o onome što je vama
poznato.
 gotovo svaki proizvođač mikroprocesora proizvodi i liniju
mikroupravljača. Ovi uređaji mogu ali ne moraju imati istu
arhitekturu kao i njihova linija mikroprocesora.
Tehnička škola Ruđera Boškovića Zagreb 9
Mikroupravljači

 da bi donijeli odluku koji uređaj izabrati, svaki tip uređaja sadrži


broj različitih dijelova, svaki sa malo drugačijim svojstvima.
 ta svojstva uključuju:
o Programibilni digitalni paralelni Ulaz/Izlaz
o Programibilni analogni Ulaz/Izlaz
o Serijski Ulaz/Izlaz
o Pulsno-valni oblik Izlaza za motore/servo kontrolu
o Prekid za Ulazne uvjete
o Tajmere i prekide za tajmere
o Sučelja eksterni memorijski uređaj
o Sučelje za eksternu sabirnicu
o Interne RAM opcije

 daljnja kompilacija liste je varijacija različitih uređaja koji se mogu


smatrati kao mikroupravljači. To uključuje PC koji su bazirani na
jednom čipu i digitalne signalne procesore (DSPs)
 to znači da imamo gotovo prevelik izbor koji mikroupravljač
koristiti za naše aplikacije
 prilikom odabira mikroupravljača treba tražiti mikroupravljač sa
sljedećim karakteristikama:
o Jednostavno napajanje, reset, te brzinske zahtjeve
o Jeftine softverske razvojne alate
o Veliku korisničku bazu
o Jednostavno programiranje

Tehnička škola Ruđera Boškovića Zagreb 10


Mikroupravljači

4 Mikroupravljač ATMEL AT89C2051


Osnovna obilježja

Atmelov AT89C2051 je 8 bitni mikroupravljač koji u sebi sadrži 2 Kbajta


Flash memorije koju je moguće više puta programirati i brisati (engl.
Flash programmable and erasable read only memory). Potpuno je
kompatibilan sa setom naredbi i funkcijama pinova industrijskog
standarda MCS-51ä. Zbog ove kombinacije 8-bitne centralne
procesorske jedinice i Flash memorije u jednom čipu, Atmel-ov
AT89C2051 predstavlja zanimljiv mikroupravljač sa kojim je moguće u
mnogim slučajevima napraviti vrlo fleksibilne i jeftine aplikacije.
Ovaj procesor odlikuju sljedeće standardne osobine: 2 Kbajta Flash-a,
128 bajta internog RAM-a, 15 ulazno-izlaznih linija, dva 16-to bitna
brojila, 5 izvora prekida u dva nivoa, potpuni dupleks serijski port,
precizni analogni komparator te integriran oscilator. Uz to, AT89C2051
je projektiran za potpuni statički rad sve do frekvencije 0 Hz, i podržava
dva načina rada za smanjenje potrošnje., koje je moguće softverski
birati.
Osnovna obilježja mikroupravljača ATMEL AT89C2051:
 Kompatibilan sa MCS-51 proizvodima
 2K reprogramibilne flash memorije (do 100 ciklusa piši/briši)
 Radni napon 2.7V do 6V
 Radi na frekvenciji do 24 MHz
 128 B internog RAM-a
 15 programibilnih I/O linija
 Dva 16-bitna brojila
 Šest izvora interupta
 Analogni komparator izrađen na samom čipu
Ovaj mikroupravljač omogućava 2 načina uštede energije koju je
moguće programski odabrati

Tehnička škola Ruđera Boškovića Zagreb 11


Mikroupravljači

Konfiguracija pinova

Opis pinova:
VCC: Napon napajanja

GND: Masa

PORT 1- Port 1 je 8-bitni dvosmjerni ulazno-izlazni port. Pinovi porta


P1.2 do P1.7 imaju interne otpornike prema pozitivnom naponu
napajanja (eng. pullup). Pinovi P1.0 i P1.1 također služe i kao
neinvertirajući (AIN0) i invertirajući (AIN1), preciznog analognog
komparatora, koji je ugrađen u samom procesoru. Izlazni stupnjevi
Porta 1 mogu primiti 20mA, i mogu direktno dati napajanje za led
indikatore. Kada se jedinice upišu na pinove Porta 1,oni se mogu
koristiti kao ulazi. Kada se pinovi P1.2 do P1.7 koriste kao ulazi dovedu
na nizak nivo (logičku 0), oni će odavati struju (IIL), zbog internih pullup
otpornika. Prilikom programiranja i verifikacije programa, Port 1 prima
podatke.

PORT 3 - Pinovi Porta 3 P3.0 do P3.5 i P3.7 su dvosmjerni ulazno-


izlazni pinovi, sa internim otpornicima prema pozitivnom naponu
napajanja. P3.6 je interno spojen na analogni komparator koji se nalazi
u komponenti, i nije dostupan kao ulazno-izlazni pin opće namjene. Kao
i kod Porta1, izlazni stupnjevi Porta 3 mogu primiti struju intenziteta
20mA, a kada se koriste kao ulazi (kada se na njih upiše jedinica), daju
struju zbog internih pullup otpornika. Port 3 također prima neke
upravljačke signale prilikom programiranja i provjere EEPROM-a. Pinovi
ovog porta osim kao standardni ulazno/izlazni pinovi mogu imati i neke
posebne funkcije prema sljedećoj tablici:
Pin porta P3 Opis alternativne funkcije koju
pin može obavljati
P3.0 RXD – ulazni serijski port
P3.1 TXD – izlazni serijski port
Tehnička škola Ruđera Boškovića Zagreb 12
Mikroupravljači

P3.2 INT0' – ulaz za vanjsko


prekidanje procesa koji je
aktivan u nuli.
P3.3 INT1' – ulaz za vanjsko
prekidanje procesa koji je
aktivan u jedinici.
P3.4 T0 –vanjski ulaz za tajmer
P3.5 T1 – vanjski ulaz za tajmer

RST - ulaz pomoću kojeg možemo resetirati cijeli uređaj. Kada se na


ovaj ulaz dovede logička jedinica u roku 1 sekunde resetiraju se svi U/I
pinovi. Držanje ovog pina na “1” u trajanju od 2 vremenska ciklusa
dovodi do restartanja komponente. Dok je reset ulaz na visokom
potencijalu, svi ulazno-izlazni pinovi se postavljaju na “1”.

XTAL1 - Ulaz invertirajućeg pojačala oscilatora

XTAL2 - Izlaz invertirajućeg pojačala oscilatora.

UŠTEDA ENRGIJE

Kod ovog mikroupravljača postoje dva načina uštede energije a to su


IDLE MODE i POWER DOWN MODE.

4.1.1 IDLE MODE


Kod ovog načina uštede energije procesor se sam «uspava» i ne troši
energiju, dok svi ostali periferijalni sustavi ostaju aktivni. Sadržaj RAM
memorije i specijalnih funkcijskih registara ostaje nepromijenjen za
vrijeme dok je procesor u štednom načinu rada tj. dok nije aktivan. Ovaj
način uštede energije poziva se softverski, a prekida se softverskim
prekidom ili hardverskim resetom.
Treba biti naglašeno da nakon hardverskog prekida, mikroupravljač
nastavlja sa izvođenjem programskog koda sa onog mjesta gdje je
program bio prekinut.

4.1.2 POWER DOWN MODE


Drugi način uštede energije radi na taj način da se zaustavlja oscilator.
Instrukcija kojom se poziva ovaj način uštede energije bit će zadnja
izvedena prije zaustavljanja oscilatora. Sadržaj specijalnih funkcijskih
registara i RAM memorije biti će sačuvan do trenutka kada se prekine
štedni način rada. Štedni način rada se može prekinuti jedino
hardverskim resetiranjem i reset signal treba trajati dovoljno dugo da se
oscilator ponovno pokrene i stabilizira.

Tehnička škola Ruđera Boškovića Zagreb 13


Mikroupravljači

RADNI UVJETI

 Radna temperatura -55°C do +125°C


 Temperatura skladištenja -65°C do +150°C
 Napon na pinovima prema masi -1.0 do + 7.0V
 Maksimalni napon napajanja 6.6V
 Maksimalna izlazna struja 25mA

KARAKTERISTIKE TAKT IMPULSA

Osnovni parametri takt impulsa:


 Frekvencija takt impulsa (oscillator frequency )određena je kao
iznos recipročne vrijednosti periode takt impulsa tCLCL (clock
period).
 Vrijeme trajanja logičke jedinice tCHCX (high time) i vrijeme trajanja
logičke nule tCLCX (low time). Iz gore prokazanog vremenskog
dijagrama takt impulsa vidljivo je da ova dva vremenska
razdoblja trebaju biti identična.
 Vrijeme porasta tCLCH (rise time) je vrijeme potrebno da signal
poraste od razine stanja 0 do razine stanja 1.
 Vrijeme pada tCHCL (fall time) je vrijeme potrebno da signal padne
sa razine stanja 1 do razine stanja 0.

Tehnička škola Ruđera Boškovića Zagreb 14


Mikroupravljači

OSNOVNE IZVEDBE KUČIŠTA MIKROUPRAVLJAČA


AT89C2051

Tehnička škola Ruđera Boškovića Zagreb 15


Mikroupravljači

Vcc RAM ADDR.


REGISTER
RAM FLASH

GND

STACK
B REGISTER ACC POINTER

PROGRAM
ADDRESS
REGISTER
TEMP2 TEMP 1

BUFFER

ALU

PC
INCREMENTER

INTERRUPT, SERIAL
PSW PORT, AND TIME
BLOCKS PROGRAM
COUNTER

TIMING
INSTRUCTION
AND REGISTER DPTR
RST CONTROL

PORT 1 PORT 3
ANALOG
COMPARATOR
LATCH LATCH

OSC
PORT 1 PORT 3

P1.0 - P1.7 P3.0 - P3.5 P3.7

Tehnička škola Ruđera Boškovića Zagreb 16


Mikroupravljači

Mikroupravljač ATMEL AT89C2051- blok shema, programski


model

Tehnička škola Ruđera Boškovića Zagreb 17


Mikroupravljači

Memorija mikrokontolera

OSNOVNA PODJELA MEMORIJE


Memoriju mikroupravljača AT89C2051 možemo podjeliti na:
 podatkovnu memoriju (RAM, SFR)
 programsku memoriju (FLASH ROM).

Mikroupravljač AT89C2051 ima odvojene adresne prostore za


programsku memoriju i za podatkovnu memoriju. Ukoliko pogledamo
arhitekturu ovoga mikroupravljača vidjet ćemo da postoje odvojeni
adresni registri: jedan za adresiranje podatkovne memorije (RAM
address register) i jedan za adresiranje programske memorije (Program
address register).

4.1.3 PROGRAMSKA MEMORIJA


Mikroupravljač AT89C2051 može adresirati maksimalno 64 KB
programske memorije. Programska memorija je u biti FLASH (ROM)
memorija u koju se pomoću programatora upisuje programski kod. Njen
sadržaj je trajan tj. ne briše se nakon isključenja napajanja. Ova
memorija može se izbrisati programatorom i u nju se može upisati novi
sadržaj do 1000 puta (prema pretpostavkama proizvođača).
Mikroupravljač AT89C2051 ima u sebi integriramo 2 KB programske
memorije, a maksimalnih 64 KB može se ostvariti na sljedeće načine.
FFFF FFFF

62 KB
v a n jsk e
p ro g ra m sk e m e m o rije 64 KB
ili v a n jsk e p ro g ra m sk e
m e m o rije

0800
07FF 2 KB
in te g rira n e
0000 p ro g ra m sk e m e m o rije 0000
Vidimo da možemo integriranoj memoriji pridružiti 62 KB vanjske
memorije ili možemo dodati čitavih 64 KB vanjske memorije. U tom
slučaju mikroupravljač adresira samo vanjsku memoriju i zanemaruje
integriranu programsku memoriju.

4.1.4 PODATKOVNA MEMORIJA


Mikroupravljač AT89C2051 može adresirati maksimalno 64 KB
podatkovne memorije.
Podatkovna memorija se može podijeliti na:
 funkcijske registre (80H - FFH)
 RAM memoriju (00H – 7FH)

Tehnička škola Ruđera Boškovića Zagreb 18


Mikroupravljači

Sam mikroupravljač ima integrirano 128 bajta RAM memorije.


Podatkovna memorija može se povećati do 64 KB dodavanjem vanjske
RAM memorije što pokazuje sljedeća slika.
FFFF

FF
64 KB
P o d ru čje
ili v a n jsk e R A M
fu n k c ijs k ih re g is ta ra
m e m o rije
80
7F
P re o sta li s lo b o d n i d io
R A M m e m o rije

00 0000
Područje funkcijskih registara programeru je dostupno samo preko
direktnog adresiranja, dok je RAM memorija dostupna direktnim ili
indirektnim adresiranjem. Pri pristupanju vanjskoj RAM memoriji koristi
se asemblerska naredba MOVX.

4.1.5 RAM MEMORIJA


Osim funkcijskih registara kao djelom podatkovne memorije
mikroupravljač raspolaže sa 128 bajta integrirane RAM memorije
(memorijski prostor sa adresama od 00H – 80H). Sama RAM memorija
organizirana je u tri segmenta prema sljedećoj slici.
8 b a jta

78 7F
70 77
68 6F
60 67 RAM
58 5F SEGMENT
50 57
48 4F
40 47
38 3F
30 37
28 ...7 F 2 F SEGMENT S MOGUĆNOŠĆU
2 0 0 ... 27 A D R E S IR A N JA P O JE D IN O G B IT A
18 4 1F
BANKE
10 3 17 R E G IS T A R A
08 2 0F
00 1 07

BANKE REGISTARA (32 bajta)


32 bajta RAM memorije, adresa 00H do 1FH, zauzimaju četiri banke
registara. Svaka banka registara sadrži osam registara opće namjene
označenih sa R0 do R7. U jednom trenutku samo jedna od te četiri

Tehnička škola Ruđera Boškovića Zagreb 19


Mikroupravljači

banke je aktivna. Nakon što resetiramo mikroupravljač kao aktivna


banka se automatski postavlja banka 0. Ukoliko želimo koristiti ostale
banke moramo ih softverski odabrati. Koja banka je trenutačno
odabrana zapisano je u status registru (PSW).

SEGMENT S MOGUĆNOŠĆU ADRESIRANJA POJEDINOG BITA (16


bajta)
Unutar ovog segmenta RAM memorije nalazi se 16 bajtova, i
karakteristično je da je svaki od 128 bita, unutar ovoga segmenta,
moguće pojedinačno adresirati. Pojedinom bitu moguće je pristupiti na
dva načina. Prvi način je da se pri adresiranju pojedinih bitova, ovog
segmenta, koriste adrese od 00H do 7FH. Pa tako prvi bit će imati
adresu 00H, drugi 01H itd. Drugi način je da se pojedinom bitu pristupa
preko bajta unutar kojeg se on nalazi. Prvi bajt ovoga segmenta je bajt
sa adresom 20H i unutar njega se nalazi osam bitova koji su označeni
sa 20.0 – 20.7. bitovi drugog bajta ovog segmenta označeni su sa 21.0
– 21.7 itd. Svaki od 16 bajta ovog segmenta moguće je koristiti i kao
običnu RAM memoriju.

RAM SEGMENT (80 bajta)


Ovaj segment obuhvaća bajtove sa adresama 30H do 7FH i on služi
kao obična RAM memorija za privremeno pohranjivanje podataka i
programa koji se izvode.

Tehnička škola Ruđera Boškovića Zagreb 20


Mikroupravljači

4.1.6 MEMORIJSKO PODRUČJE SPECIJALNIH FUNKCIJSKIH


REGISTARA (SFR)

Prikazana mapa pokazuje dio podatkovne memorije koji je rezerviran za


funkcijske registre. To je područje memorijskih adresa 80H do FFH, što
čini memorijski prostor od 128 bajta. Uočavamo da nisu sve memorijske
lokacije zauzete, ali te lokacije se ne mogu koristiti kao RAM memorija.
Pokušaji čitanja tih dijelova memorije kao rezultat daju nasumične
podatke, dok pokušaji upisivanja u taj dio memorije rezultiraju
nedefiniranim posljedicama. U pravilu korisnički programi ne bi smjeli
zadirati u taj dio podatkovne memorije. Ovaj prostor može jedino
poslužiti proizvođaču kako bi dodao neki novi funkcijski registar ili nešto
slično prilikom projektiranja samog mikroupravljača ili njegove nove
verzije.
Sljedeća tablica sadrži popis svih funkcijskih registara mikroupravljača
AT89C2051, njihove memorijske adrese te vrijednost koju poprime
nakon resetiranja.
BINARNA
SIMBOL NAZIV ADRESA VRIJEDNOST
NAKON RESETA
ACC Akumulator 0E0H 00000000
B B registar 0F0H 00000000
PSW Status registar 0D0H 00000000
SP Kazalo stoga 81H 00000111
DPTR Brojilo podataka
DPL Manje značajni bajt 82H 00000000
Tehnička škola Ruđera Boškovića Zagreb 21
Mikroupravljači

DPTR-a
DPH Značajniji bajt DPTR-a 83H 00000000
P1 Registar porta 1 90H 11111111
P3 Registar porta 3 0B0H 11111111
IP Kontrola prekida 0B8H XXX00000
IE Kontrola prekida 0A8H 0XX00000
TMOD Kontrola tajmera/brojila 89H 00000000
TCON Kontrola tajmera/brojila 88H 00000000
TH0 Tajmer/brojilo 0 – 8CH 00000000
značajniji bajt
TL0 Tajmer/brojilo 0 – manje 8AH 00000000
značajniji bajt
TH1 Tajmer/brojilo 1 – 8DH 00000000
značajniji bajt
TL1 Tajmer/brojilo 1 – manje 8BH 00000000
značajan bajt
SCON Serijski prijenos 98H 00000000
podataka
SBUF Buffer serijskog prijenosa 99H Nedefinirano
PCON Kontrola napajanja 87H 0XXX0000

ACC AKUMULATOR
Akumulator je jedan od registara mikroupravljača koji je izdvojen po
funkciji. Akumulator se upotrebljava za privremeno pohranjivanje jednog
operanda, sudjeluje pri izvođenju aritmetičkih i logičkih operacija nad
podacima, te u programiranom prijenosu podataka između
mikroupravljača i vanjskog svijeta. U akumulator se spremaju rezultati
aritmetičkih i logičkih operacija izvedenih u aritmetičko-logičkoj jedinici.
Akumulatori su obično smješteni na jednom od ulaza aritmetičko-
logičke jedinice i u kombinaciji s privremenim registrima (R0 – R7)
odjeljuju ulaz od izlaza aritmetičko-logičke jedinice.

B REGISTAR
B registar ima ulogu istu kao i akumulator. Štoviše on je drugi
akumulator koji omogućava djelotvornije rukovanje podacima.

STATUS REGISTAR (PSW Program Status Word)


Status registar se sastoji od bitova koji se nazivaju dojavni bitovi ili
zastavice. Status registar pridružen je aritmetičko-logičkoj jedinici i u
njega sam procesor automatski postavlja ili briše odgovarajuće
zastavice za vrijeme izvođenja instrukcije, u zavisnosti od rezultata
aritmetičko-logičke operacije. Stanje pojedinih zastavica može poslužiti
kao osnova za uvjetno grnanje.
Status registar mikroupravljača AT89C2051 sastoji se od osam bitova
(zastavica) od kojih se svaki bit može zasebno adresirati.

ZASTAVICA ADRESNA OPIS


OZNAKA
Tehnička škola Ruđera Boškovića Zagreb 22
Mikroupravljači

CY PSW.7 Zastavica prijenosa, koja se postavlja u 1


ako se dogodio prijenos iz najznačajnijeg
bita rezultata prilikom operacije zbrajanja ili
posudba jedinice prilikom operacije
oduzimanja.
AC PSW.6 Pomoćna zastavica prijenosa.
F0 PSW.5 Zastavica 0 koja je dostupna programeru
za opću upotrebu.
RS1 PSW.4 Zastavica za odabir banke registara (bit 1).
RS0 PSW.3 Zastavica za odabir banke registara (bit 0).
OV PSW.2 Zastavica prekoračenja. Prekoračenje se
događa kad se označeni brojevi zbrajaju ili
oduzimaju.
- PSW.1 Programibilna zastavica, kojoj programer
može dodijeliti funkciju po želji.
P PSW.0 Zastavica parnosti, za prikaz ispravnog
prijenosa podataka. Zastavica P se
postavlja u 1 ako je broj jedinica
prenesenog podatka paran.

KAZALO STOGA (SP Stack Pointer)


Kazalo stoga je adresni registar koji služi za adresiranje memorije
organizirane u stog. Prije nego što opišemo funkciju kazala stoga
moramo objasniti pojam «stog» (eng. stack). Stog je LIFO (Last In First
Out) memorijska struktura koja uključuje kronološku komponentu.
Najstariji podatak upisan u stog nalazi se na dnu stoga, a najmlađi na
vrhu stoga.
Stogom se rukuje sa samo dvije operacije:
 položi podatak u stog (PUSH)
 izvadi podatak iz stoga (PULL)
Stog se upotrebljava u postupcima posluživanja programa i prekida, i
služi za privremeno pohranjivanje podataka. Sada kada smo objasnili
pojam memorije organizirane u stog možemo objasniti i kazalo stoga.
Kazalo stoga je registar koji sadrži adresu podatka koji se nalazi na
vrhu stoga. Kod mikroupravljača AT89C2051 kazalo stoga ima duljinu
od 8 bita. Sadržaj kazala stoga mijenja se pri svakom pristupu stogu
(polaganje ili uzimanje podataka).

BROJILO PODATAKA (DPTR Data Pointer)


Brojilo podataka je 16 bitni adresni registar koji sadrži adresu operanda
nad kojim se vrše operacije. Brojilo podataka se sastoji od dva susjedna
registra:
DPH – u kojeg se sprema značajniji bajt adrese operanda.
DPL – U kojeg se sprema manje značajni bajt adrese operanda.
P1, P3
Registri P1 i P3 su dva registra izdvojena po funkciji, a imaju važnu
ulogu pri prijenosu podataka između mikroupravljača i vanjskog svijeta.

Tehnička škola Ruđera Boškovića Zagreb 23


Mikroupravljači

Ovi registri vezani su sa ulazno – izlaznim međusklopovima. Svaki od ta


dva registra predstavlja jedan port mikroupravljača.

PCON Power Control Register


Ovaj funkcijski registar služi za uključenje pojedinih načina rada za
uštedu energije (Power Down Mode i Idle Mode).

BIT OPIS FUNKCIJE

SMOD Generiranje signala za serijski prijenos podataka.


Bit bez funkcije.
Bit bez funkcije.
Bit bez funkcije.
GF1 Bit bez posebne namjene za opću upotrebu.
GF0 Bit bez posebne namjene za opću upotrebu.
PD Postavljanjem ovog bita aktivira se Power Down Mod uštede
energije.
IDL Postavljanjem ovog bita aktivira se Idle Mod uštede energije.
Ukoliko je PD = 1 i istovremeno IDL = 1, prednost ima Power Down
Mod.

SCON Serial Port Control Register

BIT ADRESNA OPIS


OZNAKA

SM0 SCON.7 Odabir načina rada serijskog porta.


SM1 SCON.6 Odabir načina rada serijskog porta.
Ova dva bita određuju na koji će način raditi serijski port i to prema
sljedećoj tablici.
SM0 SM1 Način rada Opis
0 0 0 Shift registar
0 1 1 8-bitni UART
1 0 2 9-bitni UART
1 1 3 9-bitni UART
SM2 SCON.5 Omogućuje višeprocesorsku komunikaciju.
REN SCON.4 Omogućuje/onemogućuje prijem podataka.
TB8 SCON.3 Ovdje se sprema 9. bit koji se šalje kod 2. i 3.
načina rada.
RB8 SCON.2 Ovdje se sprema 9. bit koji se prima kod 2. i 3.
načina rada.
TI SCON.1 Bit za prekid kod slanja podataka.
RI SCON.0 Bit za prekid kod primanja podataka.

SBUF Serial Data Buffer


Ovaj registar ima ulogu kod serijskog prijenosa kao privremeni
spremnik za podatke koje želimo poslati. Pošto je serijski prijenos spor,
da procesor ne treba čekati on natovari podatke u SBUF te dalje izvodi

Tehnička škola Ruđera Boškovića Zagreb 24


Mikroupravljači

neki program. Kada se SBUF isprazni natovari nove podatke i tako


ostvaruje serijski prijenos. Pomoću SBUF registra sprečava se da
serijski prijenos podataka značajnije usporava procesor.

REGISTRI ZA KONTROLU PREKIDA


Kod mikroupravljača AT89C2051 prekidima se upravlja preko sljedećih
funkcijskih registara:
 IE Interrupt Enable Register,
 IP Interrupt Priority Register.
Ukoliko želimo koristiti prekide kod mikroupravljača AT89C2051,
potrebno je učiniti sljedeće:
1. Postaviti EA (enable all) bit u 1. EA bit nalazi se u IE registru.
2. Postaviti ostale bitove registra IE u odgovarajuće vrijednosti.
3. Početi koristiti prekide na odgovarajućim vektorskim
adresama, prema sljedećoj tablici:
Izvor prekida Vektorska adresa
IE0 0003H
TF0 000BH
IE1 0013H
TF1 001BH
R1 & T1 0023H
U slučaju korištenja vanjskih prekida, pinove P3.2 (INT0) i P3.3 (INT1)
potrebno je postaviti u 1, te ovisno o načinu aktiviranja prekida
(trenutačno ili sa zakašnjenjem) potrebno je upisati odgovarajuću
vrijednost u bitove IT0 ili IT1 koji se nalaze u TCON registru.

POSTAVLJANJE PRIORITETA PREKIDIMA


Ukoliko želimo pojedinom prekidu dati veći prioritet u sustavu to je
moguće preko IP registra. Postaviti veći prioritet znači sljedeće; kada se
izvodi neki prekid nijedan prekid, koji ima niži prioritet, ne može ga
prekinuti.
Ukoliko se istovremeno pojave zahtjevi dva prekida istog prioriteta tada
se oni rješavaju prema sljedećem principu.
IE0
TF0
IE1
TF1
R1 ili T1

IP Interrupt Priority Register


Ovaj registar služi za određivanje prioriteta pojedinih prekida. Ukoliko je
vrijednost bita koji određuje prioritet pojedinog prekida 0 taj prekid ima
manji prioritet. U suprotnom slučaju prekid ima veći prioritet. Kod ovog
registra moguće je adresiranje zasebnih bitova.

BIT ADRESNA OPIS FUNKCIJE


OZNAKA

- IP.7 Bit bez funkcije.


Tehnička škola Ruđera Boškovića Zagreb 25
Mikroupravljači

- IP.6 Bit bez funkcije.


- IP.5 Bit bez funkcije.
PS IP.4 Definira razinu prioriteta prekida od strane
serijskog porta.
PT1 IP.3 Definira razinu prioriteta prekida od strane
tajmera 1.
PX1 IP.2 Definira razinu prioriteta vanjskog prekida preko
porta P3.3 (INT1).
PT0 IP.1 Definira razinu prioriteta prekida od strane
tajmera 0.
PX0 IP.0 Definira razinu prioriteta vanjskog prekida preko
porta P3.2 (INT0).

IE Interrupt Enable Register


IE registar je registar pomoću kojeg programer može upravljati
prekidima. Svaki od osam bitova ovog registra ima zasebnu ulogu i
svaki bit je moguće zasebno adresirati.

BIT ADRESNA OPIS FUNKCIJE


OZNAKA
EA IE.7 Ako je EA = 0 onemogućeni su svi prekidi.
Ukoliko je pak EA = 1 tada je svaki od prekida
omogućen ili onemogućen, ovisno o njegovu
kontrolnom bitu (bitovi IE.5 do IE.0).
- IE.6 Bit bez funkcije.
- IE.5 Bit bez funkcije
ES IE.4 Omogućuje(1)/onemogućuje(0) prekide od strane
serijskog porta mikroupravljača.
ET1 IE.3 Omogućuje(1)/onemogućuje(0) prekide izazvane
zasićenjem tajmera 1.
EX1 IE.2 Omogućuje(1) /onemogućuje(0) vanjske prekide
koji dolaze preko porta P3.3 (INT1).
ET0 IE.1 Omogućuje(1) /onemogućuje(0) prekide izazvane
zasićenjem tajmera 1.
EX0 IE.0 Omogućuje(1) /onemogućuje(0) vanjske prekide
koji dolaze preko porta P3.2 (INT0).

TCON Timer/Counter Control Register


Ovaj funkcijski registar služi za upravljanje tajmerom ili brojilom i svaki
bit unutar ovog registra moguće je zasebno registrirati.

BIT ADRESNA OPIS FUNKCIJE


OZNAKA

TF1 TCON.7 Zastavica prekoračenja za tajmer/brojilo 1. Ova


se zastavica automatski postavlja u 1 kada dođe
do prekoračenja kod tajmera/brojila 1, a postavlja
ju sam hardver. Isto tako ona se automatski briše
kada procesor pokrene odgovarajuću prekidnu
Tehnička škola Ruđera Boškovića Zagreb 26
Mikroupravljači

rutinu.
TR1 TCON.6 Ovaj bit služi za uključenje odnoso isključenje
(ON/OFF) tajmera 1 odnosno brojila 1. Postavlja
ga program koji se izvodi.
TF0 TCON.5 Zastavica prekoračenja za tajmer/brojilo 0. Ova
se zastavica automatski postavlja u 1 kada dođe
do prekoračenja kod tajmera/brojila 0, a postavlja
ju sam hardver. Isto tako ona se automatski briše
kada procesor pokrene odgovarajuću prekidnu
rutinu.
TR0 TCON.4 Ovaj bit služi za uključenje odnosno isključenje
(ON/OFF) tajmera 0 odnosno brojila 0. Postavlja
ga program koji se izvodi.
IE1 TCON.3 Postavlja ga hardver kada se uoči vanjski prekid
preko INT1, isto tako ga briše hardver kada se
izvrši vanjski prekid.
IT1 TCON.2 Postavlja se od strane programa kako bi se
specifirala razina vanjskog prekida preko INT1.
IE0 TCON.1 Postavlja ga hardver kada se uoči vanjski prekid
preko INT0, isto tako ga briše hardver kada se
izvrši vanjski prekid.
IT0 TCON.0 Postavlja se od strane programa kako bi se
specifirala razina vanjskog prekida preko INT0.

TMOD Timer/Counter Mode Control Register


Ovaj funkcijski registar služi za definiranje načina rada tajmera odnosno
brojila. Za razliku od TCON registra kod ovog nije moguće adresirati
pojedine bitove već samo cijeli registar.

BIT OPIS FUNKCIJE

GATE Kada je TRx (u TCON registru) postavljen u 1 i GATE = 1


tajmer ili brojilo radi samo dok je INT0 ili INT1 postavljen u 1.
To je takozvana hardverska kontrola. Kada je pak GATE = 0
brojilo ili tajmer će raditi samo kada je TRx postavljen u 1,
takozvana softverska kontrola.
C/T Služi za odabir tajmera ili brojila. 1 za brojilo a 0 za tajmer.
M1 Jedan od bitova za odabir načina rada tajmera odnosno
brojila.
M0 Jedan od bitova za odabir načina rada tajmera odnosno
brojila.
Pomoću bitova M1 i M0 odabiremo način rada integriranog brojila
odnosno tajmera prema sljedećoj tablici.
M1 M2 Način rada
0 0 0 Kao 13-bitni tajmer.
0 1 1 Kao 16- bitni tajmer/brojilo.
1 0 2 Kao 8-bitni tajmer/brolilo sa
automatskim resetiranjem.
Tehnička škola Ruđera Boškovića Zagreb 27
Mikroupravljači

1 1 3 Dva 8-bitna brojila (TL0 ili TL1 jedno


brojilo a TH0 ili TH1 drugo brojilo).
1 1 3 Tajmer/brojilo 1 je zaustavljeno.

PRILAGODBA TAJMERA /BROJILA


Sljedeće tablice daju nam vrijednosti TMOD registra, prema kojima
vršimo prilagodbu tajmera/brojila.
Tajmer/brojilo 0 korišteno kao tajmer
Način Funkcija TMOD
rada Softverska Hardverska
kontrola Kontrola
0 13-bitni tajmer 00H 08H
1 16-bitni tajmer 01H 09H
2 8-bitni tajmer s 02H 0AH
autoresetom
3 Dva 8-bitna tajmera 03H 0BH
Tajmer/brojilo 0 korišteno kao brojilo
Način Funkcija TMOD
rada Softverska Hardverska
kontrola Kontrola
0 13-bitni tajmer 00H 08H
1 16-bitni tajmer 01H 09H
2 8-bitni tajmer s 02H 0AH
autoresetom
3 Dva 8-bitna tajmera 03H 0BH
Tajmer/brojilo 1 korišteno kao tajmer
Način Funkcija TMOD
rada Softverska Hardverska
kontrola Kontrola
0 13-bitni tajmer 00H 80H
1 16-bitni tajmer 10H 90H
2 8-bitni tajmer s 20H A0H
autoresetom
3 Dva 8-bitna tajmera 30H B0H

Tajmer/brojilo korišteno kao brojilo


Način Funkcija TMOD
rada Softverska Hardverska
kontrola Kontrola
0 13-bitni tajmer 40H C0H
1 16-bitni tajmer 50H D0H
2 8-bitni tajmer s 60H E0H
autoresetom
3 Dva 8-bitna tajmera - -

TH0, TL0, TH1, TL1

Tehnička škola Ruđera Boškovića Zagreb 28


Mikroupravljači

Ova četiri registra odvojena su po funkciji i služe kao registri


integriranog brojila odnosno tajmera.
 TH0 – značajniji bajt tejmera/brojila 0.
 TL0 – manje značajan bajt tajmera/brojila 0.
 TH1 – značajniji bajt tejmera/brojila 1.
 TL1 – manje značajan bajt tajmera/brojila 1

Tehnička škola Ruđera Boškovića Zagreb 29


Mikroupravljači

 ASEMBLER
 instrukcija se sastoji od dva dijela:

kod adresni dio

 operacijski kod – dio instrukcije koji određuje vrstu operacije–


određuje koju operaciju procesor treba obaviti
 adresni dio: – određuje odakle dolaze operandi i kuda treba
pohraniti rezultat operacije, adresa neke memorijske lokacije ili
kod (simbol) za neki registar procesora
 strojna instrukcija – instrukcija u obliku nula i jedinica koju
razumije procesor
 operacijski kod dobiva slovčanu kraticu koja podsjeća na
djelovanje instrukcije - mnemonik
 najčešći mnemonici instrukcija za provođenje aritmetičkih
operacija:
ADD zbrojiti (add ) DIV podijeliti (divide)
SUB oduzeti ( subtract) DE smanji za jedan
C (decrement)
MUL pomnožiti (multiply) INC povećati za jedan
(increment)

 premještanje podataka: MOV< dest > < src > ( u stvari se


kopira sadržaj)
 asembler – program koji prihvaća znakove mnemoničkog zapisa
i na temelju tablica mnemonika i simbola stvara binarni oblik
(binarni kod) programa
 instrukcije višeg programskog jezika zamjenjuju po nekoliko
instrukcija strojnog jezika i zbog toga su ti programi kraći i
razumljiviji
 njih treba prevesti prije izvođenja u strojni oblik (compiler)
ADRESNI DIO INSTRUKCIJE

Podjela instrukcija prema broju adresa:

Troadresne instrukcije
 sadrže adrese rezultata, prvog operanda, te drugog operanda
 primjer;
MUL R, W, X ; R:= W*X

Dvoadresne instrukcije
 sadrže prvi i drugi operand, a međurezultat se smješta na mjesto
prvog operanda
 primjer;
MOV P, Y ; P:=Y
DIV P, Z ; P:= Y/Z

Tehnička škola Ruđera Boškovića Zagreb 30


Mikroupravljači

Jednoadresne instrukcije
 kod jednoadresnih instrukcija smatra se da je jedan operand
prethodno smješten u akumulatoru i da se rezultat operacije
smješta u akumulator
 primjer;
ADD X;
LOAD X ; A:= X
STORE Y ; Y:= A

Bezadresne instrukcije
 ovo je moguće u stogovno organiziranom stroju.
 sastoje se od dvije instrukcije:
o PUSH, stavlja podatak na vrh stoga
o POP, uzima podatak s vrha stoga
ADRESE U INSTRUKCIJAMA ZA OBAVLJANJE
ARITMETIČKIH I LOGIČKIH OPERACIJA

Ove instrukcije su jednoadresne (što znači da se jedan operand mora


prije izvođenja instrukcije već nalaziti u akumulatoru).

U ove dvije skupine instrukcija adresira se isključivo unutarnji RAM i


postoje četri načina adresiranja:
a) neposredno adresiranje konstante

Sadržaju akumulatora dodaje se sadržaj koji se nalazi u drugom bajtu


same instrukcije.

b) direktno adresiranje bajta unutarnjeg RAM-a

Tehnička škola Ruđera Boškovića Zagreb 31


Mikroupravljači

Sadržaju akumulatora pribraja sadržaj koji se nalazi na adresi koja je


zapisana u drugom bajtu instrukcije.

c) indirektno adresiranje preko R0 i R1

Sadržaju akumulatora pribraja se sadržaj bajta na koji pokazuje sadržaj


registra R0 ili R1.
d) adresiranje općih registara

Tehnička škola Ruđera Boškovića Zagreb 32


Mikroupravljači

Sadržaju akumulatora pridaje se sadržaj jednog od općih registara.

Tehnička škola Ruđera Boškovića Zagreb 33


Mikroupravljači

SIMBOLIČKI OBLIK ADRESA U MEMONIČKOM JEZIKU

Svaka strojna instrukcija ima i operacijski kod i adresu zapisanu u


binarnom obliku. Kad program pišemo u memoničkom obliku,
prikladnije je umjesto brojeva koristiti simbole. Asembler će pomoću
svojih unutarnjih tablica memonike simbole prevesti u binarni kod. U
asembler za pojedini procesor ugrađene su i tablice koje omogućuju
upotrebu simbola za pojedine registre.
Tako je za simbol akumolatora, koji može biti A ili ACC, u tablicama
asemblera zapisano da taj simbol znači adresu E0.
Drugi bajt pri neposrednom adresiranju konstante i direktnom
adresiranju može se napisati i kao heksadekadski broj. Kada pišemo
heksadecimalne znamenke u memoničkom programu običaj je da se
ispred heksadekadskog broja zapiše znamenka 0, kako bi se on
razlikovao od nekog simbola.
Asembler omogućuje da sami definiramo simbole za pojedine brojeve
pomoću posebnih naredbi asemblera.

STO EQU 64H

Nadalje u memoničkom obliku programa koriste se još i simboli koje


zovemo oznakama. Oznaka se piše ispred instrukcije, a iza nje se
stavlja dvotočka. Ta oznaka tijekom asembliranja poprima vrijednost
koja je jednaka adresi na kojoj je smještena instrukcija.

Instrukcije za provođenje aritmetičkih operacija

4.1.7 Instrukcije za zbrajanje i oduzimanje (ADD, ADDC, SUBB)

ADD, za zbrajanje najnižih 8 bitova, jer u njima nema prijenosa

ADD A, #data zbraja sadržaj akumulatora s nekom konstantom


ADD A, direct zbraja sadržaj akumulatora s direktnom adresom
ADD A,@Ri zbraja sadržaj akumulatora s sadržajem koji se nalazi
na adresi dobivenoj indirektnim adresiranjem
ADD A, Rn zbraja sadržaj akumulatora s sadržajem općih
registara

ADDC, za pribrajanje bita prijenosa iz niže skupine od po osam bitova

ADDC A, #data zbraja sadržaj akumulatora s nekom konstantom


ADDC A, direct zbraja sadržaj akumulatora s direktnom adresom
ADDC A, @Ri zbraja sadržaj akumulatora s sadržajem koji se
nalazi na adresi dobivenoj indirektnim adresiranjem
ADDC A, Rn zbraja sadržaj akumulatora s sadržajem općih
registara
Tehnička škola Ruđera Boškovića Zagreb 34
Mikroupravljači

SUBB, za oduzimanje zajedno s bitom posudbe


SUBB A, #data
SUBB A, direct
SUBB A, @Ri
SUBB A, Rn

4.1.8 Instrukcije za množenje i dijeljenje (MUL, DIV)


MUL, pomnoži registre A i B, te nakon toga nižih osam bitova umnoška
smjesti u registar A, a viših osam bitova umnoška u registar B.

MUL AB množi sadržaj akumulatora A i B registra

DIV, obavlja cjelobrojno dijeljenje osmerobitnog prirodnog broja


pohranjenog u akumulatoru A s osmerobitnim prirodnim brojem
pohranjenim u B registru. Nakon izvođenja instrukcije u akumulator se
pohranjuje kvocijent, a u registar B ostatak.

DIV AB dijeli osmerobitni prirodni broj pohranjen u akumulatoru A s


osmerobitnim prirodnim brojem pohranjenim u B registru

4.1.9 Instrukcije za uvećanje i umanjenje sadržaja za 1

INC, uvećanje sadržaja za 1

INC A uvećanje sadržaja akumulatora za 1


INC direct uvećanje sadržaja direktne adrese za 1
INC @Ri uvećanje sadržaja koji se nalazi na adresi dobivenoj
indirektnim adresiranjem za 1
INC Rn uvećanje sadržaja općih registara za 1
INC DPTR uvećanje brojila podataka za 1

DEC, umanjenje sadržaja za 1

DEC A smanjenje sadržaja akumulatora za 1


DEC direct smanjenje sadržaja direktne adrese za 1
DEC @Ri smanjenje sadržaja koji se nalazi na adresi dobivenoj
indirektnim adresiranjem za 1
DEC Rn smanjenje sadržaja općih registara za 1

Instrukcije za podešavanje sadržaja nakon zbrajanja pakiranih BCD


brojeva (mnemonik DA)

DA, podešava sadržaj nakon zbrajanja pakiranih BCD brojeva

DA podesiti BCD broj u akumulatoru A

Tehnička škola Ruđera Boškovića Zagreb 35


Mikroupravljači

LOGIČKE INSTRUKCIJE

Skupina instrukcija za provođenje logičkih operacija služi za djelovanje


na pojedine bitove bajtova. U tu skupinu ubrajaju se sljedeće
podskupine instrukcija:
 Instrukcije za provođenje logičkih operacija I,ILI i isključivo ILI
(ANL,ORL,XRL)
 Instrukcije za brisanje i komplementiranje akumulatora A
(CLR,CPL)
 Instrukcije za pomicanje bitova u akumulator A
(RL,RLC,RR,RRC,SWAP)

4.1.10 INSTRUKCIJE ZA LOGIČKE OPERACIJE ANL,ORL i


XRL S BAJTOVIMA

Instrukcije ANL,ORL i XRL obavljaju logičke operacije s pojedinim


parovima dvaju bajtova specificiranih adresnim dijelom instrukcije.
Za logičku I operaciju simbol Λ
Za logičku operaciju ILI simbol V
Za logičku operaciju isključivo-ILI simbol
za operaciju logičke negacije koristimo simbol

X Y XΛY X Y XVY X Y X Y
X X
0 0 0 0 0 0 0 0 0
0 1
0 1 0 0 1 1 0 1 1
1 0
1 0 0 1 0 1 1 0 1
1 1 1 1 1 1 1 1 0

a) I operacija b) ILI operacija c) isključivo-ILI op.


d)negacija,

Kod sva četiri načina adresiranja u aritmetičkim operacijama rezultat


uvijek završava u akumulatoru A. Te načine adresiranja imamo i kod
logičkih operacija, ali vidimo da postoje još i dva dodatna načina
adresiranja, kod kojih je odredište jedan od direktno adresiranih
posebnih registara. Pritom je taj adresirani registar i izvorište jednog
operanda a drugi je ili konstanta ili akumulator A.

4.1.11INSTRUKCIJE ZA DJELOVANJE NAD BITOVIMA


AKUMULATORA

00000011 RR A
Tehnička škola Ruđera Boškovića Zagreb 36
Mikroupravljači

00010011 RRC A
00100011 RL A
00110011 RLC A
11000100 SWAPA
11100100 CLR A
11110100 CPL A

Instrukcija RR A pomiče bitove za jedno mjesto udesno a posljedni bit


A0 seli se na mjesto najvišeg bita A7.Sadržaj akumulatora ''rotira''
udesno.
Instrukcija RLC A izaziva isto rotaciju udesno,ali u rotaciji sudjeluje i
zastavica prijenosa C koja u rotaciju uključuje kao da je 9 bit
akumulatora.
Instrukcija SWAP djeluje tako da zamjenjuje donji i gornji kvartet
akumulatora A.
Instrukcija CLR A jednostavno briše akumulator tj. Nakon njezina
izvođenja sadržaj akumulatora jednak je 00H
Instrukcija CPL A komplementira vrijednosti pojedinih bitova
akumulatora.Ako se ona primjerice izvede neposredno nakon instrukcije
CLR A,dobit ćemo u akumulatoru A sadržaj 0FFH

UPORABA I OPERACIJEN U PROGRAMIMA

X EQU 01010101B ;
Y EQU 00001111B ;
Z EQU 30H ;

org 2000h
MOV A,#X ;zapisati u akumulator A vrijednost 01010101B
ANL A,#Y ;načiniti I operaciju s vrijednosti 00001111B
MOV Z,A :pohraniti rezultat na adresi 30H

UPORABA ILI OPERACIJE U PROGRAMIMA

X EQU 01010101B ;
Y EQU 00001111B ;
Z EQU 30H ;

org 2000h
MOV A,#X ;zapisati u akumulator A vrijednost 01010101B
ORL A,#Y ;načiniti ILI operaciju s vrijednosti 00001111B
MOV Z,A :pohraniti rezultat na adresi 30H

UPORABA OPERACIJE ISKLJUČIVO-ILI

X EQU 01010101B ;
Y EQU 00001111B ;
Z EQU 30H ;

Tehnička škola Ruđera Boškovića Zagreb 37


Mikroupravljači

org 2000h
MOV A,#X ;zapisati u akumulator A vrijednost 01010101B
XRL A,#Y ;načiniti isključivo-ILI operaciju s vrijednosti
00001111B
MOV Z,A :pohraniti rezultat na adresi 30H

UPRAVLJAČKE INSTRUKCIJE

Pri izvođenju instrukcije upravljačka jedinica procesora povećava


sadržaj programskog brojila tako da ono pokazuje na adresu bajta koji
se nalazi neposredno iza zadnjeg bajta instrukcije koja se upravo
izvodi. Zato se programi pišu tako da instrukcije slijede jedna drugu.
Ali je teško napisati program u kojem se čitav posao obavlja samo
slijedno. Zbog toga se koriste instrukcije za izvođenje skokova u
programima.
U procesoru arhitekture 8051 postoje instrukcije:
 za izazivanje bezuvjetnih skokova (AJMP, LJMP, SJMP, JMP)
 za izazivanje bezuvjetnih skokova (JZ, JNZ, JC, JNC)

Izazivanje skoka u programu događa se na taj način da izvođenje


instrukcije izazove promjenu sadržaja programskog brojila u skladu s
adresnim dijelom instrukcije skoka.

4.1.12 INSTRUKCIJE ZA VELIKE I SREDNJE


BEZUVJETNE SKOKOVE
Instrukcija LJMP omogućuje skok u program na bilo koju adresu
programske memorije. Ona izgleda ovako:

00000010 a15 – a8 a7 – a0

LJMP adr16

Sastoji se od 3 bajta: à u prvom je bajtu operacijski kod


à druga 2 bajta čine 16-bitnu adresu
Sadržaj dvaju adresnih bajtova se jednostavno prepisuje u programsko
brojilo.

Instrukcija AJMP ima 2 bajta i pomoću nje se može skakati u programu


samo u ograničenom rasponu adresa. Izgleda ovako:

a10a9a800001 a7 – a0

AJMP adr11

U prvom se bajtu nalaze 3 bita 11-bitne adrese i to bitovi a10, a9 i a8.


Drugi bajt sadrži preostalih 8 bitova adrese.
Tehnička škola Ruđera Boškovića Zagreb 38
Mikroupravljači

Instrukcija djeluje tako da se u programskom brojilu (nakon što je već


povečano za 2 tako da pokazuje na sljedeću instrukciju) donjih 11
bitova zamijeni s adresnim bitovima iz instrukcije, a gornjih 5 bitova
programskog brojila ostaje nepromijenjeno.
ZAPISIVANJE INSTRUKCIJE SKOKOVA U MNEMONIČKIM
PROGRAMIMA
Adrese operanda mogu se napisati simboličkim imenima, isto tako i
adrese na kojima su smještene pojedine instrukcije mogu se označiti
oznakama. Te se oznake u mnemoničkom obliku programa mogu
zapisati u adresni dio instrukcije skoka.
Prilikom prevođenja programa u strojni oblik, Asembler sam
''izračunava'' adresu i zapisuje ju u adresni dio strojne instrukcije, tako
da mi ne moramo voditi brigu o tome prilikom pisanja programa.

4.1.13 INSTRUKCIJA ZA IZAZIVANJE INDIREKTNIH


SKOKOVA
U pisanju programa pojavljuje se potreba izazivanja skokova na različite
adrese ovisno o vrijednosti jedne upravljačke varijable K. Takve
skokove izaziva instrukcija koja ima sljedeći oblik:

01110011JMP @A+DPTR

Adresa skoka se izračunava tako da se sadržaju podatkovne kazaljke


DPTR pribroji sadržaj akumulatora A. Prije izvođenja te instrukcije
treba u DPTR upisati adresu tablice, a u akumulator A je potrebno
smjestiti pomaknuće (određuje se tako da vrijednost K pomnožimo sa
2).

4.1.14 INSTRUKCIJE ZA IZAZIVANJE UVJETOVANIH


SKOKOVA
Programi se ne mogu uvijek napisati u obliku jednostavnog slijeda
instrukcija, jer instrukcije koje treba obaviti mogu ovisiti o vrijednostima
varijabli koje se koriste.
Ovisno o vrijednostima varijabli mogu se izvoditi različite grupe
instrukcija.
3 ključne riječi ako je, onda i inače odabrane su da bi se po njihovom
smislu moglo zaključiti kako se grananje odvija. Odluka o izboru grane
ovisi o ispunjenju nekog postavljenog uvjeta.

4.1.15 INSTRUKCIJA ZA USPOREDBU I SKOK


Koristi se za olakšavanje programiranja usporedbi dviju vrijednosti u
programu.

10110101 direktna_adresa relativna adresa CJNE A,direct,rel

10110100 konstanta relativna adresa CJNE A, #data,rel


Tehnička škola Ruđera Boškovića Zagreb 39
Mikroupravljači

10111rrr konstanta relativna adresa CJNE Rn, #data,rel

1011011i konstanta relativna adresa CJNE @Ri, #data,rel

Tijekom izvođenja instrukcije najprije se poveća sadržaj programskog


brojila za 3 (jer instrukcija ima 3 bajta) a zatim se uspoređuje vrijednost
prvog operanda s drugim i izaziva skok ako operandi nisu jednaki.
Izvođenjem instrukcije se ne mijenja operand.

4.1.16 PONAVLJANJE DIJELOVA PROGRAMA –


PROGRAMSKE PETLJE
U mnogim programima koristi se niz funkcija koje se ponavljaju. Postoji
način da se instrukcija (ili grupa instrukcija) zapiše samo jednom a
ponavlja više puta u programu.
Postoje 3 načina zapisivanja:
 ponavljanje s unaprijed određenim brojem ponavljanja
 ponavljanje s ispitivanjem uvjeta ponavljanja prije izvođenja niza
instr.
 ponavljanje s ispitivanjem uvjeta ponavljanja poslije obavljanja
niza instr.

PETLJE S ISPITIVANJEM UVJETA PRIJE I NAKON IZVOĐENJA NIZA


INSTR.
Petlja s ispitivanjem prije izvođenja niza instrukcija:
 na početku se ispituje uvjet i ako je uvjet ispunjen obavlja se niz
instrukcija
 tijekom izvođenja instrukcija varijabla se može promijeniti i više
ne zadovoljavati postavljeni uvjet, a tada se niz instrukcija
preskače i početi će se izvoditi prva instrukcija iza petlje
Petlja s ispitivanjem uvjeta nakon izvođenja instrukcije:
 niz instrukcija se izvodi tako dugo dok uvjet nije ispunjen
 kad se uvjet ispuni ponavljanje prestaje i program izvodi
instrukciju iza petlje

INSTRUKCIJA KOJA NE OBAVLJA NIKAKVU OPERACIJU


Ta instrukcija neće u procesoru izazvati nikakvu promjenu, osim što se
programsko brojilo povećava za jedan (1). Instrukciju koristimo prilikom
pisanja i ispravljanja programa za ''čuvanje mjesta ili za generiranje
kašnjenja.

00000000 NOP

Tehnička škola Ruđera Boškovića Zagreb 40


Mikroupravljači

5 KOMBINACIJSKI I SEKVENCIJSKI ZADACI


KOMBINACIJSKI ZADACI

 Kombinacijski zadaci su oni kod kojih su vrijednosti izlaznih


logičkih varijabli funkcije samo trenutnih vrijednosti ulaznih
logičkih varijabli.
 prikaz kombinacijskog zadatka

Xk Yk = F(Xk) yk

 Djelovanje uobičajenog upravljačkog zadatka može zamisliti tako


da on :
o Pročita vrijednosti ulaznih varijabli
o Na temelju vrijednosti tih varijabli odredi upravljačko
djelovanje
o Pošalje upravljačke signale na svoje ulaze
o Nakon nekog vremena opet pročita vrijednosti ulaznih
varijabli

Program koji obavlja upravljački zadatak mora se dakle obavljati trajno.


On se može opisati ovako:

ponavljati
pročitati vrijednosti ulaznih varijabli
obaviti nužna izračunavanja
poslati rezultate na izlaze
čekati propisano vrijeme
do beskonačnosti ili do isključivanja

Ovakvu petlju možemo napisati u strojnom obliku:

Org 2000h
Petlja:
Lcall ulaz ; pročitati vrijednosti ulaznih varijabli
Lcall funkcija ; obaviti nužna izračunavanja
Lcall izlaz ; poslati rezultate na izlaze
Lcall cekati ; čekati propisano vrijeme
Sjmp petlja ;vratiti se na početak petlje

Procedura ULAZ može čitanje ulaznih varijabli obaviti ili tako da


instrukcijama MOV C, P4. x pročitamo pojedinačne bitove u bit C, ili
tako da instrukcijom MOV A, P4. x dobivamo u akumulator.
Procedura FUNKCIJA obavlja sva potrebna ''izračunavanja'' i određuje
vrijednosti izlaza.
Tehnička škola Ruđera Boškovića Zagreb 41
Mikroupravljači

Procedura IZLAZ može se napisati ili tako da se na izlaz prenose


pojedinačni bitovi instrukcijom MOV P5. y, C ili tako da se vrijednosti
onih bitova koje želimo prenijeti na izlaz smjeste na odgovarajuća
mjesta u akumulatoru A i zatim se svi istodobno prenesu u registar
pristupa P5.
Procedura CEKATI se može ostvariti izvođenjem niza instrukcija. Mi
točno znamo koliko koja instrukcija traje i možemo izračunati koliko traje
izvođenje nekog niza instrukcija. Procesor 80C515 s taktom frekvencije
12Mhz ima strojni ciklus trajanja 1μs a većina instrukcija traje 1 ili 2
strojna ciklusa.
Za proceduru CEKATI najčešće se koristi instrukcija NOP čije izvođenje
traje 1μs.
SEKVENCIJSKI ZADACI

Kod obavljanja sekvencijskih zadataka izlazna veličina ovisi o:


vrijednostima ulaznih varijabli
vrijednostima memoriranih stanja unutar sklopa

G(Xk ,Zk)
Xk Yk

H(Xk ,Zk)

Zk Zk+1

U sekvencijskim zadacima varijable Yk određuju se iz trenutnih


vrijednosti ulaznih varijabli Xk, i iz dodatnih unutarnjih varijabli stanja
Zk. S pomoću trenutnih vrijednosti ulaznih varijabli Xk i trenutnih
vrijednosti varijabli stanja Zk, izračunavaju se i nove vrijednosti varijabli
stanja koje će se koristiti u sljedećem vremenskom koraku k+1, pa ih
označavamo sa Zk+1.
To možemo zapisati:

Yk=G(Xk,Zk),
Zk+1=H(Xk,Zk)

Ostvarenja sekvencijskih zadataka nazivamo sekvencijskim automatima


ili samo automatima.
Sa n logičkih varijabli stanja može se zapamtiti 2n različitih stanja.
Jedan od tipičnih sekvencijskih zadataka je brojanje nekih događaja, a
to se obavlja brojilom. Ono pod utjecajem neke promjene ulazne
varijable mijenja svoje stanje.
Brojilo se može izvesti sklopovski i programski.
Tehnička škola Ruđera Boškovića Zagreb 42
Mikroupravljači

PRIMJER:
Želimo brojati koliko se puta pritisne tipka spojena na ulaz P 4.0.
Svaki put kad se tipka pritisne brojilo poveća vrijednost varijable za 1 i
na izvodu P 5.7 generira impuls trajanja 1 ms. Kada brojilo dosegne
broj 100, treba skočiti negdje na nastavak programa.

U ovom primjeru potrebna su nam 2 stanja:


početno stanje S0 - u njemu ostajemo dok na ulazu očitavamo
vrijednost x = 0
stanje S1 - u njega se prelazi kad se na ulazu pročita vrijednost x = 1

To se može zapisati u obliku grafa stanja:

Dva stanja S_0 i S_1 mogli bi kodirati s jednom logičkom varijablom


stanja Z i mogli bi reći da nam
Z=0 označava stanje S_0 i
Z=1 označava stanje S_1.

Na osnovi opisa zadatka možemo napisati tablice istinitosti za funkcije


Yk=G(Xk,Zk),
Zk+1=H(Xk,Zk).
One izgledaju ovako:

Xk Zk Yk Zk+1
0 0 0 0
0 1 0 0
1 0 1 1
1 1 0 1

Na temelju tablica možemo napisati i algebarski oblik funkcija:


Yk=Xk ZkZk+1= Xk
Program:
BROJILO EQU30H
ORG 2000H
MOV BROJILO, #0
Tehnička škola Ruđera Boškovića Zagreb 43
Mikroupravljači

CLR P5.7
S_0:
JNB P4.0, S_0
SETBP5.7
INC BROJILO
LCALLCEKATI_1MS
CLR5.7
CJNE BROJILO, #100,S
LJMP NASTAVAK
S:
CLRP5.7
S_1:
JB P4.0,S_1
SJMP S_0

Sekvencijski zadaci se prepoznaju po tome što se već iz opisa zadatka


riječima prepoznaje da izlazne funkcije ovise o više prethodnih
vrijednosti ulaza, ili po tome što iste kombinacije vrijednosti ulaznih
varijabli mogu uzrokovati višeznačne izlazne vrijednosti.

Tehnička škola Ruđera Boškovića Zagreb 44

You might also like