Система переривань мікроконтролера PIC16F84. Власні оброблювачі переривань

Страницы работы

Содержание работы

Міністерство освіти і науки України

Національний технічний Університет “ХПІ”

“ХАРКІВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ”

Кафедра “Обчислювальної техніки та програмування”

Звіт з лабораторної роботи №5

з курсу “Мікроконтролери та мікро ЕОМ”

Тема: “Система переривань мікроконтролера PIC16F84.

Власні оброблювачі переривань”

Виконав:

студент групи КІТ – 11Б

Кучеренко М.О.

Перивірив:

Скородєлов В.В.

Харків 2004

Лабораторна робота №5

Тема: “Система переривань мікроконтролера PIC16F84. Власні оброблювачі переривань”

Мета роботи: Вивчити систему переривань мікроконтролера PIC16F84, способи формування переривань, використання оброблювачів декількох переривань.

Індивідуальне завдання:

Написати оброблювачі переривань відповідно до варіанта завдання і номера студента за списком журналу групи (N=5).

    1. Оброблювач переривання по передньому фронту сигналу на виводі RB0/INT повинен виконувати.

Варіант№1. Інкремент 16-розрядного лічильника в пам'яті даних.

    2. Оброблювач переривання за зміною рівня сигналу на виводі RB4 повинен виконувати.

Варіант№2. Формування позитивного імпульсу тривалістю ti = [(N mod 10) + 2] · tц =7tцна виводі RA1.

Хід роботи:

Перед тим як розробити текст програми, яка буде виконувати всі дії які необхідні для виконання індивідуального завдання, розробимо алгоритм виконання цього завдання:

Алгоритм виконання завдання:

Для всіх преривань мікроконтролера вектор преривання однаковий та має адресу 0004h, тому першим, що треба зробити, це починаючи з цієї адреси у пам’яті розташувати програмний код, який спочатку визначає джерело преривання (тобто від якого пристрою мікроконтролера прийшов сигнал преривання), а потім визначивши джерело преривання необхідно перейти на відповідну підпрограму, яка є оброблювачем цього преривання. Після виходу з цієї підпрограми необхидно зробити вихід з цього преривання.

Далі опишемо всі дії більш стисло з описом побудови оброблювачив преривань:

1.  Спочатку виконуємо ініціалізацію мікроконтролера, а саме: 6-й біт INTEG регістру OPTION встановлюемо у “1”, це означає, що преривання на виводі RB0/INT буде по передньому фронту сигналу. Також налагоджуємо порти вводу/виводу: порт В всі виводи на ввод, а порт А вивід RA1 на вивод та інші на ввод.

2.  Далі робимо заборону непотрібних преривань та дозволяемо необхідні, а саме: у регістрі INTCON 7-й біт GIE=1 (дозвіл усіх преривань), 4-й біт INTE=1 (дозвіл преривання на виводі RB0/INT), 3-й біт RBIE=1 (дозвіл преривання на виводах RB7-RB4), всі інші біти регістру скидаємо бо інші преривання нам непотрібні.

3.  Зберігаемо значення порту В у комірці пам’яті та далі входимо у бескінечний цикл який складають пусті команди для очиковання преривання.

4.  Для того щоб преривання трапилося на виводі RB0/INT ми за допомогою файлу стімулу на визначеному такті подаемо на вивід RB0/INT “1”, тобто трапляеться передній фронт сигналу (перехід від “0” до “1”), спричиняє преривання на виводі RB0/INT та перехід на адресу 0004h у пам’яті з якої ми починаємо програмний код оброблювачів цих преривань. Так само за допомогою файлу стімулу на визначеному такті подаемо на вивід RB4 “1”, тобто трапляеться зміна рівня сигналу на цьому виводі, а саме з “0” на “1”, що спричиняє преривання на виводі RB4 та перехід на адресу 0004h з якої ми починаємо програмний код оброблювачів цих преривань.

5.  Спочатку необхідно визначити джерело преривання, для цього необхідно заборинити всі преривання (у регістрі INTCON 7-й біт GIE=0) та зробивши збереження значень необхідних регістрів у відповідні заздалегідь визначені комірки пам’яті, робимо перевірку відповідних бітів у регістрі INTCON, а саме: якщо 1-й біт INTF=1 то преривання на виводі RB0/INT і далі переходімо на підпрограму обробки цього преривання; якщо 0-й біт RBIF=1 то преривання на виводах RB7-RB4 і далі переходімо на підпрограму обробки цього преривання; якщо преривання від іншого джерела, то робимо дозвіл усіх преривань ( у регістрі INTCON 7-й біт GIE=1) та вихід з преривання за допомогою команди “retfie”, після того як зробили повернення значень у регістри які було збережено у визначених для цього комірках пам’яті. При виході з преривання адреса наступної команди береться зі “стеку” тому наступною командою буде команда, яка була після команди під час виконання якої трапилося преривання.

6.  Опишемо тепер алгоритми роботи підпрограм оброблювачів цих преривань.

а) алгоритм роботи підпрограми оброблювача преривання на виводі RB0/INT:

Похожие материалы

Информация о работе