
- •Микроконтроллеры 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.10 Аналоговый компаратор
- •3.11 Аналого-цифровой преобразователь adc12
- •3.12 Flash контроллер
- •3.12.1 Стирание Flash памяти
- •3.12.2 Запись Flash памяти
- •3.12.3 Регистры Flash контроллера
2.2 Одноадресные команды
Команда: RRC - Rotate Right through Carry - вращение вправо через перенос
Синтаксис: rrc src
Операция: C MSB .. LSB C
Описание: Содержимое операнда источника сдвигается на один бит вправо, значение бита переноса записывается в старший значащий бит, младший бит записывается в бит переноса. Поддерживает байтовую и словную форму. Для словно формы MSB – 15-й бит, для байтовой – 7-й. Операнд может иметь любой тип, кроме непосредственного.
Флаги: флаги СZNV модифицируются согласно результату операции,
Пример: Сдвинуть вправо содержимое ячейки памяти, адрес которой содержится в R5
rrc @R5
Команда: RRA - Rotate Right Arithmetically - арифметический сдвиг вправо
Синтаксис: rra src
Операция: MSB MSB .. LSB C
Описание: Содержимое операнда источника сдвигается на один бит вправо, значение старшего бита не изменяется, младший бит записывается в бит переноса. Поддерживает байтовую и словную форму. Для словно формы MSB – 15-й бит, для байтовой – 7-й. Операнд может иметь любой тип, кроме непосредственного.
Флаги: флаги СZNV модифицируются согласно результату операции,
Пример: сдвинуть вправо содержимое регистра R5
rra R5
Команда: PUSH - поместить
Синтаксис: push src
Операция: SPSP-2
@SPsrc
Описание: Содержимое операнда источника src записывается в стек. Поддерживает байтовую и словную форму, но в любом случае на каждую команду расходуется два байта стека.
Флаги: Не модифицируются
Пример: Поместить на стек число 1234
push #1234
Команда: SWPB - SWaP Byte - перестановка
Синтаксис: swpb src
Описание: Меняет местами старший и младший байты источника. Не поддерживает байтовую форму. Не поддерживает непосредственную адресацию.
Флаги: Не модифицируются
Пример: Поменять местами байты в регистре R9
swpb R9
Команда: CALL - вызов
Синтаксис: call src
Операция: SP SP-2
@SP PC
PC src
Описание: Вызывает подпрограмму на исполнение. Для этого сначала сохраняет на стеке адрес возврата, после чего осуществляет переход на начало подпрограммы. Не поддерживает байтовую форму.
Флаги: Не модифицируются
Пример:
call #proc - вызов подпрограммы помеченной меткой proc
call proc - вызов подпрограммы, адрес которой содержится в ячейке памяти с именем proc
call r5 - вызов подпрограммы, адрес которой содержится в регистре R5
call @R5+ - вызов подпрограммы, адрес которой содержится в ячейке памяти, адрес которой в свою очередь, содержится в регистре R5, после чего содержимое R5 увеличивается на 2.
Команда: RETI - RETurn from Interrupt - возврат из подпрограммы обработки прерывания
Синтаксис: reti
Операция: SR @SP
SP SP+2
PC @SP
SP SP+2
Описание: Завершает подпрограмму обработки прерывания. Для этого сначала восстанавливает из стека содержимое статусного регистра, зафиксированное перед вхождением в прерывании, и передает управление на прерванный фрагмент программы.
Флаги: восстанавливаются.
Команда: SXT - Sign eXTend – расширение знака
Синтаксис: sxt src
Описание: Копирует 7-й бит операнда в его старшие биты. Команда используется для преобразования байта в слово. Не поддерживает байтовую форму. Не поддерживает непосредственную адресацию.
Флаги: флаги ZN модифицируются согласно результату операции, С = ~Z, V=0
Данные об объеме памяти, занимаемой командами, и скорость их исполнения приведена в таблице 3. Формат данных в таблице – такой же как в таблице 2.
Таблица 3
-
RRA,RRC,
SWPB,SXT
PUSH
CALL
Регистровый
1 / 2
3 / 2
4 / 2
Индексный
4 / 4
5 / 2
5 / 4
Символьный
4 / 4
5 / 4
5 / 4
Абсолютный
4 / 4
5 / 4
5 / 4
Косвенный
3 / 2
4 / 2
4 / 2
Косв. с автоинк.
3 / 2
5 / 2
5 / 2
Непосредственный
-
4 / 4
5 / 4
Команда RETI в памяти занимает 2 байта и исполняется за 5 тактов.