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

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 16.06.2025

Просмотров: 2839

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Раздел III.

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

Все прерывания запрещаются. Константа 08h инвертируется и логически

Описание

перемножается с регистром статуса (SR). Результат помещается в регистр

статуса SR.

Биты статуса

Биты статуса не изменяются

Биты режима

GIE сбрасывается. Биты OSCOFF и CPUOFF не изменяются.

Бит общего разрешения прерываний в регистре статуса очищается, что поз-

воляет без повреждения переслать содержимое 32-разрядного счетчика. Это

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

ки возникновением какого-либо прерывания.

Пример

DINT

;с помощью бита GIE запрещаются все

;прерывания

NOP

MOV COUNTHI, R5 ;копирование счетчика

MOV COUNTLO, R6

;с помощью бита GIE разрешаются все

EINT

;прерывания

Примечание: запрет прерываний

Если какую-либо последовательность кода нужно защитить от прерывания, после команды DINT должна быть выполнена, по крайней мере, одна команда до начала выполнения этой последовательности, или же следующей командой после DINT должна быть инструкция NOP.

*EINT

Разрешение (общее) прерываний

Синтаксис

EINT

Операция

1 → GIE или (0008h .OR. SR → SR / .src .OR. dst → dst)

Эмуляция

BIS #8,SR

Описание

Все прерывания разрешаются. Константа #08h и регистр статуса SR логичес-

ки складываются (OR). Результат помещается в регистр статуса SR.

Биты статуса

Биты статуса не изменяются

Биты режима

GIE устанавливается. Биты OSCOFF и CPUOFF не изменяются.

Пример

Бит общего разрешения прерываний (GIE) в регистре статуса устанавливает-

ся.

Подпрограмма обработки прерывания портов с P1.2 по P1.7 P1IN – это адрес регистра, в котором читаются все биты порта.

P1IFG – это адрес регистра, в котором фиксируются все события, вызывающие прерывания

PUSH.B &P1IN

;сброс только принятых флагов

BIC.B

@SP, &P1IFG

EINT

;Предварительно установленные флаги

;прерывания порта 0 сохранены

;на стеке, поэтому допустимы другие

BIT

#Mask, @SP

;прерывания

;переход, если флаги идентичны

JEQ

MaskOK

;представленной маске

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

69


MSP430x1xxFamily

MaskOK BIC #Mask,@SP

INCD SP ;Вспомогательное действие, обратное ;команде PUSH, использованной

;в начале процедуры обработки ;прерывания. Корректирует указатель ;стека для правильного выхода из ;процедуры обработки прерывания

RETI

Примечание: разрешение прерываний

Команда, следующая за командой разрешения прерываний (EINT), выполняется всегда, даже когда ранее поступивший запрос на обслуживание прерывания ожидает, когда прерывания будут разрешены.

*INC[.W]

Инкремент получателя

*INC.B

Инкремент получателя

Синтаксис

INC dst или INC.W dst

INC.B dst

Операция

dst + 1 → dst

Эмуляция

ADD #1, dst

Описание

Операнд получателя инкрементируется на единицу. Исходное содержимое

теряется.

N:

Устанавливается, если результат отрицательный; сбрасывается,

если положительный

Устанавливается, если dst содержал 0FFFFh, в противном случае

Z:

сбрасывается;

Устанавливается, если dst содержал 0FFh, в противном случае

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

Биты статуса

Устанавливается, если dst содержал 0FFFFh, в противном случае

сбрасывается;

C:

Устанавливается, если dst содержал 0FFh, в противном случае

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

Устанавливается, если dst содержал 07FFFh, в противном случае

V:

сбрасывается;

Устанавливается, если dst содержал 07Fh, в противном случае

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

Биты режима

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

Байт статуса процесса STATUS инкрементируется. Если результат равен 11,

происходит переход к метке OVFL.

Пример

INC.B

STATUS

CMP.B

#11,STATUS

JEQ

OVFL

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

70


Раздел III.

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

*INCD[.W]

Двойной инкремент получателя

*INCD.B

Двойной инкремент получателя

Синтаксис

INCD dst или INCD.W dst

INCD.B dst

Операция

dst + 2 → dst

Эмуляция

ADD

#2, dst

Эмуляция

ADD.B #2, dst

Описание

Операнд получателя инкрементируется на два. Исходное содержимое теря-

ется.

N:

Устанавливается, если результат отрицательный; сбрасывается,

если положительный

Устанавливается, если dst содержал 0FFFEh, в противном случае

Z:

сбрасывается;

Устанавливается, если dst содержал 0FEh, в противном случае

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

Биты статуса

Устанавливается, если dst содержал 0FFFEh или 0FFFFh, в против-

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

C:

Устанавливается, если dst содержал 0FEh или 0FFh, в противном

случае сбрасывается

Устанавливается, если dst содержал 07FFEh или 07FFFh, в против-

V:

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

Устанавливается, если dst содержал 07Eh или 07Fh, в противном

случае сбрасывается

Биты режима

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

Удаление элемента с вершины стека (TOS) без использования регистра

....

R5 ;содержимое регистра R5, является

PUSH

;результатом вычисления, сохраненного

INCD

;в системном стеке

Пример

SP ;удаление элемента TOS путем двойного

;инкрементирования стека. Команду INCD.B

;для этих целей использовать нельзя,

;поскольку SP – это регистр размером в

RET

;слово.

Байт на вершине стека инкрементируется на два.

Пример

INCD.B 0(SP) ;байт на вершине стека (TOS)

;инкрементируется на два

*INV[.W]

Инвертирование получателя

*INV.B

Инвертирование получателя

Синтаксис

INV

dst

INV.B dst

Операция

.NOT.dst → dst

Эмуляция

XOR

#0FFFFh, dst

Эмуляция

XOR.B #0FFh, dst

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

71


MSP430x1xxFamily

Описание Операнд получателя инвертируется. Исходное содержимое теряется.

N:

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

Устанавливается, если dst содержал 0FFFFh, в противном случае

Z:

сбрасывается;

Устанавливается, если dst содержал 0FFh, в противном случае сбрасывается

Биты статуса

Устанавливается, если результат не ноль, в противном случае сбра-

C:

сывается (= .NOT. Zero)

Устанавливается, если результат не ноль, в противном случае сбрасывается (= .NOT. Zero)

V:

Устанавливается, если исходное содержимое операнда было отрицательное, в противном случае сбрасывается

Биты режима Биты OSCOFF, CPUOFF и GIE не изменяются

Над содержимым регистра R5 выполняется операция отрицания (дополнение до двух).

Пример

MOV #00AEh,R5

;

R5=000AEh

INV R5

;инвертирование R5,

R5=0FF51h

INC R5

;теперь R5 инвертирован, R5=0FF52h

Над содержимым байта памяти LEO выполняется операция отрицания.

Пример

MOV #0AEh,LEO ;

MEM(LEO)=0AEh

INV.B LEO

;инвертирование LEO,

MEM(LEO)=051h

INC.B LEO

;MEM(LEO) инвертирован, MEM(LEO)=052h

JC

Переход, если перенос установлен

JHS

Переход, если наивысший* или равный

Синтаксис

JC label

JHS label

Операция

Если C=1: PC+2 × смещение → PC

Если C=0: выполняется следующая команда

Проверяется бит переноса (С) регистра статуса. Если он установлен, 10-раз- рядная величина смещения со знаком, содержащаяся в младших битах (LSB)

Описание

команды прибавляется к счетчику команд. Если бит переноса С сброшен, выполняется команда, следующая за инструкцией jump. Команда JC (переход, если перенос / наивысший или равный) используется для сравнения чисел без знака (от 0 до 65536).

Биты статуса Биты статуса не изменяются

Использование сигнала P1IN.1 для задания и управления ходом программы.

BIT #01h,&P1IN ;состояние сигнала → в бит переноса

JC PROGA

;Если бит переноса равен

1,

Пример

;выполняется программная

процедура А

;Если бит переноса равен 0, ;выполнение программы продолжается ;здесь

72

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