Руководство пользователя MSP430 (1041606), страница 8
Текст из файла (страница 8)
В таблице 3.16 приводится длина и необходимое количество циклов ЦПУ для всех адресных режимов команд формата-I.
Таблица 3.16. Количество циклов и длина команд формата-I
Режим адресации | Кол-во | Длина | Пример | |
Src | Dst | |||
Rn | Rm | 1 | 1 | MOV R5,R8 |
PC | 2 | 1 | BR R9 | |
x(Rm) | 4 | 2 | ADD R5,3(R6) | |
EDE | 4 | 2 | XOR R8,EDE | |
&EDE | 4 | 2 | MOV R5,&EDE | |
@Rn | Rm | 2 | 1 | AND @R4,R5 |
PC | 3 | 1 | BR @R8 | |
x(Rm) | 5 | 2 | XOR @R5,8(R6) | |
EDE | 5 | 2 | MOV @R5,EDE | |
&EDE | 5 | 2 | XOR @R5,&EDE | |
@Rn+ | Rm | 2 | 1 | ADD @R5+,R6 |
PC | 3 | 1 | BR @R9+ | |
x(Rm) | 5 | 2 | XOR @R5,8(R6) | |
EDE | 5 | 2 | MOV @R9+,EDE | |
&EDE | 5 | 2 | XOR @R9+,&EDE | |
#N | Rm | 2 | 2 | MOV #20,R9 |
PC | 3 | 2 | BR #2AEh | |
x(Rm) | 5 | 3 | MOV #0300h,0(SP) | |
EDE | 5 | 3 | ADD #33,EDE | |
&EDE | 5 | 3 | ADD #33,&EDE | |
x(Rn) | Rm | 3 | 2 | MOV 2(R5),R7 |
PC | 3 | 2 | BR 2(R6) | |
TONI | 6 | 3 | MOV 4(R7),TONI | |
x(Rm) | 6 | 3 | ADD 3(R4),6(R9) | |
&TONI | 6 | 3 | MOV 3(R4),&TONI | |
EDE | Rm | 3 | 2 | AND EDE,R6 |
PC | 3 | 2 | BR EDE | |
TONI | 6 | 3 | CMP EDE,TONI | |
x(Rm) | 6 | 3 | MOV EDE,0(SP) | |
&TONI | 6 | 3 | MOV EDE,&TONI | |
&EDE | Rm | 3 | 2 | MOV &EDE,R8 |
PC | 3 | 2 | BRA &EDE | |
TONI | 6 | 3 | MOV &EDE,TONI | |
x(Rm) | 6 | 3 | MOV &EDE,0(SP) | |
&TONI | 6 | 3 | MOV &EDE,&TONI |
3.4.5 Описание набора команд
Карта команд показана на рис.3.20, а полный набор команд приведен в таблице 3.17.
Рис.3.20. Карта команд ядра
| 000 | 040 | 080 | 0С0 | 100 | 140 | 180 | 1С0 | 200 | 240 | 280 | 2С0 | 300 | 340 | 380 | 3С0 |
0xxx |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4xxx |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8xxx |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1xxx | RRC | RRC.B | SWPB |
| RRA | RRA.B | SXT |
| PUSH | PUSH.B | CALL |
| RETI |
|
|
|
14xx |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
18xx |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1Cxx |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20xx | JNE/JNZ | |||||||||||||||
24xx | JEQ/JZ | |||||||||||||||
28xx | JNC | |||||||||||||||
2Cxx | JC | |||||||||||||||
30xx | JN | |||||||||||||||
34xx | JGE | |||||||||||||||
38xx | JL | |||||||||||||||
3Cxx | JMP | |||||||||||||||
4xxx | MOV,MOV.B | |||||||||||||||
5xxx | ADD,ADD.B | |||||||||||||||
6xxx | ADDC,ADDC.B | |||||||||||||||
7xxx | SUBC,SUBC.B | |||||||||||||||
8xxx | SUB,SUB.B | |||||||||||||||
9xxx | CMP,CMP.B | |||||||||||||||
Axxx | DADD,DADD.B | |||||||||||||||
Bxxx | BIT,BIT.B | |||||||||||||||
Cxxx | BIC,BIC.B | |||||||||||||||
Dxxx | BIS,BIS.B | |||||||||||||||
Exxx | XOR,XOR.B | |||||||||||||||
Fxxx | AND,AND.B |
Набор команд MSP430
Мнемоника |
| Описание |
| V | N | Z | C |
ADC(.B)* | dst | Сложение бита С с получателем | dst + C -> dst | * | * | * | * |
ADD(.B) | src,dst | Сложение источника с получателем | src + dst -> dst | * | * | * | * |
ADDC(.B) | src,dst | Сложение источника и бита С с получателем | src + dst + C -> dst | * | * | * | * |
AND(.B) | src,dst | Операция «И» источника и получателя | src .and. dst -> dst | 0 | * | * | * |
BIC(.B) | src,dst | Очистка битов в получателе | .not.src .and. dst -> dst | - | - | - | - |
BIS(.B) | src,dst | Установка битов в получателе | src .or. dst -> dst | - | - | - | - |
BIT(.B) | src,dst | Проверка битов в получателе | src .and. dst | 0 | * | * | * |
BR* | dst | Переход по назначению | dst -> PC | - | - | - | - |
CALL | dst | Вызов получателя | PC + 2 -> stack, dst -> PC | - | - | - | - |
CLR(.B)* | dst | Очистка получателя | 0 -> dst | - | - | - | - |
CLRC* |
| Очистка бита С | 0 -> C | - | - | - | 0 |
CLRN* |
| Очистка бита N | 0 -> N | - | 0 | - | - |
CLRZ* |
| Очистка бита Z | 0 -> Z | - | - | 0 | - |
CMP(.B) | src,dst | Сравнение источника и получателя | dst – src | * | * | * | * |
DADC(.B)* | dst | Десятичное сложение бита С с получателем | dst + c -> dst (десятичное) | * | * | * | * |
DADD(.B) | src,dst | Десятичное сложение источника и бита С с получателем | src + dst + C -> dst (десятичное) | * | * | * | * |
DEC(.B)* | dst | Декремент получателя | dst - 1 -> dst | * | * | * | * |
DECD(.B)* | dst | Двойной декремент получателя | dst - 2 -> dst | * | * | * | * |
DINT* |
| Запрещение прерываний | 0 -> GIE | - | - | - | - |
EINT* |
| Разрешение прерываний | 1 -> GIE | - | - | - | - |
INC(.B)* | dst | Инкремент получателя | dst + 1 -> dst | * | * | * | * |
INCD(.B)* | dst | Двойной инкремент получателя | dst + 2 -> dst | * | * | * | * |
INV(.B)* | dst | Инвертирование получателя | .not.dst -> dst | * | * | * | * |
JC/JHS | label | Переход, если С установлен / переход если наивысший или такой же |
| - | - | - | - |
JEQ/JZ | label | Переход, если равно / переход если Z установлен |
| - | - | - | - |
JGE | label | Переход, если больше или равно |
| - | - | - | - |
JL | label | Переход, если меньше |
| - | - | - | - |
JMP | label | Переход | PC + 2 * смещение -> PC | - | - | - | - |
JN | label | Переход, если N установлен |
| - | - | - | - |
JNC/JLO | label | Переход, если С не установлен / переод если низший |
| - | - | - | - |
JNE/JNZ | label | Переход, если не равно, переход если Z не установлен |
| - | - | - | - |
MOV(.B) | src,dst | Пересылка источника в получатель | src -> dst | - | - | - | - |
NOP* |
| Нет операции |
| - | - | - | - |
POP(.B)* | dst | Снятие элемента со стека в получатель | @SP -> dst, SP + 2 -> SP | - | - | - | - |
PUSH(.B) | src | Помещение источника в стек | SP - 2 -> SP, src -> @SP | - | - | - | - |
RET* |
| Возврат из подпрограммы | @SP -> PC, SP + 2 -> SP | - | - | - | - |
RETI |
| Возврат из прерывания |
| * | * | * | * |
RLA(.B)* | dst | Арифметическая ротация влево |
| * | * | * | * |
RLC(.B)* | dst | Ротация влево через С |
| * | * | * | * |
RRA(.B) | dst | Арифметическая ротация вправо |
| 0 | * | * | * |
RRC(.B) | dst | Ротация вправо через С |
| * | * | * | * |
SBC(.B)* | dst | Вычитание not(C) из получателя | dst + 0FFFFh + C -> dst | * | * | * | * |
SETC* |
| Установка С | 1 -> C | - | - | - | 1 |
SETN* |
| Установка N | 1 -> N | - | 1 | - | - |
SETZ* |
| Установка Z | 1 -> Z | - | - | 1 | - |
SUB(.B) | src,dst | Вычитание источника из получателя | dst + .not.src + 1 -> dst | * | * | * | * |
SUBC(.B) | src,dst | Вычитание источника и not(C) из получателя | dst + .not.src + C -> dst | * | * | * | * |
SWPB | dst | Обмен байтов |
| - | - | - | - |
SXT | dst | Распространение знака |
| 0 | * | * | * |
TST(.B)* | dst | Проверка получателя | dst + 0FFFFh + 1 | 0 | * | * | 1 |
XOR(.B) | src,dst | Исключающее «ИЛИ» источника и получателя | src .xor. dst -> dst | * | * | * | * |
*Эмулированные команды
Раздел 4 Основной модуль тактирования
Основной модуль тактирования обеспечивает тактирование устройств семейства MSP430x1xx. В этом разделе описывается работа с основным модулем тактирования. Этот модуль реализован во всех устройствах семейства MSP430x1xx.
4.1 Введение в основой модуль тактирования
Основной модуль тактирования имеет низкую стоимость и ультранизкое энергопотребление. Используя три внутренних тактовых сигнала, пользователь может выбрать наилучший баланс соотношения производительности и малой потребляемой мощности. Основной модуль тактирования может быть программно сконфигурирован на работу без использования внешних компонент, с одним внешним резистором, с одним или двумя внешними кристаллами или резонаторами.