Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

Закрытая тема
Опции темы
Непрочитано 13.06.2006, 13:50   #21
deCoder
Прописка
 
Регистрация: 27.05.2005
Сообщений: 127
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 2 сообщении(ях)
deCoder на пути к лучшему
По умолчанию

для пика я ничего не писал. Но на нормальных контроллерах х51, avr, arm все это работает )
Реклама:
deCoder вне форума  
Непрочитано 13.06.2006, 19:53   #22
zelanez
Вид на жительство
 
Регистрация: 23.04.2006
Сообщений: 308
Сказал спасибо: 14
Сказали Спасибо 13 раз(а) в 12 сообщении(ях)
zelanez на пути к лучшему
По умолчанию

Сообщение от Drex
zelanez

Слушай, че-то я не пойму. В даташите на пик ясно сказано, что пользовательская программа не имеет доступа к памяти программ. Как же ты в программе создаешь блок данных в ней? Или ты всетаки имеешь в виду EEPROM область ?
Ещё какой большой доступ имеет. Директивы Ассма DB, DW, FILL и другие занимаются тем, что пишут данные в память программ. ЕЕPROM нельзя путать с памятью программ - это аксиома, и это не обсуждается.
Это утверждение легко проверяется во-первых, описанием директив MPASM, и во-вторых, прямой проверкой в MPLAB.

2 deCoder. Наша с тобой беседа становится всё увлекательнее...
Твой вариант, разумеется, 100% рабочий и для ПИКов. Но только для небольшого количества байтов. А если их более 300?
Представь, для каждого из 300 байтов написать эти 3 строки... Офигеть! 8O
Мне для вывода на 16 знаковый 2х-строчный LCD индикатор данные нужно подавать в порт МК побайтно.
Значит, нужен массив байтов, из которого идет побайтное чтение. И этот массив с минимальными затратами кодов приходится записывать в память программ. Просто в ЕЕPROM (там всего 256 байт) все данные не помещаются. Удобно оказалось привязаться к абсолютному адресу в ПП, поскольку легко вычислить адрес нужного байта. Чтение данных идет не последовательно, а в зависимости от внешних воздействий.
Пока остановился на варианте с директивой DW, привязанной к абсолютному адресу. Вместо 300 строк кода получил около 30. Неплохо, но и они в общем-то не нужны, поскольку они только создают в ПП дамп данных, и больше в них нет нужды.
Поэтому и сабж появился - а как дамп сразу записать, не вводя никаких кодов записи в основную программу?
Как выясняется, так ещё никто не делал. Поэтому вопрос становится всё интереснее...
zelanez вне форума  
Непрочитано 13.06.2006, 19:59   #23
deCoder
Прописка
 
Регистрация: 27.05.2005
Сообщений: 127
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 2 сообщении(ях)
deCoder на пути к лучшему
По умолчанию

ничего не понимаю. Покажи как ты пишешь и читаешь. Исходник в студию! )
deCoder вне форума  
Непрочитано 13.06.2006, 20:09   #24
zelanez
Вид на жительство
 
Регистрация: 23.04.2006
Сообщений: 308
Сказал спасибо: 14
Сказали Спасибо 13 раз(а) в 12 сообщении(ях)
zelanez на пути к лучшему
По умолчанию

Сообщение от deCoder
ничего не понимаю. Покажи как ты пишешь и читаешь. Исходник в студию! )
А 3 скрина, приведенные выше, не помогут? Там почти всё есть. Просто рабочую кучу кодов сюда выкладывать не хочется, надо же причесать для наглядности...
zelanez вне форума  
Непрочитано 13.06.2006, 20:38   #25
deCoder
Прописка
 
Регистрация: 27.05.2005
Сообщений: 127
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 2 сообщении(ях)
deCoder на пути к лучшему
По умолчанию

епт... кажется до меня дошло..
dw 10, ... это ты имеешь ввиду запись в код программы "которые будут перезаписываться при каждом включении контроллера" ?
Это ведь команда для компилятора указывающие что что нужно разместить какой то блок данных. То есть перезаписи не будет происходить. Ведь нет такой ассемблерной команды как нет и org ))
с помощью dw ты можешь подсунуть программный код который будет исполняться.
Цитата:
Твой вариант, разумеется, 100% рабочий и для ПИКов. Но только для небольшого количества байтов. А если их более 300?
Делаешь ещё одну метку и начинаешь другой блок данных либо используешь двухбайтное смещение
Цитата:
Представь, для каждого из 300 байтов написать эти 3 строки... Офигеть!
Какие это 3 строчки? Пример

Я бы реализовал все так:
для задание массива использовал бы dw без абсолютной адресации с помощью метки (меток).
Написал бы команду типо
*char ReadString(int адрес массива, char смещение в массиве, *char адрес озу получателя)
команда принимает реальный адрес массива в виде метки и смещение в этом массиве. И адрес в ОЗУ. Функция должна уметь читать двубайтные данные и заполнять буфер в ОЗУ побайтно.
deCoder вне форума  
Непрочитано 14.06.2006, 19:18   #26
zelanez
Вид на жительство
 
Регистрация: 23.04.2006
Сообщений: 308
Сказал спасибо: 14
Сказали Спасибо 13 раз(а) в 12 сообщении(ях)
zelanez на пути к лучшему
По умолчанию

Цитата:
Это ведь команда для компилятора указывающие что что нужно разместить какой то блок данных. То есть перезаписи не будет происходить.
Точно! Оказывается я не въехал в смысл ассемблерных директив. Теперь всё встало на место.
Я попробовал оба способа - читать данные и по метке, и по абсолютному адресу. Вобщем-то без разницы, как удобнее, так и можно делать.
Ну теперь всё, проблема решена, коды написаны, программа работает.
Очень признателен deCoder и Drex за реальную помощь.
Спасибо!
zelanez вне форума  
Непрочитано 05.07.2006, 05:15   #27
Drex
Прописка
 
Аватар для Drex
 
Регистрация: 16.04.2004
Сообщений: 201
Сказал спасибо: 337
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
Drex на пути к лучшему
По умолчанию

Цитата:
Ещё какой большой доступ имеет. Директивы Ассма DB, DW, FILL и другие занимаются тем, что пишут данные в память программ.
.....
[quote]
Цитата:
Точно! Оказывается я не въехал в смысл ассемблерных директив. Теперь всё встало на место.
В том то и дело что директивы ассемблера не пик исполняет а компилятор.
Ну вот, пока я был в отпуске ты и сам разобрался. Поздравляю!
Drex вне форума  
Закрытая тема

Закладки


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Таймер КР1006ВИ1. Как создать непериодичность? nigvil Электроника - это просто 8 14.05.2009 03:01
Как создать новый диск в Vista? clodlet Делимся опытом 0 16.08.2008 18:02
Как создать файл для EEPROM? Prime Микроконтроллеры, АЦП, память и т.д 3 13.11.2006 21:43
IAR C for AVR. как создать файл для внешнего EEPROM? prottoss Микроконтроллеры, АЦП, память и т.д 7 07.11.2005 22:19
Как в Keil C51 создать hex файл? 011119xx Микроконтроллеры, АЦП, память и т.д 1 13.07.2005 11:59


Часовой пояс GMT +4, время: 10:35.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot