- •Микроконтроллеры msp430 Введение
- •1. Центральный процессор msp430
- •1.1. Адресное пространство микроконтроллеров msp430f1xx
- •1.2. Регистровый файл
- •1.3. Байтовая и словная формы инструкций.
- •1.4. Режимы адресации
- •1.4.1 Регистровая адресация
- •1.4.2. Индексная адресация
- •1.4.3 Символьная адресация
- •1.4.4 Абсолютная адресация
- •1.4.5. Косвенная адресация
- •1.4.6. Косвенная адресация с автоинкрементом
- •1.4.7 Непосредственная адресация
- •2. Система команд msp микроконтроллеров
- •2.1. Двухадресные команды
- •2.2 Одноадресные команды
- •2.3 Команды переходов
- •2.4. Эмулируемые команды
- •3. Периферийные устройства микроконтроллеров msp430f1xx
- •3.1 Внешние выводы микроконтроллера msp430f149
- •3.2 Система прерываний
- •3.3 Система тактирования
- •3.4 Сторожевой таймер
- •3.5 Аппаратный умножитель
- •3.6 Порты ввода/вывода
- •3.7 Таймер a3
- •3.8 Таймер b7
- •3.9 Интерфейс usart
- •3.9.1 Режим uart
- •3.9.1.1 Передача данных
- •3.9.1.2 Прием данных
- •3.9.1.3 Поддержка коммуникации в многопроцессорных системах
- •3.9.1.4 Обнаружение стартового бита при приеме
- •3.9.1.5 Скорость передачи
- •3.9.1.6 Регистры usart
- •3.9.2 Режим spi
- •3.9.3 Режим i2c
- •3.9.3.1 Общие сведения о шине i2c
- •3.9.3.2 Режимы работы usart в режиме i2c
- •3.9.3.3 Арбитраж
- •3.9.3.4 Тактирование i2c модуля
- •3.9.3.4 Инициализация модуля i2c
- •3.9.3.5 Регистры модуля usart в режиме i2c
- •3.10 Аналоговый компаратор
- •3.11 Аналого-цифровой преобразователь adc12
- •3.12 Flash контроллер
- •3.12.1 Стирание Flash памяти
- •3.12.2 Запись Flash памяти
- •3.12.3 Регистры Flash контроллера
- •3.13 Цифро-аналоговый преобразователь
- •Контроллер dma
1.4.1 Регистровая адресация
В регистровой адресации операндом-источником и/или операндом-приемником является регистр регистрового файла. Признаком регистровой адресации является имя регистра, записанное в качестве операнда.
Пример:
mov R5, R10 - содержимое регистра R5 (как слово) пересылается в регистр R10.
mov.b SP, R5 - содержимое младшего байта указателя стека пересылается в регистр R5.
mov PC, R7 - в регистре R7 запоминается текущее состояние программного счетчика.
1.4.2. Индексная адресация
С помощью индексной адресации производится обращение к ячейке памяти, адрес которой вычисляется как сумма содержимого регистра и постоянного смещения. Признаком индексной адресации является использование одного из операндов в виде X(Rn), где n – индекс используемого регистра (n=0..15), а X – произвольное целое число, записанное в десятичной или шестнадцатеричной форме, и находящееся в диапазоне 0..65535 (0..FFFFh).
Пример:
mov 12(R5), 100h(R8) - содержимое ячейки памяти (как слово), адрес которой равен сумме содержимого регистра R5 и константы 12 (десятичное) переслать в ячейку памяти, адрес, которой равен сумме содержимого регистра R8 и константы 100h (шестнадцатеричное).
Рассмотрим этот пример более подробно. Пусть на момент выполнения этой команды содержимое R5 = 200h, а содержимое R8 = 456h.
Тогда адрес источника равен 200h+12 = 200h+0Ch = 20Ch
Адрес приемника равен 456h+100h = 556h
Таким образом, при данных начальных условиях, исполнение этой команды приведет к пересылке содержимого слова по адресу 20Ch в ячейку памяти с адресом 556h.
В одной команде можно комбинировать регистровый и индексный способы адресации.
Например
mov.b 8(R10), R5 - содержимое байта по адресу, равному сумме содержимого R10 и константы 8, записывается в регистр R5.
mov.w R12, 0(R14) - содержимое регистра R12 записывается в ячейку памяти (слово), адрес которой содержится в R14.
1.4.3 Символьная адресация
Признаком символьной адресации является упоминание символьного имени ячейки памяти как операнда-приемника и/или операнда-источника. В качестве символьного имени ячейки памяти используется метка, описанная в сегменте кода или данных при написании программы.
Пример:
mov Lab1, R5
. . .
Lab1: dw 10
Содержимое ячейки памяти, помеченной как Lab1, пересылается в регистр R5. Адрес Lab1 зарезервирован с помощью директивы компилятора dw (define word). В данном случае по адресу, соответствующему метке Lab1, располагается константа 10.
Символьная адресация является частным случаем индексной адресации, где в качестве базового регистра используется PC, а постоянное смещение рассчитывается ассемблером на этапе трансляции как разность адресов ячейки памяти Lab1 и текущего адреса команды, которая использует символьную адресацию.
Предположим, что данная команда занимает ячейки памяти программ, начиная с адреса 1234h, а метка Lab1 соответствует адресу 23AEh. Тогда смещение относительно PC можно рассчитать как 23AEh – 1234h = 117Ah, и данная команда будет оттранслирована как
mov 117Ah(PC), R5
Таким образом, после исполнения команды в регистр R5 будет записано значение 10.
Использовать символьный режим адресации имеет смысл тогда, когда необходимо получить перемещаемый, т.е. адресно-независимый программный код. Этот прием применяется, например, в случае, если программе необходимо перепрограммировать часть собственной Flash памяти. В этом случае управляющая подпрограмма должна выполняться не из Flash памяти, а из ОЗУ. Для этого необходимо, чтобы подпрограмма программирования сначала располагалась во Flash, после чего ее тело необходимо скопировать в ОЗУ, и передать ей управление. Находясь в ОЗУ, подпрограмма может очистить Flash, возможно включая ту область, откуда она была скопирована. Таким образом, перемещаемый программный модуль, работающий относительно PC, может быть транслирован в привязке к одним адресам, а исполняться из другой области памяти.
