На головну

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

  1. Divide; несталий і перехідні режими роботи насосів
  2. I. КУРСОВІ РОБОТИ
  3. II. ДИПЛОМНІ РОБОТИ
  4. II. Стандарти роботи комерції
  5. IV. Порядок роботи комісії
  6. IV.1 Обсяг дисципліни і види навчальної роботи
  7. IV.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 складається з одних нулів, його легко ввести в пам'ять програм замість будь-який інший команди, не вдаючись до стирання і репрограммірованію всієї пам'яті програм.



Попередня   37   38   39   40   41   42   43   44   45   46   47   48   49   50   51   52   Наступна

Схема тактирования і цикл виконання команди | Організація пам'яті програм і стека | Організація пам'яті даних | Регістри спеціального призначення | Лічильник команд | Пряма і непряма адресації | Модуль таймера і регістр таймера | Пам'ять даних в РПЗУ (EEPROM) | організація переривань | спеціальні функції |

© um.co.ua - учбові матеріали та реферати