Hai detto "piccolo microcontrollore e senza interfaccia, computer, debugger, compilatore o assemblatore". Bene, puoi cavartela senza computer, debugger, compilatore o assemblatore, ma devi caricare una sorta di interfaccia per connetterti al microcontrollore per caricare il programma.
Prima di tutto, dimentica qualsiasi linguaggio di alto livello come C. Quindi il modo più semplice è scrivere il tuo programma in linguaggio assembly, ma non usare l'assemblatore per tradurlo in codice macchina. Invece, cerca ciascuna delle istruzioni di assemblaggio nel manuale di programmazione, trova la loro codifica esadecimale equivalente e scrivila.
Dovrai allocare le tue variabili, in modo da poter inserire gli indirizzi appropriati nella parte dell'operando delle istruzioni. Dimentica anche l'uso dello stack e dell'heap, troppo lavoro. Al termine, avrai un programma macchina che può essere caricato direttamente nella memoria flash del microcontrollore, senza bisogno di linker.
A causa della mancanza di indirizzo esterno e bus dati su quasi tutti i microcontrollori (poiché occuperebbero troppi pin necessari per le porte e le periferiche I / O), praticamente tutti i microcontrollori sono programmati tramite un'interfaccia speciale come questa:
Normalmente il "programmatore" a sinistra verrebbe collegato a un PC, che scarica un file macchina generato da un compilatore / linker.
Tuttavia, se il programmatore ha una tastiera, come quella qui sotto:
quindi si possono inserire i codici esadecimali per un programma generato manualmente direttamente nel programmatore e programmare il dispositivo senza bisogno di un compilatore, linker o PC che era ciò di cui si stava chiedendo. (La tastiera viene anche utilizzata per modificare file esadecimali e generare checksum.)
Concesso pochissimi programmatori hanno tastiere come questa. Questo non sarebbe adatto per un hobbista in quanto probabilmente costa un paio di migliaia di dollari.
Questo particolare programmatore programma le parti prima che vengano messe su una scheda; interfacce e socket sono disponibili per diversi PIC e anche per AVR Atmel.