Всё начинается с алгоритмов.
Сперва продумываешь "железную" часть - управление микросхемой с контроллера - выстраиваешь необходимые процедуры (Set_Vol, Vol_Plus, Vol_Minus и т.д.); интерфейс с юзером - кнопки, индикаторы и т.д
Потом продумываешь "высокую" часть - общение с юзером... как на какую реагировать, что зажигать, что гасить и т.д.
Потом соединяешь эти две вещи вместе.
Вот только потом, когда уже будет полное представление, что ты хочешь и как оно должно выглядеть ты запускаешь компилятор и начинаешь понемногу писать. При этом должен дать себе перед зеркалом клятву "я не буду изменять и добавлять функционал в программе, окромя уже задуманного и обдуманного ... во всяком слчае пока не напишу первую версию от а до я" ... если клятву не даш, то на половине дороги начнешь изменять код - и никогда до ума не доведешь!
Если опыта нет, то писать стоит по кускам ... написал кусок работы с кнопками и индикаторами - попробуй с ними поработать ... дописал выбор каналов - привяжи (на время)каналы к кнопкам ... так у тебя появится "чутье" контроллера.
Я, обычно, пишу модулями ... по модулям распихиваю нужные куски ... и потом для их тестирования пишу маленькие программки, к которым подключаю эти модули. Когда все модули готовы - пишу главный модуль, который и объединяет все куски.
___
P.S.
Вы спросите, а где АСМ? Отвечу ... Вы просили "начать" проект - а АСМом, обычно, заканчивают