Wie schon bei den Programmspeichern hängt auch die eingesetzte Programmiersprache mit von Architektur, Anwendungsziel und -anforderungen ab. Für 4-Bit-Architekturen wird praktisch ausschließlich Assembler verwendet, da nur die wenigsten Compiler die knappen Ressourcen dieser kleinsten Mikrocontroller effektiv nutzen können. Auch bei den 8-Bit-Architekturen wird häufig Assembler eingesetzt, um möglichst hohe Effizienz und Code-Dichte zu erreichen; bei Projekten, die vergleichsweise wenig der zur Verfügung stehenden μC-Ressourcen in Anspruch nehmen oder in kleineren Stückzahlen produziert werden, ist es zunehmend üblich, Hochsprachen zu verwenden, um Entwicklungsaufwand zu sparen. So werden 16- und 32-Bit-Architekturen überwiegend in Hochsprachen programmiert.