Emulator '51 do 64KB
Instrukcja obsługi

Emulator oddaje nieocenione usługi podczas uruchamiania programów dla 89C55, ponieważ największe dostępne procesory z SPI posiadają 12kB FlashRom (89S53). Napisanie więc programu dla 89C55 jest uciążliwe. Dzięki emulatorowi uruchamianie programów dla 89C55 staje się przyjemnością. Ponadto pisanie programów dla procesorów 89S8252 i 89S53 jest wygodniejsze, ponieważ czas zapisu 8kB po SPI wynosi około 60 sekund, w porównaniu do 3 sekund dla emulatora 51-64kB, czyli około 20 razy szybciej!

Podłączenie:
Emulator łączymy z komputerem dołączonym kablem do wolnego portu w komputerze. Gniazdo RS w emulatorze znajduje się z tyłu obudowy

Rysunek
W czasie transmisji dioda oznaczona "RxD" będzie świecię. Sondę emulatora umieszczamy w uruchamianycm systemie.
UWAGA!
Jakkolwiek zastosowane w emulatorze układy są zabezpieczone przed ESD i efektem LATCH to nie można wykluczyę uszkodzenia urządzenia w wyniku zaistnienia ktoregoś z powyższych zjawisk. Dlatego wszelkie połączenia czy to sondy emulatora do uruchamianego systemu czy też wtyku na taśmie sondy do gniazda w emulatorze należy przeprowadzaę przy wyłączonym zasilaniu uruchamianego urządzenia. Wejście RS232C od strony emulatora jest zabezpieczone przed ESD, ale z reguły port w komputerze nie jest zabezpieczony. Dlatego przyłączanie kabla RS zaleca się przeprowadzaę przy wyłączonym zasilaniu tak komputera jak i emulatora.

W wersji bez interfejsu obsługującego zewnętrzną pamięć danych taśma sondy emulacyjnej na stałe jest podłączona z płytką emulatora i wychodzi z lewej strony obudowy.

W wersji emulującej pamięć danych na górze obudowy znajdują się dwa gniazda opisane "Internal ROM" i "External ROM"

Rysunek
Jeżeli wtyk umieszczony na taśmie sondy umieścimy w gnieździe "Internal ROM", emulowany będzie procesor z wewnętrzną pamięcią ROM, bez możliwości obsługi zewnętrznej pamięci programu czy danych. Z takim przypadkiem spotykamy się najczęściej, ponieważ wykorzystujemy wszystkie zalety mikrokontrolera jednoukładowego.
Zdarzają się jednak sytuacje, w których konieczne jest podłączenie zewnętrznej pamięci danych lub innych układów peryferyjnych. Wtedy to wtyk umieszczamy w gnieździe "External ROM". W tym trybie port P0 pracuje jako dwukierunkowy multiplekserowany port danych i adresu. Jeśli podłączona pamięę jest większa niż 256 bajtów dodatkowo wykorzystujemy linie portu P2. Linie P3.6 i P3.7 sterują odpowiednio zapisem i odczytem danej.
Kolejnym przypadkiem kiedy konieczne jest wykorzystanie trybu "External ROM" jest sytuacja, w której w docelowym urządzeniu zastosujemy procesor z np. 8kB wewnętrznego ROM, natomiast pozostała częśę kodu będzie znajdowaę się w zewnętrznej pamięci programu. Nie musimy jednak posiadać symulatora emprom, do którego należałoby wysłaę kod który nie mieściłby się w docelowym procesorze. Cały kod zostanie zapisany do pamięci emulatora i tam wykonany. Ewentualna zewnętrzna pamięę programu jest w tym czasie odłączona przez emulator i jej obecnośę w uruchamianym systemie nie będzie przeszkadzaę. Oczywiście odwołania do zewnętrznej pamięci danych przebiegają bez przeszkód. Gdy skończymy pracę nad programem, pozostanie zaprogramować docelowy procesor kodem, który zmieści się w jego pamięci wewnętrznej. Pozostałym kodem programujemy zewnętrzną pamięę progrmu.
Ostatni przypadek użycia "Exteral ROMu" może mieę miejsce, gdy w docelowym urządzeniu będzie pracował procesor tylko z zewnętrzną pamięcią programu. W tej sytuacji najczęściej korzysta się z emulatora ROM. Jeśli jednak takiego nie posiadamy emulator 8051 spełni nasze oczekiwania. Kod przeznaczony dla zewnętrznej pamięci programu wysyłamy do emulatora 8051 gdzie zostanie wykonany. Podobnie jak w poprzednim przypadku ewentualna zewnętrzna pamięę jest odłączona i jej obecnośę w niczym nie przeszkadza. Po zakończeniu pracy nad programem programujemy jego treśę do zewnętrznej pamięci programu.
Z boku emulatora znajdują się trzy zworki i trzy diody led
Rysunek
Diody informują o:
- "Power" - włączone napięcie zasilania.
- "Busy" - świeceniem informuje o transmisji danych, wykonywanie rozkazu lub oczekiwanie na rozkaz po zaadresowaniu emulatora.
- "Error" - miganiem sygnalizuje błąd. Sygnalizowane są następujące błędy:
"Syntax" - błąd składni (nieznay rozkaz)
"Buffer to long" - wysłano rozkaz dłuższy niż 16 bajtów
"Out Time" - przerwa w transmisji ponad 10 sekund
"Unknown datatyp" - nieznay typ danych w rekordzie IntelHex
"CRC error" - zła suma kontrola rekordu IntelHex
"Max Adres" - przekroczony maksymalny adres $3fff dla emulatora 16kB
"Fail Baud" - nieznana prędkośę transmisji
Dioda "Error" informuje o każdym błędzie, szczegółową informację można otrzymaę na pinie 11 procesora w emulatorze w standardzie RS232C. Informację tą może odczytaę AVT-5047.
Po włączeniu zasilania diody "Busy" i "Error" powinny zaświecię się na okolo 0.5 sekundy.
Ustawienie jumperów decyduje o początkowej prędkości transmisji i adresie emulatora.
Rysunek Rysunek
We wstępie wspomiano o możliwości podłączenia czterech emulatorów do jednego portu RS, a jumpery umożliwiają ustawienie tylko adresu 0 i 1. Aby zworka wybierała pomiędzy adresem 2 i 3 konieczna jest zmiana oprogramowania. Operację taką prducent wykonuje nieodplatnie, wystarczy podczas zamawiania emulatora zaznaczyę ten fakt. Jeśli konieczność zmiany adresu nastąpi w późniejszym okresie, emulator należy przysłać do producenta.

Zawartość dyskietki:
Na dyskietce dla IBM PC umieszczono:
katalog "C" - rozkazy dla emulatora
W katalogu tym zawarte są pliki tekstowe sterujące pracą emulatora.
katalog "EXE" - kompilator asemblera 8051
Kompilator umożliwia kompilację warunkową. O składni źródłówki można poczytaę w pliku "Asm51.doc".
katalog "INCL" - include
W katalogu umieszono include dla asemblerów.
plik "TestWP.bat" - wysyła on plik IntelHex generujący na porcie P0 efekt pływającego punktu. Plik ten umożliwia przetestowanie emulatora. Taśma złącza emulacyjnego podłączona jest do gniazd IntenalROM, prędkośę transmisji 9600bd, adres emulatora #0. Składnia rozkazu:
TestWP [nr portu COM] np.:
TestWP 2
wyśle plik na port COM2
plik "TestWP.hex" - plik wysyłany rozkazem TestWP.bat
plik "Test2250.bat" - wysyła plik IntelHex z systemem operacyjnym dla AVT2250. Plik ten umożliwia przetestowanie emulatora. Wtyk emulatora musi byę umieszczony w systemie AVT2250, Taśma złącza emulacyjnego podłączona jest do gniazd ExtenalROM, prędkośę transmisji 9600bd, adres emulatora #0. Składnia rozkazu:
Test2250 [nr portu COM] np.:
Test2250 2
wyśle plik na port COM2
plik "Test2250.hex" - plik wysyłany rozkazem Test2250.bat
plik "a51.bat" - kompiluje program źródłowy, po czym wysyła plik wynikowy na port COM2.
Składnia rozkazu:
51 [nazwa pliku bez rozszerzenia .asm] np.:
51 Test
Skompiluje plik źródłowy "Test.asm" do postaci wynikowej i wyśle portem COM2. prędkośę transmisji 9600bd, adres emulatora #0. Zdecydowano się na stały adres portu COM, aby zaoszczędzię ciągłego wpisywania jego nr podczas kompilacji. Jeśli chcemy zmienię nr portu należy wszystkie wystąpienia tekstu COM2 w pliku "51.bat" zamienię na np. COM1 dla portu nr 1. Jeśli chcemy zmienię prędkośę transmisji należy zmienię prędkośę w linii:
MODE COM2 9600,n,8,1
na inną. Jeśli chcemy zmienię adres emulatora neleży zmienię linię:
COPY C\INIT0
na np.:
COPY C\INIT1
dla adresu #1
Jak łatwo wywnioskowaę można osiągnąę tylko prędkości: 9600, 19200, 57600, 115200bd, a gdzie obiecane 345600? Funkcję zmiany prędkości na większą realizuje plik "a51f.bat". Składnia jest taka sama jak dla "51.bat". W pliku tym występują jednak dodatkowo linie:
Copy C\b19200 COM2
Mode COM2 19200,n,8,1
Powodują one przestawienie emulatora na większą prędkośę transmisji, następnie zmianę prędkości w PC. Od tej chwili transmisja przebiega ze zwiększoną prędkością. W powyższym przypadku prędkośę jest zwiększana do 19200bd, ale można ją zwiększyę do 115200 czy 345600bd. Należy jednak pamiętaę, że maksymalna prędkośę transmisji zależy od BIOS^˝^u i od płyty głównej, a konkretnie zastosowanego układu UART.
plik "Test.asm" - Plik źródłowy w wyniku kompilacji którego (programem "a51" lub "a51f") powstanie odpowiednik pliku "TestWP.hex" generujący "wędrujący punkt".
Programów nie trzeba instalować, wystarczy skopiowaę w dowolne miejsce na dysk.

Na dyskach dla Amigi umieszczono pakiet kompilatorów z możliwością komilacji warunkowej.
"kliknięcie" na ikonę "Dekompresuj" na dysku nr 1 połączy pliki "kompilatory.lzx" i "kompilatory.l01" w plik "kompilatory.lha" następnie rozpakuje go do RAM; Wymaga to 6MB pamięci RAM. Jeśli nie posiadamy tyle pamięci "kliknijmy" na ikonę "DekompresujOszczędnie". Dekompresja zostanie przeprowadzona do katalogu SYS: Po dekompresji pakiet można zainstalowaę "RAM:Asemblery/Instaluj na HD" ("SYS:Tent/Asemblery/Instaluj na HD" dla dekompresji oszczędniej). Po instalacji pliki można usunąę ("del RAM:asemblery ALL" lub del SYS:Tent/Asemblery ALL dla dekompresji oszczędnej). W zainstalowanym pakiecie w katalogu "Emu51-64" znajdziemy między innymi:
"Test.asm" - przykładowy program źródłowy generujący "wędrujący punkt"
"TestAVT2250.skrypt" - funkcjonalny odpowiednik pliku "Test2250.bat" dla PC.
"TestWP.skrypt" - funkcjonalny odpowiednik pliku "TestWP.bat" dla PC.
O obsłudze i sposobie instalacji można przeczytaę w pliku "CompilerDoc.PL".

Opis rozkazów akceptowanych przez emulator:
Wydając odpowiedni rozkaz do emulatora można wyczyścię jego pamięę, czy zmienię prędkośę transmisji.Emulator akceptuje komendy:

@emu51-64 #x
gdzie x nr symulatora z zakresu 0...4. Komenda powoduje przejście z trybu emulacji do trybu ładowania. Objawia się to świeceniem diody LOAD. Po połączeniu można wydaę jedną z poniższych komend:

:xxx...xx
Wczytanie pliku IntelHex. Pierwsze pojawienie się znaku ":" powoduje oczekiwanie na plik IntelHex. Akceptowane są rekordy o długości do 256 bajtów. Wielkośę znaków nie ma znaczenia, znakiem końca linii może byę kod:
LF - Amiga
CR - C64, MAC, Unix
CR+LF - PC
Ewentualne błędy pojawiające się podczas transmisji są sygnalizowane diodami LED.

@write
Wczytanie pliku binarnego. Ewentualne błędy są sygnalizowane diodami LED. (koniec pliku jeśli brak znaków przez 1 sekundę). Zaleca się korzystanie z pliku "write" zawierające znak końca linii w postaci CR+LF. Jeśli wyślemy tekst "@write", a znak końca linii będzie składał się tylko ze znaku LF (Amiga) czy CR (Mac) plik zostanie źle odczytany chyba, że sami dodamy dowolny znak, który zastępuje brakujący CR lub FL i zostanie zignorowany przykład 1:
@writeCRLF0123456789
taki plik zostanie poprawnie zapisany do emulatora w postaci:
$30 $31 $32 $33 $34 $35 $36 $37 $38 $39
przykład 2:
@writeLF0123456789
taki plik zostanie źle zapisany do emulatora w postaci:
$31 $32 $33 $34 $35 $36 $37 $38 $39

@clear lub @clr
Czyści pamięć symulatora wypełniając wartością $FF.

@end
Rozłączenie z symulatorem. Komenda powoduje przejście z trybu LOAD do trybu symulacji. Dioda LOAD gaśnie, program w symulatorze zostaje uruchomiony jak po resecie CPU.

@Baud
Pędkość transmisji ustawiamy zworkami. Można ją także zmienię programowo:
@Baud 4800 - zmiana prędkości transmisji.
@Baud 9600 - zmiana prędkości transmisji.
@Baud 14400 - zmiana prędkości transmisji.
@Baud 19200 - zmiana prędkości transmisji.
@Baud 28800 - zmiana prędkości transmisji.
@Baud 38400 - zmiana prędkości transmisji (tylko dla wersji 64KB).
@Baud 57600 - zmiana prędkości transmisji.
@Baud 115200 - zmiana prędkości transmisji (tylko dla wersji 64KB).
@Baud 345600 - zmiana prędkości transmisji (tylko dla wersji 64KB).
UWAGA! O maksymalnych prędkościach transmisji (ponad 57600bd) decyduje typ płyty głównej komputera i wersja BIOS'u!

"Cisza" na łączu RS przez 10 sekund od nadania ostatniego znaku powoduje przejście z trybu LOAD do trybu symulacji.