Mikrokontrolerski sistemi

Autor: Duško Đuričin  dipl.ing

Softver

Kontakt: djdusko@eunet.yu

 

BASCOM-8051:  Windows BASIC kompajler za 8051

 Verujem da je većina nas započinjala svoje računarsko opismenjavanje - programiranje uz pomoć BASIC-a jer je bio izuzetno lak za rad. Zamislite sada tu lakoću pisanja programa pomoću BASIC-a ali ovog puta pri programiranju mikrokontrolera...

Samo ime BASIC je skrećenica od: Begginers All-purpose Simbolic Instruction Code. Jednostavno rečeno programski jezik za početnike. Ovaj atribut, "za početnike", ga je dugo pratio te mnogi programeri koji su "držali" do sebe i svog programerskog renomea, često su ga bez posebnih razloga izbegavali.

Pa ipak, svedoci smo da i posle toliko vremena, čak i pojava novih programskih jezika, BASIC zauzima zavidno mesto u masovnosti upotrebe a i onaj nesretni atribut ga polako napušta. Postao je moćna, savremena, široko priznata programska alatka.

A kakvo je stanje u oblasti programiranja mikrokontrolera? Uglavnom se programiralo pomoću asemblera, u skorije vreme sreće se C jezik ali u veoma poznatom nam BASIC-u, može se reći, skoro nimalo.

No vratimo se samom naslovu ovog članka. BASCOM-8051 je programski produkt koji ćemo u nastavku opisati i pokušati da Vas zaintrigiramo za isti. Ukoliko ste zaljubljenik mikrokontrolera i njihovog programiranja ili se možda time profesionalno bavite, evo prikaza jedne izuzetno zanimljive alatke za tu namenu.

MIKROKONTROLERI...

Svima nama koji se bavimo mikrokontrolerima je dobro poznat razvojni proces pisanja-brisanja "programa" dok se ne dođe do konačnog rešenja. Kako to lako i kratko izgleda ovako napisano na papiru. A u praksi... Pa još ako program upisujemo u klasičan EPROM...

No tehnologija je napredovala, pojavili su se mikrokontroleri sa FLASH memorijom pa ISP (In System Programming - omogućuju nam programiranje kontrolera bez vađenja istog iz ciljnog uređaja) pa još razno-razna pomagala ali softverske alatke sa kojima sve to obavljamo se u glavnom nisu menjale (mislim, mi ih nismo menjali) baš nešto naročito - ili da budemo iskreni, nismo bili pri parama da sebi priuštimo nekakav ozbiljan razvojni sistem u nekom višem programskom jeziku, sa dibagerom i drugim pomagalima (čast izuzecima).

Uglavnom se pisalo u asembleru, nadgledalo i simuliralo opet na nekim drugim softverskim paketima, programiralo se na (pravljenim) programatorima za koje je obično bilo problema da se nabavi nova verzija programa za podršku novog tipa mikrokontrolera i...
...
...i sve je to na kraju ipak i radilo.

BASCOM = BASic COMpiler

No da li sada može sve to nekako lakše? Naravno. Upravo pomenuti BASCOM-8051 je sjajno rešenje za gore opisani scenario. Radi se o BASIC kompajleru za Intel-ovu familiju MCS-51 mikrokontrolera i njegovih derivata koje danas proizvode Philips, Siemens, Dallas, Atmel, Temic i drugi.

Holandska firma MCS Electronics je programskim paketom BASCOM-8051 obuhvatila sledeće komponente razvojnog sistema:
• Editor
• BASIC kompajler
• Asembler
• Simulator 
• Terminal emulator
• LCD dizajner
• LIB menadžer
• Programator (programski deo)

Celokupan softver je pisan za MS Windows 95/98/NT. Isporučuje se na tri diskete i posle raspakivanja arhiva i startovanja "setup" programa možemo se upustiti u rad sa BASCOM-om. Jedna mala napomena u vezi same instalacije, instalaciona procedura zahteva da imate prijavljen bar jedan štampač na vašem računaru pre startovanja "setup" programa. Dakle ukoliko nemate instaliran štampač prvo instalirajte štampač pa tek potom pokrenite instalaciju BASCOM-a. Naravno da štampač ne morate imati fizički priključen.

IMAM ČAST DA NAJAVIM...

Možda se pitate pa zašto vas gnjavim sa svim ovim detaljima oko instalacije? Evo i odgovora. Uspeo sam, prvenstveno zahvaljujući predusretljivosti gospodina Mark C. Alberts-a iz MCS Electronics, da ekskluzivno za časopis Mikro Elektronika pribavim BASCOM-8051 DEMO koji se može download-ovati sa sajta Mikro Elektronike! Koliko je to sve ekskluzivno procenićete sami kada Vam kažem da i pored veoma razvijene distributivne mreže (prodaje se na svim kontinentima) pomenuti DEMO u svetu distribuira samo još jedan časopis i isti (misli se na DEMO) se ne može naći ni na sajtu MCS Electronics (www.mcselec.com) ...

Dakle, nećete morati da žmurite i zamišljate kako izgleda i radi ovo o čemu čitate. Imate mogućnost da po čitanju ovog prikaza odmah probate i uverite se u valjanost istog. DEMO verzija je potpuno funkcionalna sa jedinim ograničenjem da generisani kod ne može biti veći od 2KB. 
Cilj ove DEMO verzije nije da Vam omogući da pišete "program", već čisto edukativan - da testirate rad pojedinih BASIC naredbi, mada se u 2KB da dosta toga napisati... 
Pa da nastavimo sa opisom kako bi smo lakše potom sve i isprobali.

RAZVOJNO OKRUŽENJE

Startovanjem BASCOM-a otvara nam se IDE (Integrated Development Enviroment) - razvojno okruženje unutar koga ćemo obavljati sve poslove te možemo započeti sa pisanjem programa. Radi se o kvalitetnom editoru koji poznaje sve "cake" na koje nas je Windows radno okruženje naviklo, na primer, pritiskom na F1 funkcijski taster otvara nam se help sistem sa objašnjenjem za naredbu na kojoj je bio kursor. Pored objašnjenja sintakse za svaku naredbu, dat je i mali primer upotrebe naredbe koji možemo iskopirati u editor ukoliko želimo da ga isprobamo ili koristimo.

 

Slika 1. Izgled razvojnog okruzenja BASCOM-a

 
Na slici 2. je dat prikaz tool bar-a t.j. dugmića sa ikonama pa ćemo ih redom pregledati. Krenimo s leva na desno. Prve dve ikone su verujem opšte poznate te ih neću posebno ni opisivati. Treća ikona je "Save File" a sledeća "Save File As". Lično mi se veoma dopada što je opcija snimanja tekućeg programa pod drugim imenom "na dohvat miša". Narednih sedam ikona su opet opšte poznate te idemo na ikonu sa dvogledom koja služi za nalaženje specificiranog teksta. Zatim sledi ikona sa papirom i "štrikliranim" znakom (neki bi rekli, kao logo na nekim poznatim patikama). Pritiskom na ovo dugme vrši se sintaksna provera napisanog programa i nikakvi fajlovi se ne generišu.

Slika 2. Toolbar 

 

Slika 3. Izgled report fajla

Sledi ikona sa čipom. Ovim dugmetom startujemo kompajler. Kao rezultat (ukoliko nema sintaksnih grešaka) dobijamo binarni - izvršni kod za naš mikrokontroler. Propratni fajlovi koji se u ovom procesu generišu se mogu po želji uključiti/isključiti (meni - Options / Compiler /Output) a na raspolaganju su nam HEX datoteka, HEX datoteka u starom Intel-ovom formatu, Debug fajl (koristi ga simulator), Report fajl te Error fajl.
Sledeća po redu je ikona sa rukom i papirom i omogućava nam uvid u rezultat kompajliranja (Report fajl). Primer jednog izveštaja o kompajliranju je dat na slici 3. Pored osnovnih "sistemskih" podataka (verzija kompajlera, tip mikrokontrolera, datum i sl.) imamo detaljan prikaz svih upotrebljenih resursa mikrokontrolera kao i spisak korištenih promenljivih, njihov tip, adrese na kojima se nalaze i to u heksadecimalnoj i decimalnoj notaciji. Na kraju liste, ne vidi se na slici, stoji spisak korištenih konstanti i njihove vrednosti.

Sledeća u nizu je ikona sa čipom ali ovog puta crvene boje. Pritiskom na ovo dugme pokrećemo simulator u koji se automatski učitava tekući program iz editora. Naravno, potrebno je da program bude prethodno i kompajliran jer simulator osim izvornog koda učitava i DBG fajl koji se generiše tek prilikom kompajliranja. Ovo je važno imati na umu naročito ako smo već kompajlirali program pa potom dodali - izmenili nešto. Ukoliko ponovo ne kompajliramo program u simulatoru ćemo imati prethodnu verziju!
Pretpostavljam da svi već naslućujete čemu služi dugme sa ZIF-om kao ikonom. To je poziv - start programatora.

U zavisnosti kako podesimo razvojno okruženje (Option stavka u meniju) pritiskom na ovo dugme možemo samo "pozvati" program za rad sa programatorom i potom ručno odraditi sve potrebno ili pak podesiti da automatski započne programiranje uz, opciono, i verifikaciju po obavljenom programiranju. Sam BASCOM podržava, dakle ima ugrađen softver za rad sa jedanaest vrsta programatora i plus podršku eksternom programatoru - programatoru kojeg ste napravili/kupili a nije u listi onih jedanaest pomenutih. Na slici 4. imate prikaz konfiguracionog ekrana za izbor programatora koji je podešen za rad sa eksternim programatorom. Vratićemo se na programatore malo kasnije a sada da polako završimo započeti opis.

Slika 4. Podešavanje opcija programatora

Sledeća ikona pretstavlja terminal emulator. Da ne bi ste napuštali razvojno okruženje radi testiranja serijske komunikacije vašeg uređaja u razvoju, možete se poslužiti sasvim solidnim, ugrađenim terminal emulatorom. Ako pak koristite neki od monitorskih programa za Vašu razvojnu ploču, opcijom "File Upload" možete "preneti" tekući program u HEX formatu monitorskom programu. Unutar podešavanja za monitorski program, možete opciono specificirati i zaglavlja koja će biti poslata pre odnosno posle slanja samog HEX fajla kao što je prikazano na slici 5. Takođe se, po želji, može specificirati i kašnjenje u ms posle svake poslate linije. Jedino u slučaju da posedujete ALTAIR ROM, umesto HEX datoteke šalje se binarni fajl.

Slika 5. Podešavanje opcija monitora

Komunikacija se obavlja na brzini (Baud Rate-u) koja je određena za terminal emulator sem za spomenuti ALTAIR ROM gde je podrazumevana komunikacija 115K Baud-a. Započeti prenos se prekida pritiskom na ESC taster. Podesivi parametri terminal emulatora su prikazani na slici 6.

Ostale su nam još dve ikone. Znak pitanja je, naravno, startovanje help sistema a vrata su za "izlazak" iz BASCOM IDE-a - kraj rada.
Od stavki u meniju skrenuo bih pažnju na sledeće:

• LCD dizajner
• LIB manager

Izborom Tools / LCD designer otvara nam se prozor kao na slici 7. Poznato Vam je da standardni LCD ima pored CG ROM-a i CG RAM (Character Generator RAM) u kome možemo definisati proizvoljne znake i/ili simbole (ili koji možemo koristiti kao običan RAM za naš kontroler). Ovom alatkom možemo lako dizajnirati UDG (User Defined Graphics) karaktere pri radu sa LCD-om. Da ne bi smo "peške" preračunavali setovane bite za definisani karakter, potrebno je jednostavno ucrtati pomoću miša željeni znak u matricu kao na slici i pritiskom na OK dugme, u programu na mestu gde nam se nalazio kursor, dobijamo:

Deflcdchar ?,2,4,14,17,16,16,17,14
Slika 6. Podešavanje opcija komunikacije
 

Slika 7. Korisnički znak

t.j. BASCOM-ovu naredbu za generisanje nacrtanog znaka. Jedino je potrebno umesto znaka pitanja upisati broj od nula do sedam (jer LCD ima osam UDG karaktera) odnosno adresu na kojoj će biti smešten definisani znak. Sada kada nam zatreba prethodno definisani znak jednostavno koristimo standardnu naredbu za ispis na LCD i potom željeni UDG karakter:
LCD Chr(n)
gde je n adresa UDG karaktera. Za detalje pogledajte u Help-u.

U okviru konfigurisanja BASCOM-a za rad sa LCD-om (Options / Compiler / LCD) postoji i "check box" kojim se nalaže LCD dizajneru da gornja tri bita budu setovana (slovna matrica je 5x8 bita) - slika 8. Naime, postoje LCD-ovi koji ne prikazuju ispravno definisane karaktere ukoliko nemaju zadovoljen prethodno pomenut uslov! Na slici 8. vidimo i mogućnost da BASCOM-u "saopštimo" na kojim pinovima su vezani pojedini signali LCD-a, tako da u programu samo koristimo naredbe za rad sa LCD-om dok BASCOM pri kompajliranju vodi računa o hardverskom povezivanju i generisanju signala. Kažem imamo mogućnost, pošto se isto može uraditi i eksplicitno u samom programu naredbom:

Slika 8. Podešavanje opcija kompajlera

CONFIG LCDPIN = PIN, DB4= P1.1, DB5=P1.2, DB6=P1.3, DB7=P1.4, E=P1.5, RS=P1.6

čime se prethodno definisane vrednosti u Options/Compiler/LCD poništavaju. Ne bih trebao da se duže zadržavam i objašnjavam podršku LCD-u u ovom "uvodnom" delu, no moram da naglasim da je ona izuzetna. Tako na primer, pored 4-bitne podrške LCD-a (tzv. smart mode) BASCOM možemo konfigurisati i za rad sa 8 bita t.j. u BUS modu(direktiva $LCD=&Haddress), kao i kombinaciju pomenutih modova - LCD se nalazi mapiran u memorijskoj mapi mikrokontrolera ali radi sa 4 bita... 
Za kraj ovog opisa ostalo mi je još da spomenem LIB menadžer. Ovo je zapravo novitet koji postoji tek od verzije 1.0.0.20 a to je ujedno i verzija DEMO BASCOM-a koji Vam nudimo.

Za kraj ovog opisa ostalo mi je još da spomenem LIB menadžer. Ovo je zapravo novitet koji postoji tek od verzije 1.0.0.20 a to je ujedno i verzija DEMO BASCOM-a koji Vam nudimo. Kada iz Tools/LIB manager izaberemo ovu opciju, pojaviće nam se prozor kao na slici 9. Izborom biblioteke sa leve strane dobijamo na uvid koje sve rutine sadrži dotična biblioteka te možemo da ih dodajemo ili brišemo. Na ovaj način možemo lako organizovati svoje rutine, no vremenom će biti dodate i "interne" rutine BASCOM-a te će ih korisnici moći sami, po potrebi, prilagođavati svojim specifičnostima.

Slika 9. LIB menadžer

ISPOD HAUBE

Pošto smo se upoznali sa osnovama BASCOM-ovog razvojnog okruženja da vidimo sa čime to zapravo raspolažemo t.j. šta BASCOM zapravo poseduje od komandi i kako raspolaže resursima mikrokontrolera.

BASCOM program veoma liči na MS QBASIC t.j. na početku programa je potrebno definisati sve korištene promenljive i njihov tip kao i sve korištene potprograme - funkcije. U zavisnosti od tipa promenljive definisano je i njeno memorisanje. Pa tako:

• Bit promenljiva zauzima 1/8 bajta (BASCOM "slaže" bit promenljive tako da popunjava bit adresibilni deo internog RAM-a)
• Byte promenljiva se memoriše kao osmobitni broj bez predznaka. Opseg vrednosti od 0 do 255.
• Integer (dva bajta) - memoriše se kao šesnaestobitni broj sa predznakom. Opseg vrednosti od -32.768 do 32.767.
• Word (dva bajta) - memoriše se kao šesnaestobitni broj bez predznaka. Opseg vrednosti od 0 do 65.535.
• Long (četiri bajta) - memoriše se kao tridesetdvobitni broj sa preznakom. Opseg vrednosti od -2.147.483.648 do 2.147.483.647.
• Single (četiri bajta) - memoriše se kao tridesetdvobitni binarni broj u skladu sa IEEE notacijom za pokretni zarez jednostruke preciznosti. Opseg 1E-38 do 1E+38
• String - maksimalna dužina string promenljive je 254 bajta. Na kraju svakog stringa postoji još jedan bajt vrednosti 0 koji označava kraj stringa. Dakle string dimenzije 10 bajtova zauzima 11 bajtova memorije.

BASCOM inicijalizuje procesor i uključuje rutine iz biblioteka spram korištenih naredbi u napisanom programu. Ono što uvek uradi je inicijalizacija SP (Stek Pointer-a) i interne Error bit promenljive. Sve ostalo je zavisno od korištenih naredbi. Ukoliko pak želimo da apsolutno raspolažemo resursima mikrokontrolera, možemo pomoću kompajlerskih direktiva $NOINIT i $NOSP naložiti kompajleru da ništa od resursa ne inicijalizuje - zauzima.

Sve korištene promenljive se, ukoliko se drugačije ne navede, smeštaju u interni RAM mikrokontrolera pa otuda i postoje ograničenja u vezi maksimalnog broja korištenih promenljivih.

•· Maksimalni broj BIT promenljivih 120
• Maksimalni broj BYTE promenljivih 20
• Maksimalni broj INTEGER/ WORD promenljivih 10

Navedene cifre ipak treba uzeti sa rezervom jer se prvenstveno odnose na "klasičan" 8051 mikrokontroler sa 128 bajta internog RAM-a. Već za 8052 i slične mikrokontrolere koji imaju 256 bajta internog RAM-a računica je drugačija (samo se ne povećava broj bit promenljivih pošto se one memorišu u bit adresibilnoj zoni RAM-a mikrokontrolera - u prvih 128 bajta RAM-a). Zatim, zavisno od broja potprograma i njihovih gnežđenja zauzimamo i više prostora za SP, te nije lako dati generalnu ocenu o zauzeću mikrokontrolerskih resursa. U dokumentaciji se navodi podatak da je maksimalno zauzeće memorije od strane kompajlera (sa SP-om) 56 bajta i da zavisi od korištenih naredbi.

Spomenutu zavisnost zauzeća resursa mikrokontrolera pogledajmo na sledećem primeru. Ukoliko naš program sadrži PRINT ili INPUT naredbu BASCOM, po ugledu na poznati Intel-ov 8052AH-BASIC mikrokontroler koji ima ugrađen BASIC interpreter, inicijalizuje TIMER1 mikrokontrolera kao "Baud rate" generator za serijsku komunikaciju preko koje se vrši ispis odnosno unos podataka. 

Drugi primer je vezan za korištenje interapt rutina. Na "ulasku" u rutinu za obradu prekida BASCOM gurne na stek 23 registara (i isto toliko ih i skine sa steka na "izlasku") tako da u prekidnoj rutini možete slobodno koristiti bilo koju naredbu pošto je kompletan softverski kontekst glavnog programa sačuvan. Ukoliko vam treba brži "odziv" pri obradi prekida, potrebno je da u programu napišete:

ON Interrupt Label NOSAVE

(gde je Interrupt: INT0, INT1, SERIAL, TIMER0 ,TIMER1 ili TIMER2 a Label labela na kojoj započinje obrada prekida). Opcija NOSAVE nalaže kompajleru da ne generiše kod za čuvanje registara na stek. Sada je na korisniku da u zavisnosti od upotrebljenih registara u samoj interapt rutini iste na ulasku sačuva i po završetku restaurira - vrati im vrednosti koje su imali na ulasku u rutinu.

Dakle, jedini pravi pokazatelj zauzeća resursa je izveštaj po kompajliranju u kome imamo detaljan prikaz svih promenljivih i njihovih adresa. Da bi se dobila još potpunija slika preporučljivo je po kompajliranju pokrenuti simulator i simulacijom utvrditi maksimalnu dubinu steka (ispisuje se u statusnoj liniji simulatora).

U slučaju da mikrokontroler raspolaže i eksternim RAM-om (na razvojnoj - ciljnoj ploči) moguće je definisanje promenljivih i u eksternom RAM-u. Isto tako i STRING promenljive mogu biti smeštene kako u internom tako i u eksternom RAM-u, te u slučaju da se radi o eksternom RAM-u BASCOM za njih pruža neograničenu podršku t.j. jedino kapacitet Vaše eksterne memorije pretstavlja limit.

Imena promenljivih i labela mogu biti dužine do 32 karaktera. Maksimalni broj ALIAS naredbi je 128. Maksimalni broj labela je 5000. Maksimalni broj imena promenljivih je 1000 (ako nekome ovo nije dovoljno u MCS-u će mu rado izaći u susret te napraviti specijalnu verziju za podršku i većeg broja promenljivih). Maksimalni broj gnežđenja pojedinih naredbi je:

• FOR .. NEXT 50
• IF .. THEN 50
• DO .. LOOP 50
• WHILE .. WEND 50
• SELECT .. CASE 25

DIREKTIVE KOMPAJLERA

Spomenuo sam već nekoliko kompajlerskih direktiva i BASCOM-ovih naredbi. Kako detaljan opis svake direktive i naredbe zahteva prostor jedne knjige, u nastavku ću dati čisto spisak ključnih reči a opisaću samo pojedine, "interesantne" direktive - naredbe da Vam olakšam sam početak rada sa BASCOM-om.
Za sve detalje vezane za sintaksu i praktičnu primenu BASCOM-ovih naredbi (i direktiva), osim u helpu možete pogledati i u primerima koje dobijate uz BASCOM. U procesu instalacije BASCOM-a biće kreiran i SAMPLES direktorijum, odmah ispod samog BASCOM-ovog direktorijuma, u kome imate primere upotrebe svake BASCOM-ove naredbe. Savetujem Vam da obavezno pogledate date primere te da ih probate i pod simulatorom.

Od kompajlerskih direktiva BASCOM poznaje sledeće:

• $ASM - $END ASM
• $INCLUDE
• $BAUD
• $CRYSTAL
• $DEFAULT XRAM
• $IRAMSTART
• $LARGE
• $LCD 
• $MAP
• $NOBREAK
• $NOINIT
• $NONAN
• $NOSP
• $OBJ
• $RAMSIZE 
• $RAMSTART
• $REGFILE
• $ROMSTART
• $SERIALINPUT
• $SERIALINPUT2LCD
• $SERIALOUTPUT
• $SIM

Jedna od veoma lepih osobina BASCOM-a je i to što omogućava lako "preplitanje" asemblerskog koda i BASIC-a. Direktivama $ASM - $END ASM označavamo blok u kome sledi čisto asemblerski kod. No, BASCOM dozvoljava da i bez prethodnog "upozorenja" napišemo naredbe u asembleru. Upitaćete se pa čemu onda formalizam najave asemblerskog koda? Odgovor je, zbog labela. Svaku napisanu labelu BASCOM interno označava tako što joj ispred doda tačku. Na primer:

GOTO Test
...
Test:

BASCOM "prevodi" u sledeći asemblerski kod:

LJMP .Test
...
.Test:

Vidimo da ukoliko želimo da referenciramo neku BASIC labelu iz asemblera, treba da koristimo ime labele ispred koje stoji još i tačka.

Ako u asemblerskom kodu želimo da referenciramo labelu koju neće koristiti BASIC već samo asembler, tada je potrebno staviti uskličnik ispred labele, kao u sledećem primeru:

LJMP Test
...
!Test:

Uskličnikom se inače "saopštava" kompajleru da sledi (jedna) asemblerska naredba. Ovo je važno zapamtiti za slučaj da vam zatreba SWAP asemblerska naredba! Kako postoji identična po sintaksi BASIC naredba SWAP (ali sasvim drugačija po semantici), do željene asemblerske naredbe dolazite kucajući:

!SWAP A

Ukoliko koristite pomenute direktive $ASM i $END ASM, unutar njih možete referencirati labele shodno gornjim pravilima. Na primer:

Petlja:
$Asm
djnz a, Test
sjmp .Petlja
Test:
$End Asm

Kada smo već kod asemblera, da spomenem i mogućnost referenciranja BASIC promenljive u asembleru. Jednostavno stavljanjem promenljive u vitičastu (ili srednju) zagradu možemo referencirati BASIC promenljivu unutar asemblerskog koda. Sledeći primer ilustruje prethodno rečeno:

Dim var As Bit
Dim b1 As Byte
Dim w As Word

Reset var 'resetujemo promenljivu iz BASIC-a
setb švarć ' sada setujemo vrednost iz ASM-a
Print var
mov šb1ć,#5
Print b1
w=512
mov šb1ć,šw+0ć ; uzimamo niži bajt
Print b1 ' ispis: 0
mov šb1ć,šw+1ć ; uzimamo viši bajt
Print b1 ' ispis: 2
U prethodnom primeru kod referenciranja nižeg bajta šesnaestobitne promenljive mogli smo i da izostavimo "+0". Obratimo pažnju i na pisanje komentara. U BASCOM-u se komentar označava, pored uobičajene komande REM, apostrofom a u asemblerskim linijama se može korisiti i tačka-zarez (;) znak. Blok komentar se započinje sa '( (apostrof i otvorena zagrada) a završava sa ') (apostrof i zatvorena zagrada).

Kao sledeću zanimljivu direktivu kompajlera, izdvojio bih $SIM. Ovom direktivom se nalaže kompajleru da NE generiše kod za vremenske pauze (tipa WAIT, WAITMS i DELAY) i prvenstveno je namenjena za potrebe simulatora. Da ne bi smo čekali na izvršenje pomenutih pauzi, koje pri simulaciji znaju da se oduže, dovoljno je na početku programa staviti ovu direktivu, kompajlirati program i potom pokrenuti simulator. Ne zaboravite da obrišete pomenutu direktivu i ponovo kompajlirate program pre nego što zapravo isprogramirate mikrokontroler po uspešnoj simulaciji!

Uz $BAUD uvek ide i $CRYSTAL direktiva. Ovim direktivama se kompajer konfiguriše za Baud Rate - brizinu serijskog komunikacionog kanala, te kristal koji ćemo koristiti. Kako Baud Rate zavisi od upotrebljenog kristala t.j. ne mogu se za sve vrednosti upotebljenih kristala dobiti sve standardne brzine za komunikaciju, u izveštaju o kompajliranju imamo podatak koliki će zapravo biti Baud Rate za upotrebljeni kristal, te možemo videti da li se željena brzina može ostvariti sa izabranim kristalom.

Slika 10. Podešavanje fajla sa definicijom registara

Za kraj ovog skraćenog prikaza kompajlerskih direktiva, spomenuo bih $REGFILE direktivu. Sa ovom direktivom nalažemo kompajleru da učita fajl sa opisom registara za željeni mikrokontroler:
• REG51.DAT
• 8052.DAT
• 80C51.DAT
• 80C320.DAT
• 80C520.DAT
• 80515C.DAT
• 80517.DAT
• 80535.DAT
• 80537.DAT
• 80552.DAT
• 89C1051.DAT
• 89C2051.DAT
• 89C4051.DAT
• 89S8252.DAT

Ime fajla je u stvari oznaka mikrokontrolera (sa izuzetkom REG51.DAT fajla koji pretstavlja osnovni opis 8051). U pitanju su ASCII datoteke, te se lako moze kreirati opis i nekog novog mikrokontrolera. Slično ranije opisanim kompajlerskim direktivama, direktnim navođenjem ove direktive poništavaju se prethodna podešavanja Options / Compiler / Misc vezana za izbor mikrokontrolera (vidi sliku 10.). Upozorenje za prekoračenje dužine generisanog koda važi samo za registrovanu verziju BASCOM-a ("check box" na slici 10.).

NAREDBE BASCOM-a

U nastavku sledi spisak BASCOM-ovih naredbi sortiran po abecedi.
Već i letimičan pogled na spisak otkriva bogat instrukcijski set. Kako sam već napomenuo da se neću baviti detaljnijim opisom svake naredbe, izdvojio bih samo nekoliko naredbi za ilustraciju komfora u radu sa BASCOM-om.
Pored već spomenute sjajne podrške za rad sa LCD-om, BASCOM u svom instrukcijskom setu ima i skup komandi koje rade sa SPI, MicroWire, 1Wire te I2C magistralama za serijsku komunikaciju sa perifernim integrisanim kolima.
Skup SPI naredbi (CONFIG SPI, SPIIN, SPIOUT) se može koristiti i kod mikrokontrolera koji nemaju hardverski ugrađen SPI. Dovoljno je na početku programa specificirati:

Config SPI = SOFT, DIN = P1.0 , DOUT = P1.1, CS = P1.2, CLK = P1.3

i sve što nam je posle toga potrebno da bi smo pročitali, recimo neki SPI A/D konvertor, je:

SPIIN var, num

gde je var niz od num elemenata tipa bajt.

Slično je sa naredbama za rad sa MicroWire serijskim interfejsom. Na raspolaganju su nam CONFIG MICROWIRE, MWREAD , MWWRITE , MWWOPCODE. Za detaljan opis primene pogledajte MICROW. BAS program u poddirektorijumu SAMPLES.

Dok su SPI i MicroWire široko prihvaćeni i od strane drugih proizvođača elektronskih komponenti (SPI je patent Motorola-e a MicroWire National Semiconductor-a), 1WIRE za sada poseduju isključivo DALLAS-ovi produkti.

Tabela 1. Sve instrukcije BASKOM Bejzika

Rad sa ovim komponentama nam je izuzetno olakšan BASCOM-ovom podrškom. Od ove verzije je čak uključena podrška za 1WIRE interfejs na više pinova t.j. možemo imati više 1WIRE "kanala" na istom mikrokontroleru (pošto neke 1WIRE komponente nisu adresibilne te se ne može više njih vezivati na istu liniju). 

Slika 11. I2C komunikacija

Slika 12. Podešavanje I2C komunikacije

BASCOM podržava i Philips-ov I2C serijski interfejs i to takođe putem softverske emulacije. No za razliku od prethodnih slučajeva, ovde nam je potreban i dodatni hardver. Na slici 11. je prikazan "dodatni hardver" da bi smo AT89C2051 mikrokontroleru omogućili da radi sa I2C interfejsom. Radi se o prostom vezivanju četiri otpornika. Sada je još samo potrebno da BASCOM-u "saopštimo" na kojim pinovima mikrokontrolera će se nalaziti I2C linije. Startovanjem menija Options/Compiler/I2C otvara nam se prozor dat na slici 12. gde jednostavno pridružimo SCA i SDL linijama odgovarajuće pinove. Posle ovoga možemo koristiti I2CSTART, I2CSTOP, I2CRBYTE, I2CWBYTE, I2CRECEIVE, I2CSEND naredbe.
Verovatno ste se zapitali čemi služi RC5-port "combo box" na slici 12. Radi se o interesantnoj naredbi za prijem i dekodovanje (kod i adresa) komande sa daljinskog upravljača - GETRC5. Ova komanda je predviđena da, uz dodatni infracrveni senzor (tipa SFH506-36 - Siemens), može dekodovati infracrvene daljinske upravljače koji su kodirani po Philips-ovom RC5 standardu.

Povezivanjem kao na slici 13. i upotrebom primera RC5.BAS bićete u mogućnosti da dekodujete RC5 daljinski upravljač. Eto zgodne tastature za Vaš budući uređaj... Obzirom da je serijska komunikacija sa perifernim integrisanim kolima veoma interesantna pri upotrebi mikrokontrolera, spomenuo bih još SHIFTIN i SHIFTOUT naredbe. Koriste se kada želimo da u neku varijablu serijski učitamo niz bitova (SHIFTIN) ili da iz neke varijable serijski prenesemo (SHIFTOUT) niz bitova na određeni pin porta mikrokontrolera.
Sintaksa za pomenute akcije je:

SHIFTIN pin , pclock , var , option ŠPREĆ
SHIFTOUT pin , pclock , var , option 
gde su korištene oznake:
pin - pin na portu koji će služiti za ulaz/izlaz
pclock - pin na portu koji će generisati CLOCK signal
var - promenljiva nad kojom se vrši učitavanje / slanje bitova

Slika 13. Povezivanje preko porta 232

Pomoću option parametara određujemo način rada i to u skladu sa sledećim vrednostima:
0 - MSB (najveći težinski bit) se šiftuje prvi unutra/napolje na silaznu ivicu CLOCK-a
1 - MSB se šiftuje prvi unutra/napolje na uzlaznu ivicu CLOCK-a
2 - LSB (najmanji težinski bit) se šiftuje prvi unutra/napolje na silaznu ivicu CLOCK-a
3 - LSB se šiftuje prvi unutra/napolje na uzlaznu ivicu CLOCK-a
Ukoliko na ove vrednosti dodate četiri, izabrani način rada će se odnositi na eksterni CLOCK signal. Na primer, ako za vrednost option parametra navedete 5, definisali ste da će se učitavanje/slanje bita vršiti na uzlaznu ivicu spoljašnjeg CLOCK signala.
U zavisnosti od upotrebljene promenljive biće generisan i broj šiftovanja. Tako za bajt promenljivu imaćemo šiftovanje osam puta dok će se za integer promenljivu desiti šesnaest šiftovanja.

Neobavezni deo SHIFTIN naredbe je PRE parametar (bez zareza) kojim se nalaže semplovanje ulaznog signala pre nego što počne da se generiše CLOCK signal. Bez PRE opcije prvo se CLOCK setuje, pa se sempluje ulazni signal i potom se resetuje CLOCK linija.

Moglo bi se još dosta pisati o primerima i primenama BASCOM-ovih naredbi obzirom da ima još dosta interesantnih naredbi ne svojstvenih drugim kompajlerima (kao na primer GETAD2051 - naredba zasnovana na aplikaciji gde se uz pomoć spoljašnjeg RC člana i ugrađenog komparatora mikrokontrolera dobija jednostavan AD konvertor). No, kako imate mogućnost da po download-ovanju pomenute DEMO verzije i sami probate, prepustiću Vama da se sami upoznate i isprobate BASCOM-ov set instrukcija.

SIMULATOR

U razvojnom procesu često nam zatreba da evaluiramo - proverimo deo koda ili samo neku rutinu, pa ukoliko nemamo adekvatnu softversku alatku nema nam druge nego da uzastopno programiramo nove i nove verzije testnog programa do konačnog uspešnog ishoda. Uz pomoć BASCOM-a pomenuti način evaluacije možete zaboraviti ili bar drastično smanjiti broj iteracija, zbog ugrađenog simulatora koji Vam stoji na raspolaganju.

Po kompajliranju programa, možete startovati simulator (ikona sa crvenim integralcem) i otvoriće Vam se prozor kao na slici 14. Uočimo šest celina na pomenutoj slici. U gornjem delu ekrana su navigacioni tasteri ispod kojih se nalazi "watch window" prozor sa listom promenljivih koje želimo da nadgledamo u toku izvršavanja programa ili, izborom "break" jezička, liste promenljivih koje izazivaju prekid izvršenja programa kada definisane promenljive poprime zadate vrednosti. Sledeća celina je terminal emulator koji se nalazi ispod pomenutog "watch" prozora. Svaki ispis na serijski port, u toku izvršavanja programa unutar simulatora, biće prikazan u ovom prozoru.

Slika 14. Simulator

Ako program traži unos vrednosti za neku varijablu (INPUT naredba) tada je potrebno mišem kliknuti na prozor terminal emulatora (da bi smo prebacili fokus na isti) te sa tastature računara otkucati vrednost. Po pritisku na Enter tipku simulator nastavlja dalje izvršavanje programa sa prethodno unetom vrednošću. četvrtu celinu pretstavlja prozor sa "izvornim" programom koji se evaluira. Desno od njega nalazi se manji prozor u kome imamo prikaz svih internih registara mikrokontrolera. I poslednja šesta celina je statusna linija na kojoj se ispisuje "tik counter", brojač izvršenih naredbi (asemblerskih) i vreme trajanja-izvršenja programa, kao i ranije pomenuta dubina steka. U bilo kom trenutku izvršenja programa možemo mišem kliknuti na "tik counter" i resetovati ga!

Kao prvu celinu spomenuo sam navigacione tastere. U prvom redu su Run, Pause i Stop tasteri iza kojih slede Step into code (izvršavanje samo jedne naredbe), Step over code (takođe izvršavanje samo jedne naredbe pri čemu se sada i potprogrami tretiraju kao "jedna" naredba) te Run to (izvršenje do linije koju označimo u prozoru sa izvornim programom). Ovim tasterima određujemo način izvršenja programa unutar simulatora.

U nastavku, nalazi se još par veoma interesantnih tastera koji za razliku od prethodnih ne određuju način izvršenja programa, već nam pomažu u vizuelizaciji stanja programa odnosno resursa mikrokontrolera pa čak i nekih "spoljašnjih" uređaja.

Slika 15. Simulacija hardvera

 Prvi po redu takav taser otvara prozor za simulaciju hardvera. To je taster sa ikonom LCD-a. Na slici br. 15 vidimo izgled pomenutog prozora. Vizuelizacija stanja portova (P0 do P3 u zavisnosti od upotrebljenog mikrokontrolera) je urađena pomoću LED-ova "okačenih" na pomenute portove. Ukoliko LED svetli dotični bit je setovan (pod uslovom da je selektovana opcija CG - Common Ground). Ako kliknemo na neki LED menjamo vrednost bita na portu.

Osim toga imamo na raspolaganju i jedan sedmo segmentni displej. Desnim klikom na pomenuti displej otvara nam se novi - konfiguracioni prozor (slika 16.) u kome definišemo koji segment displeja je vezan za koji bit porta.
Na kraju tu je i sam LCD emulator na kome će se, slično terminalskom emulatoru, ispisivati sve naše poruke iz programa koje su upućene LCD-u. Na slici br.15 vidimo da na emuliranom LCD-u imamo i ispis UDG karaktera. Takođe sa iste slike možete videti da se dugačka naredba može preneti i u sledeći red stavljanjem "_" (underline) karaktera na kraju prethodnog reda (kome prethodi bar jedan “space” karakter).

Slika 16. Definisanje veza za sedmosegmentni displej

Odmah do tastera za simulaciju hardvera imamo i taster za simulaciju hardvera u "realnom svetu" - Real Hardware Simulation. Pritiskom na ovaj taster omogućavamo testiranje programa u realnom spoljnom okruženju bez da zaista programiramo mikrokontroler. Naš PC računar će izvršavati napisani program i preko paralelnog porta prenositi stanja emuliranog kontrolera spoljnom periferalu a takođe preko paralelnog porta će se vršiti i učitavanje stanja iz "spoljašnjeg sveta". Jasno Vam je da je za tako nešto potreban specifičan dodatni hardver, no o svemu tome detaljnije pogledajte u aplikaciji AN-10 na adresi http://www.mcselec.com/applicat.htm . Ovakav način simulacije ima i svojih ograničenja: mogu se samo P1 i P3 portovi emulirati te nije podržana emulacija interaptova (postoji još jedna verzija dodatnog hardvera za "spoljašnju simulaciju" koja je delo Poljskog časopisa Elektronika Prakticzna kod koje je moguć rad sa sva četiri porta ali više o tome nekom drugom prilikom). Dakle za sada je podržano samo čitanje i setovanje portova, što znači da će se ovaj segment simulatora i dalje razvijati!
Prikaz strelice koja označava programsku liniju koja se izvršava, uzima dosta procesorskog vremena pa ukoliko želite da ubrzate simulaciju isključite ovu opciju. To nam omogućava sledeći taster u nizu koji objašnjavamo. Za njim slede tasteri za: prikaz sadržaja internog RAM-a, eksternog RAM-a te EEPROM-a u slučaju da koristimo AT89S8252. Na kraju ove grupe tastera nalazi se i taster koji uključuje/isključuje osvežavanje prikaza vrednosti promenljivih za vreme izvršavanja programa.
Na kraju svih tastera imamo i jedan "regler" koji ima zadatak da usporava rad simuliranog programa za slučaj da želite da u kontinualnom režimu rada simulatora nadgledate promenljive.
Ispod opisane grupe tastera imamo tastere za generisanje interapta. Pritiskom na neki od ovih tastera u toku simulacije - izvršavanja programa, generiše se signal odgovarajućeg interapta te na taj način možete proveriti ispravnost rada rutina za obradu interapta.

PROGRAMATOR(I)

Pa, pošto smo napisali i testirali program, na redu je programiranje mikrokontrolera. U uvodu prikaza BASCOM-a sam spomenuo da podržava dvanaest tipova programatora, a evo i liste svih dvanaest:

• MCS Flash Programmer
• MCS SPI Programmer
• BlowIT Programmer
• PG2051
• PG302
• JPK Systems X-programmer
• Peter Averill's TAFE Programmer
• SE512/SE514
• EPROM Simulator on LPT
• Atmel Programmer by DL2TM
• OM Combined Programmer
• External programmer

Više detalja o pojedinim programatorima možete naći na Internetu. Neki od modela su komercijalni a za neke (MCS Flash Programmer, BlowIT Programmer i dr.) možete naći šeme pa čak i nacrte štampanih pločica.

Iz ličnog iskustva u radu mogu Vam preporučiti MCS SPI Programmer sa kojim ćete uživati u svim blagodetima ISP programatora. Bez vađenja mikrokontrolera iz ciljnog uređaja, bez napuštanja BASCOM-ovog razvojnog okruženja, pritiskom na ikonu sa ZIF-om automatski započinje programiranje te potom i verifikacija programa. Naravno, za ovo je preduslov da koristite mikrokontroler sa ugrađenim hardverskim SPI interfejsom a to su AT89S8252 ili AT89C53 mikrokontroleri. Ovo je idealno rešenje za razvojne potrebe.

U slučaju da ciljni mikrokontroler nije neki od gore navedenih, koristim Atmel-ov programator čiji detaljan opis možete naći u dokumentu DOC0285.PDF na Atmel-ovom sajtu. Kako je pomenuti programator prikazan u nekom od ranijih brojeva Mikro Elektronike, verujem da će upotreba istog biti interesantna mnogim čitaocima. Za rad sa ovim programatorom potrebno je konfigurisati BASCOM da koristi "spoljašnji" korisnički softver - External Programmer. Originalni softver za rad sa programatorom je dat u rudimentnom obliku kao "gomila" DOS izvršnih programa za svaki tip mikrokontrolera, pa je najjednostavnije da napravite batch fajl u kome se uz pomoć običnih DOS komandi može realizovati sistem menija za izbor mikrokontrolera koji se želi programirati. Sada taj batch fajl navedete kao ime programa za rad sa hardverom programatora - pogledajte sliku br. 4.

Pomenuti Atmel-ov programator zahteva još par preduslova za ispravan rad. Kao prvo, u BIOS-u Vašeg računara morate podesiti EPP (Enhanced Paralell Port) mod za paralelni port zbog bidirekcionalnog načina rada samog hardvera programatora. Kao drugo, ukoliko koristite Windows 95 (uz eventualni update LPT.VXD drajvera) nećete morati napuštati BASCOM-ovo razvojno okruženje pri programiranju sa pomenutim programatorom. Na žalost, svi oni koji koriste Windows 98 moraće da restartuju računar u MSDOS modu radi programiranja, te potom da sačekaju da se računar ponovo podigne u Windows ambijentu kako bi nastavili rad sa BASCOM-om. Ova neprijatnost u radu posledica je činjenice da Microsoft u verziji Windows-a 98 ne podržava rad EPP porta! Pravo rešenje za pomenuti problem je izrada bidirekcione PC kartice na koji bi se kačio samo programator, kao što je i opisano u Atmel-ovom dokumentu DOC0285.PDF.
I na kraju priče o programatorima, jedno generalno upozorenje pri radu sa programatorima koji se vezuju preko paralelnog porta. Ukoliko imate samo jedan paralelni port u računaru, vodite računa da ne ostavite priključen programator po završetku rada sa istim jer neki programi, kao na primer MS Word, menjaju stanja - status na paralelnom portu po svom startovanju te mogu izazvati neženjene posledice na zaboravljenom mikrokontroleru u priključenom programatoru! Najjeftinije rešenje ovog problema je nabavka stare (ispravne) Hercules kartice i njene ugradnje u računar kao drugog paralelnog porta. U tom slučaju Hercules port postaje LPT1 port na koji konektujete sve štampače pod Windows-om a programatoru na raspolaganju ostaje slobodan paralelni port sa ploče koji je sada LPT2 port.

IDEALNA ALATKA?

Do sada smo se u okviru nekog projekta redovno bavili i "programiranjem" vezanim za razno-razne periferale. Sada pomoću BASCOM-a, koji ima veoma bogat instrukcijski set za ovu podršku, imamo više vremena i usredsređeniji smo na samo rešavanje problema. To su neosporne činjenice no kako ste u prethodnim redovima uglavnom čitali "hvalospeve" o BASCOM-u red bi bio da spomenemo i po koju manu, da ne bi ste još pomisli da je odgovor na podnaslov tačan.

Kao prvo moglo bi se zameriti što su sve promenljive u BASCOM-u globalne. No to i nije neka velika mana naročito kada se radi o projektu gde koristimo samo interne resurse kontrolera jer, dozvolićete mi da karikiram situaciju, ako na raspolaganju imate 5 slobodnih bajtova unutar mikrokontrolera onda je to 5 bajt promenjivih pa sad zovite ih globalnim ili lokalnim sve jedno je.

Druga ozbiljnija primedba je ta što je dozvoljena upotreba samo prostih aritmetičkih izraza - samo jedne kalkulacije po izrazu. Ako želite da izračunate izraz tipa:
D=A+B+C
tada to u BASCOM-u treba da napišete u formi:
D=A+B
D=D+C
To je zato što BASCOM koristi prostiji aritmetički kalkulator bez opterećivanja steka, pa je time i brže izvršavanje! No, kao posledicu pomenutog možete imati upotrebe pomoćnih promenljivih u slučaju rešavanja kompleksnijih izraza.

Sledeća ozbiljna zamerka je na IF naredbu. Iako podržava složenu strukturu (ElseIf..Then) ozbiljna mana joj je što može da barata samo sa prostim uslovom. Dakle samo jedan izraz. Ako želimo da napišemo:
If A=5 And B=6 Then
Procedura
EndIf

tada to u BASCOM-u treba da napišemo na sledeći način:

If A=5 Then
If B=6 Then
Procedura
EndIf
EndIf

Za slučaj da nam treba nešto poput:

If A=5 Or B=6 Then
Procedura
EndIf

u BASCOM-u to možemo uraditi na sledeći način:

If A=5 Then
Procedura
ElseIf B=6 Then
Procedura
EndIf

I kao poslednja primedba (po autorovom mišljenju) to je nedostatak trigonometrijskih funkcija. BASCOM se neprestano dorađuje pa se tako očekuje i "otklanjanje" napomenutih mana, prvenstveno IF naredbe i dopune trigonometrijskim funkcijama, u skorijoj budućnosti.

Možda ćete kada budete i sami radili sa BASCOM-om otkriti po još neki "nedostatak". No nemojte se ustručavati te sve primedbe i sugestije slobodno pošaljite, putem elektronske pošte na adresu markŽmcselec.com. Podrška je odlična i obično u roku od 24 časa dobijate odgovor. Sem toga, postoji i BASCOM-ova mail lista na kojoj takođe možete postavljati pitanja i razmenjivati iskustva. Za sve Vas koji će joj se tek sada priključiti, postoji i arhiva mail liste na adresi http://www.grote.net/bascom/bascom-archive.html. U poslednje vreme, na mail listi, se pričalo o TCP-IP protokolu i 8051 mikrokontrolerima, izradi interfejsa za priključenje IDE HDD-ova na mikrokontrolere, izradi MP3 Player-a sa mikrokontrolerima kao i mnogim drugim interesantnim pitanjima koja su postavljali i na njih odgovarali BASCOM korisnici iz celog sveta!

ZA KRAJ

MCS Electronics je firma koja osim BASCOM-8051 ima još i BASCOM-LT te BASCOM-AVR produkte. BASCOM-LT je preteča BASCOM-8051 i u mnogo čemu je skromniji ali još uvek upotrebljiv produkt. Rađen je za šesnaestobitnu platformu (Windows 3.11) nema podršku za floating point aritmetiku te ima slabije podržane nizove. Do skora je BASCOM-8051 imao mogućnost da pri kompajliranju izaberete da li će se generasti kod u skladu sa BASCOM-LT ili BASCOM-8051 bibliotekama. Od verzije koja se nudi u pomenutom DEMO-u ova opcija više ne postoji i neće je biti ni u narednim verzijama. BASCOM-8051 instrukcijski set se "malo" proširio u odnosu na svog prethodnika...

Šta reći o BASCOM-AVR produktu. Sve rečeno - opisano vezano za razvojno okruženje važi i za BASCOM-AVR. Naravno u pitanju su podrške drugim programatorima no detaljnije možda u nekom budućem, posebnom članku. Možda za kraj reći samo to da je to najmlađi produkt. Zbog velikog interesovanja korisnika, izbačena je prvo verzija kompajlera koja nije imala podršku aritmetici sa pokretnim zarezom, pa je posle usledila nova verzija koja je i to pokrila te se sada očekuje verzija u kojoj bi bio uključen i simulator.

Mislim da je dovoljno rečeno da bi ste se "zagrejali" za opisani produkt. Pa ako je tako, drago mi je da sam u tome uspeo te očekujem da već krećete da download-ujete DEMO verziju koja je, ne zaboravite, celokupno razvojno oruženje za AT89C2051 mikrokontroler! Nadam se da će te uskoro poslati i neku od Vaših interesantnih ruko-umotvorina redakciji kako bi ga prezentovala široj javnosti, jer sa 2KB programske memorije se stvarno može dosta toga (a zahvaljujući BASCOM-u i lako) napraviti!

P.S.

Od kada je inicijalno napisan tekst o BASCOM-u pa do pojave teksta u papirnom izdanju, prošlo je dosta vremena a kako je već rečeno BASCOM se neprestano dorađuje - poboljšava! Zato je važno da napomenem par detalja vezano za nove distribucije BASCOM-a.

Kao prvo, BASCOM se sada isporučuje na dve, umesto kako je u tekstu napisano na tri diskete. Kao posledicu smanjenja distributivnog paketa imamo da se SAMPLES direktorijum ne dobija uz samu distribuciju već je isti potrebno skinuti - download-ovati sa sledece adrese: www.mcselec.com/download_8051.htm.

Novost je i to da IF komanda sada podržava višestruke izraze za uslov (na primer IF A=5 AND B=6 ...), zatim u BASCOM-u postoji podrška i za graficki LCD, kao i mnoge druge interesantne stvari koje su detaljno navedene u history.txt dokumentu koji se dobija uz BASCOM distribuciju.

Takode, BASCOM-AVR je dobio simulator! I za ovu distribuciju postoji history.txt dokument... Dakle ukoliko želite poslednju - aktuelnu verziju DEMO programa BASCOM-8051 treba da je skinete sa gore pomenute adrese!

Autor. x

 
Vreme je za Vaš prvi licencirani program
BASCOM se može naručiti i kod nas! Paket košta 69$ (140DM) kao i bilo gde u svetu. Program je zaštićen licencom koja važi za samo jedan računar. Distribuira se preko interneta ili na disketama. Za više informacija obratite se na redakcijske telefone 011/684-919 i 011/684-391 ili preko formulara za kontakt na sajtu mikroElektronike.


Pročitajte više o ovoj temi
Mali saveti za početnike iz asemblera za Intel 8051
Smart LCD, šta i kako? 
LOOK-UP tabele 
Softverska kašnjenja I
Softverska kašnjenja
Mapiranje

C o p y r i g h t  1998 mikroElektronika. All Right Reserved. Za sva pitanja obratite se redakciji