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

__16F84                           00000001

counter_h                         00000010

counter_l                         0000000C

init                              0000001B

int_point                         00000002

loop                              00000016

m1                                00000025

notRB4                            00000037

obrob_INT                         00000022

obrob_RB4                         00000028

oldportb                          0000000D

start                             00000011

test                              00000011

MEMORY USAGE MAP ('X' = Used,  '-' = Unused)

0000 : XX--XXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXX-----

All other memory blocks unused.

Program Memory Words Used:    57

Program Memory Words Free:   967

Errors   :     0

Warnings :     0 reported,     0 suppressed

Messages :     0 reported,     0 suppressed

Методика перевірки працездатності програми:

1. Для перевірки працездатності програми необхідно її спочатку відкомпілювати та після того як всі помилки було виправлено треба запустити програму на виконання, але перед цим нам потрібно підключити файл стімулу у якому записано на якому кроці програми на відповідні виводи мікроконтролера буде подано сигнал який спричінить преривання на цих виводах. Зміст цього файлу приведено нижче:

Зміст файлу стімулу Lab5.sti:

STEP    RB7    RB6    RB5    RB4    RB3    RB2    RB1    RB0

20      0       0      0      0      0      0      0      1

50      0       0      0      1      0      0      0      0

2. Зробивши вище описані дії та почавши покроково виконувати програму, бачимо що на 20-му такті мікроконтролера на виводі RB0/INT змінюється значення з “0” до “1” тобто передній фронт сигналу, що сприченяє преривання та перехід на адресу 0004h у пам’яті з якої починається програмний код оброблювачів преривань. Врезультаті перевірки джерела цього преривання дійсно було підтверджено, що це преривання на виводі RB0/INT (у регістрі INTCON 1-й біт INTF=1) тому відбувся переход на підпрограму оброблювача цього преривання, яка виконує інкремент 16-розрядного лічильника та після її виконання вийшовши з неї робиться перевірка зміни сигнала на виводах RB7-RB4, але вона зараз є дає негативний результат та далі виконується вихід з цього преривання та повернення у основну програму.

3. Далі на 50-му такті мікроконтролера на виводі RB4 трапляється зміна сигналу з “0” на “1”, що спричиняє преривання та зновуж таки перехід на адресу 0004h у пам’яті з якої починається програмний код оброблювачів преривань. Врезультаті перевірки джерела цього преривання дійсно було підтверджено, що це преривання на виводі RB7-RB4 (у регістрі INTCON 0-й біт RBIF=1) тому відбувся переход на підпрограму оброблювача цього преривання. У підпрограмі робиться перевірка чи дійсно це преривання трампилось на виводі RB4 та в результаті позитивного результату перевірки виконується формовання позитивного імпульсу на виводі RА1 тривалістю ti=7*tц та після виходу з неї виконується вихід з цього преривання.

На рис.1. забражено фрагмент тестування програми.

Рис.1. Фрагмент тестування програми.

Результати роботи програми:

З результатів вище описаної перевірки ми бачимо, що програма, яку ми написали - дійсно вірно працює та виконує усі дії які були описані у індівідуальному завданні для виконання, а саме: при отриманні преривання на виводі RB0/INT виконується інкремент 16-розрядного лічильника, а при отриманні преривання на виводі RB4 виконується формовання позитивного імпульсу на виводі RА1 тривалістю ti=7*tц.

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