MCS-51

Format Intel-HEX

Wiele różnych firm definiuje własne formaty plików HEX. Jednak najbardziej znanym jest format zdefiniowany przez firmę Intel. W przeciwieństwie do formatu binarnego pliki w formacie HEX mogą być odczytywane przy wykorzystaniu edytorów ASCII. Pliki tego typu są często używane przy przenoszeniu danych do urządzeń programujących pamięci EPROM. Każdy tzw. "rekord" zajmuje jeden wiersz w pliku zakończony sekwencją znaków CR/LF.

Każdy z wierszy rozpoczyna się znakiem ":". Wykorzystywany jest on przy przesyłaniu danych do programatora EPROM jako znacznik startowy.

Za znacznikiem znajduje się bajt (zapisany za pomocą kodów ASCII jako liczba szesnastkowa), który zawiera liczbę bajtów kodu znajdującą się w danym wierszu (zwykle od 00H do 10H).

Następnie znajduje się słowo (4 znaki ASCII) określające adres pierwszego w tym wierszu bajtu kodu. Dzięki niemu urządzenie programujące wie, od której komórki pamięci wpisać ten i pozostałe bajty informacji znajdujące się w danym rekordzie.

Kolejny bajt w wierszu określa typ rekordu:

  • 00 = rekord zawiera kod programu,
  • 01 = rekord jest znacznikiem końca pliku,
  • 02 = rekord zawiera offset adresu (raczej nie związany z 8051).

Z kolei następuje n bajtów kodu (n - liczba określona wcześniej przez pierwszy bajt w wierszu).

Jako ostatni bajt umieszczana jest młodszy bajt sumy kontrolnej liczonej jako uzupełnienie do dwóch sumy wszystkich poprzednich bajtów w danym wierszu.

Przykład

:03FF0A000204D21C = wiersz z trzema bajtami kodu od adresu FF0AH: 02H 04H D2H

Wartość
(szesnastkowo)
Opis
03 trzy bajty danych
FF0A adres początkowy
00 rekord z bajtami kodu
02 pierwszy bajt kodu
04 drugi bajt kodu
D2 trzeci bajt kodu
1C suma kontrolna

:00000001FF = znacznik końca