Mikrokontroleri su idealni za primenu u upravljanju određenim uređajima ili procesima, jer se takav sistem može napraviti samo sa nekoliko komponenti. Razvoj ovakvog sistema zahteva hardver i softver. Hardver je sveden na minimum upotrebom mikrokontrolera. Za razliku od starih, čisto analognih sistema, ovde teret kontrolnog zadatka pada na softver. Dobro razumevanje instrunkcijskog seta i interne arhitekture mikrokontrolera je osnovni preduslov za razvoj aplikativnog softvera.
Razvojni sistem DES-51 omogućiće studentima da razvijene programe za mkrokontrolere familije MCS-51 (8031, 8032, 8051, 8052) testiraju na realnom hardveru. Do sada ste programe testirali samo sa programskim simulatorima. Programi mogu biti pisani na Asembleru ili višem programskom jeziku C. Takođe, studenti će se upoznati sa arhitekturom mikrokontrolera MCS-51 i njegovim okruženjem. Naučiće kako se programira paralelni interfejs 8255 i kako se ostvaruje serijska komunikacija između dva računara. Studenti će se tokom vežbi osposobiti da izvrše softverska i hardverska proširenja razvojne ploče DES-51 kroz svoje semestralne i diplomske radove.
Razvojna ploča DES-51 sadrži sledeće funkcijske blokove (sl.1):
Procesorski blok
Memorijski blok
24-bitni paralelni interfejs (PPI)
Asinhroni serijski port
Ispravke u softveru najlakše je vršiti uz upotrebu In-Circuit Emulator-a (ICE). ICE je inteligentan uređaj, i sadrži konektor koji se postavlja u podnožje mikrokontrolera. ICE emulira mikrokontroler tj. generiše signale koje bi inače generisao mikrokontroler. Pored toga što emulira mikrokontroler, ICE prikuplja i informacije o sistemu i predstavlja najbolje rešenje za ispitivanje originalnog softvera i hardvera, ali je ujedno i najskuplje rešenje.. Drugi način ispitivanja softvera je pomoću softverskog modela mikrokontrolera koji se zove Chip Simulator (CS). Simulator izvršava instrukcije iz programa i snima sve promene u registrima i memoriji. CS ne možemo povezivati sa hardverom, tako da se eksperimenti ograničavaju na obradu podataka.
Razvojni sistem DES-51 predsatavlja jednostavan alat za testiranje programa. Programe izvršava mikrokontroler 8031 koji se nalazi na razvojnoj ploči. Sistem je opremljen monitorskim programom koji omogućava izvršavanje instrukcija korak po korak i takođe omogućava ispitivanje stanja i modifikovanje registara i memorije. Testiranje programa je jednostavno, jer se ispitivani program nalazi u RAM memoriji u koju se smešta pomoću monitorskog programa MINMON smeštenog u programskoj memoriji.
Sl.1 Blok šema razvojnog sistema DES-51
Procesorski blok CPU je baziran na Intelovom mikrokontroleru 8031, mada se mogu koristiti i mikrokontroleri 8032, 8051 i 8052. Ako se koriste mikrokontroleri bez interne programske memorije (8031, 8032) potrebno je postaviti kratkospojnik JP1. Ako se koriste mikrokontroleri sa internom programskom memorijom (8051, 8052) potrebno je izvaditi kratkospojnik JP1. Na razvojnoj ploči DES-51 je standardno ugrađen mikrokontroler 8031, pa shodno tome postavljen je kratkospojnik JP1.
Memorijski blok sadrži 8KB EPROM i 16KB RAM memorije. U EPROM-u je trajno upisan monitorski program MINMON, a u RAM se upisuje program koji se testira. Na sl.2 je prikazana memorijska mapa sistema pre smeštanja programa koji se testira. U ovom načinu rada EPROM zauzima adresno područje programske memorije 0000-1FFFH. RAM memorija zauzima adresno područje podataka u opsegu 8000H-BFFFH. Za paralelni interfejs rezervisan je prostor od 16KB sa startnom adresom C000H, a zauzima prve četiri lokacije. Na sl.3 je prikazana memorijska mapa sistema kada se izvršava program koji se testira i koji se nalazi u RAM-u. Može se uočiti da su RAM i EPROM zamenili svoj adresni prostor, a paralelni interfejs (PPI) je zadržao svoj adresni prostor.
Sl.2 Standardna memorijska mapa Sl.3 Memorijska mapa pri izvršanju programa iz RAM-a
Paralelni blok PPI je realizovan integralnim kolom 8255 koje sadrži tri 8-bitna digitalna porta A, B i C. Adrese portova su date u tabeli T1.
Tabela T1. Adrese registara PPI intefejsa
Asinhroni serijski port omogućava serijsku komunikaciju razvojne ploče DES-51 sa PC računarom. Zbog upotrebljenog kristala od 11.0592 MHz standardna brzina serijskog prenosa je 9600 bit/s, a programski se može postaviti i na neku nižu vrednost. Standardni RS232 serijski interfejs za predstavljanje logičke nule i jedinice koristi naponske nivoe 12V i -12V. Kako interni serijski interfejs mikrokontrolera MCS-51 koristi standardne TTL nivoe to je potrebno izvršiti naponsko prilagođenje. Ovo prilagođenje je izvedeno integralnim kolom MAX232.
U prvim godinama korišćenja razvojnog sistema korišćen je monitorski program firme Rigel. Uz knjigu "Programming and Interfacing the 8051 Mivrocontroller" od autora Sencer Yeralan i Ashutosh Ahluwalia je dobijena i disketa na kojoj se nalazio monitorski program. Ovaj program je napisan na asembleru za 8051. Razvojni sistem DES-51 predstavlja poboljšanu varijantu razvojnog sistema koji su gor spomenuti autori opisali u knjizi. Svi test primeri u knjizi su napisani u asembleru.
Monitorski program MINMON upisan je u EPROM-u razvojnog sistema DES-51 i prihvata sa serijskog porta program u HEX formatu i isti smešta u RAM memoriju. Monitorske komande su dužine jednog karaktera i postoje dve: D i G.
D - Download
G - GO
Nakon resetovanja razvojnog sistema i konfigurisanja serijske veze na ekranu PC računara se ispisuje poruka MINMON, čime se korisnik obaveštava da može uneti željenu monitorsku komandu.
Komanda D prihvata sa serijskog porta podatke u HEX formatu i iste smešta u RAM memoriju razvojnog sistema DES-51.
Komanda G omogućava izvršavanje programa upisanih u EPROM-u ili u RAM-u. Kad primi ovu komandu monitorski program očekuje 4 ASCII heksadecimalna karaktera. Ova četiri karaktera određuju startnu adresu programa.
Prvih godina je korišćen razvojni sistem DES-51 u formi prikazanoj na slici 4. Štampanu ploču je projektovao Igor Vuleta za vreme dok smo radili zajedno u Laboratoriji za fiziku. Inače, Igor je moj prvi diplomac na VIšoj elektrotehničkoj školi i kao diplomski rad je uradio nešto prostiju varijantu razvojnog sistema DES-51. Napravljeno je 10 razvojnih sistema koji su studenti koristili na laboratorijskim vežbama iz predmeta "Mikroračunarski sistemi". Ovaj predmet sam predavao od oktobra 1994. godine do oktobra 2007. godine. Razvojni sistem DES-51 je počeo da se koristi 1997. godine.
Sl.4 Štampana ploča razvojnog sistema DES-51
Od školske 2000. godine je korišćena robustnija varijanta razvojnog sistema koja je prikazana na slikama 5 i 6.
Sl.5 Razvojni sistem DES-51
Sl.6 Prednja i zadnja strana razvojnog sistema DES-51
Nisam bio zadovoljan monitorskim programom MINMON jer nije imao funkcije za čitanje sadržaja XDATA i PDATA memorije, kao i funkcije za upisivanje podataka u XDATA memoriju i procesorske registre. S druge strane, nisam bio zainteresovan da učim asembler za mikrokontroler 8031, jer sam smatrao da je mnogo ugodnije i efikasnije pisati programe na višem programskom jeziku C51. Nemačka firma KEIL ima odlične programske razvojne alate specijalno razvijene za Intelovu seriju mikrokontrolera MCS-51. Potražio sam na Internetu monitorski program za 8031 napisan na C jeziku, ali nisam uspeo da nađem zadovoljavajući program. Zato sam se početkom 2002. upustio u programesrku avanturu i napisao sam monitorski program za 8031 u celosti na C51 jeziku.
Da bi bilo koji mikroprocesorski ili mikrokontrolerski sistem mogao da radi, neophodno je da postoji program koji će da ga pokreće. Program koji se u ovakvim sistemima startuje već po uključenju i omogućava osnovne operacije za rad naziva se monitorski program.
Monitorski program možemo da zamislimo kao jednostavan operativni sistem. Njegova osnovna uloga je unos korisničkog programa i njegovo startovanje, ali pored ovih operacija mogu da mu budu dodate još mnoge funkcije koje služe za testiranje sistema i programa koji se nalazi u memoriji. Zbog uslova da monitorski program mora da bude aktivan odmah po uključenju, on se upisuje u ROM (EPROM) sistema i aktivira se prilikom resetovanja.
MON-C je monitorski program za mikrokontrolere iz MCS-51 familije. Pisan je u programskom jeziku C i ima čak devet komandi za rad. Osim mogućnosti da prenosi program u HEX formatu i startuje ga, MON-C ima i mogućnost da čita sadržaj internih registara mikrokontrolera, sadržaj programske i memorije podataka (ROM i RAM), sadržaj interne memorije, pa čak i da menja podatke u internoj ili eksternoj memoriji podataka. Zahvaljujući tome nije bilo neophodno da se pišu posebni programi za testiranje većine uređaja, već je to prepušteno samom monitorskom programu. Dodatne mogućnosti monitorskog programa takođe olakšavaju i testiranje programa time što omogućavaju uvid u sve važne podatke u toku rada. Izvorni kod monitorskog programa možete preuzeti sa ove strane..
Svojim promptom '' TS51> '' monitorski program obaveštava korisnika da je spreman za prihvatanje i izvršavanje monitorskih komandi. Monitorskim programom se upravlja sa tastature računara, unošenjem odgovarajuće komande. Ukoliko se unese pogrešna komanda, ne štampa se poruka o greški, već se samo štampa monitorski prompt. Komande su:
Ø L – Uzima program sa serijskog porta u Intel HEX formatu i smešta ga na zadatu lokaciju u RAM memoriji. Posle pritiska tastera L monitorski program čeka HEX fajl koji treba da primi preko serijskog porta
Ø G – Skok na adresu u programskoj memoriji. Služi za startovanje programa koji je prethodno smešten u programsku RAM memoriju, ali može i da posluži i za startovanje nekog programa iz EPROM-a. Sintaksa je:
G hhhh
gde je hhhh adresa na koju treba skočiti.
Ø X – Prikazuje zadati deo eksterne memorije podataka na ekranu računara. Pored očitavanja RAM memorije, može da posluži i za čitanje podataka sa više ulaznih uređaja istovremeno, recimo sadržaj svih registara PPI. Komanda se izvršava tako što se zadaje početna adresa i broj lokacija (bajtova) koje treba iščitati. Sintaksa je:
X hhhh dddd
gde je hhhh početna adresa, a dddd broj lokacija u heksadecimalnom formatu.
primer izvršenja komande:
TS51>X 0000 0030
x:0000 ff ff 7d 7f ff ff f7 f7 09 00 81 00 10 11 10 00
x:0010 ff d7 bf 7f ff ff ff df 08 11 01 00 10 05 01 04
x:0020 ff ff ff ff 77 ff ff ff 00 04 00 10 50 04 40 00
Ø C – Prikazuje sadržaj programske memorije na ekranu računara. Kao i kod prethodne komande iščitava se zadati broj lokacija. Na ovaj način može da se čita i sadržaj EPROM-a. Prevashodno služi za čitanje koda i konstanti napisanog programa. Sintaksa je:
C hhhh dddd
gde je hhhh početna adresa, a dddd broj lokacija.
primer izvršenja komande
TS51>C 1410 0030
c:1410 22 10 09 0b 12 14 2e bf 0d 02 7f 0a 02 13 40 af
c:1420 08 22 78 7f e4 f6 d8 fd 75 81 43 02 00 26 30 98
c:1430 fd af 99 c2 98 7e 00 22 aa 06 a9 07 02 12 36 ff
Ø I – Prikazuje sadržaj internog RAM-a mikrokontrolera. 8031 sadrži 128 bajta interne memorije. Ovom komandom je moguće njihovo očitavanje. Jednostavnim pritiskom na taster I ispisuje se na ekranu računara sadržaj svih 128 bajta interne memorije.
primer izvršenja komande I:
TS51>I
i:0000 00 4c 0c ff 00 00 00 04 00 00 00 00 00 00 00 00
i:0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
i:0020 10 00 14 10 01 00 00 27 27 09 00 00 30 14 40 2f
i:0030 ff 0c 4d 4d 00 30 00 00 00 00 00 00 00 00 00 01
i:0040 00 ff 00 04 c2 09 47 0f cb 0e 01 95 11 14 00 00
i:0050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
i:0060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
i:0070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
i:0080 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
i:0090 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
i:00a0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
i:00b0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
i:00c0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
i:00d0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
i:00e0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
i:00f0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
Ø M – Omogućava prikaz i promenu bilo koje memorijske lokacije eksternog RAM-a. Pritiskom na taster M i ukucavanjem adrese zadate lokacije dobija se sadržaj te memorijske lokacije. Nakon toga je moguće koristiti opcije za upisivanje vrednosti, prelazak na prethodnu ili sledeću lokaciju ili izlaz iz ovog moda rada. Opcije su:
- i – upisivanje vrednosti u tekuću lokaciju.Sintaksa je:
i vv gde je vv vrednost koja će biti upisana u memorijsku lokaciju.
- n – očitavanje nove lokacije. Sintaksa:
n hhhh
gde je hhhh heksadecimalna adresa nove lokacije.
- b – čitanje sadržaja prethodne lokacije (jedna niže).
- u – čitanje sadržaja sledeće lokacije (jedna više).
- <Enter> - izlazak iz komande M
Sintaksa komande M je:
M hhhh
gde je hhhh heksadecimalna adresa lokacije koju treba očitati.
Ø D – Omogućava čitanje i promenu bilo koje lokacije internog RAM-a. Sadrži iste opcije kao i komanda M, a sintaksa se razlikuje utoliko što se koriste dve heksadecimalne cifre umesto četiri za adrese. Sintaksa ove komande je:
D hh
gde je hh heksadecimalna adresa lokacije interne memorije.
Ø R – prikazuje na ekranu računara sadržaj internih registara mikrokontrolera. Veoma je korisna komanda pri testiranju programa, jer omogućava korisniku da vidi tačno kakve je promene u podešavanjima izazvao njegov program. Nakon pritiska tastera R, na ekranu se ispisuje broj i naziv svakog registra. Nakon toga potrebno je uneti broj registra čiji se sadržaj očitava. Sintaksa ove komande je:
R bb
gde je bb broj registra.
Ø H – Ispisuje spisak komandi. Koristi se jednostavnim pritiskom na taster H.
C jezik je viši programski jezik koji je uspešno ukomponovao efikasno kodiranje, strukturno programiranje, komforne strukture podataka i širok spektar operacija. Firma Keil je napisala odličan C-51 kros kompajler. Ovaj kompajler nije univerzalni C kompjaler adaptiran za 8051, već namenski 8051 C kompjaler koji generiše veoma brz i kompaktan kod. Keil-ov C-51 kompajler podržava ANSI standard za C jezik.
Korišćenje viših programskih jezika kao što je C ima mnogo prednosti u odnosu na programiranje na asemblerskom jeziku:
Ne zahteva se poznavanje procesorskog instrukcijskog seta.
Detalji vezani za alociranje registara i načine adresiranja se izvršavaju od strane kompajlera.
Program se može podeliti na više programskih celina (potprogrami), što vodi znatno boljoj programskoj strukturi.
Vreme potrebno za programiranje i testiranje programa je značajno smanjeno.
Postojeće C biblioteke sadrže standardne potprograme kao što su: formatirani ulaz/izlaz, numerička konverzija i aritmetika sa realnim brojevima.
Test program napisan na C-51 jeziku za mikrokontroler MCS-51 koji obavlja aritmetiku sa realnim brojevima. Promenljive SCON, TMOD, TH1 i TR1 predstavljaju nazive specijalnih funkcijskih registara (SFR) MCS-51 mikrokontrolera i pomoću njih se definišu karakteristike serijskog prenosa. Nazive SFR registara obavezno pisati velikim slovima (SCON, TH1..). Svi SFR registri su definisani u datoteci reg51.h.
#include <reg51.h> /* definisanje registara za 8051 */
#include <stdio.h> /* standardne U/I definicije */
#include <math.h> /* matematičke rutine */
main() {
float a, b;
SCON = 0x52; /* setovanje registara 8051 */
TMOD = 0x20; /* 9600bps, 8 bita, 1 stop bit, nema parnosti */
TH1 = 0xFD;
TR1 = 1;
printf(“\n\n*** C-COMPILER-51 demonstracioni program ***\n\n”);
while(1) {
printf(“\nUnesi prvi broj = “);
scanf(“%f”, &a);
printf(“\nUnesi drugi broj = “);
scanf(“%f”, &b);
printf(“\na+b = %f a-b = %f “, a+b, a-b);
printf(“\na*b = %f a/b = %f “, a*b, a/b);
printf(“\nSQRT[a] = %8.3f”, sqrt(a));
}
}
#include <reg51.h> /* definisanje registara za 8051 */
#include <stdio.h> /* standardne U/I definicije */
#include <absacc.h>
/* definisanje adresa PPI registara */
#define PORTA XBYTE[0xC000]
#define PORTB XBYTE[0xC001]
#define PORTC XBYTE[0xC002]
#define CTRL XBYTE[0xC003]
main(){
CTRL = 0x80; /* svi portovi izlazni */
PORTA = 0xAA;
PORTB = 0x55;
PORTC = 0xF0;
while(1);
}
Laboratorijske vežbe
U laboratoriji za predmet "MIKRORAČUNARSKI SISTEMI" je instalirano 10 razvojnih sistema DES-51, sa kojima studenti testiraju programe napisane za mikrokontroler i8031.
Elektrotehnički fakultet u Beogradu nema ovakvu laboratoriju za sličan predmet.
VEZE KA SRODNIM APLIKACIJAMA