Jste zde

Úprava simulátoru procesorů 2051 z HW

Simulátor procesů postavený dle článku Simulátor procesorů 89c051trpí některými drobnými problémy,

či spíše dětskými nemocemi, obslužného swu. Zde je jejich popis a opravy.

První problém, který souvisí s chováním Windows 9x, spočíval ve špatné inicializaci, kdy 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 Windows 9x se při prvním krokování projevila stejná chyba, při dalším však 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 pravdě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);

a jeho umístěním jako první před ostatními příkazy pro obsluhu portu.

Druhý problém, na který jsem narazil, spočíval v tom, že pokud byl hexa kód vygenerován překladačem nelineárně, adresy jednotlivých řádků v hexa souboru nedržely vzestupnou tendenci a byly přeházeny. Potom docházelo při přenosu k chybám a program v simulátoru neběžel tak, 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, s procesorem DURON 700 MHz a celé se to chovalo 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 simulátoru a dokonce k nastavení TX trvale do 0 a k nastavení resetu. Takže simulátor byl zcela nepoužitelný. Toto chování se na domácím počítači, procesor CELERON 300 MHz se stejným operačním systémem, 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 Windows, jsem se z čistého zoufalství rozhodl vyzkoušet přepsat program pod Windows. 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ích 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í sériového portu
  • Tlačítko pro Reset pomocí programu
  • Tlačítko pro Přenos programů do simulátoru
     

     

    Program mi již měsíc slouží k plné spokojenosti a doufám, že 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čí.

    Download & Odkazy

     
  • Hodnocení článku: