русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Система команд микроконтроллера PIC16F877


Дата добавления: 2015-08-14; просмотров: 2511; Нарушение авторских прав


Каждая команда микроконтроллера состоит из одного 14-разрядного слова разделенного на код операции, определяющий действие команды, один или несколько операндов, указывающих на данные, над которыми будет проводиться действие.

Полный список команд смотрите в табл. 1, табл. 2, табл. 3. Команды разделены на следующие группы:

  • байтовые команды (табл. 1);
  • битовые команды (табл. 2);
  • команды управления и операций с константами (табл. 3).

На рис. 1 показан формат команд трех основных групп.

Для байт ориентированных команд:

  • является указателем регистра и определяет какой регистр должен использоваться в команде;
  • указателем адресата результата и определяет, где будет сохранен результат.

Если , результат сохраняется в регистре W.

Если , результат сохраняется в регистре, который используется в команде.

В бит ориентированных командах:

  • определяет номер бита участвующего в операции;
  • — указатель регистра, который содержит этот бит.

В командах управления или операциях с константами:

  • представляет восемь или одиннадцать бит константы.

Рис. 1.

Все команды выполняются за один машинный цикл, кроме команд условия, в которых замещается значение программного счетчика. В случае выполнения команды за два машинных цикла, во втором цикле выполняется инструкция NOP. Один машинный цикл состоит из четырех тактов генератора. Для тактового генератора с частотой 4 МГц команда выполняется за 2 мкс.

Таблица 1

Мнемоника команды Операция Циклы Код команды Флажки Примечание
ADDWF f, d Сложение (W + f d) 00 0111 dfff ffff C.DC.Z 1,2
ANDWF f, d Логическое "И" (W and f d) 00 0101 dfff ffff Z 1,2
CLRF f Обнулить f 00 0001 1fff ffff Z
CLRW - Обнулить W 00 0001 0xxx xxxx Z  
COMF f, d Дополнение f (Логическое "НЕ") 00 1001 dfff ffff Z 1,2
DECF f, d Декремент f 00 0011 dfff ffff Z 1,2
DECFSZ f, d Декремент f, пропуск если "0" 1(2) 00 1011 dfff ffff   1,2,3
INCF f, d Инкремент f 00 1010 dfff ffff Z 1,2
INCFSZ f, d Инкремент f, пропуск если "0" 1(2) 00 1111 dfff ffff   1,2,3
IORWF f, d Логическое "ИЛИ" (W or f d) 00 0100 dfff ffff Z 1,2
MOVF f, d Пересылка (f W) 00 1000 dfff ffff Z 1,2
MOVWF f Пересылка (W f) 00 0000 1fff ffff    
NOP Пустая операция 00 0000 0xx0 0000    
RLF f, d Сдвиг влево через перенос 00 1101 dfff ffff С 1,2
RRF f, d Сдвиг вправо через перенос 00 1100 dfff ffff C 1, 2
SUBWF f, d Вычитание (f W d) 00 0010 dfff ffff C,DC,Z 1, 2
SWAPF f, d Обменять полубайты f 00 1110 dfff ffff   1,2
XOFWF f, d Исключающее "ИЛИ" (W or f d) 00 0110 dfff ffff Z 1,2

 



Таблица 2

Мнемоника команды Операция Циклы Код команды Флажки Примечание
BCF f. b Обнулить бит b в f 01 00bb bfff ffff   1,2
BSF f, b Установить бит b в f 01 0lbb bfff ffff   1,2
BTFSC f, b Тест бита b в f, пропуск если "0" 1(2) 01 l0bb bfff ffff  
BTFSS f, b Тест бита b в f пропуск если "1" 1(2) 01 11bb bfff ffff  

 

Таблица 3

Мнемоника команды Операция Циклы Код команды Флажки Примечание
ADDLW к Сложение (k + W W) 11 111x kkkk kkkk C,DC,Z  
ANDLW к Логическое "И" (k and W W) 11 1001 kkkk kkkk Z  
CALL k Вызов подпрограммы k 10 0kkk kkkk kkkk    
CLRWDT - Обнулить WDT 00 0000 0110 0100 TO,PD  
GOTO k Переход к адресу k 10 1kkk kkkk kkkk    
IORLW k Логическое "ИЛИ" (К or W W) 11 1000 kkkk kkkk Z  
MOVLW k Пересылка (k W) 11 00xx kkkk kkkk    
RETFIE - Возврат из прерывания 00 0000 0000 1001    
RETLW k Возврат с константой 11 01xx kkkk kkkk    
RETURN - Возврат из подпрограммы 00 0000 0000 1000    
SLEEP - Останов 00 0000 0110 0011 TO,PD  
SUBLW k Вычитание (k W W) 11 110х kkkk kkkk C,DC,Z  
XORLW k Исключающее "ИЛИ"(k or W W) 11 1010 kkkk kkkk Z  

 

Примечание 1

Если регистр ввода/вывода изменяется, то исходным значением будет величина, считанная непосредственно с контактов.

Примечание 2

Если команда модифицирует регистр TMR0, то предделитель будет обнулен.

Примечание 3

Если в счетчик программ записывается адрес (т.е. условие проверки "истина"), то команда выполняется за два цикла. Второй цикл выполняется как команда NOP.

Рекомендуемая структура программы для микроконтроллера PIC16F877

list p=16f877 ; директива определения процессора #include <p16f877.inc> ; подключение списка определений переменных процессора __CONFIG _CP_OFF & _WDT_ON & _BODEN_ON & _PWRTE_ON & _RC_OSC & _WRT_ENABLE_ON & _LVP_ON & _DEBUG_OFF & _CPD_OFF; '__CONFIG' - директива определения битов конфигурации процессора ;***** ОПРЕДЕЛЕНИЕ ПЕРЕМЕННЫХw_temp EQU 0x70 ; переменная для сохранения текущего состояния при обработке прерыванияstatus_temp EQU 0x71 ; переменная для сохранения текущего состояния при обработке прерывания ;***** ORG 0x000 ; размещение команд по адресу сброса процессораclrf PCLATH ; очистка старших бит счетчика команд goto main ; переход на основную программу ORG 0x004 ; размещение команд по вектору прерывания процессора movwf w_temp ; сохранение текущего значения регистра Wmovf STATUS,w ; сохранение текущего значения регистра STATUSmovwf status_temp ; ПРЕРЫВАЮЩАЯ ПРОГРАММА movf status_temp,w ; восстановление значения регистра STATUSmovwf STATUSswapf w_temp,fswapf w_temp,w ; восстановление значения регистра Wretfie ; возврат в основную программу main ; ОСНОВНАЯ ПРОГРАММА END ; директива конца программы


<== предыдущая лекция | следующая лекция ==>
Периферийные модули микроконтроллера PIC16F877 | УСО для ввода информации


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.648 сек.