
- •1. Які класи мікроконтролерів ви знаєте? Які ознаки притаманні сучасним 8-розрядним мікроконтролерам?
- •2.Які класи мікроконтролерів ви знаєте? Детально опишіть структуру процесорного ядра мікроконтролера.
- •3.Які класи мікроконтролерів ви знаєте? Детально опишіть пам'ять програм та пам'ять даних мікроконтролера.
- •4.Які класи мікроконтролерів ви знаєте? Детально охарактеризуйте регістри, стек та зовнішню пам'ять мікроконтролера.
- •5. Як організовано взаємодію мікроконтролера із зовнішнім середовищем? Детально опишіть функції портів вводу/виводу.
- •6.Як організовано взаємодію мікроконтролера із зовнішнім середовищем?Детально опишіть функції таймерів.
- •7.Як організовано взаємодію мікроконтролера із зовнішнім середовищем?Детально опишіть ф-ію процесорів подій.
- •8. Як досягаєтьсямінімізаціяенергоспоживанняу системах на базімікроконтролерів?
- •9. Детально охарактеризуйте тактовігенераторимікроконтролера.
- •10. Якіапаратнізасобизабезпеченнянадійності систем на базімікроконтролеріввизнаєте? Детально опишітьфункціїсхемиформування сигналу скидання.
- •11. Якіапаратнізасобизабезпеченнянадійності систем на базімікроконтролеріввизнаєте? Детально опишітьфункції блоку детектуваннязниженнянапругиживлення та сторожового таймера.
- •14. Склад та призначення сімейства мікроконтролерів серії ріс.
- •15. Мікроконтролери сімейств ріс16сххх та ріс17сххх. Їхнє місце серед інших сімейств мікроконтролерів серії ріс. Особливості архітектури мікроконтролерів сімейства ріс16сххх.
- •Особенности архитектуры микроконтроллеров семейства pic16cxxx
- •16. Мікроконтролери підгрупи ріс16f8x. Основні характеристики.
- •17. Мікроконтролери підгрупи ріс16f8x. Особливості архітектури.
- •18. Схема тактування і цикл виконання команди
- •19. Мікроконтролери підгрупи ріс16f8x. Організація пам'яті.
- •20. Мікроконтролери підгрупи ріс16f8x. Лічильник команд та методи адресації пам'яті.
- •21. Мікроконтролери підгрупи ріс16f8x. Порти вводу/виводу
- •22. Мікроконтролери підгрупи ріс16f8x. Модуль та регістр таймера.
- •24. Специальные функции
- •25. Перечень и форматы команд
- •27. Мікроконтролери підгрупи ріс16f8x. Система команд. Команди роботи з бітами. Команди керування та роботи з константами.
- •5.3.4. Команды управления и работы с константами
- •28.Мікроконтролери підгрупи ріс16f8x. Особливості програмування та налагодження програм.
- •29. Які основні етапи розробки мікропроцесорної системи на базі мікроконтролера ви знаєте. Детально охарактеризуйте їх.
- •30. Які методи та засоби спільного тестування апаратних та програмних засобів використовують при розробці мікропроцесорної системи на базі мікроконтролера.
24. Специальные функции
Микроконтроллеры имеют набор специальных функций, предназначенных для расширения возможностей системы, минимизации стоимости, исключения навесных компонентов, обеспечения минимального энергопотребления и защиты кода от считывания. В PIC16F8X реализованы следующие специальные функции:
сброс;
сторожевой таймер (WDT);
режим пониженного энергопотребления (SLEEP);
выбор типа генератора;
защита кода от считывания;
биты идентификации;
последовательное программирование в составе схемы.
В PIC16F8X существуют различия между вариантами сбросов:
по включению питания;
по внешнему сигналу при нормальной работе;
по внешнему сигналу в режиме SLEEP;
по окончании задержки таймера при нормальной работе;
по окончании задержки таймера в режиме SLEEP.
Таймер установления питания начинает отсчет времени после того, как напряжение питания пересекает уровень около 1,2…1,8 Вольт. По истечении выдержки около 72мс считается, что напряжение достигло номинала и запускается другой таймер – таймер запуска генератора(OST), формирующий выдержку на стабилизацию кварцевого генератора. Программируемый бит конфигурации позволяет разрешать или запрещать выдержку от встроенного таймера установления питания. Выдержка запуска меняется в зависимости от экземпляров кристалла, от питания и температуры.
Если сигнал /MCLR удерживается в низком состоянии достаточно долго (дольше времени всех задержек), тогда после перехода /MCLR в высокое состояние программа начнет выполняться немедленно.
Сторожевой таймер работает от собственного внутреннего RC-генератора. Таймер вырабатывает сигнал сброса. Выработка таких сбросовможет быть запрещена путем записи нуля в специальный битконфигурации WDTE. Эту операцию производят на этапе прожига микросхем.
Некоторые из специальных регистров при сбросе не инициализируются. Другая часть специальных регистров инициализируется в "состояние сброса. Счетчик команд всегда сбрасывается в ноль. Биты регистра статуса устанавливаются или сбрасываются в зависимости от варианта сброса.
Режим SLEEP предназначен для обеспечения очень малого тока потребления. Выход из режима SLEEPвозможен по внешнему сигналу сброса или по окончании видержки сторожевого таймера.
Применение RC генератора позволяет уменьшить стоимость системы, а низкочастотный сокращает энергопотребление.
Если установлена защита, то бит CP можно стереть только вместе с содержимым кристалла.
Четыре слова памяти предназначены для хранения идентификационного кода, контрольной суммы или другой информации.
Для программирования последовательным способом используется пять линий: две для данных и тактового сигнала и три для земли, напряжения питания и программирующего напряжения
25. Перечень и форматы команд
Микроконтроллеры подгруппы 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 или регистр, заданный в команде |
[ ] |
Необязательные параметры |
( ) |
Содержание |
|
Присвоение |
< > |
Поле номера бита |
|
Из набора |
Для команд работы с байтами 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 |
|
|
||||
Примечания к таблице:
|
26. Команди роботи з байтами Команди роботи з байтами використовуються в 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 складається з одних нулів, його легко ввести в пам'ять програм замість будь-якої іншої команди, не вдаючись до стирання і репрограмування всієї пам'яті програм