Руководство пользователя 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 Введение в основой модуль тактирования
Основной модуль тактирования имеет низкую стоимость и ультранизкое энергопотребление. Используя три внутренних тактовых сигнала, пользователь может выбрать наилучший баланс соотношения производительности и малой потребляемой мощности. Основной модуль тактирования может быть программно сконфигурирован на работу без использования внешних компонент, с одним внешним резистором, с одним или двумя внешними кристаллами или резонаторами.
















