Program pro simulátor procesoru AT89CX051.  

Postavil jsem si Simulátor procesorů 89c051 dle zapojení zveřejněném na hw.cz. Po jeho oživení jsem zjistil drobné problémy s SW. Pokud byl program provozovan v režimu DOS bylo vše v pořádku a byl jsem zcela spokojen s jeho funkcemi. Problémy nastaly při použití původního SW pod Windows.

První problém který souvisí s chováním Windows9x spočíval ve špatné inicializaci, nedocházelo k prvnímu resetu při přenosu programu, v režimu „jen DOS" se chyba neprojevovala. Při krokování v prostředí C pro DOS pod systémem Windows9x se při prvním krokování projevila stejná chyba, při dalším krokování vše proběhlo zcela v pořádku. Postupným trasováním programu jsem zjistil že pokud program jako první přistoupí na bázovou adresu sériového portu začne vše fungovat tak jak má. Windows9x p ravděpodobně dokud není proveden jako první přístup na bázovou adresu sériového portu, neuvolní ostatní adresy pro použití dosovskému programu. Problém jsem vyřešil vložením následujícího řádku do zdrojového kódu,
outb(baze,0);
je umístěn jako první před ostatními příkazy pro obsluhu portu.

Druhý problém na který jsem narazil spočíval, že pokud byl hexa kód vygenerován překladačem nelineárně, adresy jednotlivých řádku v hexa souboru nedrželi vzestupnou tendenci, byli přeházeny, docházelo při přenosu k chybám a program v simulátoru neběžel jak má. Na tento problém jsem narazil v okamžiku kdy jsem zkoušel C pro 51, SDCC, což mne velmi potrápilo neboť jsem se domníval že mám chybu někde v programu. To jsem vyřešil dopsáním dvou řádků do bat souboru pro překlad. Nejprve se provedl převod na bin soubor a potom zpět na hexa, zdá se to drbáním levou rukou za pravým uchem, ale vyřešilo se to rychle a bezproblémově.

A jak se říká do třetice všeho dobrého i zlého. Přinesl jsem si simulátor k jinému počítači,procesor DURON 700MHz. Se choval program zcela zmatečně. Přenos dat probíhal zcela v pořádku, ale po ukončení programu pro zavedení programu, :-) , do simulátoru. Docházelo chvilkově k nekontrolovatelnému blikání LEDek na simulátoru, dokonce k nastavení TX trvale do 0 a k nastavení resteu. Takže simulátor byl zcela nepoužitelný. Toto chování se na domácím počítači, procesor C 300MHz a stejný operační systém, neprojevilo. Ani při krokování programu a jeho úpravách se mi nepodařilo problém odstranit. V režimu "jen DOS" se problém neprojevoval.

Vzhledem k tomu že jsem chtěl simulátor používat pod Win. Rozhodl jsem se z čistého zoufalství vyzkoušet přepsat sw pod Win. Využil jsem „Borland C++Builder 5 Standard" který jsem si nadělil pod stromeček. Pro komunikaci jsem použil komponentu „ComPort Library ".

Program obsahuje pouze pár tlačítek sloužících k jeho ovládání a realizující jeho funkce.



Tlačítko pro Otevření souboru určeného k přenosu do simulátoru.
Tlačítko pro Výběr a nastavení seriového protu.
Tlačítko pro Reset pomocí programu.
Tlačítko pro Přenos programů do simulátoru.

Program mi již slouží k plné spokojenosti a doufám že program bude fungovat i jiným. Pokud do simulátoru osadíme procesor AT89S8252 získáme možnost zatěžovat výstupní brány stejným proudem jako v případě originální 2051.
Program je freeware co do užívání tak i šíření, za dodržení platných zákonů a slušného chování. Je poskytován tak jak je, bez jakýchkoliv záruk a používání je na vlastní nebezpečí.

Zde si můžete stáhnout program.



©Petr Stehlík 2002/01/15
www.volny.cz/petr.stehlik

C++Builder 5 Standard - BORLAN
www.borland.cz

ComPort Library - Dejan Crnila
http://www2.arnes.si/~sopecrni

„Simulátor" procesorů 89c051 - Libor Lasota
http://www.hw.cz/constrc/atm_2x51_simul/simulator.html