Я не могу понять, как воспользоваться значением, помещенным в память программы при помощи директивы db. Когда я пытаюсь подставить название, программа выдает мне адрес зарезервированного под переменную места, а до значения я никак не могу достучаться. Я знаю, что одиночная переменная объявляется при помощи variable, но мне нужно задать массив, который длиннее, чем можно запихнуть в регистры
1. db - это способ определения КОНСТАНТ, а не переменных. 2. Эти константы будут размещены в ПРОГРАММНОЙ ПАМЯТИ. 3. Чтение программной памяти в 8-разрядных PIC-ах осуществляется через команды ТАБЛИЧНОГО ЧТЕНИЯ. Табличное чтение осуществляется через специальный регистр указатель TBLPTRx в который (в которые) нужно записать адрес (ту самую метку+смещение данных относительно нее с учетом адресной размерности (в 16-х через один, а в 18-х через два адреса). Далее следует ассемблерная команда tblrd, которая производит транзакцию из текущего адреса флеша по указателю в регистр TABLAT, откуда далее можно забрать данные по назначению. Более подробно Вы можете все это прочесть в даташите на контроллер в разделе табличное чтение программной памяти. Кстати, табличное чтение непосредственно флеша есть не у всех 8-разрядных контроллеров Микрочипа... В тех, где его нет табличное чтение производится через команду retlw <const>. Если перед обсуждаемой директивой стоит ORG с определением абсолютного адреса EEPROM данных (флеша данных, если он имеется в данном МК), то чтение осуществляется уже через адресный регистр указатель этого флеша и, соответственно, его регистра защелки данных. В 16-разрядных контроллерах Микрочипа имеется также способ доступа к флешу через PSV-доступ, когда флеш отображен на адресное пространство ОЗУ, начиная с адреса 0x8000.
Для "среднемладших" (10-12-16) это основной способ обращения. Особо для 8-16 выводных. Только там не DB, а DT должно использоваться для генерации именно retlw 0xNN. Есть кристаллы с чтением ПЗУ как ЕЕПРОМ - но то "весьма индивидуально" - у каждого надо в даташит вчитываться. Отличия только для "энхансед" с четырехзначными суффиксами (PICnnFxxxx) - там уже гибрид с 18-й серией.
Открыта удобная площадка с выгодными ценами, поставляющая весь ассортимент продукции, производимой компанией MEAN WELL – от завоевавших популярность и известных на рынке изделий до новинок. MEAN WELL.Market предоставляет гарантийную и сервисную поддержку, удобный подбор продукции, оперативную доставку по России.
На сайте интернет-магазина посетители смогут найти обзоры, интересные статьи о применении, максимальный объем технических сведений.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения