MSP430

MSP430 — семейство 16-разрядных микроконтроллеров фирмы «Texas Instruments».

MSP430.

История создания и особенные характеристики

Первый контроллер с аббревиатурой MSP430 появился в 1992 году [1]. «TI» заявил о стремлении создать микроконтроллер с системой команд, близкой к популярной в 70-х—80-х годах архитектуре PDP-11.

Ядро MSP430 16-битное. Систему команд постарались сделать максимально ортогональной с разнообразными способами адресации. Ортогональность системы команд означает, что в любой команде может использоваться любой способ адресации операнда: константа, прямой из регистра или памяти, косвенный и т. п.

В момент рождения семейства основной упор был сделан на снижение энергопотребления. Однако с тех пор экономия энергии стала идеей-фикс электронной техники, и MSP430 активно теснят на этом пьедестале другие производители со своими архитектурами.

Ключевым отличием и «визитной карточкой» семейства MSP430 является возможность тактировать любой модуль периферии асинхронно от ядра. В подавляющем большинстве однокристальных микроконтроллеров периферия синхронна с ядром (за исключением отдельных специальных узлов). Такая особенность позволяет гибко управлять скоростью (а значит, и потреблением) каждого модуля. Кроме того, уникальным является также модуль USB интерфейса: он имеет отдельный домен питания, что упрощает разработку батарейных приборов с USB-интерфейсом.

Сегодня семейство MSP430 предлагает широкую гамму однокристальных микроконтроллеров с объемом флеш-памяти от единиц до 512 килобайт и ОЗУ до 64 килобайт. Тактовые частоты ядра — до 25 МГц.

Система команд MSP430

MSP430 имеет фоннеймановскую архитектуру, с единым адресным пространством для команд и данных. Память может адресоваться как побайтово, так и пословно. Порядок хранения 16-разрядных слов — от младшего к старшему (англ. little-endian).

Процессор содержит 16 16-разрядных ортогональных регистров. Регистр R0 используется как программный счетчик (англ. Program Counter — PC), регистр R1 как указатель стека (англ. Stack Pointer - SP), регистр R2 как регистр статуса (англ. Status Register — SR), а R3 как специальный регистр, именуемый генератор констант (англ. Constant Generator - CG), R2 также может использоваться в качестве генератора констант. Генератор констант используется для сокращения общей длины команды вследствие неявного представления константы в коде операции. Регистры с R4 по R15 используются как регистры общего назначения.

Набор инструкций очень простой и представлен 27 инструкциями, 24 эмулированными инструкциями. Инструкции имеют как 8-битную (байт), так и 16-битную (слово) форму обработки операндов. Бит B/W управляет этим признаком.

MSP430 система команд
15141312 111098 7654 3210Команда
000100opcodeB/WAsregister Однооперандные команды
000100000B/WAsregister RRC Вращение вправо через перенос
0001000010Asregister SWPB Обмен байтов
000100010B/WAsregister RRA Вращение вправо арифметическое
0001000110Asregister SXT Расширение знака байта до слова
000100100B/WAsregister PUSH Опустить операнд в стек
0001001010Asregister CALL Вызов подпрограммы; сохранить PC в стеке и загрузить PC новым значением
0001001100000000 RETI Возврат из прерывания; Извлечь SR и PC из стека
001условие10-бит знаковое смещение Условный переход; PC = PC + 2×offset
00100010-бит знаковое смещение JNE/JNZ Переход, если не_равно/не_ноль
00100110-бит знаковое смещение JEQ/JZ Переход, если равно/ноль
00101010-бит знаковое смещение JNC/JLO Переход, если не_перенос/ниже (беззнаковое сравнение)
00101110-бит знаковое смещение JC/JHS Переход, если перенос/выше или то же (беззнаковое сравнение)
00110010-бит знаковое смещение JN Переход, если отрицательный
00110110-бит знаковое смещение JGE Переход, если больше_или_равно
00111010-бит знаковое смещение JL Переход, если меньше
00111110-бит знаковое смещение JMP Переход (непосредственный)
opcodesourceAdB/WAsdestination Двухоперандная арифметика
0100sourceAdB/WAsdestination MOV Переслать источник в приёмник
0101sourceAdB/WAsdestination ADD Прибавить источник к приёмнику
0110sourceAdB/WAsdestination ADDC Прибавить источник_и_перенос к приёмнику
0111sourceAdB/WAsdestination SUBC Вычесть источник из приёмника (с переносом)
1000sourceAdB/WAsdestination SUB Вычесть источник из приёмника
1001sourceAdB/WAsdestination CMP Сравнить (операцией вычитания) источник с приёмником
1010sourceAdB/WAsdestination DADD Decimal Десятичное сложение источника и приёмника (с переносом)
1011sourceAdB/WAsdestination BIT Проверка битов (операцией AND) источника и приёмника
1100sourceAdB/WAsdestination BIC Битовая очистка (dest &= ~src)
1101sourceAdB/WAsdestination BIS Битовая установка (logical OR)
1110sourceAdB/WAsdestination XOR Исключающее или источника с приёмником
1111sourceAdB/WAsdestination AND Логический AND источника с приёмником (dest &= src)

Все инструкции 16-битные. 4 способа адресации операнда, определены в 2 битах как As поле.

Поле As— Регистровый, индексный, косвенный-регистровый, косвенно-регистровый с постдекрементом. Поле Ad определяет два способа адресации — регистровый и индексный.

MSP430 Режим адресации
AsРегистрСинтаксисОписание
00nRnРегистровый. Операнд — содержимое одного из регистров из Rn.
01nx(Rn)Индексный. Операнд находится в памяти по адресу Rn+x.

X-слово находится после текущей команды.

10n@RnКосвенный регистровый. Операнд находится в памяти по адресу, который содержится в регистре Rn.
11n@Rn+Косвенный регистровый с автоинкрементом. В зависимости от значения разряда B/W значение регистра Rn увеличивается после выполнения операции на 1 или 2.
Режимы адресации при использовании R0 (PC)
010 (PC)LABELОтносительный(символьный). x(PC) Операнд в памяти по адресу PC+x.
110 (PC)#xНепосредственный. @PC+ Адрес операнда из х-слова, находящегося после текущей команды.
Использование R2 (SR) и R3 (CG), специальный способ декодирования
012 (SR)&LABELАбсолютный. Операнд в памяти по адресу, взятому из x.
102 (SR)#4Константа 4.
112 (SR)#8Константа 8.
003 (CG)#0Константа 0.
013 (CG)#1Константа 1. при байтовых операциях.
103 (CG)#2Константа 2.
113 (CG)#-1Константа −1 или 0xFFFF.

Мнемоника эмулируемых команд

Другие команды, поддерживаемые ассемблером MSP430, образуются из основных и именуются эмулируемыми (способ получения — в скобках). Общее число поддерживаемых ассемблером эмулируемых команд — 24.

CLRZ — очистка флага Z регистра состояния процессора (PSW) ( BIC #2,SR )
CLRN — очистка флага N регистра состояния процессора (PSW) ( BIC #4,SR )
CLRC — очистка флага C регистра состояния процессора (PSW) ( BIC #1,SR )
SETZ — установка флага Z регистра состояния процессора (PSW) ( BIS #2,SR )
SETN — установка флага N регистра состояния процессора (PSW) ( BIS #4,SR )
SETC — установка флага C регистра состояния процессора (PSW) ( BIS #1,SR )
EINT — разрешение прерываний ( BIC #8,SR )
DINT — запрещение прерываний ( BIS #8,SR )
CLR dst — очистка операнда ( MOV #0,dst )
TST dst — проверка операнда на ноль ( CMP #0,dst )
INV dst — инвертирование битов операнда ( XOR #-1,dst )
ADC dst — прибавление переноса к операнду ( ADDC #0,dst )
DADC dst — десятичное сложение переноса с получателем ( DADD #0,dst )
SBC dst — вычитание переноса из операнда ( SUBC #0,dst)
INC dst — инкремент операнда ( ADD #1,dst )
DEC dst — декремент операнда ( SUB #1,dst )
INCD dst — увеличение на 2 операнда ( ADD #2,dst )
DECD dst — уменьшение на 2 операнда ( SUB #2,dst )
RLA dst — сдвиг влево операнда, флаг переноса заполняется из старшего бита, а младший бит результата -0 ( ADD dst,dst )
RLC dst — сдвиг влево операнда с использованием переноса ( ADDC dst,dst )
RET     — возврат из подпрограммы ( MOV @sp+,pc )
POP dst — извлечение операнд из стека ( MOV @sp+,dst )
BR dst — переход в программе, используя операнд ( MOV dst,pc)
NOP — нет операции ( MOV r3,r3 ) 
      имеются и другие возможные операции для формирования задержки выполнения программного кода 

Примечание: приведена форма записи команд без указания на тип операндов байт/слово.

Поддерживаемый формат команд ассемблером в мнемонике имеет указание на тип обрабатываемых данных.

Примечания

  1. BY STEPHEN EVANCZUK. The most-popular MCUs ever (англ.) ?. https://www.edn.com/ (20 августа 2013).

Ссылки

Компиляторы и ассемблеры

Эмуляторы

Полезные ссылки

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.