МК
Система
команд МК (Лекция)
ПЛАН ЛЕКЦИИ 1. Команды передачи данных (4 команды) 2. Команды арифметических операций (9 команд) 3. Команды логических операций и сдвига (9 команд) 4. Команды побитных операций (2 команды) 5. Команды передачи управления (9 команд) 6. Команды безадресные (2 команды) Общие свойства
микроконтроллеров среднего уровня: - все команды 14 разрядные; - все команды считываются одновременно; - все команды выполняются за один машинный цикл (кроме
команд передачи управления, они за два); - количество команд 34; 1. Команды
передачи данных 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 2. Команды
арифметических операций
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 После команд сложения устанавливается 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 После команд вычитания устанавливается 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) Обнуления регистров сторожевого таймера. 3. Команды
логических операций и сдвига 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.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). 4. Команды побитных операций 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. 5. Команды передачи управления
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)
(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 ;разрешение
прерывания 6. Команды
безадресные 1. NOP
нет операции Изменяется только счетчик команд, используется для коротких
задержек. Выполняется за 1 машинный такт. 2. SLEEP
Микроконтроллер переходит в спящий режим. В нем ток потребления
в 1000 раз меньше. Выводится из этого режима внешними прерываниями
если они возможны или по сторожевому таймеру. |
|||||||||||||||||