Надо для этого знать языки программирование...
Я знаю ASM x86, Паскаль, Бейсик, С, С-шарп, 1С, еще чета уже не помню
) Да в общем какая разницы.. люксикон любого языка программирования состоит из 26 слов, кторые означают у всех одно и тоже, только пишутся по разному.
Другие дело приемчики и шаблонные алгоритмы...
Например, в контроллерах сразу возникаеют вопросы о том как принято:
1. Отрабатывать внешние сигналы (с учетом помещения контролера в спящее состояние и помех на сигнальной линии)
2. Как запрограммировать последовательности импульсов (например на выходе хотим дать три сигнала высокого уроавня длиной 250мс, между ними такая же пауза 250мс, между тройками пауза 500мс и далее повор или остановка).
Задачи-то простые, но в микрокентролерах в виду нюансов по сравнению с обычном программированием должны быть не одной строкой кода точно и типовое решение отработанное должно быть. Это нельзя прочесть в даташите или выдумать, это только можно знать.