Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Предпроцессор асма AVR
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
adc
Подскажите пожалуйста, можно ли сделать вставку в массив данных в ввиде сообщения?:
Код
Код
.equ     param =55
...
.db "параметр=?"

т.е. что-бы при компиляции, на место вопроса ставилось 55. (в текстовом виде)
Пример упростил для простоты понимания.

Наверное прийдется контроллером пережевывать. laughing.gif
ae_
i
Код
#define param "55"
...
.db "Параметр=", param
adc
Немного уточню. В приведенном примере стоит цифра "55", на самом деле вместо нее стоит выражение которое считается при компиляции. Примерно так:
Код
.equ param= (255/step_grad)
...
.db "параметр=?"
Qwertty
Код
db "параметр=?", (param / 10)+'0',(param % 10)+'0'

только в AVRASM2 есть у препроцессора остаток от деления
Для AVRASM будет примерно так
Код
db "параметр=?", (param / 10)+'0',(param - (param / 10)*10)+'0'
adc
Цитата(Qwertty @ Aug 16 2009, 15:21) *
Код
db "параметр=?", (param / 10)+'0',(param % 10)+'0'

только в AVRASM2 есть у препроцессора остаток от деления
Для AVRASM будет примерно так
Код
db "параметр=?", (param / 10)+'0',(param - (param / 10)*10)+'0'
В этом случае к значению нуля '0' (0x30) прибавляется пересчитанное значение, которое дает смещение в таблице символов. Это работает, по понятным причинам, до значения '9'. Соответственно значение "55" преобразовать не получится. Видимо это нельзя сделать в принципе. crying.gif
Qwertty
Цитата(adc @ Aug 17 2009, 15:17) *
В этом случае к значению нуля '0' (0x30) прибавляется пересчитанное значение, которое дает смещение в таблице символов. Это работает, по понятным причинам, до значения '9'. Соответственно значение "55" преобразовать не получится. Видимо это нельзя сделать в принципе. crying.gif

Это относительно стандартное преобразование в строку, только выполняемое еще препроцессором. И работает не до 9, а до 99, так что 55 прекрасно разложится в
Код
db "параметр=?", '5','5'

Разве не это требовалось?
adc
Цитата(Qwertty @ Aug 17 2009, 18:10) *
Разве не это требовалось?
Да, спасибо! Сразу не понял написанного..)
Примерно это и требовалось.. А в шестнадцатеричном формате можно сделать?
эээ поясню, что-бы не считали что я сам не знаю чего хочу:-)
зы: Все эти пляски начались с того, что при формировании строчки в формате pdu, захотелось сделать автоматический пересчет количества символов в сообщении. А сообщение, включая значение количества символов, подразумевает шестнадцатеричный формат.
ae_
Код
.set param=1
.db "data =", param/16+'0'+7*(param/16>9), param%16+'0'+7*(param%16>9)
.set param=param+1
.db "data =", param/16+'0'+7*(param/16>9), param%16+'0'+7*(param%16>9)
.set param=param+1
...
adc
Цитата(ae_ @ Aug 18 2009, 18:19) *
Код
.set param=1
.db "data =", param/16+'0'+7*(param/16>9), param%16+'0'+7*(param%16>9)
.set param=param+1
.db "data =", param/16+'0'+7*(param/16>9), param%16+'0'+7*(param%16>9)
.set param=param+1
...

О! то что надо :-) Спасибо! Сурово получилось :-)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.