НОУ ІНТУЇТ | лекція | Спеціальні функції і система команд мікроконтролерів серії PIC

  1. 5.3. Система команд мікроконтролерів підгрупи PIC16F8X 5.3.1. Перелік і формати команд
  2. 5.3.2. Команди роботи з байтами

5.3. Система команд мікроконтролерів підгрупи PIC16F8X

5.3.1. Перелік і формати команд

Наши партнеры ArtmMisto

Мікроконтролери підгрупи PIC16F8X мають просту і ефективну систему команд, що складається всього з 35 команд.

Кожна команда МК підгрупи PIC16F8X є 14-бітове слово, розділене на код операції (OPCODE), і поле для одного і більше операндів, які можуть брати участь або не брати участь в цій команді. Система команд PIC16F8X є ортогональною і включає в себе команди роботи з байтами, команди роботи з бітами і операції з константами і команди управління. В таблиці 5.10 наведені описи полів команд.

Таблиця 5.10. Описи полів команд МК сімейства PIC16CXXX. Поле Опис f Адреса регістра w Робочий регістр b Номер біта в 8-розрядному регістрі k Константа x Не використовується. Асемблер формує код з x = 0 d

Регістр призначення:

d = 0 - результат в регістрі w

d = 1 - результат в регістрі f

За замовчуванням d = 1

label Ім'я мітки TOS Beршіна стека PC Лічильник команд PCLATH Регістр PCLATH GIE Біт дозволу всіх переривань WDT Сторожовий таймер / TO Тайм-аут / PD екранна dest Регістр призначення: робочий регістр w або регістр, заданий в команді [] Необов'язкові параметри () Зміст label Ім'я мітки TOS Beршіна стека PC Лічильник команд PCLATH Регістр PCLATH GIE Біт дозволу всіх переривань WDT Сторожовий таймер / TO Тайм-аут / PD екранна dest Регістр призначення: робочий регістр w або регістр, заданий в команді [] Необов'язкові параметри () Зміст   Присвоєння <> Поле номера біта   з набору Присвоєння <> Поле номера біта з набору

Для команд роботи з байтами f позначає регістр, з яким проводиться дію; d - біт, що визначає, куди покласти результат. Якщо d = 0, то результат буде поміщений в регістр w, при d = 1 результат буде поміщений в регістр "f", згаданий в команді.

Для команд роботи з бітами b позначає номер біта, який бере участь в команді, а f - це регістр, в якому даний біт розташований.

Для команд передачі управління і операцій з константами, k позначає восьми- або одіннадцатібітную константу.

Майже всі команди виконуються протягом одного командного циклу. У двох випадках виконання команди займає два командних циклу:

  • перевірка умови і перехід;
  • зміна програмного лічильника як результат виконання команди.

Один командний цикл складається з чотирьох періодів генератора. Таким чином, для генератора з частотою 4 МГц час виконання командного циклу буде 1 мкс.

Основні формати команд МК зображені на Мал. 5.15 .

Система команд МК підгрупи PIC16F8X приведена в табл. 5.11 .


Мал.5.15.

Основні формати команд. Таблиця 5.11. Система команд МК підгрупи PIC16F8X. Мнемоніка Опис команди Цикли Біти стану Прим. ADDWF f, d Додавання W з f 1 C, DC, Z 1, 2 ANDWF f, d Логічне І W і f 1 Z 1, 2 CLRF f Скидання регістра f 1 Z 2 CLRW Скидання регістра W 1 Z COMF f, d Інверсія регістра f 1 Z 1, 2 DECF f, d Декремент регістра f 1 Z 1, 2 DECFSZ f, d Декремент f, пропустити команду, якщо 0 1 (2) 1, 2, 3 INCF f, d Інкремент регістра f 1 Z 1 , 2 INCFSZ f, d Інкремент f, пропустити команду, якщо 0 1 (2) 1, 2, 3 IORWF f, d Логічне АБО W і f 1 Z 1, 2 MOVF f, d Пересилання регістра f 1 Z 1, 2 MOVWF f Пересилання W в f 1 NOP - Холоста команда 1 RLF f, d Зсув f вліво через перенос 1 C 1, 2 RRF f, d Зсув f вправо через перенос 1 C 1, 2 SUBWF f, d Віднімання W з f 1 C, DC, Z 1, 2 SWAPF f, d Обмін місцями тетрад в f 1 1, 2 XORWF f, d Що виключає Або W і f 1 Z 1, 2 BCF f, b Скидання біта в регістрі f 1 1, 2 BSF f, b Установка біта в регістрі f 1 1, 2 BTFSC f, b Пропустити команду, якщо біт в f дорівнює нулю 1 (2) 3 BTFSS f, b Пропустити команду, якщо біт в f дорівнює одиниці 1 (2) 3 ADDLW k Додавання константи і W 1 C, DC, Z ANDLW k Логічне і константи і W 1 Z CALL k Виклик підпрограми 2 CLRWDT - Скидання сторожового таймера WDT 1 / TO, / P GOTO k Перехід за адресою 2 IORLW k Логічне АБО константи і W 1 Z MOVLW k Пересилання константи в W 1 RETFIE - Повернення з переривання 2 RETLW k Повернення з підпрограми з завантаженням константи в W 2 RETURN - Повернення з підпрограми 2 SLEEP - Перехід в режим SLEEP 1 / TO, / P SUBLW k Віднімання W з константи 1 C, DC, Z XORLW k виключає Або константи і W 1 Z

Примітки до таблиці:

  1. Якщо модифікується регістр вводу / виводу (наприклад, MOVF PORTB, 1), то використовується значення, прочитуване з висновків. Наприклад, якщо у вихідний засувці порту, включеного на введення, знаходиться "1", а зовнішній пристрій формує на цьому висновку "0", то в розряді даних буде записаний "0".
  2. Якщо операндом команди є вміст регістра TMRO (і, якщо допустимо, d = 1), то попередній дільник, якщо він підключений до TMRO, буде скинуто.
  3. Якщо в результаті виконання команди змінюється лічильник команд або виконується перехід з перевірки умови, то команда виконується за два цикли. Другий цикл виконується як NOP.

5.3.2. Команди роботи з байтами

Команди роботи з байтами використовуються в PIC МК для пересилання даних між регістрами і виконання математичних операцій над їх вмістом. Незважаючи на відносно невеликий набір команд, вони дозволяють реалізувати цілий ряд операцій. Це пов'язано, зокрема, з можливістю вказати в команді адреса розміщення результату операції.

Перевагою системи команд є також можливість використання різних способів звернення до регістрів. Адреса регістра може бути вказаний безпосередньо в команді відповідним 7- двійкового полем f. При цьому доступ можливий тільки до даних, розташованим в межах поточного банку даних. Адресація даних може здійснюватися і за допомогою індексного регістра FSR, шляхом звернення до регістру непрямої адресації INDF, розташованому за нульовим адресою.

Пересилання даних виконується за допомогою двох команд: MOVF і MOVWF, призначення яких істотно різниться. Команда MOVF використовується для установки біта нульового результату в залежності від вмісту певного регістра і може застосовуватися для його завантаження в регістр w. Команда MOVWF використовується для запису вмісту робочого регістра w в зазначений реєстр МК. Якщо в якості цього регістра вказується INDF, то адреса регістра призначення вибирається з регістра FSR. При виконанні даної команди біти стану не змінюються.

Спеціальні команди CLRF f і CLRW застосовуються для очищення регістрів МК. Команда CLRF f записує нуль в зазначений реєстр, а команда CLRW - в робочий регістр. При цьому необхідно пам'ятати, що вони також встановлюють відповідне значення біта нуля.

Найбільш часто респонденти користуються послугами арифметичною операцією є додавання, яке виконується командою ADDWF f, d. Ця операція може змінювати всі біти стану. Біт нуля встановлюється в 1, якщо при виконанні логічної операції "І" над отриманим результатом і числом 0x0FF (255) виходить нуль. Біт перенесення встановлюється в 1, якщо результат перевищує число 0x0FF. Біт десяткового перенесення встановлюється в 1, якщо сума чотирьох молодших бітів результату перевищує 0x0F (15).

При використанні операції віднімання SUBWF f, d слід мати на увазі, що в PIC МК вона виконує операцію складання з негативним числом. Тобто замість операції d = f - w насправді виконується d = f + (-w). Негативне значення вмісту w обчислюється за формулою Negw = (Posw ^ 0x0FF) + 1.

Команди логічних операцій ANDWF f, d, IORWF f, d і XORWF f, d дозволяють виконувати основні логічні операції над відповідними бітами вмісту зазначеного регістра і регістра w. Біт нуля в регістрі STATUS встановлюється в 1 або скидається в 0 в залежності від значення отриманого результату. Команду XORWF f, d зручно використовувати для перевірки вмісту деякого регістра. Для цього необхідно завантажити задане число в регістр w і виконати операцію XORWF f, d над вмістом перевіряється регістра і w. Якщо вміст регістра дорівнює вмісту w, то результат операції буде дорівнює нулю, і біт нуля встановиться в 1.

Команда COMF f, d використовується для інвертування значень усіх бітів в регістрі джерела. Слід зазначити, що ця команда не робить число негативним, тобто не переводить його в додатковий код. Негативне число Neg може бути отримано з позитивного Pos наступним чином: Neg = (Pos ^ 0x0FF) + 1.

Команда SWAPF f, d міняє місцями тетради в регістрі. Як і в інших командах даної групи, результат виконання може бути записаний як в регістрі w, так і в регістрі-джерелі. Дана команда не змінює значення будь-якого з бітів стану, що може використовуватися для відновлення вмісту контекстних регістрів перед поверненням з переривання. Команду SWAPF f, d можна застосовувати, зокрема, для зберігання двох цифр в одному регістрі, переставляючи їх в залежності від того, яку з них ви хочете використовувати. За допомогою команди SWAPF f, d зручно розділити байт на дві тетради для їх подальшого відображення на дисплеї.

Основною функцією команд циклічного зсуву RLF f, d і RRF f, d є зрушення вмісту регістра вліво або вправо на один біт із записом на місце молодшого значущого біта значення біта переносу або, відповідно, встановлення біта перенесення у відповідності зі значенням старшого значущого біта. Команди циклічного зсуву можуть використовуватися для множення і ділення на число 2 певною мірою n. Вони також служать для реалізації послідовного введення або виведення даних і позиціонування байта для того, щоб можна було тестувати значення окремих бітів.

Команди инкремента INCF f, d і декремента DECF f, d використовуються для зміни вмісту регістра на 1. Після виконання команд инкремента і декремента може змінитися тільки біт нуля. Зміни біта перенесення, якщо результат перевищить значення 0x0FF при Інкремент або виявиться менше 0 при декрементом, не відбувається.

Для реалізації умовних переходів в програмі існують команди инкремента і декремента з пропуском команди при нульовому результаті: INCFSZ f, d і DECFSZ f, d. З точки зору обробки даних вони працюють аналогічно командам INCF f, d і DECF f, d. Основна відмінність від цих команд полягає в тому, що при нульовому результаті виконання команди INCFSZ f, d або DECFSZ f, d пропускається наступна за нею команда. Це означає, що команди INCFSZ f, d і DECFSZ f, d можуть використовуватися для організації програмних циклів. Інша особливість цих команд полягає в тому, що вони не впливають на вміст бітів стану регістра STATUS.

Команда NOP означає відсутність операції. Традиційно вона використовується для двох цілей. Перша - забезпечення синхронізації програми з тимчасовими характеристиками різних пристроїв системи. Другим можливим варіантом є використання команди NOP для видалення частини програмного коду. Внаслідок того, що код команди NOP складається з одних нулів, його легко ввести в пам'ять програм замість будь-якої іншої команди, не вдаючись до стирання і репрограммірованію всієї пам'яті програм.

Главное меню
Реклама

Архив новостей
ArtmMisto
Наши партнеры ArtmMisto. Игроки могут начать свое азартное приключение на сайте "Buddy.Bet", который только что открылся для всех ценителей азарта.

Реклама

© 2013 mexpola.h1a25414f