← Декабрь 2006 → | ||||||
1
|
2
|
3
|
||||
---|---|---|---|---|---|---|
4
|
6
|
7
|
8
|
9
|
10
|
|
11
|
13
|
14
|
15
|
16
|
17
|
|
18
|
20
|
21
|
22
|
23
|
24
|
|
25
|
27
|
28
|
29
|
30
|
31
|
За последние 60 дней ни разу не выходила
Сайт рассылки:
http://2aplusa.ru
Открыта:
15-11-2006
Статистика
0 за неделю
Микроконтроллеры PIC фирмы Microchip для начинающих выпуск №4
РАССЫЛКА Микроконтроллеры PIC фирмы Microchip для начинающих Приветствую Вас, мои подписчики!
Сегодняшний выпуск будет посвящен адресации данных в микроконтроллерах серии PIC18 и описанию инструкций ассемблерного кода! Огромный респект тем, кто попытался разобраться самостоятельно в командах!
Перед тем, как начнем разбираться в инструкциях, я хочу объяснить два основных принципа адресации в микроконтроллерах этой серии. Открываем datasheet, который я просил Вас скачать на микроконтроллер PIC18F452. Обычно, это datasheet на семейство PIC18Fxx2, куда и входит наш микроконтроллер. Ищем закладку «Memory Organization» (организация памяти) – пункт 4.0. Память бывает двух типов: память программ и память данных. Нам нужна организация памяти данных. Далее, в этом пункте ищем закладку «Data Memory Organization» (организация памяти данных) – пункт 4.9. Далее, читаем, что каждый регистр памяти данных имеет 12-битный адрес, т.е. максимально возможное количество данных может быть 212 =4096 байт. Дальше, написано, что вся память делится на 16 банков по 256 байт. И, что вся память данных состоит из двух типов регистров:
В нашем микроконтроллере память данных имеет размер 1536 байт, т.е. 6 банков по 256 байт. Ниже, в datasheet приведен рисунок, который наглядно показывает организацию памяти данных:
Первый тип. Прямая адресация. При прямой адресации используется специальный регистр BSR(Bank Select Register) – регистр выбора банка. Общий, 12-ти битный адрес ячейки памяти вычисляется, как, старшие 4 бита – регистр BSR, и младшие 8 бит – смещение, внутри выбранного банка, которое задается ядру в команде. Пример на рисунке, который есть в datasheet: Когда начнем писать программу на ассемблере, станет более понятен механизм данной адресации. В микроконтроллерах PIC есть банк, для работы с которым можно не использовать регистр BSR. Это Access Bank. Как видно по рисунку 1, он расположен в первой половине банка 0 микроконтроллера PIC18F452, также, все специальные
регистры адресуются, как данные из этого банка. Адресация к этому банку идет только по смещению и специальному биту в командах ассемблера, по которому ядро определяет, использовать регистр BSR при вычислении адреса переменной или нет. В большинстве случаев, прямая адресация мало используется при написании программ. Обычно, для одиночных переменных хватает Access Bank’а, а остальные банки используются, как массивы данных. Как правило, обращение к массивам выполняется с использованием косвенной адресации. Второй тип. Косвенная адресация. Косвенная адресация – это такой режим адресации, при котором в команде не указывается адрес переменной. Существуют 3 группы специальных регистров, с помощью которых происходит адресация переменных. Это регистры: FSRxH, FSRxL, имеющие физический адрес. И регистры, не имеющие физический адрес: INDFx, POSTINCx, POSTDECx, PREINCx, PLUSWx. Где, х=0,1,2. Основной принцип адресации представлен на рисунке: Как видим по рисунку, чтобы обратиться к ячейке памяти, необходимо сначала загрузить в регистры FSRxH и FSRxL 12-ти битный адрес переменной, а потом, использовать значение этой переменной, посредством любого из остальных специальных регистров этой группы. Например, нужно прочитать значение переменной по адресу 0x435. Для этого мы заносим адрес этой переменной в регистры FSR0H=0x04; FSR0L=0x35. Дальше, можно читать значение переменной. Способы чтения или записи:
На этом с адресацией закончим! Еще, что необходимо Вам знать! Практически, вся работа ядра идет через регистры: аккумулятор (WREG или W) и регистр статуса (STATUS). Это основные регистры микроконтроллера. Поэтому, в микроконтроллере есть много инструкций, которые используют эти регистры. Регистр – аккумулятор WREG представляет собой обычный 8-битный регистр данных. Используется, как один из операндов, при вычислении чего-либо. Регистр статуса содержит результирующие флаги выполнения команды ассемблера и имеет следующую структуру: Где: N – признак отрицательного результата (7-ой знаковый бит переменной результата=1), OV – признак переполнения разрядности (7-ой знаковый бит результата изменился после переполнения), Z – признак нулевого результата, DC – флаг десятичного переноса/заема, С – флаг переноса/заема.
Теперь остановимся конкретно на командах! Находим в закладках пункт 20.0 INSTRUCTION SET SUMMARY. В этом пункте рассматриваются все команды ассемблера, поддерживаемые данным микроконтроллером. Первое, что необходимо учесть, что каждая команда выполняется за 4 импульса тактового генератора (командный цикл). Например, если у нас стоит кварц на частоту 20МГц, то за секунду будет выполняться 5 миллионов командных циклов. Одна команда за 200 наносекунд. Но, есть команды, которые выполняются за несколько циклов. Это команды, проверяющие различные условия, изменяющие программный счетчик или операции чтения/записи таблиц. В этом случае выполнение команды растягивается на два командных цикла. Команда выполняется за 3 цикла, если по условию, необходимо пропускать команду, состоящую из 2-х слов. Все команды подразделяются на:
Здесь и дальше:
Теперь сами команды! По порядку, как они расположены в datasheet.
Желаю Вам удачи! До скорой встречи! С уважением, Алексей wmstr@front.ru Cайт разработчиков 2AplusA http://2aplusa.ru |
В избранное | ||