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

Семейство микроконтроллеров MSP430X1XX, руководство пользователя (2004)

.pdf
Скачиваний:
352
Добавлен:
12.08.2013
Размер:
3.31 Mб
Скачать

Раздел III.

 

 

 

 

 

16-разрядное RISC CPU

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 3-4. Использование стека

Рис. 3-5. Последовательность PUSH SP – POP SP

Указатель стека изменяется после выполнения команды PUSH SP.

Указатель стека не изменяется после команды POP SP. Команда POP SP помещает SP1 в указатель стека SP (SP2=SP1).

3.2.3. Регистр статуса (SR)

Регистр статуса (SR/R2), используемый как регистр источника или получателя, может адресоваться в регистровом режиме только с помощью командслов. Прочие комбинации режимов адресации используются для поддержки генератора констант. На рис. 3.6 показаны биты регистра статуса SR.

Рис. 3-6. Биты регистра статуса

Библиотека Компэла

 

41

 

MSP430x1xxFamily

В таблице 3.1 приведено описание битов регистра статуса.

 

 

Таблица 3.1. Описание битов регистра статуса

Бит

 

Описание

 

 

 

 

Бит переполнения.

 

Этот бит устанавливается, если результат арифметической операции имеет пере-

 

полнение в области знаковых переменных.

 

 

 

 

ADD(.B),

Устанавливается, когда:

 

Положительный + Положительный = Отрицательный

V

ADDC(.B)

Отрицательный + Отрицательный = Положительный

 

 

в противном случае сбрасывается

 

 

 

 

SUB(.B),

Устанавливается, когда:

 

Положительный – Отрицательный = Отрицательный

 

SUBC(.B),

 

Отрицательный – Положительный = Позитивный

 

CMP(.B)

 

в противном случае сбрасывается

 

 

 

 

 

SCG1

Системный тактовый генератор 1.

Когда этот бит установлен, SMCLK выключен.

 

 

 

 

Системный тактовый генератор 0.

SCG0

Когда этот бит установлен, генератор DCO выключен, если DCOCLK не используется

 

для MCLK или SMCLK.

 

 

 

Выключение осциллятора.

OSCOFF

Когда этот бит установлен, осциллятор LFXT1, использующий кристалл, выключен,

 

если LFXT1CLK не используется для MCLK или SMCLK.

 

 

CPUOFF

Выключение ЦПУ.

Когда этот бит установлен, ЦПУ выключено.

 

 

 

 

Общий бит разрешения прерываний.

GIE

Когда этот бит установлен, маскируемые прерывания разрешены. Когда сброшен,

 

все маскируемые прерывания запрещены.

 

 

 

Бит отрицательного результата.

 

Этот бит устанавливается, когда результат операции с байтом или словом отрица-

 

тельный и сбрасывается, когда результат не отрицательный.

N

Операции со словами:

 

N устанавливается по значению бита 15 результата

 

Операции с байтами:

 

N устанавливается по значению бита 7 результата

 

 

 

 

Бит нуля.

 

Z

Этот бит устанавливается, когда результат операции с байтом или словом равен «0»

 

и очищается, если результат не равен «0».

 

 

 

 

Бит переноса.

 

CЭтот бит устанавливается, когда результат операции с байтом или словом имеет перенос и очищается, когда переноса нет.

42

 

Библиотека Компэла

 

Раздел III.

16-разрядное RISC CPU

3.2.4. Регистры генератора констант CG1 и CG2

Шесть обычно используемых констант генерируются с помощью регистров R2 и R3 генератора констант, что исключает необходимость использования дополнительного 16-разрядного слова в программном коде. Константы выбираются путем изменения режима адресации (As) регистра-источника, в соответствии с таблицей 3.2.

Таблица 3.2. Значения генераторов констант CG1, CG2

Регистр

As

Константа

Комментарий

R2

00

- - - - -

Регистровый режим

R2

01

(0)

Режим абсолютной (безусловной) адресации

R2

10

00004h

+4, побитовая обработка

R2

11

00008h

+8, побитовая обработка

R3

00

00000h

0, обработка по словам

 

 

 

 

R3

01

00001h

+1

 

 

 

 

R3

10

00002h

+2, побитовая обработка

 

 

 

 

R3

11

0FFFFh

-1, обработка по словам

 

 

 

 

Генератор констант обладает следующими преимуществами:

Не требуются особые команды

Код не содержит дополнительного слова для шести констант

Не требуется код (команда) доступа к памяти для получения константы Ассемблер автоматически использует генератор констант, если одна из

шести констант используется как непосредственный исходный операнд. При использовании регистров R2 и R3 в режиме генерации констант, адресация к ним не может быть явной – они действуют только как регистры-источники.

Генератор команд – расширенная система команд

Набор RISС-команд семейства MSP430 состоит только из 27 команд. Однако, генератор констант позволяет поддерживать MSP430-ассемблеру 24 дополнительные эмулированные команды. К примеру, команда с одним операндом:

CLR dst

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

MOV R3,dst

где #0 замещается ассемблером, а R3 используется в режиме As=00 Команда INC dst замещается командой ADD 0(R3),dst

Библиотека Компэла

 

43

 

MSP430x1xxFamily

3.2.5. Регистры общего назначения R4-R15

Двенадцать регистров с R4 по R15 являются регистрами общего назначения. Все эти регистры могут быть использованы в качестве регистров данных, указателей адресов или индексных значений и доступны с помощью команд работы с байтами или словами, как показано на рис. 3.7.

Рис. 3-7. Операции регистр-байт/байт-регистр

 

Пример операции регистр-байт

 

Пример операции байт-регистр

 

R5=0A28Fh

R5=01202Fh

 

R6=0203h

R6=0223h

 

Mem(0203h)=012h

Mem(0223h)=05Fh

 

ADD.B

ADD.B

 

R5,0(R6)

@R6,R5

 

08Fh

05Fh

 

+012h

+002h

 

0A1h

00061h

 

Mem(0203h)=0A1h

R5=00061h

 

C=0, Z=0, N=1

C=0, Z=0, N=0

 

(младший байт

 

(адресуемый байт)+(младший байт

 

регистра)+(адресуемый байт)

 

 

регистра)

 

 

->(адресуемый байт)

 

->(младший байт регистра, ноль в

 

 

 

 

старшем байте)

3.3. Режимы адресации

Семь режимов адресации для операнда источника и четыре режима адресации для операнда назначения могут адресовать полное адресное пространство без исключений. В таблице 3.3 приводится конфигурация битов для режимов As (источник) и Ad (назначение).

Таблица 3.3 Режимы адресации операндов источника/получателя

As/Ad

 

Режим адресации

Синтаксис

Описание

00 / 0

 

Регистровый режим

Rn

Содержимое регистра является операндом

01 / 1

 

Индексный режим

X(Rn)

Значение (Rn+X) указывает на операнд. X

 

сохранен в следующем слове

 

 

 

 

 

 

 

 

 

Библиотека Компэла

44

 

 

 

 

 

 

 

 

Раздел III. 16-разрядное RISC CPU

 

 

 

Таблица 3.3 (Окончание)

 

 

 

 

As/Ad

Режим адресации

Синтаксис

Описание

 

 

 

Значение (PC+X) указывает на операнд. X

01 / 1

Символьный режим

ADDR

сохранен в следующем слове. Использован

 

 

 

индексный режим X(PC)

 

Абсолютный (безу-

 

Слово, следующее за командой, содержит

01 / 1

&ADDR

абсолютный адрес. X сохранен в следующем

словный) режим

 

 

слове. Использован индексный режим X(SR)

 

 

 

10 / -

Косвенный регистро-

@Rn

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

вый режим

на операнд

 

 

 

 

 

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

11 / -

Косвенный автоин-

@Rn+

на операнд. Содержимое Rn впоследствии

кремент

увеличивается на 1 для байтовых команд и на

 

 

 

 

 

2 для команд-слов.

 

Прямой (непосред-

 

Слово, следующее за командой, содержит

11 / -

#N

непосредственную константу N. Использован

ственный) режим

 

 

косвенный автоинкрементный режим @PC+

 

 

 

Семь упомянутых способов адресации подробно рассматриваются в следующих разделах. В большинстве примеров показаны схожие режимы адресации для источника и получателя, но в команде возможны любые правильные комбинации способов адресации источника и получателя.

Примечание: использование меток EDE и TONI

Везде в документации по семейству MSP430 используются универсальные метки EDE и TONI. Они являются только метками, не имеющими никакого специального назначения.

3.3.1. Регистровый режим

Регистровый режим описан в таблице 3.4.

 

 

 

 

 

Таблица 3.4. Описание регистрового режима

 

Код ассемблера

 

Содержимое ПЗУ

 

 

 

MOV R10,R11

 

 

MOV R10, R11

 

Длина: Одно или два слова

 

 

 

 

 

 

 

Операция: Пересылка содержимого R10 в R11. Содержимое R10 не изменяется.

 

Комментарий: Действительно для источника и получателя.

 

 

 

 

 

Пример: MOV R10,R11

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

До

 

 

 

После

R10

 

0A023h

 

 

R10

 

0A023h

 

 

 

 

 

 

 

 

R11

 

0FA15h

 

 

R11

 

0A023h

 

 

 

 

 

 

 

 

PC

 

PCold

 

 

PC

 

PCold+2

 

Библиотека Компэла

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

45

 

 

 

 

 

 

 

 

MSP430x1xxFamily

Примечание: данные в регистрах

Данные в регистре могут быть доступны с помощью байтовых команд или команд-слов. Если используются байтовые команды, старший байт всегда будет содержать в результате «0». Биты статуса обрабатываются согласно результату байтовой команды.

3.3.2. Индексный режим

Индексный режим описан в таблице 3.5.

 

Таблица 3.5. Описание индексного режима

Код ассемблера

 

Содержимое ПЗУ

MOV 2(R5), 6(R6)

 

MOV X(R5), Y(R6) X=2 Y=6

Длина: Два или три слова

Операция: Пересылка содержимого с исходного адреса (равного сумме содержимого R5 + 2) по адресу назначения (содержимое R6 + 6). Регистры источника и получателя (R5 и R6) не изменяются. В индексном режиме программный счетчик автоматически инкрементируется таким образом, что выполнение программы продолжается со следующей команды.

Комментарий: Действительно для источника и получателя

Пример: MOV 2(R5),6(R6):

46

 

Библиотека Компэла

 

Раздел III.

16-разрядное RISC CPU

3.3.3. Символьный режим

Символьный режим описан в таблице 3.6.

Таблица 3.6. Описание символьного режима.

Код ассемблера

Содержимое ПЗУ

MOV EDE, TONI

MOV X(PC), Y(PC)

X=EDE-PCY=TONI-PC

Длина: Два или три слова

Операция: Пересылка содержимого с исходного адреса EDE (равного сумме содержимого PC + X) по адресу назначения TONI (содержимое PC + Y). Слова после команды содержат разницу

между PC и адресами источника или получателя соответственно. Ассемблер автоматически вычисляет и вставляет смещения X и Y. В символьном режиме программный счетчик автоматически инкрементируется так, что выполнение программы продолжается со следующей команды.

Комментарий: действительно для источника и получателя

Пример: MOV EDE,TONI ;Адрес источника EDE=0F016h ;Адрес получателя TONI=01114h

Библиотека Компэла

 

47

 

MSP430x1xxFamily

3.3.4. Абсолютный режим

Абсолютный режим описан в таблице 3.7.

 

Таблица 3.7. Описание абсолютного режима

Код ассемблера

 

Содержимое ПЗУ

 

 

 

MOV &EDE, &TONI

 

MOV X(0), Y(0) X=EDEY=TONI

Длина: Два или три слова

Операция: Пересылка содержимого с исходного адреса EDE по адресу назначения TONI. Слова после команды содержат абсолютные адреса источника и получателя. В абсолютном режиме программный счетчик автоматически инкрементируется так, что выполнение программы продолжается со следующей команды.

Комментарий: Действительно для источника и получателя

Пример: MOV &EDE,&TONI ;Адрес источника EDE=0F016h ;Адрес получателя TONI=01114h

Этот режим адресации предназначен главным образом для аппаратных периферийных модулей, расположенных по абсолютным, фиксированным адресам. Они адресуются в абсолютном режиме, что гарантирует переносимость программы (например, при написании позиционно-независимого, переносимого кода).

48

 

Библиотека Компэла

 

Раздел III.

16-разрядное RISC CPU

3.3.5. Косвенный регистровый режим

Косвенный регистровый режим описан в таблице 3.8.

 

Таблица 3.8. Описание косвенного режима

Код ассемблера

 

Содержимое ПЗУ

 

 

 

MOV @R10, 0(R11)

 

MOV @R10, 0(R11)

Длина: Одно или два слова

Операция: Пересылка содержимого с исходного адреса (содержится в R10) по адресу назначения (содержится в R11). Регистры не изменяются.

Комментарий: Действительно только для операнда источника. В качестве операнда получателя подставляется 0(Rd)

Пример: MOV.B @R10, 0(R11)

Библиотека Компэла

 

49

 

MSP430x1xxFamily

3.3.6. Косвенный автоинкрементный режим

Косвенный автоинкрементный режим описан в таблице 3.9.

Таблица 3.9. Описание косвенного автоинкрементного режима

Код ассемблера

Содержимое ПЗУ

 

 

MOV @R10+, 0(R11)

MOV @R10+, 0(R11)

Длина: Одно или два слова

Операция: Пересылка содержимого с исходного адреса (содержится в R10) по адресу назначения (содержится в R11). Регистр R10 инкрементируется после выборки на 1 для байтовых операций или на 2 для команд-слов, таким образом указывается следующий адрес без дополнительных действий. Это полезно для обработки таблиц.

Комментарий: Действительно только для операнда источника. В качестве операнда получателя подставляется 0(Rd) плюс вторая команда INCD Rd.

Пример: MOV.B @R10+, 0(R11)

Автоинкремент содержимого регистра происходит после выборки операнда. Этот процесс показан на рис. 3.8.

50

 

Библиотека Компэла

 

Соседние файлы в предмете Микроконтроллеры ЭВМ