
- •Кафедра «Мехатронные системы»
- •Изучение способов адресации микроконтроллера msp430f2013
- •Ижевск 2012
- •Введение
- •Задание
- •1 Порядок выполнения работы
- •2 Структура и содержание отчета
- •3 Контрольные вопросы для защиты лабораторной работы
- •Литература
- •Приложение а
- •Варианты индивидуальных заданий
- •Приложение б
- •Архитектура цпу msp430
- •Приложение в (справочное) Организация памяти микроконтроллеров семейства msp430
- •Приложение г
- •Способы адресации операндов в памяти микроконтроллеров семейства msp430
- •Приложение д (справочное) Форматы команд цпу микроконтроллеров семейства msp430
- •Приложение е (справочное) Список ассемблерных команд цпу микроконтроллеров семейства msp430
- •Приложение ж
- •Исходный текст программы работы с элементами массива на ассемблере
Приложение в (справочное) Организация памяти микроконтроллеров семейства msp430
Семейство MSP430 имеет фон-неймановскую архитектуру с единым адресным пространством для регистров специальных функций (SFR), периферии, ОЗУ и Flash-памяти в соответствии с рисунком Б.1. Конкретное распределение памяти можно узнать из справочных данных на интересующее устройство. Доступ к программному коду выполняется всегда по четным адресам. Данные могут быть доступны как байты или как слова. В настоящее время общий объем адресуемой памяти составляет 128 КБ.
Рисунок В.1 – Карта памяти
Флэш/ПЗУ
Начальный адрес области флэш/ПЗУ зависит от объёма этой памяти и отличается для разных устройств. Конечный адрес области флэш/ПЗУ всегда равен 0x1FFFF. Флэш-память может использоваться как для хранения кода, так и для хранения данных. Двухбайтные и однобайтные данные (или таблицы данных) могут располагаться во флэш-памяти и использоваться непосредственно оттуда, без предварительного копирования в ОЗУ.
Таблица векторов прерываний
Таблица векторов прерываний занимает верхние 16 слов нижней области памяти размером 64КБ. При этом вектор прерывания с наивысшим приоритетом располагается в последнем слове области по адресу 0x1FFFF.
ОЗУ
ОЗУ начинается с адреса 0200h. Конечный адрес ОЗУ зависит от объема представленной памяти и различается для каждого конкретного устройства. ОЗУ может использоваться как для программного кода, так и для данных.
Периферийные устройства
Периферийные модули отображены в адресном пространстве. Адреса с 0100h до 01FFh зарезервированы для 16-разрядных периферийных модулей. Они будут доступны с помощью команд-слов. Если используются однобайтные команды, допустимы только четные адреса, при этом старший байт результата всегда будет содержать «0». Адресное пространство с 010h по 0FFh зарезервировано для 8-разрядных периферийных модулей. Эти модули доступны с помощью однобайтных команд. Чтение байтов модулей с помощью команд-слов приведет к появлению в старшем байте непредсказуемого содержимого. Если в байт модуля будут записываться данные в виде слова, то в регистре периферийного модуля сохранится только младший байт этого слова, старший будет проигнорирован.
Регистры специальных функций (SFR)
Некоторые функции периферийных устройств конфигурируются посредством регистров специальных функций. Эти 8-битные регистры располагаются в младших 16 байт адресного пространства. Для обращения к указанным регистрам можно использовать только команды, оперирующие байтами. Назначение отдельных битов регистров специальных функций описано в документации на конкретные модели.
Приложение г
(справочное)
Способы адресации операндов в памяти микроконтроллеров семейства msp430
Семь режимов адресации для операнда источника и четыре режима адресации для операнда приемника могут адресовать полное адресное пространство без исключений. В таблице Г.1 приводится конфигурация битов для режимов As (источник) и Ad (приемник).
Таблица Г.1 - Режимы адресации операндов источника/получателя
As/Ad |
Режим адресации |
Синтаксис |
Описание |
00 / 0 |
Регистровый |
Rn |
Содержимое регистра является операндом |
01 / 1 |
Индексный |
X(Rn) |
Значение (Rn+X) указывает на операнд. X сохранен в следующем слове |
01 / 1 |
Символьный |
ADDR |
Значение (PC+X) указывает на операнд. X сохранен в следующем слове. Использован индексный режим X(PC) |
01 / 1 |
Абсолютный |
&ADDR |
Слово, следующее за командой, содержит абсолютный адрес. X сохранен в следующем слове. Использован индексный режим X(SR) |
10 / - |
Косвенный регистровый |
@Rn |
Содержимое Rn использовано как указатель на операнд |
11 / - |
Косвенный регистровый с автоинкрементом |
@Rn+ |
Содержимое Rn использовано как указатель на операнд. Содержимое Rn впоследствии увеличивается на 1 для байтовых команд и на 2 для команд-слов. |
11 / - |
Непосредственный |
#N |
Слово, следующее за командой, содержит непосредственную константу N. Использован косвенный автоинкрементный режим @PC+ |
Семь упомянутых способов адресации представлены в таблицах Г.2-Г8. В большинстве примеров показаны схожие режимы адресации для источника и получателя, но в команде возможны любые правильные комбинации способов адресации источника и получателя. Данные в регистре могут быть доступны с помощью байтовых команд или команд-слов. Если используются байтовые команды, старший байт всегда будет содержать в результате <0>. Биты статуса обрабатываются согласно результату байтовой команды.
Абсолютный режим адресации предназначен главным образом для аппаратных периферийных модулей, расположенных по абсолютным, фиксированным адресам. Данный режим гарантирует переносимость программы (например, при написании позиционно-независимого, переносимого кода).
Таблица Г.2 - Регистровый режим адресации
Код ассемблера |
Содержимое ПЗУ |
MOV R10,R11 |
MOV R10, R11 |
Длина: |
Одно или два слова | ||||||||||||||||||||||
Операция: |
Пересылка содержимого R10 в R11. Содержимое R10 не изменяется. | ||||||||||||||||||||||
Комментарий: |
Действительно для источника и получателя. | ||||||||||||||||||||||
Пример: |
MOV R10,R11
|
Таблица Г.3 - Индексный режим адресации
Код ассемблера |
Содержимое ПЗУ |
MOV 2(R5),6(R6) |
MOV X(R5),Y(R6) X=2 Y=6 |
Длина: |
Два или три слова |
Операция: |
Пересылка содержимого с исходного адреса (равного сумме содержимого R5 + 2) по адресу назначения (содержимое R6 + 6). Регистры источника и получателя (R5 и R6) не изменяются. В индексном режиме программный счетчик автоматически инкрементируется таким образом, что выполнение программы продолжается со следующей команды. |
Комментарий: |
Действительно для источника и получателя |
Пример: |
M |
Таблица Г.4 - Символьный режим адресации
Код ассемблера |
Содержимое ПЗУ |
MOV EDE,TONI |
MOV X(PC),Y(PC) X=EDE-PC Y=TONI-PC |
Длина: |
Два или три слова |
Операция: |
Пересылка содержимого с исходного адреса EDE (равного сумме содержимого PC + X) по адресу назначения TONI (содержимое PC + Y). Слова после команды содержат разницу между PC и адресами источника или получателя соответственно. Ассемблер автоматически вычисляет и вставляет смещения X и Y. В символьном режиме программный счетчик автоматически инкрементируется так, что выполнение программы продолжается со следующей команды. |
Комментарий: |
действительно для источника и получателя |
Пример: |
MOV EDE,TONI ;Адрес источника EDE=0F016h ;Адрес получателя TONI=01114h |
Таблица Г.5 - Абсолютный режим адресации
Код ассемблера |
Содержимое ПЗУ |
MOV &EDE,&TONI |
MOVX(0),Y(0)X=EDEY=TONI |
Длина: |
Два или три слова |
Операция: |
Пересылка содержимого с исходного адреса EDE по адресу назначения TONI. Слова после команды содержат абсолютные адреса источника и получателя. В абсолютном режиме программный счетчик автоматически инкрементируется так, что выполнение программы продолжается со следующей команды. |
Комментарий: |
Действительно для источника и получателя |
Пример: |
MOV &EDE,&TONI ;Адрес источника EDE=0F016h ;Адрес получателя TONI=01114h |
Таблица Г.6 - Косвенный регистровый режим адресации
Код ассемблера |
Содержимое ПЗУ |
MOV @R10,0(R11) |
MOV @R10,0(R11) |
Длина: |
Одно или два слова |
Операция: |
Пересылка содержимого с исходного адреса (содержится в R10) по адресу назначения (содержится в R11). Регистры не изменяются. |
Комментарий: |
Действительно только для операнда источника. В качестве операнда получателя подставляется 0(Rd) |
Пример: |
MOV.B @R10,0(R11) |
Таблица Г.7 - Косвенный регистровый режим адресации с автоинкрементом
Код ассемблера |
Содержимое ПЗУ |
MOV @R10+,0(R11) |
MOV @R10+,0(R11) |
Длина: |
Одно или два слова |
Операция: |
Пересылка содержимого с исходного адреса (содержится в R10) по адресу назначения (содержится в R11). Регистр R10 инкрементируется после выборки на 1 для байтовых операций или на 2 для команд-слов, таким образом указывается следующий адрес без дополнительных действий. Это полезно для обработки таблиц. |
Комментарий: |
Действительно только для операнда источника. В качестве операнда получателя подставляется 0(Rd) плюс вторая команда INCD Rd. |
Пример: |
MOV.B @R10+,0(R11) |
Таблица Г.8 – Непосредственный режим адресации
Код ассемблера |
Содержимое ПЗУ |
MOV #45h,TONI |
MOV @PC+,X(PC) 45 X=TONI-PC |
Длина: |
Два или три слова. На одно слово меньше, если может использоваться константа генераторов CG1 или CG2. |
Операция: |
Пересылка непосредственной константы 45h, находящейся в слове, следующем за командой, по адресу назначения TONI. Когда происходит выборка источника, программный счетчик указывает на слово, следующее за командой, и выполняется пересылка содержимого по назначению. |
Комментарий: |
Действительно только для операнда источника |
Пример: |
MOV #45h,TONI |