|
В начало
Лекция. Система команд МКОбщие свойства микроконтроллеров среднего уровня: - все команды 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 раз меньше. Выводится из этого режима внешними прерываниями если они возможны или по сторожевому таймеру. |
|||||||||||||||||||