- •Микроконтроллеры 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.7 Непосредственная адресация
Данный режим применяется только для операндов-источников и предназначен для использования констант, определенных на этапе компиляции программы. Для обозначения этого режима используется символ ‘#’, за которым следует численное значение самой константы.
Пример
mov #1234, R12
В этом примере число 1234 загружается в регистр R12.
Абсолютная адресация не является самостоятельным типом. При кодировке данной команды ассемблер заменяет эту инструкцию следующей последовательностью:
mov @PC+, R12
dw 1234
В данной реализации код команды mov занимает в памяти два байта. После вычитывания кода команды содержимое регистра PC автоматически увеличивается на 2, после чего PC содержит адрес, по которому располагается константа 1234. Согласно алгоритму работы косвенной адресации, содержимое ячейки памяти, адрес которой находится в PC (т.е. значение 1234), пересылается в R12, после чего содержимое PC опять увеличивается на 2, т.к. задан режим с автоинкрементом. Таким образом, после исполнения команды PC будет содержать адрес следующей за директивой dw инструкции.
Следует заметить, однако, что в том случае, если в качестве константы в программе указано одно из значений, генерируемых генератором констант, ассемблер автоматически подставит более короткий код, со ссылкой на регистры R2/R3 в зависимости от значения этой константы.
2. Система команд msp микроконтроллеров
Все команды MSP можно разделить на основные (базовые) и эмулированные. Основные команды – это инструкции, которые собственно исполняет процессор. Эмулированные команды представляют собой мнемоники, которые на этапе компиляции автоматически заменяются ассемблером на ту или другую команду из основного набора. Всего имеется 27 базовых команд и 24 эмулируемых.
Базовые команды условно делятся на 3 группы: это двухадресные команды, одноадресные команды и команды переходов.
Для описания действий процессора при исполнении инструкций введем некоторые обозначения:
src (source) – операнд источник, может быть представлен любым типом адресации;
dst (destination) – операнд приемник, может быть представлен регистровым, индексным, символьным или абсолютным режимами адресации;
label – метка в теле программы;
LSB (less significant bit) - младший значащий бит;
MSB (most significant bit) - старший значащий бит;
+ операция арифметического сложения;
- операция арифметического вычитания;
& операция ЛОГИЧЕСКОЕ И;
| операция ЛОГИЧЕСКОЕ ИЛИ;
^ операция ИСКЛЮЧАЮЩЕЕ ИЛИ;
~ операция ЛОГИЧЕСКОЙ ИНВЕРСИИ;
операция записи.
2.1. Двухадресные команды
Команда: MOV - MOVe – пересылка.
Синтаксис: mov src, dst
Операция: dst src
Описание: Содержимое src записывается в dst
Флаги: Не модифицируются
Пример: Переслать содержимое R8 в ячейку памяти, адрес которой хранится в R12
mov R8, 0(R12)
Команда: ADD - прибавить
Синтаксис: add src, dst
Операция: dst dst+src
Описание: Содержимое src прибавляется к содержимому dst
Флаги: флаги CZNV модифицируются согласно результату операции
Пример: Прибавить число 35 к содержимому ячейки памяти с адресом 200h
add #35, &200h
Команда: ADDC - ADD with Carry - прибавить с учетом переноса
Синтаксис: addс src, dst
Операция: dst st+src+С
Описание: К содержимому dst прибавляется содержимое src и флаг C.
Флаги: флаги CZNV модифицируются согласно результату операции
Команда: SUB - SUBtract - вычесть
Синтаксис: sub src, dst
Операция: dstdst-src
Описание: Из содержимого dst вычитается содержимое src
Флаги: флаги CZNV модифицируются согласно результату операции
Пример : Из содержимого R12 вычесть содержимое ячейки памяти с адресом 22Ah
sub &22Ah, R12
Команда: SUBC - SUBtract with Carry - вычесть c учетом переноса
Синтаксис: subс src, dst
Операция: dstdst-src-1+C
Описание: Из содержимого dst вычитается содержимое src и инверсия C
Флаги: флаги CZNV модифицируются согласно результату операции
Команда: CMP - CoMPare - сравнить
Синтаксис: cmp src, dst
Операция: dst-src
Описание: Из содержимого dst вычитается содержимое src, результат никуда не заносится
Флаги: флаги CZNV модифицируются согласно результату операции
Пример : Сравнить содержимое ячейки памяти, адрес которой находится в регистре R12 с числом 100
cmp #100, 0(R12)
Команда: DADD - Decimal ADDition - сложение операндов в BCD формате с учетом переноса
Синтаксис: dadd src, dst
Операция: dst dst + src + C
Описание: Команда используется в предположении, что оба операнда имеют двоично-десятичную кодировку - BCD (Binary Coded Decimal). BCD кодировка используется в основном для подготовки числовых данных, поразрядно выводимых на индикатор.
BCD кодировка предполагает, что в каждом полубайте операнда может находиться число в диапазоне 0 - 9. При сложении двух BCD чисел результатом исполнения команды является также правильное BCD число.
Флаги: флаги CZNV модифицируются согласно результату операции
Пример : Пусть R5 содержит значение 1234h, а R6 – 6789h. При выполнении команды
dadd R5, R6
регистр R6 получит значение 8023h. Т.е. шестнадцатеричные цифры трактуются как десятичные. В противоположность этому при тех же исходных условиях команда
add R5, R6
загрузит в R6 значение 79BDh. Это происходит потому, что
1234h+6789h=4660+26505=31165=79BDh
Команда: AND - логическое И
Синтаксис: and src, dst
Операция: dst dst & src
Описание: В операнд приемник записывается значение побитной операции ЛОГИЧЕСКОЕ И между содержимым источника src и приемника dst.
Флаги: флаги ZN модифицируются согласно результату операции, С = ~Z, V=0
Пример: Сбросить 7, 6 и 4 биты в регистре R12
and #2Fh, R12
Команда: BIT - BIt Test - тестирование бит
Синтаксис: bit src, dst
Операция: dst & src
Описание: Выполняет те же действия, что и команда AND, однако результат никуда не записывается
Флаги: флаги ZN модифицируются согласно результату операции, С = ~Z, V=0
Пример: Проверить состояние младшего бита регистра R12
bit #1, R12
Команда: BIS - BIt Set - установка бит
Синтаксис: bis src, dst
Операция: dst src | dst
Описание: В приемнике dst устанавливаются в единицы те биты, которые были установлены в источнике src. Фактически выполняется операция ЛОГИЧЕСКОЕ ИЛИ.
Флаги: Не модифицируются
Пример: Установить 7-й и 1-й бит в регистре R12
bis.b #82h, R12
Команда: BIC - BIt Clear - сброс бит
Синтаксис: biс src, dst
Операция: dst ~src & dst
Описание: В приемнике dst сбрасываются в ноль те биты, которые были установлены в источнике src. Фактически выполняется операция ЛОГИЧЕСКОЕ И между приемником и битовой инверсией источника
Флаги: Не модифицируются
Команда: XOR - eXlusive OR - логическая операция ИСКЛЮЧАЮЩЕЕ ИЛИ
Синтаксис: xor src, dst
Операция: dst src ^ dst
Описание: В операнд приемник записывается значение побитной операции ИСКЛЮЧАЮЩЕЕ ИЛИ между содержимым источника и приемника.
Флаги: флаги ZN модифицируются согласно результату операции,
С = ~Z,
V=1, если оба операнда отрицательные, в противном случае V=0.
Все двухадресные команды поддерживают как байтовую, так и словную форму.
Объем памяти, занимаемый двухадресными командами, а также скорость их исполнения не зависит от конкретной команды, а определяется исключительно режимом адресации приемника и источника. В таблице 2 приведены значения скорости исполнения команды и объем памяти, занимаемый командой, в зависимости от режима адресации источника/приемника. В числителе приведена скорость исполнения в машинных циклах, в знаменателе – объем памяти в байтах.
Таблица 2
-
Регистровый
Индексный
Символьный
Абсолютный
Регистровый
1 / 2
4 / 4
4 / 4
4 / 4
Индексный
3 / 4
6 / 6
6 / 6
6 / 6
Символьный
3 / 4
6 / 6
6 / 6
6 / 6
Абсолютный
3 / 4
6 / 6
6 / 6
6 / 6
Косвенный
2 /2
5 / 4
5 / 4
5 / 4
Косв. с автоинк.
2 / 2
5 / 4
5 / 4
5 / 4
Непосредственный
2 /4
5 / 6
5 / 6
5 / 6
