__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, способи формування переривань, використання оброблювачів декількох переривань.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.