Для установки нажмите кнопочку Установить расширение. И это всё.

Исходный код расширения WIKI 2 регулярно проверяется специалистами Mozilla Foundation, Google и Apple. Вы также можете это сделать в любой момент.

4,5
Келли Слэйтон
Мои поздравления с отличным проектом... что за великолепная идея!
Александр Григорьевский
Я использую WIKI 2 каждый день
и почти забыл как выглядит оригинальная Википедия.
Статистика
На русском, статей
Улучшено за 24 ч.
Добавлено за 24 ч.
Альтернативы
Недавние
Show all languages
Что мы делаем. Каждая страница проходит через несколько сотен совершенствующих техник. Совершенно та же Википедия. Только лучше.
.
Лео
Ньютон
Яркие
Мягкие

Из Википедии — свободной энциклопедии

MSP430

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

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

Первый контроллер с аббревиатурой MSP430 появился в 1992 году[1]. Texas Instruments заявил о стремлении создать микроконтроллер с системой команд, близкой к популярной в 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 управляет этим признаком.

Система команд
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Команда
0 0 0 1 0 0 opcode B/W As register Однооперандные команды
0 0 0 1 0 0 0 0 0 B/W As register RRC Вращение вправо через перенос
0 0 0 1 0 0 0 0 1 0 As register SWPB Обмен байтов
0 0 0 1 0 0 0 1 0 B/W As register RRA Вращение вправо арифметическое
0 0 0 1 0 0 0 1 1 0 As register SXT Расширение знака байта до слова
0 0 0 1 0 0 1 0 0 B/W As register PUSH Опустить операнд в стек
0 0 0 1 0 0 1 0 1 0 As register CALL Вызов подпрограммы; сохранить PC в стеке и загрузить PC новым значением
0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 RETI Возврат из прерывания; Извлечь SR и PC из стека
0 0 1 условие 10-бит знаковое смещение Условный переход; PC = PC + 2×offset
0 0 1 0 0 0 10-бит знаковое смещение JNE/JNZ Переход, если не_равно/не_ноль
0 0 1 0 0 1 10-бит знаковое смещение JEQ/JZ Переход, если равно/ноль
0 0 1 0 1 0 10-бит знаковое смещение JNC/JLO Переход, если не_перенос/ниже (беззнаковое сравнение)
0 0 1 0 1 1 10-бит знаковое смещение JC/JHS Переход, если перенос/выше или то же (беззнаковое сравнение)
0 0 1 1 0 0 10-бит знаковое смещение JN Переход, если отрицательный
0 0 1 1 0 1 10-бит знаковое смещение JGE Переход, если больше_или_равно
0 0 1 1 1 0 10-бит знаковое смещение JL Переход, если меньше
0 0 1 1 1 1 10-бит знаковое смещение JMP Переход (непосредственный)
opcode source Ad B/W As destination Двухоперандная арифметика
0 1 0 0 source Ad B/W As destination MOV Переслать источник в приёмник
0 1 0 1 source Ad B/W As destination ADD Прибавить источник к приёмнику
0 1 1 0 source Ad B/W As destination ADDC Прибавить источник_и_перенос к приёмнику
0 1 1 1 source Ad B/W As destination SUBC Вычесть источник из приёмника (с переносом)
1 0 0 0 source Ad B/W As destination SUB Вычесть источник из приёмника
1 0 0 1 source Ad B/W As destination CMP Сравнить (операцией вычитания) источник с приёмником
1 0 1 0 source Ad B/W As destination DADD Decimal Десятичное сложение источника и приёмника (с переносом)
1 0 1 1 source Ad B/W As destination BIT Проверка битов (операцией AND) источника и приёмника
1 1 0 0 source Ad B/W As destination BIC Битовая очистка (dest &= ~src)
1 1 0 1 source Ad B/W As destination BIS Битовая установка (logical OR)
1 1 1 0 source Ad B/W As destination XOR Исключающее или источника с приёмником
1 1 1 1 source Ad B/W As destination AND Логический AND источника с приёмником (dest &= src)

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

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

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

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

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

  1. CLRZ — очистка флага Z регистра состояния процессора (PSW) (BIC #2,SR).
  2. CLRN — очистка флага N регистра состояния процессора (PSW) (BIC #4,SR).
  3. CLRC — очистка флага C регистра состояния процессора (PSW) (BIC #1,SR).
  4. SETZ — установка флага Z регистра состояния процессора (PSW) (BIS #2,SR).
  5. SETN — установка флага N регистра состояния процессора (PSW) (BIS #4,SR).
  6. SETC — установка флага C регистра состояния процессора (PSW) (BIS #1,SR).
  7. EINT — разрешение прерываний (BIC #8,SR).
  8. DINT — запрещение прерываний (BIS #8,SR).
  9. CLR dst — очистка операнда (MOV #0,dst).
  10. TST dst — проверка операнда на ноль (CMP #0,dst).
  11. INV dst — инвертирование битов операнда (XOR #-1,dst).
  12. ADC dst — прибавление переноса к операнду (ADDC #0,dst).
  13. DADC dst — десятичное сложение переноса с получателем (DADD #0,dst).
  14. SBC dst — вычитание переноса из операнда (SUBC #0,dst).
  15. INC dst — инкремент операнда (ADD #1,dst).
  16. DEC dst — декремент операнда (SUB #1,dst)
  17. INCD dst — увеличение на 2 операнда (ADD #2,dst).
  18. DECD dst — уменьшение на 2 операнда (SUB #2,dst).
  19. RLA dst — сдвиг влево операнда, флаг переноса заполняется из старшего бита, а младший бит — результата −0 (ADD dst, dst).
  20. RLC dst — сдвиг влево операнда с использованием переноса (ADDC dst, dst).
  21. RET — возврат из подпрограммы (MOV @sp+,pc).
  22. POP dst — извлечение операнд из стека (MOV @sp+,dst).
  23. BR dst — переход в программе, используя операнд (MOV dst, pc).
  24. NOP — нет операции (MOV r3,r3).

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

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

Примечания

  1. BY STEPHEN EVANCZUK. The most-popular MCUs ever (англ.). https://www.edn.com/ (20 августа 2013). Дата обращения: 15 января 2021. Архивировано 9 июня 2021 года.

Ссылки

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

Эмуляторы

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

Эта страница в последний раз была отредактирована 5 декабря 2023 в 00:37.
Как только страница обновилась в Википедии она обновляется в Вики 2.
Обычно почти сразу, изредка в течении часа.
Основа этой страницы находится в Википедии. Текст доступен по лицензии CC BY-SA 3.0 Unported License. Нетекстовые медиаданные доступны под собственными лицензиями. Wikipedia® — зарегистрированный товарный знак организации Wikimedia Foundation, Inc. WIKI 2 является независимой компанией и не аффилирована с Фондом Викимедиа (Wikimedia Foundation).