Powiedziałeś: „mały mikrokontroler i nie miał interfejsu, nie miał komputera, nie miał debuggera, kompilatora ani asemblera”. Cóż, możesz sobie poradzić bez komputera, debuggera, kompilatora lub asemblera, ale musisz mieć jakiś interfejs, aby połączyć się z mikrokontrolerem, aby załadować program.
Przede wszystkim zapomnij o językach wysokiego poziomu, takich jak C. Następnie najłatwiej jest napisać program w języku asemblera, ale nie używaj asemblera do tłumaczenia go na kod maszynowy. Zamiast tego przejrzyj każdą instrukcję montażu w instrukcji programowania, znajdź jej równoważne kodowanie szesnastkowe i zapisz ją.
Będziesz musiał przydzielić własne zmienne, abyś mógł wpisać odpowiednie adresy w części operandu instrukcji. Zapomnij także o stosie i stosie, zbyt dużo pracy. Po zakończeniu otrzymasz program maszynowy, który można załadować bezpośrednio do pamięci flash mikrokontrolera - nie jest też potrzebny linker.
Z powodu braku zewnętrznych adresów i magistrali danych na prawie wszystkich mikrokontrolerach (ponieważ zajęłyby one zbyt wiele pinów potrzebnych przez porty I / O i urządzenia peryferyjne), praktycznie wszystkie mikrokontrolery są programowane za pomocą specjalnego interfejsu takiego jak ten:
Zwykle „programator” po lewej stronie byłby podłączony do komputera PC, który pobierałby plik maszyny wygenerowany przez kompilator / linker.
Jeśli jednak programator ma klawiaturę, taką jak ta poniżej:
następnie można wprowadzić kody szesnastkowe ręcznie wygenerowanego programu bezpośrednio do programatora i zaprogramować urządzenie bez potrzeby korzystania z kompilatora, konsolidatora lub komputera, o które pytano. (Klawiatura służy również do edycji plików szesnastkowych i generowania sum kontrolnych).
Oczywiście niewielu programistów ma takie klawiatury. Ten nie byłby odpowiedni dla hobbystów, ponieważ prawdopodobnie kosztuje kilka tysięcy dolarów.
Ten konkretny programator programuje części przed umieszczeniem ich na płycie; interfejsy i gniazda są dostępne dla wielu PIC, a także dla AVR Atmel.