нечего слабоумным лезть в микроконтроллеры.
прежде чем браться за них, надо уже знать все мелочи.
В микроконтроллеры приходят с двух сторон - из электроники, когда чел уже на высоком уровне освоил цифровую и не только схемотехнику, знает все логические элементы, триггеры, счетчики, регистры, буферы, как устроены ЦАП и чем отличаются АЦП с поразрядным взвешиванием от последовательного приближения. Желательно иметь представление о проектировании конечных автоматов, методах борьбы с дребезгом контактов, устранения эфекта гонок.
Или с другой стороны - уже достаточно хорошо освоив ассемблер для какого нибудь процессора - порты, сдвиги, логические операции, стеки, флаги, биты конфигурации, реализация типовых алгоритмов типа умножения/деления, цифровых фильтров, скользящего среднего
Если не имеешь хоть представление о всем этом - нечего тебе браться за микроконтроллеры.
Начни с какой то одной стороны, а не сразу с середины и будет тебе счастье.
зы - забавно, но программисты и электронщики пишут программы для микроконтроллеров по разному. первые (особенно пришедшие с языков высокого уровня) вставляют подпрограммы, зафигачивают хитрые циклы, вторые пишут линейно просто перекладывая битики с места на место.
в итоге проги первых страдают пониженным быстродействием и быстрым исчерпанием памяти данных, у вторых проги быстро упираются в ограничение памяти программ.
Учись студент, прежде чем браться за микроконтроллеры.