Поиск по сайту: |
|
По базе: |
|
Главная страница > Обзоры по типам > Микроконтроллеры > MAXQ |
|
|||||||||||||||||||
Доступ к памяти данныхДоступ к памяти данных осуществляется через регистры указателя данных DP[0] и DP[1] или указатель кадра ВР[Offs]. Как только данные в одном из этих регистров устанавливаются, указанные данные могут быть считаны или записаны в качестве источников или получателей при помощи мнемоник @DP[0], @DP[1] или @BP [OFFS].
Оба указателя данных после считывания или перед записью могут быть увеличены или уменьшены при помощи следующего синтаксиса.
Указатель кадра (ВР[OFFS]) фактически составлен из основного указателя (ВР) и смещения основного указателя (OFFS). Для указателя кадра регистр смещения (OFFS) используется в режиме автоматического увеличения или уменьшения. Основной указатель (ВР) не изменяется при увеличении или уменьшении указателя кадра. Подобно указателям DP[n], регистр OFFS после чтения или перед записью может быть увеличен или уменьшен.
Все три указателя данных поддерживают побайтный и пословный режимы доступа к памяти. Для выбора режима доступа каждый указатель данных имеет свой собственный бит управления (WBSn). Эти три бита регистра (WBS2, который управляет режимом выбора регистра смещения [Offs]; WBS1, который управляет режимом выбора регистра DP[1]; и WBS0, который управляет режимом выбора регистра DP[0]), постоянно находится регистре управления указателем данных (Data Pointer Control - DPC). Когда служебный бит WBSn установлен в единицу, то соответствующий указатель работается в режиме пословного доступа. Когда бит WBSn сброшен в ноль, то указатель работается в режиме побайтного доступа. Пословный режим доступа позволяет обращаться к 64К слов памяти данных, а побайтный режим доступа позволяет обращаться к 64КБ памяти данных. Каждый указатель данных (DP[n]) и основной регистр указателя кадра (ВР) фактически реализован в виде 17- битного регистра. Регистр смещения указателя кадра (OFFS) реализован в вид 9- битного регистра. Бит WBSn для соответствующего указателя определяет, используются ли старшие 16 бит (16:1) указателя, как это имеет место в пословном режиме (WBSn = 1), или младшие 16 бит (15:0), как это имеет место в побайтовом режиме (WBSn = 0). Бит WBS2 определяет, используются ли старшие 8 бит (8:1), как это имеет место при WBS2 = 1, или младшие 8 бит (7:0), как это имеет место при WBS2 = 0. Все регистры указателя данных считываются, записываются и автоматически увеличиваются/уменьшаются с учетом установленного соответствующего бита WBSn. Увеличение/уменьшение затрагивают только те биты, которые используются в конкретном режиме. Изменение режима доступа не изменяет содержимое указателя данных. Поэтому, важно поддержать последовательность значения адреса указателя данных в пределах данного режима доступа.
Эти три указателя для чтения и записи используют один и тот же порт памяти данных и таким образом, пользователь должен перед использованием сознательно активировать необходимый указатель. Это может быть сделано явно путем выбора битов указателя данных (SDPS1:0; DPC.1:0) или неявно, записывая DP[n], ВР или OFFS регистры, как это показано ниже. Любая косвенная операция записи памяти, используя указатель данных установит биты SDPS, активируя таким образом указатель записи как указатель активного источника.
После того, как был осуществлен выбор указателя, он останется в силе до тех пор, пока:
Для упрощения операций увеличения/уменьшения указателя данных без использования регистра данных, был введен виртуальный получатель NUL, которому присвоен адрес в системном модуле, равный 6, и индекс, равный 7. Ниже приведены команды, позволяющие автоматически увеличить/уменьшить указатель данных без изменения содержимого любого другого регистра:
С указателем данных недопустимы приведенные ниже операции: move @++DP[1], @DP[1]++ move @BP[++Offs], @BP[Offs++] move @--DP[0], @DP[0]-- move @--DP[1], @DP[1]-- move @BP[--Offs], @BP[Offs--] move @++DP[0], @DP[0]-- move @++DP[1], @DP[1]-- move @BP[++Offs], @BP[Offs--] move @BP[++Offs], @BP[Offs--] move @--DP[0], @DP[0]++ move @--DP[1], @DP[1]++ move @BP[--Offs], @BP[Offs++] move @DP[0], @DP[0]++ move @DP[1], @DP[1]++ move @BP[Offs], @BP[Offs++] move @DP[0], @DP[0]-- move @DP[1], @DP[1]-- move @BP[Offs], @BP[Offs--] move DP[0], @DP[0]++ move DP[0], @DP[0]-- move DP[1], @DP[1]++ move DP[1], @DP[1]-- move Offs, @BP[Offs--] move Offs, @BP[Offs++]
Главная - Микросхемы - DOC - ЖКИ - Источники питания - Электромеханика - Интерфейсы - Программы - Применения - Статьи |
|
Впервые? | Реклама на сайте | О проекте | Карта портала тел. редакции: +7 (995) 900 6254. e-mail:info@eust.ru ©1998-2023 Рынок Микроэлектроники |
|