Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

MSP430_Final

.pdf
Скачиваний:
41
Добавлен:
31.05.2015
Размер:
2.03 Mб
Скачать

 

 

 

 

4.6. Описание набора команд 221

 

 

ADDA

Сложение 20Cбитного операнда с 20Cбитным регистром

 

 

 

 

 

Синтаксис

ADDA

Rsrc,Rdst

 

 

 

ADDA

#imm20,Rdst

 

 

 

 

 

 

Операция

src + Rdst Rdst

 

 

 

 

Описание

20 битный операнд источник прибавляется к 20 битному содержимому регистра при

 

ёмника. Предыдущее содержимое регистра теряется. Операнд источник не изменяется

 

 

Биты

N: Устанавливается, если результат отрицательный (Rdst.19 = 1), сбрасывается — если

состояния

положительный (Rdst.19 = 0).

 

 

Z: Устанавливается, если результат нулевой, иначе сбрасывается.

 

C: Устанавливается, если произошёл перенос из 20 битного рещультата, иначе сбрасы

 

вается.

 

 

 

V: Устанавливается, если результат операции над двумя положительными операндами

 

отрицателен или если результат операции над двумя отрицательными операндами

 

положителен; иначе сбрасывается.

 

 

Биты

OSCOFF, CPUOFF и GIE не изменяются

режима

 

 

 

 

 

 

Пример

Содержимое регистра R5 увеличивается на 0A4320h. В случае переноса осуществляется

 

переход к метке TONI.

 

 

 

ADDA

#0A4320h,R56

; Прибавляем A4320h к 20$битному R5

 

JC

TONI

; Переходим в случае переноса

 

...

 

; Переноса не было

 

 

 

* BRA

Безусловный переход

 

 

 

 

 

 

Синтаксис

BRA

dst

 

 

 

 

 

 

 

Операция

dst PC

 

 

 

 

 

 

 

 

Эмуляция

MOVA

dst,PC

 

 

 

 

Описание

Выполняется безусловный переход по любому адресу в пределах всего адресного про

 

странства. Для операнда могут использоваться любой из семи режимов адресации. В ко

 

манде используются 20 битные операнды. Если адрес назначения расположен в ячейке

 

памяти X, то он содержится в двух соседних словах: X (младшие биты) и X+2 (старшие

 

биты).

 

 

 

 

 

 

Биты

Биты состояния не изменяются

 

состояния

 

 

 

 

 

 

Пример

Приведены примеры для всех режимов адресации.

 

Непосредственная адресация: переход к метке EDE, находящейся в любом месте 20 бит

 

ного адресного пространства или непосредственно по заданному адресу.

 

BRA

#EDE

; MOVA

#imm20,PC

 

BRA

#01AA04h

 

 

 

Относительная адресация: переход по 20 битному адресу, значение которого хранится в

 

словах EXEC (младшие биты) и EXEC+2 (старшие биты). EXEC располагается по адресу

 

(PC + X), где X находится в диапазоне ±32 КБ. Косвенная адресация.

 

BRA

EXEC

; MOVA

z16(PC),PC

 

Примечание. Если для записи смещения требуется больше 16 бит, можно использовать

 

20 битное смещение со следующей командой:

 

MOVX.A

EXEC,PC

; 1 МБ, 20$битное смещение

 

 

 

 

 

222 Глава 4. 16#битное RISC ЦПУ MSP430X

Пример

Абсолютная адресация: переход по 20 битному адресу, значение которого хранится в

 

словах EXEC (младшие биты) и EXEC+2 (старшие биты). Косвенная адресация.

 

BRA

&EXEC

; MOVA

&abs20,PC

 

Регистровая адресация: переход по 20 битному адресу, находящемуся в регистре R5.

 

Косвенная адресация по содержимому R5.

 

BRA

R5

; MOVA

R5,PC

 

Косвенная адресация: переход по 20 битному адресу, находящемуся в слове памяти, ад

 

ресуемом регистром R5 (младшие биты адреса). Старшие биты адреса хранятся в слове

 

c адресом (R5 + 2). Косвенная адресация по косвенному содержимому R5.

 

BRA

@R5

; MOVA

@R5,PC

 

Косвенная адресация с автоинкрементом: переход по 20 битному адресу, находящемуся

 

в слове памяти, адресуемом регистром R5, с последующим увеличением содержимого

 

R5 на 4. Косвенная адресация по косвенному содержимому R5.

 

BRA

@R5+

; MOVA

@R5+,PC. R5+4

Индексная адресация: переход по 20 битному адресу, находящемуся в слове памяти

садресом (R5 + X) например обращение к таблице адресов, расположенной, начиная

садреса X. По адресу (R5 + X) располагаются младшие биты искомого адреса, а по адре су (R5 + X +2) — старшие. Смещение X находится в диапазоне ±32 КБ. Косвенная адре сация по косвенному содержимому R5 + X.

BRA

X(R5)

; MOVA

z16(R5),PC

Примечание. Если для записи смещения X требуется больше 16 бит, можно использовать 20 битное смещение со следующей командой:

MOVX.A X(R5),PC ; 1Мб, 20$битное смещение

 

 

 

4.6. Описание набора команд 223

 

 

CALLA

Вызов подпрограммы

 

 

 

 

Синтаксис

CALLA

dst

 

 

 

Операция

dst tmp (20 битное dst вычисляется и запоминается)

 

SP – 2 SP

 

 

PC.19:16 @SP (Старшие биты PC сохраняются в стеке)

 

SP – 2 SP

 

 

PC.15:0 @SP (Младшие биты PC сохраняются в стеке)

 

tmp PC (dst загружается в PC)

 

 

Описание

Осуществляется вызов подпрограммы, расположенной по любому адресу в пределах

 

всего адресного пространства. Могут использоваться любые режимы адресации. В ко

 

манде используется 20 битный операнд. Если адрес назначения расположен в ячейке

 

памяти X, то он содержится в двух соседних словах: X (младшие биты) и X+2 (старшие

 

биты). Для хранения адреса возврата используются 2 элемента стека. Возврат из подпро

 

граммы осуществляется по команде RETA

 

 

Биты

Биты состояния не изменяются

состояния

 

 

 

 

 

Биты

OSCOFF, CPUOFF и GIE не изменяются

режима

 

 

 

 

 

Пример

Приведены примеры для всех режимов адресации.

 

Непосредственная адресация: вызов подпрограммы по метке EXEC или по непосредс

 

твенному адресу.

 

 

CALLA

#EXEC

; Стартовый адрес $ EXEC

 

CALLA

#01AA04h

; Стартовый адрес $ 01AA04h

Относительная адресация: вызов подпрограммы по 20 битному адресу, значение кото рого хранится в словах EXEC (младшие биты) и EXEC+2 (старшие биты). EXEC распо лагается по адресу (PC + X), где X находится в диапазоне ±32 КБ. Косвенная адресация.

CALLA

EXEC

; Стартовый адрес $ @EXEC. z16(PC)

Абсолютная адресация: вызов подпрограммы по 20 битному адресу, значение которого хранится в словах EXEC (младшие биты) и EXEC+2 (старшие биты). Косвенная адреса ция.

CALLA

&EXEC

; Стартовый адрес $ @EXEC

Регистровая адресация: вызов подпрограммы по 20 битному адресу, находящемуся в ре гистре R5. Косвенная адресация по содержимому R5.

CALLA

R5

; Стартовый адрес $ в регистре R5

Косвенная адресация: вызов подпрограммы по 16 битному адресу, находящемуся в сло ве памяти, адресуемом регистром R5 (20 битный адрес). Косвенная адресация по кос венному содержимому R5.

CALLA

@R5

; Стартовый адрес $ @R5

Косвенная адресация с автоинкрементом: вызов подпрограммы по 20 битному адресу, находящемуся в слове памяти, адресуемом регистром R5 (20 битный адрес), с последую щим увеличением содержимого R5 на 4. Косвенная адресация по косвенному содержи мому R5.

CALLA

@R5+

; Стартовый адрес $ @R5, R5 = R5 + 4

224 Глава 4. 16#битное RISC ЦПУ MSP430X

Пример

Индексная адресация: вызов подпрограммы по 20 битному адресу, находящемуся в сло

 

ве памяти с адресом (R5 + X), например обращение к таблице адресов, расположенной,

 

начиная с адреса X. По адресу (R5 + X) располагаются младшие биты искомого адреса, а

 

по адресу (R5 + X +2) — старшие. Смещение X находится в диапазоне ±32 КБ. Косвен

 

ная адресация по косвенному содержимому R5 + X.

 

CALLA

X(R5)

; Стартовый адрес $ @(R5 + X). z16(R5)

* CLRA

Очистка 20Cбитного регистра

 

 

 

 

Синтаксис

CLRA

Rdst

 

 

 

 

 

Операция

0 Rdst

 

 

 

 

 

Эмуляция

MOVA

#0,Rdst

 

 

Описание

Регистр приёмник обнуляется

 

 

Биты сост.

Биты состояния не изменяются

 

 

Пример

Обнуляются все 20 бит регистра R10.

 

CLRA

R10

; 0 $> R10

 

 

 

 

CMPA

Сравнение 20Cбайтного операнда с 20Cбитным регистром

 

 

 

 

Синтаксис

CMPA

Rsrc,Rdst

 

 

CMPA

#imm20,Rdst

 

 

 

 

Операция

.not.src + 1 + Rdst

 

 

или

 

 

 

(Rdst – src)

 

 

 

Описание

20 битный операнд источник вычитается из регистра приёмника. Для выполнения

 

этой операции к содержимому регистра прибавляется обратный код операнда источни

 

ка плюс 1. Операция влияет только на биты состояния регистра SR

 

 

Биты

N: Устанавливается, если результат отрицательный (src > dst), сбрасывается — если по

состояния

ложительный (src dst).

 

Z: Устанавливается, если результат нулевой (src = dst), иначе сбрасывается (src dst).

 

C: Устанавливается, если был перенос из MSB результата, иначе сбрасывается.

 

V: Устанавливается, если результат вычитания отрицательного операнда из положи

 

тельного отрицателен или результат вычитания положительного операнда из отри

 

цательного положителен, иначе сбрасывается (нет переполнения).

 

 

Биты

OSCOFF, CPUOFF и GIE не изменяются

режима

 

 

 

 

 

Пример 1

Сравнивается 20 битная константа и регистр R6. В случае равенства выполняется пере

 

ход к метке EQUAL.

 

 

CMPA

#12345h,R6 ; Сравниваем R6 с 12345h

 

JEQ

EQUAL

; R5 = 12345h

 

 

Пример 2

Сравниваются 20 битные значения, находящиеся в регистрах R5 и R6. Если R5 больше

 

или равен R6, выполняется переход к метке GRE.

 

CMPA

R5,R6

; Сравниваем R6 с R5 (R5 – R6)

 

JGE

GRE

; R5 >= R6

 

...

 

; R5 < R6

 

 

 

 

 

 

 

4.6. Описание набора команд 225

 

 

* DECDA

Уменьшение 20Cбитного регистра на 2

 

 

 

 

Синтаксис

DECDA

Rdst

 

 

 

 

Операция

Rdst – 2 Rdst

 

 

 

 

 

Эмуляция

SUBA

#2,Rdst

 

 

 

Описание

Значение регистра приёмника уменьшается на 2. Предыдущее содержимое регистра те

 

ряется

 

 

 

 

Биты

N: Устанавливается, если результат отрицательный, сбрасывается — если положитель

состояния

ный.

 

 

 

Z: Устанавливается, если Rdst содержал 2, иначе сбрасывается.

 

C: Сбрасывается, если Rdst содержал 0 или 1, иначе устанавливается.

 

V: Устанавливается, если произошло переполнение, иначе сбрасывается.

 

 

Биты

OSCOFF, CPUOFF и GIE не изменяются

режима

 

 

 

 

 

Пример

Содержимое регистра R5 уменьшается на 2.

 

DECDA

R5

; R5 = R5 $ 2

 

 

* INCDA

Увеличение 20Cбитного регистра на 2

 

 

 

 

Синтаксис

INCDA

Rdst

 

 

 

 

Операция

Rdst + 2 dst

 

 

 

 

 

Эмуляция

ADDA

#2,dst

 

 

 

Описание

Значение регистра приёмника увеличивается на 2. Предыдущее содержимое регистра

 

теряется

 

 

 

 

Биты

N: Устанавливается, если результат отрицательный, сбрасывается — если положитель

состояния

ный.

 

 

 

Z: Устанавливается, если dst содержал 0FFFFEh, иначе сбрасывается.

 

C: Устанавливается, если dst содержал 0FFFFEh или 0FFFFFh, иначе сбрасывается.

 

V: Устанавливается, если dst содержал 07FFFEh или 07FFFFh, иначе сбрасывается.

 

 

Биты

OSCOFF, CPUOFF и GIE не изменяются

режима

 

 

 

 

 

Пример

Содержимое регистра R5 увеличивается на 2.

 

INCDA

R5

; R5 = R5 + 2

 

 

MOVA

Пересылка 20Cбитного операнда

 

 

 

Синтаксис

MOVA

Rsrc,Rdst

 

MOVA

#imm20,Rdst

 

MOVA

z16(Rsrc),Rdst

 

MOVA

EDE,Rdst

 

MOVA

&abs20,Rdst

 

MOVA

@Rsrc,Rdst

 

MOVA

@Rsrc+,Rdst

 

MOVA

Rsrc,z16(Rdst)

 

MOVA

Rsrc,&abs20

 

 

 

 

226 Глава 4. 16#битное RISC ЦПУ MSP430X

Операция

src Rdst

 

 

Rsrc dst

 

 

 

Описание

20 битный операнд источник пересылается в операнд приёмник. Содержимое операн

 

да источника не изменяется. Предыдущие значение операнда приёмника теряется

 

 

Биты

Биты состояния не изменяются

состояния

 

 

 

 

Биты

OSCOFF, CPUOFF и GIE не изменяются

режима

 

 

 

 

Пример

Копируем содержимое регистра R9 в регистр R8.

 

MOVA R9,R8

; R9 $> R8

Загружаем 20 битную константу 12345h в регистр R12.

MOVA #12345h,R12 ; 12345h $> R12

Копируем 20 битное значение, адресуемое (R9 + 100h) в регистр R8. Младшие биты операнда источника располагаются по адресу (R9 + 100h), а старшие — по адресу (R9 + 102h).

MOVA 100h(R9),R8 ; Смещение ±32 КБ. Пересылается два слова

Копируем 20 битное значение, расположенное по абсолютному 20 битному адресу EDE (младшие биты) и EDE+2 (старшие биты), в регистр R12.

MOVA &EDE,R12

; &EDE $> R12. Пересылается два слова

Копируем 20 битное значение, расположенное по 20 битному адресу EDE (младшие би ты) и EDE+2 (старшие биты), в регистр R12. Величина смещения относительно PC на ходится в диапазоне ±32 КБ.

MOVA EDE,R12

; EDE $> R12. Пересылается два слова

Копируем 20 битное значение, на которое указывает регистр R9 (20 битный адрес), в регистр R8. Младшие биты операнда источника располагаются по адресу @R9, а стар шие — по адресу (@R9+2).

MOVA @R9,R8

; @R9 $> R8. Пересылается два слова

Копируем 20 битное значение, на которое указывает регистр R9 (20 битный адрес), в регистр R8. Затем регистр R9 увеличивается на 4. Младшие биты операнда источника располагаются по адресу @R9, а старшие — по адресу (@R9+2).

MOVA @R9+,R8

; @R9 $> R8. Пересылается два слова

Копируем 20 битное содержимое R8 по адресу (R9 + 100h). Младшие биты операнда приёмника располагаются по адресу (R9 + 100h), а старшие — по адресу (R9 + 102h).

MOVA R8,100h(R9) ; Смещение ±32 КБ. Пересылается два слова

Копируем 20 битное содержимое R13 в память по абсолютному 20 битному адресу EDE (младшие биты) и EDE+2 (старшие биты).

MOVA R13,&EDE

; R13

$> &EDE. Пересылается два слова

Копируем 20 битное содержимое R13 в память по 20 битному адресу EDE (младшие би ты) и EDE+2 (старшие биты). Величина смещения относительно PC находится в диапа зоне ±32 КБ.

MOVA R12,EDE

; R12

$> EDE. Пересылается два слова

 

 

 

 

4.6. Описание набора команд 227

 

 

* RETA

Возврат из подпрограммы

 

 

 

 

 

Синтаксис

RET

 

 

 

 

 

Операция

@SP PC.15:0 (Восстанавливаем младшие биты сохранённого PC)

 

SP + 2 SP

 

 

 

@SP PC.19:16 (Восстанавливаем старшие биты сохранённого PC)

 

SP + 2 SP

 

 

 

 

 

 

 

Эмуляция

MOVA

@SP+,PC

 

 

 

 

Описание

20 битный адрес возврата, помещённый в стек при выполнении команды CALLA, загру

 

жается в счётчик команд. Выполнение программы продолжается с команды, следующей

 

за командой вызова подпрограммы. Биты регистра состояния SR.11:0 не изменяются,

 

что позволяет использовать эти биты для передачи информации

 

 

 

Биты

Биты состояния не изменяются

 

состояния

 

 

 

 

 

 

Биты

OSCOFF, CPUOFF и GIE не изменяются

режима

 

 

 

 

 

 

Пример

Вызывается подпрограмма SUBR, которая может располагаться в любом месте адресного

 

пространства.

 

 

 

 

CALLA

#SUBR

; Вызываем подпрограмму по адресу SUBR

 

 

...

 

; Из подпрограммы возвращаемся сюда

 

SUBR

PUSHM.A

#2,R14

; Сохраняем R14 и R13

 

 

 

 

; (20$битные значения)

 

 

...

 

; Тело подпрограммы

 

 

POPM.A

#2,R14

; Восстанавливаем R13 и R14

 

 

RETA

 

; Возвращаемся

 

 

 

 

 

228 Глава 4. 16#битное RISC ЦПУ MSP430X

SUBA

Вычитание 20Cбитного операнда из 20Cбитного регистра

 

 

 

 

Синтаксис

SUBA

Rsrc,Rdst

 

 

SUBA

#imm20,Rdst

 

 

 

Операция

(.not.src) + 1 + Rdst Rdst

 

или

 

 

 

Rdst – src Rdst

 

 

 

Описание

20 битный операнд источник вычитается из 20 битного регистра приёмника путём

 

прибавления к последнему обратного кода операнда плюс единица. Содержимое опе

 

ранда источника не изменяется. Результат сохраняется в регистре приёмнике

 

 

Биты

N: Устанавливается, если результат отрицательный (src > dst), сбрасывается — если по

состояния

ложительный (src dst).

 

Z: Устанавливается, если результат нулевой (src = dst), иначе сбрасывается (src dst).

 

C: Устанавливается, если произошёл перенос из MSB результата (Rdst.19), иначе сбра

 

сывается.

 

 

Устанавливается, если не было заёма, иначе сбрасывается.

 

V: Устанавливается, если результат вычитания отрицательного операнда из положи

 

тельного отрицателен или если результат вычитания положительного операнда из

 

отрицательного положителен; иначе сбрасывается (нет переполнения).

 

 

Биты

OSCOFF, CPUOFF и GIE не изменяются

режима

 

 

 

 

 

Пример 1

20 битное число, находящееся в регистре R5, вычитается из R6. При возникновении пе

 

реноса выполняется переход к метке TONI.

 

SUBA

R5,R6

; R6 – R5 $> R6

 

JC

TONI

; Перенос

 

...

 

; Переноса не было

 

 

Пример 2

Элемент таблицы, адресуемый регистром R5 (20 битный адрес), вычитается из регистра

 

R7. Если результат равен нулю, то выполняется переход к метке TONI. Содержимое ре

 

гистра R5 увеличивается на 2. Биты R7.19:16 = 0.

 

SUBX.W

@R5+,R7

; Вычитаем элемент таблицы из R7, R5 + 2

 

JZ

TONI

; R7 = @R5 перед вычитанием

 

...

 

; R7 <> @R5 перед вычитанием

 

 

 

 

 

 

 

 

 

4.6. Описание набора команд 229

 

 

 

* TSTA

 

Проверка 20Cбитного регистра (на ноль)

 

 

 

 

 

Синтаксис

TSTA

Rdst

 

 

 

 

 

Операция

Rdst + 0FFFFFh + 1

 

 

 

 

 

 

Эмуляция

CMPA

#0,Rdst

 

 

 

 

Описание

Содержимое регистра приёмника сравнивается с нулём и в соответствии с результатом

 

изменяются биты состояния. Сам операнд остаётся неизменным

 

 

Биты

N: Устанавливается, если операнд отрицателен, сбрасывается — если положителен.

состояния

Z: Устанавливается, если операнд равен нулю, иначе сбрасывается.

 

C:

Устанавливается.

 

 

V:

Сбрасывается.

 

 

 

 

Биты

OSCOFF, CPUOFF и GIE не изменяются

режима

 

 

 

 

 

 

 

Пример

Проверяется 20 битное значение в регистре R7. Если оно отрицательное, то выполнение

 

программы продолжается с метки R7NEG, если положительное и не равно нулю — с мет

 

ки R7POS.

 

 

 

 

 

TSTA

R7

; Проверяем R7

 

 

 

JN

R7NEG

; R7 < 0

 

 

 

JZ

R7ZERO

; R7 = 0

 

R7POS

......

 

; R7 > 0

 

R7NEG

......

 

; R7 < 0

 

R7ZERO ......

 

; R7 = 0

 

 

 

 

 

 

230 Глава 5. Модуль синхронизации Basic Clock Module+

ГЛАВА 5

МОДУЛЬ СИНХРОНИЗАЦИИ BASIC CLOCK MODULE+

В этой главе описывается функционирование модуля синхронизации Basic Clock Module+, который отвечает за формирование тактовых сигналов микро контроллеров семейства MSP430x2xx.

5.1.Введение

Модуль синхронизации Basic Clock Module+ позволяет снизить стоимость ко нечной системы и обеспечивает сверхнизкое потребление устройства. Используя один из трёх тактовых сигналов, формируемых модулем, пользователь может до биться оптимального соотношения производительности и энергопотребления. Модуль синхронизации может быть программно сконфигурирован для работы без использования дополнительных внешних элементов, с одним внешним ре зистором, с одним или двумя внешними кварцевыми или керамическими резона торами.

Модуль синхронизации содержит три или четыре источника тактового сигнала:

LFXT1CLK — низкочастотный/высокочастотный генератор, который мо жет работать с «часовым» кварцевым резонатором или внешним сигналом частотой 32 768 Гц или же с обычными кварцевыми/керамическими резона

торами или внешним сигналом синхронизации частотой от 400 кГц до

16 МГц.

XT2CLK — опциональный высокочастотный генератор, который может ра ботать с обычными кварцевыми/керамическими резонаторами или вне шним сигналом синхронизации частотой от 400 кГц до 16 МГц.

DCOCLK — встроенный генератор с цифровым управлением (DCO).

VLOCLK — встроенный низкочастотный генератор с очень низким потреб лением, работающий на частоте 12 кГц.

Модуль синхронизации формирует три тактовых сигнала:

ACLK — вспомогательный тактовый сигнал. Источник выбирается про граммно: LFXT1CLK или VLOCLK. Посредством делителя частота сигнала от выбранного источника уменьшается в 1, 2, 4 или 8 раз. Сигнал ACLK мо жет программно назначаться для отдельных периферийных модулей.

MCLK — основной тактовый сигнал. Источник выбирается программно: LFXT1CLK, VLOCLK, XT2CLK (если имеется в конкретной модели) или

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]