рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

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

Власні оброблювачі переривань - раздел Образование, Робота з портами вводу/виводу   1. Мета Вивчити Систему Переривань Мікроконтролера P...

 

1. МЕТА

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

 

2. ЗАВДАННЯ ПО ЛАБОРАТОРНІЙ РОБОТІ

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

 

3. ВАРІАНТИ ЗАВДАНЬ

3.1. Визначте джерело переривання відповідно до варіанта завдання і номера студента за списком журналу групи за таблицею.

Джерело переривання Номер у журналі групи
Переповнення таймера   * * * *                         * * *    
Передній фронт сигналу на виводі RB0/INT         * * * *                 *     *  
Задній фронт сигналу на виводі RB0/INT                 * * * *           *     *
Закінчення запису в EEPROM                         * * * *     * * *
Зміна рівня сигналу на виводі RB4 *       *       *       *                
Зміна рівня сигналу на виводі RB5   *       *       *       *              
Зміна рівня сигналу на виводі RB6     *       *       *       *            
Зміна рівня сигналу на виводі RB7       *       *       *       *          

 

3.2. Оброблювач переривання по переповненню таймера повинен виконувати.

Варіант 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. ПОРЯДОК ВИКОНАННЯ РОБОТИ

4.1. Дозволити необхідні переривання, замаскувати інші.

4.2. Сформувати умови для формування відповідних переривань.

4.3. Визначити максимальний час обробки переривання в тактах і в одиницях часу, при тактуванні мікроконтролера від тактового генератора з частотою Fosc = 8 МГц.

 

5. Зміст звіту

5.1. Тема.

5.2. Мета.

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

5.4. Структурна схема системи переривань.

5.5. Пояснення до схеми.

5.6. Лістинг програми (файл .lst) із докладним коментуванням виконання програми.

5.7. Короткий опис програми.

5.8. Результати виконання програми.

5.9. Висновки.

 

 

Лабораторна робота 6

 

Формування сигналів керування й індикації

 

1. МЕТА

Набути навички складання функціональної схеми. Вивчити способи формування сигналів керування й індикації, навчитися формувати звукові та світлові сигнали на прикладі мікроконтролера PIC16F84A, розглянути використання динамічної індикації.

 

2. Елементи функціональної схеми

 
 

3. ЗАВДАННЯ ПО ЛАБОРАТОРНІЙ РОБОТІ

3.1. На заданому виводі мікроконтролера сформувати сигнал із заданою частотою і скважністю Q = 2 при натиснутій кнопці.

3.1.1. Розробити функціональну схему мікроконтролерного пристрою з виводом сигналу на звуковий випромінювач.

3.1.2. Розробити і налагодити керуючу програму.

3.2. На заданому виводі мікроконтролера сформувати сигнал із заданою частотою і скважністю Q = 2 при віджатій кнопці.

3.2.1. Розробити функціональну схему мікроконтролерного пристрою з виводом сигналу на дискретний світлодіодний індикатор.

3.2.2. Розробити і налагодити керуючу програму.

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

3.3.1. Розробити функціональну схему мікроконтролерного пристрою.

3.3.2. Розробити і налагодити керуючу програму.

Для завдань 3.1 і 3.2 дозволяється розробити спільну функціональну схему та керуючу програму. Виводи мікроконтролера для підключення кнопок вибрати самостійно.

Тактування мікроконтролера виконати від тактового генератора із частотою Fosc = 4 МГц.

 

4. ВАРІАНТИ ЗАВДАНЬ

4.1. Варіанти завдання 3.1.

 
Вивід RA0 RA1 RA2 RA3 RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7 RA0 RA1 RA2
Частота, Гц

4.2. Варіанти завдання 3.2.

 
Вивід RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7 RA0 RA1 RA2 RA3 RB0 RB1 RB2
Частота, Гц 0,2 0,4 0,6 0,8 1,5 2,5 0,3 0,5 0,7 0,9 1,2 1,7

4.3. Варіанти завдання 3.3.

 
Частота, Гц

 

Приклад.Формування символів на семисегментному індикаторі

Відповідність сегментів індикатора розрядам двійкового числа:

H G F E D C B A
                 

 

Для відображення символу “5” на індикатор необхідно видати наступний двійковий код:

                 

 

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

; підключення файлу з описом стандартних констант і значень

#include p16f84a.inc

 

; формування конфігураційного слова

__CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC

 

; опис комірок пам'яті даних

cblock 0x0C ; починаючи з адреси 0x0C

W_TEMP ; збереження W при виклику переривання

STATUS_TEMP ; збереження STATUS при перериванні

dig0 ; буфера на 4 розряди

dig1

dig2

dig3

segment ; номер відображуваного розряду

endc

 

 

; опис констант

init_porta equ b'00000100' ; RA2 на вводі,інші – на вивід

init_portb equ b'00000000' ; усі розряди на вивід

init_option equ b'00000011' ; TMR0 рахує CLKOUT/16

init_intcon equ b'10100000' ; переривання від TMR0

 

 

; початок програми

org 0 ; вектор скидання

bcf INTCON, GIE ; заборона всіх переривань

goto main ; перехід на початок основної програми

 

 

; оброблювач переривання

int_start

org 0x04 ; вектор переривання

movwf W_TEMP ; збереження W і STATUS

swapf STATUS, W

movwf STATUS_TEMP

btfsc INTCON,T0IF ; переривання від таймера?

goto tmr_int ; перехід на оброблювач переривання

; при переповненні таймера

movlw b'00100000' ; дозвіл переривань тільки від таймера

movwf INTCON

goto int_end ; перехід на закінчення оброблювача

 

 

; оброблювач переривання від таймера

tmr_int

bcf INTCON, T0IF ; очищення прапорця переповнення TMR0

call UpdateDig ; відновлення стану індикатора

swapf dig0, W ; ініціалізація значення таймера

andlw 0xF0

movwf TMR0

movlw b'00001000' ; формування звукового сигналу

xorwf PORTA, F

int_end ; закінчення оброблювача переривання

swapf STATUS_TEMP, W ; відновлення значень

movwf STATUS ; регістрів W і STATUS

swapf W_TEMP, F

swapf W_TEMP, W

retfie ; повернення з переривання

 

 

; підпрограма відновлення стану індикатора

UрdаtеDіg

incf PORTA, W ; вибір чергового розряду

andlw 0x03

movwf segment

movf PORTA, W

andlw 0xFC

iorwf segment, W

movwf PORTA

movlw dig0 ; підготовка вмісту поточного розряду

addwf segment, W

movwf FSR

movf INDF, W

call bcd_table ; перетворення в 7-сегментний код

movwf PORTB ; вивід поточного розряду

return

 

 

; підпрограма перетворення двійкового значення в 7-сегментний код

bcd_table

andlw 0x0F

addwf PCL, F

retlw b'00111111' ; 0

retlw b'00000110' ; 1

retlw b'01011011' ; 2

retlw b'01001111' ; 3

retlw b'01100110' ; 4

retlw b'01101101' ; 5

retlw b'01111101' ; 6

retlw b'00000111' ; 7

retlw b'01111111' ; 8

retlw b'01101111' ; 9

retlw b'01110111' ; A

retlw b'01111100' ; B

retlw b'00111001' ; C

retlw b'01011110' ; D

retlw b'01111001' ; E

retlw b'01110001' ; F

 

 

; підпрограма ініціалізації мікроконтролера

Init

bsf STATUS, RP0 ; вибір банку 1

movlw init_porta ; ініціалізація регістра TRISA

movwf TRISA^80h

movlw init_portb ; ініціалізація регістра TRISB

movwf TRISB^0x80

movlw init_option ; ініціалізація регістра OPTION

movwf OPTION_REG^80h

clrf STATUS ; вибір банку 0

clrf dig0 ; ініціалізація відображ. символу

movlw .10

movwf dig1

movlw 6

movwf dig2

movlw 9

movwf dig3

movlw init_intcon ; ініціалізація регістра INTCON, movwf INTCON ; дозвіл переривань

return

 

 

; основна програма

main

call Init ; ініціалізація мікроконтролера

m1 btfsc PORTA, 2 ; очікування натискання на кнопку

goto m1

incf dig0, F ; збільшення значення першого розряду

m2 btfss PORTA, 2 ; очікування відпускання кнопки

goto m2

incf dig0, F ; збільшення значення першого розряду

goto m1

end ; кінець програми

– Конец работы –

Эта тема принадлежит разделу:

Робота з портами вводу/виводу

ЛАБОРАТОРНИЙ ПРАКТИКУМ... Лабораторна робота Робота з портами вводу виводу Вивчення пакета MPLAB...

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Власні оброблювачі переривань

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Офисная техника
Офисная техника – неотъемлемая часть технического оборудования любого офиса. К офисной технике[35] можно отнести любые технические средства, облегчающие работу в офисе, начиная от карандашей и авто

Приклад функціональної схеми пристрою.
  5. Зміст звіту 5.1. Тема. 5.2. Мета. 5.3. Індивідуальне завдання.

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги