Я не могу понять, как воспользоваться значением, помещенным в память программы при помощи директивы 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-й серией.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения