Сообщение от Drex
|
zelanez
Слушай, че-то я не пойму. В даташите на пик ясно сказано, что пользовательская программа не имеет доступа к памяти программ. Как же ты в программе создаешь блок данных в ней? Или ты всетаки имеешь в виду EEPROM область ?
|
Ещё какой большой доступ имеет. Директивы Ассма DB, DW, FILL и другие занимаются тем, что пишут данные в память программ. ЕЕPROM нельзя путать с памятью программ - это аксиома, и это не обсуждается.
Это утверждение легко проверяется во-первых, описанием директив MPASM, и во-вторых, прямой проверкой в MPLAB.
2 deCoder. Наша с тобой беседа становится всё увлекательнее...
Твой вариант, разумеется, 100% рабочий и для ПИКов. Но только для небольшого количества байтов. А если их более 300?
Представь, для каждого из 300 байтов написать эти 3 строки... Офигеть! 8O
Мне для вывода на 16 знаковый 2х-строчный LCD индикатор данные нужно подавать в порт МК побайтно.
Значит, нужен массив байтов, из которого идет побайтное чтение. И этот массив с минимальными затратами кодов приходится записывать в память программ. Просто в ЕЕPROM (там всего 256 байт) все данные не помещаются. Удобно оказалось привязаться к абсолютному адресу в ПП, поскольку легко вычислить адрес нужного байта. Чтение данных идет не последовательно, а в зависимости от внешних воздействий.
Пока остановился на варианте с директивой DW, привязанной к абсолютному адресу. Вместо 300 строк кода получил около 30. Неплохо, но и они в общем-то не нужны, поскольку они только создают в ПП дамп данных, и больше в них нет нужды.
Поэтому и сабж появился - а как дамп сразу записать, не вводя никаких кодов записи в основную программу?
Как выясняется, так ещё никто не делал. Поэтому вопрос становится всё интереснее...