MPSM Assembler help писал(а):#v(expr) - Return the integer value of expr. Typically, used to create unique variable names with common prefixes or suffixes. Cannot be used in conditional assembly directives (e.g. ifdef, while).
Особое внимание на ето - Cannot be used in conditional assembly directives (e.g. ifdef, while).
Да и (лично) я не пойму - что за любов к макросам. Сколько раза въ исползуете етот макрос в коде? И неужели он повъсить читаемость кода? Не верю!
Лом - ето город в Болгарии, а не инструмент юстировки електроники.
Нет, этот макрос по сути будет использован лишь 1 раз. Но все они (макросы) в куче приводят вид обработчика перехода на нужную менюшку/подменюшку к довольно компактному и читабельному (кол. строчек по вертикали) коду:
Спойлер
main_loop
call Fr_Main_Ch ; въбор режима и ожидание кнопки избор режим на работа и чакане за бутон
btfsc Fx_Key
call Fx_Work ; Frequency
btfsc FxP_Key
call Fx_Work ; Freq + Preskaler
btfsc Cx_Key
call Cx_Work ; Cx Meter
btfsc Lx_Key
call Lx_Work ; Lx Meter
btfsc Tx_Key
call Tx_Work ; Tx Meter
goto main_loop
Сравните с то что въ предлагаете.
Лом - ето город в Болгарии, а не инструмент юстировки електроники.
botchin писал(а):...Сравните с то что въ предлагаете.
Это немного не то. У Вас простой обработчик нажатия кнопки, вызывает соответствующую процедуру. И судя по всему, это простое одноуровневое меню, которе в зависимости от нажатой кнопки совершает 1 соответсвующее действие.
У меня все немного сложнее. Есть 4 кнопки - крестовина, нажимаем любую - вызывается меню (курсор на 1 пункте). Нажимаем вниз-вверх - ходим по меню, наживаем вправо - входим в соответствующее подменю, там тоже гуляем вниз-вверх, еще раз нажимаем вправо и выполняем действие, на котором находиться курсор. Нажимаем влево - выходим в главное меню (курсор на пункте меню из которого только что вышли), еще раз влево - выход из меню. И это все (количество пунктов меню и каждого подменю) настраивается с помощью нескольких констант в заголовочном файле. И я сделал так, что все работает как надо, просто вот вылез интересный глюк препроцессора, который я пока поборол довольно банально, написав следующее:
Спойлер
Ето у меня 2-ой уровень (правда отсюда к первому возврата нет). За етим следуют до 2 уровня - вход и возврат, уменьшение/увеличение, память и т.д. Давно писал не помню уже все ....
Пока_без_кота писал(а):поборол довольно банально, написав следующее:
Пока_без_кота писал(а):довольно компактному и читабельному (кол. строчек по вертикали) коду:
А зачем писать на АСМе, если Вас волнует читабельность в стиле Си?
Поддержу болгарского коллегу на предмет "кому нравится арбуз, а кому свиной хрящик".
Человеку пишущему, в том числе, на АСМе нет необходимости громоздить макросные синтаксические конструкции имеющие целью скрыть собственно АСМ аббревиатуры, заменив их на абстракции. К тому же эти абстракции ни разу не сокращают сам листинг.
ПишИте подобные меню на Си и будет не только искомая читабельность, но и НАСТОЯЩЕЕ абстрагирование кода с сокращением текста до уровня "беллетристики для дилетанта".
otest писал(а):КРАМ
Попробуй это сделать и выложи скрин.
Что "это"?
Вы поразительно невнятно выражаетесь...
Вместо предложений что либо сделать, изложите свои проблемы конкретно.
Я копирую код из референсных исходников и на АСМе и на Си. Что Вы желаете увидеть?
Выражусь по другому.
Как вот от этого избавиться кроме ручной очистки.
Или как это импортировать (вставить) в МПЛАБ для компиляции.
Если ни как, то зачем такие тексты в АНах печатают ?
otest писал(а):зачем такие тексты в АНах печатают ?
Затем, чтобы их ЧИТАЛИ. А копипастить если и нужно, то из прилагаемых к аппнотам архивов с референсными кодами.
Можно и из аппноты набрать текст РУЧКАМИ - не велик труд. Заодно и разобраться в том, как он работает.
К слову, в аппнотах на АСМе больших текстов не бывает. Максимум на три десятка строк.
То, что Вы тут показали - это листинг дизасма, то есть и текст и собственно адреса с кодами.
Для вставки нужны только команды. Адрес и код удаляется.
Я понимаю что нужно удалить и куда вставить. Не понимаю зачем их в таком виде печатают, если МПЛАБ их не ест.
А читать код можно чистый и с коментариями. Цифры для этого не нужны.
Листинги в аппнотах публикуют ПО РАЗНОМУ. Это зависит от АВТОРА аппноты. В отличии от даташитов и мануалов, аппноты являются техническими статьями конкретных авторов, а не нормативными документами.
Кто то из этих авторов предпочитает публиковать дизасм, а кто то исходник. Не вижу в этом никаких проблем.
К слову, в референсных мануалах неоднократно встречал такое форматирование исходников в пдф, которое при копировании текста требует еще больше усилий, нежели удаление лишнего из дизасма.
Я в непонятках, может, кто по-быстрому подскажет в чем проблема. Захотел скомпилировать код столетней давности. Поставил свеженький MPLAB X и пытаюсь... Вот компилятору не понравилась такая конструкция, которую я ранее под gpasm-ом использовал, как предохранитель если таблица переползёт границу страницы: