Mikrokontroler je mali računar, realizovan u obliku integrisanog kola koji objedinjuje sve potrebne komponente, kako bi mogao samostalno da funkcioniše. Tu spadaju integrisani mikroprocesor, memorija, digitalni i analogni ulazi/izlazi, tajmeri, brojači, oscilatori i drugi sklopovi (u zavisnosti od vrste i namene mikrokontrolera) koji su ranije bili svaki u svom integrisanom čipu. Mikrokontroler se programira da normalno radi u beskonačnoj petlji i za to vreme očitava ulaze i podešava izlaze u zavisnosti od programa koji mu je zadat.
Prvi računarski sistem na čipu, koji je optimizovan za upravljanje procesima bio je mikrokontroler Intel 8048, proizveden 1975. godine. Imao je na sebi RAM i ROM memoriju. Ugrađen je u više od milion PC tastatura i drugih numeričkih aplikacija. U ovo vreme svaki mikrokontroler je imao dve varijante: jednu sa programabilnom EEPROM memorijom koja je bila skuplja, i drugu sa PROM memorijom koja je imala mogućnost jednog upisivanja. 1993. godine se pojavljuju prvi mikrokontroleri sa EPROM memorijom koja je imala mogućnost jednostavnog brisanja i ponovnog pisanja. Iste godine Atmel je izbacio prvi mikrokontroler sa Flash memorijom koja je vrlo jednostavna za korišćenje i koja i danas ima najmasovniju upotrebu.
U familiji INTEL-ovih mikrokontrolera izvedenih u vidu jednog čipa mikrokontroler, INTEL 8051 je sintetizovan namenski da služi kao procesor u sistemima digitalnog upravljanja. Osnovna varijanta čipa INTEL 8051 ima strukturu prikazanu na sl.1. Unutar čipa se nalaze centralna procesorska jedinica (CPU), ROM memorija, RAM memorija, tajmeri, brojači, paralelni i serijski ulazi/izlazi. Sem osnovne verzije, na tržištu se može naći veliki broj varijanti ovog mikrokontrolera, koji se od osnovne verzije razlikuju u broju i vrsti periferijskih komponenti, veličini i tipu ugrađene memorije (RAM i ROM), kao i po mehaničkoj izvedbi (tip kućišta i broj nožica). Ovo uputstvo obuhvata osnovnu varijantu mikrokontrolera 8051, uz opis dodatnih elemenata za mikrokontroler 8052.
– 8-bitni CPU;
– 4 KB (8 KB za 8052) interne ROM ili EPROM memorije za čuvanje programa, sa mogućnošću proširenja do 64 KB spoljašnje memorije;
– 128 (256 za 8052) bajtova RAM memorije namenjene za upisivanje i čitanje podataka. U ovoj memoriji se nalaze 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 pokazivač stek memorije, koji pokriva internu memoriju;
– Programabilni serijski ulaz/izlaz (puni dupleks);
– Tajmerski i ulazno/izlazni prekidi sa dva nivoa prioriteta;
– 111 naredbi;
– Aritmetičko-logička jedinica (ALU) koja može da izvršava aritmetičke operacije sabiranja, oduzimanja, množenja i deljenja, kao i logičke operacije I, ILI, EXILI, komplement i negacija;
– 256 adresabilnih bita za rad sa Bulovom algebrom, od toga 128 bita u internoj memoriji i 128 bita pridruženih postojećim internim registrima.
Ovako sintetizovan mikrokontroler u mnogome olakšava posao projektanta hardvera, smanjuje ukupno hardversko okruženje i broj spoljašnjih veza i na taj način povećava pouzdanost sistema. Na sl. 2 prikazana je detaljnija arhitektura mikrokontrolera INTEL 8051. Ovde se vide ranije pomenute komponente: aritmetičko-logička jedinica (ALU) sa parom registara (TMP1, TMP2) za privremeno upisivanje podataka, akumulator (ACC) sa pomoćnim registrom B, statusni registar (PSW), registar naredbi sa dekoderom, programski brojač (PC) i registar za inkrementiranje (povećanje za 1) programskog brojača (PC-incrementer).
Pokazivač steka (SP-Stack Pointer) služi za adresiranje vrha (najviše lokacije) stek memorije. Ovaj registar se inkrementira prilikom upisivanja podataka u stek, a dekrementira prilikom čitanja podataka iz ove memorije.
Mikrokontroler INTEL 8051 poseduje 4 prihvatna registra (LATCH-a) za čuvanje stanja izlaza na portovima P0, Pl, P2 i P3. Registar serijskog prenosa (SBUF) služi za upis podatka koji se šalje i čitanje podatka koji se prima preko serijske veze. Registarski parovi (TH0, TL0) i (TH1, TL1) čine dva 16-bitna tajmera ili brojača.
Za kontrolu i upisivanje statusa prilikom prekida (INTERRUPT-a) za tajmere, brojače i za serijski prenos podataka koriste se registri specijalne namene označeni na sl 1.2 sa IP, IE, TMOD, TCON, SCON i PCON.
IP služi za određivanje nivoa prioriteta prekida, IE za maskiranje (dozvolu ili zabranu) prekida, TMOD i TCON za određivanje načina rada tajmera i brojača, SCON za kontrolu serijskog prenosa i PCON za dodatnu kontrolu serijskog prenosa i režim rada mikrokontrolera.
Memorijski adresni prostor mikrokontrolera INTEL 8051 je podeljen u dva osnovna dela: adresni prostor rezervisan za programe (Code Address Space) i adresni prostor rezervisan za podatke (Data Address Space).
Mikrokontroler može da adresira 64KB programske memorije; interno u samom čipu ima 4KB, a ostatak od 60KB je predviñen kao spoljašnja memorija. Programska memorija je tipa ROM (u nekim varijantama i EPROM ili FLASH), a sem izvoñenja programa moguće je i čitanje nekih konstantih podataka.
Memorija podataka je tipa RAM, a sastoji se iz interne (128/256 bajtova) i eksterne memorije (do 64KB). Pri tome, ako nema previše podataka, eksterna memorija ne mora da se koristi. Internu memoriju je moguće adresirati direktno registarski ili registarski indirektno. Od toga u prostoru od 16 bajtova moguće je adresirati svaki bit (Bit Addressable Segment). U okviru interne memorije podataka nalazi se i stek, koji je organizovan tako da se poslednji upisani podatak prvi čita (Last Input First Output ili LIFO-princip), a koristi se za privremeno čuvanje sadržaja brojača naredbi prilikom poziva na potprograme i za pamćenje adrese izvršenja programa u slučaju prekida. Napomenimo još da se eksternoj memoriji se uvek pristupa indirektno, preko odgovarajućih registara.
Kao što je već rečeno, memorijski adresni prostor mikrokontrolera INTEL 8051 je podeljen u dva osnovna dela: adresni prostor rezervisan za programe (Code Address Space) i adresni prostor rezervisan za podatke (Data Address Space).
Mikrokontroler može da adresira 64KB programske ROM memorije. Donjih 4/8 KB programske memorije može biti interna memorija (nalazi se unutar čipa) ako je EA=Vcc, ili spoljašnja memorija ako je EA=0. Signal PSEN 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 služi za adresiranje višeg bajta, a P0 za adresiranje nižeg bajta te memorije.
Memorija podataka je tipa RAM, 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 specijalnih registara (Special Function Registers – SFR) za kontrolu periferijskih jedinica i rada mikrokontrolera.
-C (PSW.7) Carry Flag (Bit prenosa). Ovo je ekstenzija (deveti bit) za sve aritmetičke operacije i instrukcije pomeranja (šiftovanja), a takođe 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 prenos između nižeg i višeg nibla (donja i gornja grupa od po 4 bita). Koristi ga uglavnom mikrokontroler preko naredbi za BCD konverziju.
-F0 (PSW.5) Fleg 0 stoji na raspolaganju programeru kao bit za univerzalnu upotrebu.
-RS1 i RS0 (PSW.4 i PSW.3) Register Select, služe za izbor dela internog RAM-a u kome je smeštena tekuća grupa registara (registarska banka) R0-R7.
-OV (PSW.2) Overflow (prekoračenje). Setuje se (postavlja na 1) ako je rezultat aritmetičke operacije sa predznakom takav da ne može da se prikaže u jednom bajtu, tj. dođe do prekoračenja opsega (na primer, sabiranjem dva pozitivna broja dobije se negativan broj ili obrnuto). Ako nema prekoračenja, ovaj bit će biti 0.
-(PSW.1) Rezervisano od stane proizvođača za budući razvoj čipa.
-P (PSW.0) Parnost. Ako je broj setovanih bita u akumulatoru paran, ovaj bit će biti postavljen na 1, a ako je neparan, biće resetovan na 0. Uglavnom se koristi za generisanje bita parnosti kod slanja bajta na serijski port ili 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 – niži bajt).
Svaka od ovih nožica može da se koristi kao ulazni ili izlazni priključak, prema potrebi. Za 8052, P1.0 (T2) je spoljašnji brojački ulaz za tajmer 2 a P1.1 (T2EX) je spoljašnja kontrola (triger) za tajmer 2.
9 – Reset:
– Visok logički nivo na ovom ulazu resetuje sve interne registre (registre dovodi u stanje 00000000), sa sledeć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)
~ Neki biti u registrima IP, IE i PCON fizički ne postoje, pa tako ne mogu ni da se resetuju
~ Sadržina celog internog RAM-a se ne menja
– Najvažnija posledica aktiviranja RESET ulaza je da se PC (Program Counter) resetuje, tako da će
započeti izvršavanje programa od adrese 0000h.
od 10 do 17 – Port 3:
– Ako se koristi kao univerzalni ulaz ili izlaz, po svemu je sličan portu 1, ali na svakoj nožici 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) izlaz sa 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 brojač 0
– 15 (P3.5) Tl – Ulaz spoljnjeg takta za brojač 1
– 16 (P3.6) WR – Signal za upis u spoljnu memoriju
– 17 (P3.7) RD – Signal za čitanje iz spoljne memorije
18 i 19 – X2 i X1:
Izlaz i ulaz internog oscilatora. Ako se koristi kvarc-kristal za stabilizaciju učestanosti oscilatora (što je najčešći slučaj), on se vezuje za ove dve nožice, s tim što na svaku nožicu (prema masi) treba dodati još po jedan kondenzator od 20-40pF. Ovoje potrebno da bi se sprečilo oscilovanje na nekom višem harmoniku. Opseg učestanosti je od 1 do 12 MHz, a izrañuju se i mikrokontroleri koji rade i na znatno višim frekvencijama.
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 koristiti sve linije ovog porta kao univerzalni ulazi ili izlazi. Ako se koristi spoljna memorija, onda su ovo visoki adresni izlazi, od A8 do A15. U tom slučaju, čak i ako se koriste samo neke adrese, preostale nožice ovog porta 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 čita bajt iz programske memorije (za kontrolu spoljašnjeg RAM-a se koriste druge nožice).
30 – ALE: Address Latch Enable (Upis u adresni registar):
Da bi sve željene funkcije spakovao u standardno kućište od samo 40 nožica, Intel je morao da pribegne multipleksiranju nekih signala. Tako je port P0 dobio dve funkcije: izlazne adrese A0-A7 i ulaz/izlaz podataka D0-D7. Pre svakog očitavanja programa iz spoljne memorije ili prozivanja RAM-a mikrokontroler na P0 prosleñuje niži bajt adresnog registra i aktivira izlaz ALE. Spoljni registar (najčešće LATCH registar tipa 373 ili 573 iz TTL 74xx familije) na visok nivo ALE memoriše stanje P0, a izlazi ovog registra se koriste kao A0-A7. U drugom delu mašinskog ciklusa mikrokontrolera P0 se koristi kao magistrala podataka (Data Bus).
31 – EA: External Access (Pristup spoljašnjem ROM-u):
Ako je ovaj ulaz nizak, mikrokontroler će sve instrukcije čitati iz spoljnog ROM-a, bez obzira da li ima interni ROM, a ako je visok, prvih 4 KB (8051, 8751) ili 8 KB (8052, 8752) će čitati iz internog, a sve ostalo do kraja adresnog prostora iz eksternog ROM-a. Ako se koristi 8031 ili 8032, na ovaj ulaz treba uvek dovesti nizak nivo (najbolje je spojiti ga sa masom).
od 32 do 39 – Port 0, Adrese A0-A7 ili magistrala podataka:
Slično portu P2, i port P0 može da se koristi kao univerzalni ulaz i izlaz samo ako se ne koristi spoljna memorija. Ako se koristi, tada je P0 adresni izlaz za A0-A7 kad je ALE visok, a magistrala podataka (Data Bus) kada je ALE nizak.
40 – Napajanje +5V