PSN 3500 рублей Playstation Network
PSN 3500 рублей Playstation Network


iTunes Gift Card (Россия) 1000 рублей
iTunes Gift Card (Россия) 1000 рублей


Разблокировка Билайн Про 2
Разблокировка Билайн Про 2


В начало

Лекция. Система команд МК

 

Общие свойства микроконтроллеров  среднего уровня:

- все команды 14 разрядные;

- все команды считываются одновременно;

- все команды выполняются за один машинный цикл (кроме команд передачи управления,   они за два);

- количество команд 34;

 

Классификация команд

1 группа: команды передачи данных (4 команды)

2 группа: команды арифметических операций (9 команд)

3 группа: команды логических операций и сдвига (9 команд)

4 группа: команды побитных операций (2 команды)

5 группа: команды передачи управления (9 команд)

6 группа: команды безадресные (2 команды)

 

Команды передачи данных.

1) MOVLW     L                                            L®(W)

Правило записи констант: их можно записывать в десятеричной, в шестнадцатеричной, в двоичной, в восьмеричной системе счисления и в ASCII коды.

Десятеричная: D'53'  или.53                        Пример: MOVLW .53;    53®(W)

Шестнадцатеричная: H'9F'  или 0x9F        Пример: MOVLW  0x9F;    0x9F®(W)

Двоичная: B'11000001'                                 Пример: MOVLW  B'11000001'

Восьмеричная используется очень редко.

ASCII – код: A'R' или 'R'                              Пример: MOVLW    'R'

 

2) MOVWF  F    (W) ® (F)

F – любой регистр, любая ячейка памяти кроме регистра W.

 

3) MOVE  F,d

Из регистра F передать в приемник.

 

 

 

 


MOVE FSR, 1

если  (FSR) = 0, то Z=1 (самый простой способ проверить на ноль)

MOVE FSR, F эквивалентен MOVE FSR, 1

4) SWAP F,d команда обмена тетрадами в регистре F

Примеры:

SWAP FSR,0

(FSR)=SFH                (W)=0

после операции:

(FSR)=F5H                 (W)=F5H

 

SWAP FSR

(FSR)=SFH                (W)=0

после операции:

(FSR)=(F5H)              (W)=0

 

Команды арифметических операций

1) сложение в 2 вариантах

2) вычитание в 2 вариантах

3) инкремент

4) декремент

5) команды очистки в 3 вариантах

 

1. Сложение

1.1. ADDLW  L                      L+(W) ® (W)

ADDLW.25;    (W)=.10

после операции: (W)=.35

1.2. ADDWF F,d                    (F)+(W) ®

 

 

После команд сложения устанавливается 3 признака:

признак C: если сумма больше чем 255 то C=1, иначе С=0.

признак десятичного переноса DC: если произошел перенос из младшей тетрады в старшую (из 3-го разряда в 4-ыйразряд) то DC=1

признак Z:  если сумма равна нулю то Z=1.

 

2. Вычитание.

2.1. SUBLW  L                      L-(W) ® (W)

                                                                

2.2. SUBWF F,d                    (F)-(W) ®

 

После команд вычитания устанавливается 3 признака:

признак C: если разность положительна или равна 0 то C=1, иначе С=0.

признак десятичного переноса DC: если произошел перенос из младшей тетрады в старшую (из 3-го разряда в 4-ыйразряд) то DC=1

признак Z:  если разность равна нулю то Z=1.

 


3. Инкремент

INCF F,d                                (F) + 1 ®

 

После этой команды устанавливается признак Z (например если F=255)/

 


4. Декремент

DECF F,d                               (F) - 1 ®

 

После этой команды устанавливается признак Z.

 

5. Три команды обнуления.

5.1. CLRF  F                          0 ® (F)

5.2.  CLRW                            0 ® (W)

5.3.  CLRWDT                       0 ® (WDT)

Обнуления регистров сторожевого таймера.

 

 

 

 

 

 

 

 

 

Команды логических операций и сдвига

1) Конъюнкция в 2 вариантах

2) Дизъюнкция в 2 вариантах

3) Исключающее ИЛИ в 2 вариантах

4) Инверсия

5) Команды сдвигов в 2 вариантах

 

1. Конъюнкция

1.1.  ANDLW   L                   L Ù (W) ® (W)

 


1.2.  ANDWF  F,d                 (F) Ù (W) ®

 

2. Дизъюнкция

2.1. IORLW  L                       L Ú (W) ® (W)

 

2.2.  IORWF  F,d                   (F) Ú (W) ®

 

 

3. Исключающее ИЛИ

3.1. XOLW  L                        L " (W) ® (W)

 


3.2.  XOWF  F,d                    (F)  " (W) ®

 

 


4. Инверсия

COMF  F,d                            (F) ®

 

 

5. Команды сдвигов. Сдвиг через перенос.

5.1. RLF  F,d

5.2.  RRF F,d

если d=0 дублируется в (W).

 

Команды побитных операций

1. BSF  F,b                             1 ® F.b 

2. BCF  F,b                            0 ® F.b 

Примеры:

1) BSF STATUS,5                 ; 1 ® STATUS.5  5 разряд в регистре STATUS установлен в 1.

2) BCF STATUS,5                 ; 0 ® STATUS.5  5 разряд в регистре STATUS установлен в 0.

 

Команды передачи управления

1) Безусловный переход 1 команда

2) Условный переход 4 команды

3) Команды вызова подпрограммы 1 команда

4) Команды возврата из подпрограммы 3 команды

 

1. Безусловный переход

GOTO метка

Переход в пределах 1 страницы от 0 до 1247 слов

 

 

2. Условный переход

2.1. BTFSS  F,b

Если  (F.b) = 0 то (PC)+1 ®  (PC)

Если  (F.b) = 1 то (PC)+2 ®  (PC)

2.2. BTFSC  F,b

Если  (F.b) = 0 то (PC)+2 ®  (PC)

Если  (F.b) = 1 то (PC)+1 ®  (PC)

2.1. и 2.2. удобны для организации ветвления.

 

2.3.  DECFZ  F,d

 

 


 (F) –1 ®

 

 

Результат проверятся на 0:

Если  (F) = 0 то (PC)+2 ®  (PC)

Если  (F) ¹ 0 то (PC)+1 ®  (PC)

 

2.4. INCFZ  F,d

 

(F) +1 ®

 

Результат проверятся на 0:

Если  (F) = 0 то (PC)+2 ®  (PC)

Если  (F) ¹ 0 то (PC)+1 ®  (PC)

 

2.3. и 2.4. удобны для организации цикла.

 

Пример:

MOVLW .255            ;255 ®  (W)

MOVWF  count

DECFZ  count, F

GOTO $-1     ; $ - текущая команда

 

3. Команды вызова подпрограммы

CALL имя

(PC10-0) ¬ имя

(SP) + 1 ® (SP)   ;SP- указатель стека

(PC) ® ((SP))       ; (())-адрес

(PC) ¬ имя

Если вызов подпрограммы по прерыванию то в счетчики записывается:

(PC10-0) ¬ 0x04 ;адрес для вектора прерывания

 

4. Команды возврата из подпрограммы

4.1. RETURN

((SP)) ® (PC)

(SP)-1®(SP)

4.2. RETLW  L

((SP)) ® (PC)

(SP)-1 ®(SP)

L ® (W)

 

 

4.3. RETFIE  команда возврата из обработки прерывания

((SP)) ® (PC)

(SP) - 1® (SP)

GIE=1  ;разрешение прерывания

 

Команды безадресные

1. NOP нет операции

Изменяется только счетчик команд, используется для коротких задержек. Выполняется за 1 машинный такт.

2. SLEEP

Микроконтроллер переходит в спящий режим. В нем ток потребления в 1000 раз меньше.

Выводится из этого режима внешними прерываниями если они возможны или по сторожевому таймеру.