Osobný počítač | Vyhovuje akýkoľvek PC aj veľmi chabej konfigurácie. Operačný systém akýkoľvek od MSDOSu až po posledný Windows, alebo aj Linux |
Asseblerovský prekladač 8051 | Doporučujem tento prekladač, pretože sa mi zatiaľ najviac páči zo všetkých free prekladačov. Má veľa možností, ktoré oceníte až pri profesionálnej práci. Má dobrý manuál. Beži pod MSDOS, WINDOWS a LINUX. |
simulačný program pre MCU 8051 | Simulátor použijeme pre overenie činnosti preloženého programu bez nutnosti práce s hardware. Tu je odkaz na môj vlastný simulátor, ale môže to býť hocijaký. |
Jazyk C
Je to vyšší programovací jazyk ktorý sa dá implementovať pre ľubovolný typ
procesora, tak prečo by to nešlo aj pre typ 8051. Programovaním mikroradičov
v C sa nebudem zaoberať.
Jazyk assembler
Assembler je najnižší programovací jazyk. Jeho nevýhodou je že program je neprenositelný.
Program napísaný pre 8051 nepôjde na žiadnom inom mikroradiči, ktorý nie je kompatibilný
s 8051. Ďalšou nevýhodou je nutnosť podrobných znalostí o digitálnom spracovaní
informácií. Ak máte prestavu že informatika je o tom ako napísať text vo worde,
surfovať po internete, vypáliť CD a preinštalovať operačný systém - hodne sa mýlite.
Ani programovanie vo Visual BASIC, JAVA, či Visual C++ tu nie je celkom dostatočné
k úspešnej práci.
Prirovnal by som to k automobilizmu. Bežný vodič (vodička) dnes nemusí ani poznať
činnosť spaľovacieho motora a pritom môže spokojne jazdiť celý život. To sú
bežný užívatelia počítačov.
Potom máme automobilových pretekárov, ktorí
dokážu auto majstrovky ovládať a riadiť. Lenže auto dostanú pripravené od
týmu mechanikov takže v mnohom nerozumejú ako presne pracuje prevodovka,
vstrekovanie, pérovanie, nastavovanie prítlaku a .... 1000 ďalších drobností
ktoré sú im k dispozícii. To sú programátori vyšších programovacích jazykov.
Dostanú hotové komponenty a maximálne ich vedia využiť vo svojich programoch.
Ale existujú aj mechanici, ktorý doporobna poznajú každú skrutku prevodovky,
motora, každú súčiastku elektroniky vozidla a ďalších a ďalších systémov.
Je logické že taký mechanik
nepozná dokonale všetky systémy, ale sa špecializuje na niektorý konkrétny.
Ale ak už sa napríklad venuje motorom, tak mu nerobí veľmi problém či je to honda
alebo iný. To sú assembleristi. Poznajú každý detail procesorov a dokážu z nich vyždýmať
úplné maximum a tiež je im vcelku jedno či je to 8051, AVR, alebo PIC.
Assembler pre 8051 sa dá na internete pohľadať celkom bezproblémovo. V podstate každý výrobca mikroradičov poskytuje assembler volne, svojim potenciálnym zákazníkom. Okrem toho prekladač získate aj od firiem, ktoré predávajú vývojové prostriedky pre vývoj aplikácií s mikroradičmi. Bohužial, niekedy sú to viac alebo menej obmedzené demo programy. No a nakoniec je tu free komunita programátorov, ktorý zverejnujú svoje programy ako freeware alebo dokonca ako open source. Tu býva obvykle jediný problém vybrať si ten správny program ktorý najlepšie funguje.
Program sa skladá z inštrukcií a presudoinštrukcií. Zapisuje sa pomocou textového editora a je uložený v súboroch s príponou asm, alebo a51.
Prekladač je program, ktorý vyzerá ako muzeálny exponát. Nemá grafické rozhranie a jeho činnosť sa vyvoláva z príkazového riadka. Ako parameter sa zadáva minimálne meno súboru so zdrojovým programom. Prekladač číta vstupný súbor so zdrojovým textom a analyzuje ho na zaklade syntaxe assembleru 8051. Postupuje riadok za riadkom a prekladá jednotlivé inštrukcie zapísané symbolickými menami na operačné kódy inštrukcií. V prípade že inštrukcia má aj parametre, prekladač dokáže tieto parametre vyhodnotiť a skonrolovať a doplniť ich do výsledného strojového kódu programu. Činnosť assemblera je ďalej riadená preudoinštrukciami. Tieto slúžia len ktomu aby sme ovládali prekladač. Zvyčajne negenerujú žiadny kód pre mikroradič. Nasleduje drobná ukážka ako vyzerá zdrojový program
; takto vyzera assemblerovsky program start: ;zaciatok programu, nulujem pamet mov r1,#20h ;odtialto zacnem mov r2,#60h ;tolkoto ich vynulujem clr a ;pripravim si nulu nuluj: mov @r1,a ;ulozim nulu inc r1 ;posuniem sa na nasledovne miesto djnz r2,nuluj ;opakujem dany pocet krat MainLoop: ;zaciatok hlavneho programu jmp MainLoop ;skok na zaciatok slucky end ;koniec prekladu
Výstupom práce assemblera sú dva súbory. Jeden má príponu LST a druhý HEX. Súbor s príponou LST je tzv. listing programu, alebo doklad o preklade programu. Tu je ukážka ako vyzerá kúsok takého súboru.
Line I Addr Code Source
1: ; takto vyzera assemblerovsky program
2:
3: 0000 start: ;zaciatok programu, nulujem pamet
4: 0000 79 20 mov r1,#20h ;odtialto zacnem
5: 0002 7A 60 mov r2,#60h ;tolkoto ich vynulujem
6: 0004 E4 clr a ;pripravim si nulu
7: 0005 F7 nuluj: mov @r1,a ;ulozim nulu
8: 0006 09 inc r1 ;posuniem sa na nasledovne miesto
9: 0007 DA 00 djnz r2,nuloj ;opakujem dany pocet krat
^
@@@@@ symbol not defined @@@@@
10: 0009 MainLoop: ;zaciatok hlavneho programu
11:
12:
13:
14: 0009 80 FE jmp MainLoop ;skok na zaciatok slucky
15: end ;koniec prekladu
Sem prekladač umiestni v čitatelnej podobe všetky dôležité informácie o tom ako
prebiehal preklad. Je to vlastne zdrojový súbor do ktorého sa pridajú informácie
ako je adresa a kód inštrukcie. Ak prekladač niektorému zapisu nerozumie,
označí riadok chybovým hlásením (v príklade červene zvýraznené).
Druhým produktom prekladača je súbor s príponou HEX. To už vieme že je súbor ktorý obsahuje iba strojový kód určený k naprogramovaniu mikroradiča. Znova je to textový súbor a jeho obsah vyzerá takto:
:0700000079207A60E4F709A2 :0200090080FE77 :00000001FFObsah súboru netreba študovať. Formát súboru sa volá Intel HEX. Tomuto formátu rozumenú programy ako je simulátor a programátor 8051. Programovanie zo súboru Intel HEX som ukázal v prvej lekcii. Simuláciu programu som ukázal v druhej lekcii.
Súbor Intel HEX samozrejme nebude obsahovať platný strojový kód pokiaľ prekladač
nepreloží program bez chyby.
Na záver odkazy na súbory uvádzané ako príklady
Zdrojový program
Listing programu
Preložený program vo formáte Intel HEX
Teraz stačí len získať nejaký zdrojový súbor a môžeme prekladať. Ako príklad môžete skúsiť preložiť program pre vianočný blikač z krajského zenitu v elektrotechnike z roku 2002. Program si uložte do nejakého adresára, napríklad C:\ASM51\BLIKAC.
Teraz si spustíte príkazový riadok. V XP je to pomocou
vo windows 95 98 je to podobné . On by tento príkaz fungoval aj na XP, ale príkazový riadok vytvorený pomocou cmd je pohodlnejší. Lebo umožňuje editáciu celého riadka a má aj históriu príkazov a dopĺnanie mien súborov.Teraz sa treba dostať do adresára kde je nainštalovaný prekladač. U mňa je to na disku E: a v adresaári \ASM8051\ASM51. Použil som na to príkazu MS DOSu. Preklad sputíme zadaním mena prekladača a za meno oddelené medzerou napíšeme kompletnú cestu k zdrojovému súboru. Všetko je vidieť na nasledovnom obrázku
Ak sa v príkazovom riadku pomýlite a potrebujete zadať príkaz znova použite
šipku nahor na klávesnici. Môžete aj viackrát vyberá zadané príkazy z histórie príkazov.
Chybné znaky sa dajú opravovať bezným spôsobom. Kurzor sa posúva šipkami vpravo vľavo,
znaky sa mažú klávesou delete, alebo backspace.
Ak sa vám nechce písať kompletná cesta môžete použiť tabelátor. Cesta sa doplní.
Ak sa nepodarí na prvý krát, tabelátor možno stisnúť aj viackrát. Kto pozná
UNIXovský shell tak túto fičúru určite pozná.
Skúste pozmeniť zdrojový súbor a sledujte či prekladač označí pozmenený riadok ako
chybný.