[uquote="AQ29",url="/forum/viewtopic.php?p=4778695#p4778695"]Вообще-то там не макрос, а Sub с параметрами.[/uquote]
В ассемблере в качестве надстройки есть макрос с параметрами. А подпрограмма - это собственно код с вызываемой его инструкцией вида call.
Суть ассемблера в отсутствии генератора кода. Ассемблер лишь производит подстановки. Кстати, на выходе ассемблера
в общем случае не хекс, а объектный файл. Для получения хекса требуется еще линкер.
Учите матчасть.
[uquote="AQ29",url="/forum/viewtopic.php?p=4778695#p4778695"]Дело не только в сокращении листинга. Написать и прочитать 6 строк гораздо проще, чем, например, 500 строк у ТС.[/uquote]
Вы несете отборный бред. Причем тут ТС? И где у ТС "500 строк кода" вместо 6 на асме? У ТС исходник чисто начинающего любителя. Какой смысл его поделие обобщать?
[uquote="AQ29",url="/forum/viewtopic.php?p=4778695#p4778695"][uquote="КРАМ",url="/forum/viewtopic.php?p=4777973#p4777973"]В том и дело, что простые. Текст понятен до уровня его исполнения. Алгоритм в нем вообще не читается.
А под читабельностью понимается не код, а алгоритм.[/uquote]
Скорее всего, у нас разные алгоритмы, точнее, концепция программы.
Пишу просто, МК большей частью последовательно выполняет текущие задачи.[/uquote]
Вы даже не понимаете что такое алгоритм задачи...
Я вам привел пример вычисления CRC16. В нем есть алгоритм его вычисления. Он легко читается.
Есть, например, алгоритм квадратурного энкодера. Он тоже легко читается. В его основе на Си лежит переключатель switch-case.
Есть алгоритм машины состояния. Он тоже должен легко читаться, а не представлять из себя спагетти-код.
Есть алгоритмы шифрования. Они тоже должны быть прозрачными и легко администрируемыми.
"Последовательное исполнение кода", которое называется суперлупом, не должно препятствовать корректной обработке критических участков кода. То, что у вас задачи суперпримитивны, не дает вам право учить и даже давать советы по программированию.
Прежде чем давать советы, потрудись изучить предмет, в котором вы желаете быть советчиком. А то ваши тексты лишь вызывают смех.
У вас нет никаких "методов".У вас есть деревянный велосипед с квадратными колесами
[uquote="AQ29",url="/forum/viewtopic.php?p=4778695#p4778695"][uquote="КРАМ",url="/forum/viewtopic.php?p=4777973#p4777973"]

Феерично. Си не знает, но точно знает, что читаемость на ассемблере будет лучше...[/uquote]
Вообще-то у меня было слово «пожалуй», а не «точно».[/uquote]
Это "пожалуй" звучит как "точно". Настолько оно глупое.
[uquote="AQ29",url="/forum/viewtopic.php?p=4778695#p4778695"][uquote="КРАМ",url="/forum/viewtopic.php?p=4777973#p4777973"]"Читать три раза подряд с заданным интервалом" - совершенно пустое мероприятие. Мало того, оно еще и блокирующее или требует специально выделенного таймера.[/uquote]
Почему пустое мероприятие? Много лет пользуюсь – никаких проблем. Если по условии задачи надо быстро выскочить, есть такая команда с флагом, по которому программа выскочит.[/uquote]
Пустое - потому что бессмысленное. Но это не означает, что работать не будет. Точно так же, как не мешает работать NOP.
[uquote="AQ29",url="/forum/viewtopic.php?p=4778695#p4778695"][uquote="КРАМ",url="/forum/viewtopic.php?p=4777973#p4777973"]Во вторых, кнопки могут висеть на разных портах[/uquote]
Не вижу смысла вешать кнопки на разные порты.
Команда, конечно, не универсальная, но для большинства задач подойдёт.[/uquote]
Вешать кнопки на один порт КАК ПРАВИЛО не позволяет используемая периферия и особенности конкретно AVR, где она не мапируется на другие порты.
Пару-тройку кнопок повесить можно, да и то не всегда... Рекламировать глубоко частный код - такое себе...

[uquote="AQ29",url="/forum/viewtopic.php?p=4778695#p4778695"][uquote="КРАМ",url="/forum/viewtopic.php?p=4777973#p4777973"]В третьих, AVR является RISC машиной, то есть вся математика возможна только с РОНами. А это значит, что регистр Keys - это РОН. Со всеми вытекающими последствиями для остального кода и его читабельности.[/uquote]
Keys может быть РОН, SRAM, РВВ и даже EEPROM. Выбор - на усмотрение разработчика.[/uquote]
Это очередная чушь. Использовать Keys в ОЗУ (УВВ или ЕЕПРОМ) в вычислениях напрямую невозможно в RISC машинах. И передать эти особенности в виде параметров в ассемблере так же невозможно. Это можно только оттранслировать с помощью ЯВУ, а не ассемблера.
ОЗУ, УВВ и ЕЕПРОМ требуют инструкций загрузки-выгрузки в/из РОН.
[uquote="AQ29",url="/forum/viewtopic.php?p=4778695#p4778695"]Функции подсчета CRC16 у меня нет, сравнить не с чем.
А при передаче пакета контрольная сумма считается. Сделано просто на основе простой суммы байтов. Этот метод вроде как стандартный для hex-файлов программатора.[/uquote]
Передачи пакета ЧЕРЕЗ ЧТО? И посредством КАКОГО ПО?
Практически все каналы передачи используют CRC.
Но дело не в этом, дело в том, что у вас тупо нет опыта, но есть амбиции.
Может стоит эти амбиции кратно редуцировать?
