Complementando las respuestas anteriores, ensamblador y las variaciones de C son los lenguajes más utilizados para la programación de microcontroladores, estos son los lenguajes más populares para estas tareas porque los microcontroladores no ofrecen muchos recursos para soportar lenguajes de mas alto nivel. Sin embargo, si quieres usar ensamblador va a depender de la arquitectura del microcontrolador, los registros y las interrupciones van a cambiar de acuerdo al fabricante. En C también puede sufrir variaciones pero no van a ser tan drásticas. Mi recomendación es comenzar por arduino, ya que es el más popular en estos momentos.
Aparte de los microcontroladores, también están las FPGAs y estas se "programan" en los lenguajes VHDL ó Verilog. En las FPGAs tienes que describir hardware, así que tienes que aplicar una lógica no secuencial. Tampoco nos olvidemos de los PLCs, estos son muchos más fragmentados, cada fabricante tiene su propio lenguaje de programación (Siemens, ABB, Festo, etc).
Aparte de los microcontroladores, también están las FPGAs y estas se "programan" en los lenguajes VHDL ó Verilog. En las FPGAs tienes que describir hardware, así que tienes que aplicar una lógica no secuencial. Tampoco nos olvidemos de los PLCs, estos son muchos más fragmentados, cada fabricante tiene su propio lenguaje de programación (Siemens, ABB, Festo, etc).