Файл: Семейство микроконтроллеров 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 |
Библиотека Компэла |
|