Варіант 1. Запис у таймер нового значення, інвертування рівня сигналу на виводі RA0.
Варіант 2. Запис у таймер нового значення, інкремент комірки пам'яті даних.
Варіант 3. Запис у таймер нового значення з енергонезалежної пам'яті даних.
Варіант 4. Запис у таймер нового значення, запис цього значення в енергонезалежну пам'ять даних.
3.3 Оброблювач переривання по передньому фронту сигналу на виводі RB0/INT повинен виконувати.
Варіант 1. Інкремент 16-розрядного лічильника в пам'яті даних.
Варіант 2. Інвертування рівня сигналу на виводі RA1.
Варіант 3. Запис поточного значення таймера в комірку пам'яті даних.
Варіант 4. Прийом дискретного сигналу з входу RA2 і видачу його на вивід RA3.
3.4 Оброблювач переривання по задньому фронту сигналу на виводі RB0/INT повинен виконувати.
Варіант 1. Читання 4-розрядного числа з порту A, запис його в комірку пам'яті даних.
Варіант 2. Запис поточного значення таймера в комірку енергонезалежної пам'яті даних.
Варіант 3. Декремент 16-розрядного лічильника в пам'яті даних.
Варіант 4. Інвертування рівня сигналу на виводі RA2.
3.5 Оброблювач переривання по закінченню запису в енергонезалежну пам'ять даних (EEPROM) повинен виконувати.
Варіант 1. Запис поточного значення таймера в комірку пам'яті даних.
Варіант 2. Установку прапорця дозволу запису в EEPROM.
Варіант 3. Інкремент комірки пам'яті даних.
Варіант 4. Декремент комірки пам'яті даних.
3.6 Оброблювач переривання за зміною рівня сигналу на виводі RB4 повинен виконувати.
Варіант 1. Формування позитивного імпульсу тривалістю ti = N 10 tц на виводі RA0. Варіант 2. Формування позитивного імпульсу тривалістю ti = [(N mod 10) + 2] tц на виводі RA1. Варіант 3. Формування негативного імпульсу тривалістю ti = N 10 tц на виводі RA2. Варіант 4. Формування негативного імпульсу тривалістю ti = [(N mod 10) + 2] tц на виводі RA1.Де N – номер студента за списком журналу групи, tц – тривалість командного циклу.
3.7 Оброблювач переривання за зміною рівня сигналу на виводі RB5 повинен виконувати.
Варіант 1. Формування на виводі RA3 імпульсної послідовності з трьох імпульсів негативної полярності, тривалістю і паузою, рівною ti = 5 tц з обов'язковим використанням виклику підпрограми для формування часового інтервалу. Варіант 2. Формування на виводі RA2 імпульсної послідовності з двох імпульсів позитивної полярності, тривалістю і паузою, рівною ti = 5 tц. Варіант 3. Формування на виводі RA1 імпульсної послідовності з двох імпульсів негативної полярності, тривалістю імпульсів ti = 3 tц і паузою, рівною tп = 7 tц. Варіант 4. Формування на виводі RA0 імпульсної послідовності з двох імпульсів позитивної полярності, тривалістю імпульсів ti = 7 tц, і паузою рівною tп = 3 tц.3.8 Оброблювач переривання за зміною рівня сигналу на виводі RB6 повинен виконувати.
Варіант 1. Одночасне інвертування сигналів на виводах RA0 і RA1.
Варіант 2. Обмін рівнів сигналів на виводах RA1 і RA2.
Варіант 3. Прийом дискретного сигналу з виводу RA3 і видачу його на вивід RA0.
Варіант 4. Обмін рівнів сигналів на виводах RA3 і RA2.
3.9 Оброблювач переривання за зміною рівня сигналу на виводі RB7 повинен виконувати.
Варіант 1. Формування на виводі RA0 імпульсної послідовності з трьох імпульсів негативної полярності, тривалістю і паузою, рівною ti = 3 tц. Варіант 2. Формування на виводі RA1 імпульсної послідовності з двох імпульсів позитивної полярності, тривалістю і паузою, рівною ti = 7 tц з обов'язковим використанням виклику підпрограми для формування часового інтервалу. Варіант 3. Формування на виводі RA2 імпульсної послідовності з трьох імпульсів позитивної полярності, тривалістю імпульсів ti = 7 tц і паузою, рівною tп = 3 tц. Варіант 4. Формування на виводі RA3 імпульсної послідовності з чотирьох імпульсів негативної полярності, тривалістю імпульсів ti = 3 tц і паузою, рівною tп = 5 tц.Приклад програми. Збереження регістрів при виклику переривання і виклик оброблювача переривання за зміною рівня сигналу на виводі RB7.
…
STATUS EQU 0x03 ; адреса регістру STATUS
PORTB EQU 0x06 ; адреса регістру PORTB
RBIF EQU 0x07 ; номер розряду прапорцевого біта
INTCON EQU 0x0B ; адреса регістру INTCON
W_TEMP EQU 0x0C ; адреса регістру збереження W STATUS_TEMP EQU 0X0D ; адреса регістру збереження STATUS
oldportb EQU 0x0E ; адреса регістру збереження стану
; порту B
int_point org 0x04 ; вектор переривань movwf W_TEMP ; збереження W
swapf STATUS,w ; збереження STATUS
movwf STATUS_TEMP btfsc INTCON,RBIF ; переривання при зміні RB4-RB7?
call INTRB7 ; виклик оброблювача переривання
; при зміні сигналу на виводах
; RB4-RB7
swapf STATUS_TEMP,W ; відновлення регістру STATUS
movwf STATUS
swapf W_TEMP, F ; відновлення регістру W swapf W_TEMP, W
retfie | ; повернення з переривання |
INTRB7 | ; оброблювач переривання |
; при зміні сигналу на виводах | |
; RB4-RB7 |
movf PORTB, W ; читання стану порту B xorwf oldportb, F ; порівняння з попереднім значенням btfss oldportb, 7 ; зміна RB7? goto NOTRB7 ; немає змін
… ; необхідні дії при зміні RB7
NOTRB7
movf PORTB, W ; читання стану порту B movwf oldportb ; збереження для наступного
; порівняння
bcf INTCON,RBIF ; очищення прапорця переривання return
… ; продовження програми
Зауваження. Імена регістрів спеціального призначення доступні при підключенні заголовного файлу P16F84.INC або повинні бути описані в описовій секції програми.
4.1 Дозволити необхідні переривання, замаскувати інші.
4.2 Сформувати умови для формування відповідних переривань.
4.3 Визначити максимальний час обробки переривання в тактах і в одиницях часу, при тактуванні мікроконтролера від тактового генератора з частотою Fosc = 8 МГц.
5.1 Тема. 5.2 Мета.
5.3 Індивідуальне завдання.
5.4 Структурна схема системи переривань.
5.5 Пояснення до схеми.
5.6 Лістинг програми (файл .lst) із докладним коментуванням виконання програми.
5.7 Короткий опис програми.
5.8 Результати виконання програми. 5.9 Висновки.
Лабораторна робота 6
Вивчити принцип роботи аналого-цифрового перетворювача на прикладі мікроконтролера PIC16C71. Навчитися вводити аналогові сигнали. Розглянути способи виводу аналогових сигналів. Навчитися формувати широтно-модульовані сигнали.
2.1 Введення аналогових сигналів виконується за допомогою аналогово-цифрових перетворювачів (АЦП). На рисунку 5.1 наведена залежність одержуваного цифрового коду від вхідного аналогового сигналу для 8–розрядного АЦП.
Рисунок 5.1 - Функція перетворення АЦП
Для управління АЦП у мікроконтролері PIC16F877 необхідно використовувати наступні регістри:
регістр результату (ADRES); регістр управління 0 (ADCON0); регістр управління 1 (ADCON1); регістр управління перериваннями (INTCON).У регістрі ADRES зберігається результат аналого-цифрового перетворення. Коли перетворення завершене, результат перетворення записується в регістр ADRES, після цього скидається прапорець GO/DONE
(ADCON0<2>) і встановлюється прапорець переривання ADIF (ADCON0<1>). Потім необхідно витримати паузу 20 – 30 мкс для розряду ємності схеми вибірки-збереження АЦП (причому, це необхідно повторювати після кожного наступного циклу перетворення). І тільки після цього потрібно установити біт GO/DONE (ADCON0<2>) для початку перетворення.
Алгоритм дій для виконання аналого-цифрового перетворення слідуючий:
1. Здійснити конфігурацію (ініціалізацію) модуля АЦП:
вибрати аналогові входи та джерело опорної напруги (біти PCFG2 – PCFG0 у регістрі ADCON1); вибрати вхідний канал АЦП (біти CHS2 – CHS0 у регістрі ADCON0); вибрати джерело та частоту імпульсів перетворення (біти ADCS1,