- •Микроконтроллеры 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.4 Абсолютная адресация
Абсолютной адресацией пользуются при обращении к ячейкам памяти, имеющим фиксированные и известные на момент трансляции адреса. С помощью абсолютной адресации обычно обращаются к регистрам управления периферийных устройствами или ячейкам памяти ОЗУ, в том случае, если не используются перемещаемые программные модули. Признаком абсолютной адресации является символ ‘&’, после которого записывается адрес требуемой ячейки памяти.
Пример :
mov &200h, 10(R5)
В данном примере используется абсолютная адресация для источника и индексная адресация для приемника. Команда выполняет пересылку слова, расположенного по адресу 200h в ячейку памяти, адрес которой вычисляется как сумма содержимого R5 и смещения 10.
Абсолютная адресация также является частным случаем индексной адресации, в котором в качестве базового регистра используется генератор констант. При этом трансляция проводится с таким режимом, что в регистр R3 аппаратно подставляется нулевое значение. Таким образом, данная команда транслируется как
mov 200h(R3), 10(R5)
При этом содержимое R3 на момент выполнения команды равно 0. Если быть более точным, то транслятор подставляет в коде команд ссылку (косвенная адресация) не на R3, а на R2. Программист, однако, может не вникать в нюансы кодирования, автоматически проводимым ассемблером, и просто использовать символ ‘&’ для обозначения абсолютного режима адресации.
1.4.5. Косвенная адресация
Косвенная адресация применима только к операнду-источнику. Признаком косвенной адресации является символ ‘@’ за которым следует имя регистра. В этом случае в качестве операнда-источника используется содержимое ячейки памяти, адрес которой содержится в данном регистре.
Пример:
mov.w @R12, &200h
Содержимое ячейки памяти (слово), адрес которой содержится в регистре R12, пересылается в ячейку памяти с абсолютным адресом 200h. По своей логике эта команда эквивалентна команде
mov.w 0(R12), &200h,
однако команды, использующие косвенную адресацию вместо индексной, занимают в памяти меньше места и исполняются быстрее.
1.4.6. Косвенная адресация с автоинкрементом
Этот режим адресации применим только к операнду-источнику. Для обозначения режима используется нотация косвенной адресации, где после записи операнда-источника записывается символ ‘+’. Действие этого режима аналогично работе простой косвенной адресации, однако после выполнения команды, содержимое регистра указателя увеличивается на 1 для байтовой формы, или на 2 – для словной.
Пример
mov.b @R6+, R10
В данной команде содержимое ячейки памяти (байт), адрес которой содержится в регистре R6, пересылается в регистр R10, после чего содержимое R6 увеличивается на 1.
Предположим, что на момент исполнения команды, регистр R6 содержал значение 21Ah, тогда в регистр R10, будет переслано содержимое ячейки с адресом 21Ah, а сам регистр после исполнения команды будет содержать значение 21Bh. Если использовать команду mov.w, то содержимое R6 оказалось бы равным 21Ch.
Данный режим адресации удобно использовать для циклической обработки содержимого массивов, т.к. после выполнения команды регистр-указатель автоматически содержит адрес следующей ячейки памяти.
