13186

Дослідження системи переривань лабораторного стенду EV8031/AVR

Лабораторная работа

Коммуникация, связь, радиоэлектроника и цифровые приборы

ЛАБОРАТОРНА РОБОТА №8 Дослідження системи переривань лабораторного стенду EV8031/AVR Мета роботи Вивчення режимів роботи системи переривання ОЕОМ програмна обробка дискретних сигналів. Вивчення систем переривання режимів вводу дискретної інформації роз...

Украинкский

2013-05-10

143.5 KB

13 чел.

ЛАБОРАТОРНА РОБОТА №8

Дослідження системи переривань лабораторного стенду EV8031/AVR

  1.  Мета роботи

Вивчення режимів роботи системи переривання ОЕОМ, програмна обробка дискретних сигналів. Вивчення систем переривання режимів вводу дискретної інформації, розробка програм опитування сигналів від датчиків.

2. Порядок виконання лабораторної роботи

Вивчити принцип роботи різних методів відображення.

Розробити алгоритм для виконання індивідуального завдання  до початку лабораторного заняття

Розробити програму для виконання індивідуального завдання  до початку лабораторного заняття з використанням підпрограм.

Ввести програму індивідуального завдання на персональному комп'ютері.

Вивчити програмно налагоджувальні засоби (ПНЗ) для КР1816ВЕ31.

За допомогою ПНЗ проаналізувати виконання індивідуальної програми

Завантажити програму в стенд ОЕОМ. Переконатися в правильному виконанні індивідуального завдання, при негативному результаті здійснити зміну алгоритму або програми. Повторити завантаження програми в стенд ОЕОМ

Роздрукувати лістинг правильно працюючої програми.

Відповісти на контрольні питання викладача

3. Контрольні питання

  1.  Структура системи переривання ОЕОМ К1816ВЕ31;
  2.  Призначення, приклади застосування системи переривання;
  3.  Регістри управління, розподіл пам'яті в ОЕОМ 1816 ВЕ31;
  4.  Переривання від таймерів, послідовного приймача-передавача;
  5.  Апаратне усунення брязкоту контактів для схем з TTL і КМОП;
  6.  Програмне усунення брязкоту контактів;
  7.  Необхідність застосування апаратного або програмного усунення брязкоту контактів.


3. Короткі теоретичні відомості

Опитування дискретних сигналів. Для введення інформації широко застосовуються кнопкові перемикачі і контактні клавіатури. Сигнал таких перемикачів формується шляхом замикання (розмикання) електричного ланцюга. Сигнал, формований контактною парою, супроводжується брязкотом, тривалість якого складає ~8-12мс (рис. 1)

  1.  Сигнал контактної пари

Для усунення брязкоту в сигналі на виході контактної пари встановлюють спеціальні формувачі. Приклад такого формувача заснованого на принципі безпосереднього встановлення RS-трігера приведений на рис.2.

  1.  Схема усунення брязкоту за допомогою RS-трігера

Для зменшення апаратних витрат застосовують програмне подавлення брязкоту. Воно полягає в повторному опитуванні контактної пари із затримкою в 12мс, при збігу результатів опитування – кнопка була натиснута, інакше в результаті першого опитування був зафіксований брязкіт.

Система переривань ОЕОМ 1816ВЕ31

Регістр пріоритетів переривання (IP) призначений для встановлення  рівня пріоритету переривання для кожного з 5-ти джерел переривання.

Позначення розрядів регістра IP показане в таблиці 1.

  1.  Регістр пріоритетів переривань IP

D7

D6

D5

D4

D3

D2

D1

D0

Х

Х

Х

PSP

PT1

PX1

PT0

PX0

  •  PX0 - установка рівня пріоритету переривання від зовнішнього джерела /INTO.
  •  PT0 - установка рівня пріоритету переривання від Т/Л0.
  •  PX1 - установка рівня пріоритету переривання від зовнішнього джерела. /INT1.
  •  PT1 - установка рівня пріоритету переривання від Т/Л 1.
  •  PS - установка рівня пріоритету переривання від послідовного порту.
  •  X - резервний розряд.

Наявність в розряді IP "1" встановлює для відповідного джерела високий рівень пріоритету, а наявність в розряді IP "0"-низкий рівнів пріоритету. При читанні резервних розрядів, відповідні лінії магістралі даних не визначені.

Регістр дозволу  переривання (IE)  призначений   для дозволу або заборони  переривань   від  відповідних   джерел.   Позначення розрядів регістра IE показане в таблиці 2.

  1.  Регістр дозволу переривань IE

D7

D6

D5

D4

D3

D2

D1

D0

EA

X

X

ES

ET1

EX1

ET0

EX0

  •  ЕА - управління всіма джерелами переривань одночасне. Якщо ЕА = 0, то переривання заборонені. Якщо ЕА = 1,то  переривань можуть бути дозволені індивідуальними дозволами EXO, ETO, EXI, ETI, ES.
  •  Х - резервний розряд.
  •  ES - управління перериванням від послідовного порту. ES = 1 дозвіл. ES = 0 - заборона.
  •  ETI  -  управління перериванням від т/л 1. ЕТ = 1 - дозвіл. ЕТI = 0 - заборона.
  •  EXI - управління перериванням від  зовнішнього  джерела  /INT1. EXI = 1 - дозвіл. EXI = 0 - заборона.
  •  ЕТО - управління перериванням від т/л 0. ЕТО = 1 - дозвіл. ЕТО= 0 - заборона.
  •  EXO - управління перериванням від зовнішнього джерела /INTO. EXO=1 - дозвіл. EXO = 0 - заборона.

При читанні резервних розрядів відповідні лінії магістралі не визначені.

Структура переривань

Механізм  переривань  в  ОМЕВМ  дозволяє автоматично реагувати на зовнішні і на внутрішні події (переповнювання таймерів/лічильників; завершення послідовного обміну).

Кожне із зовнішніх переривань /INTO, /INT1 може бути активізоване по рівню або по фронту сигналів Р3.2, Р3.3 за допомогою  бітів  IT0 і IT1 регістра TCON. Під час вступу запиту зовнішнього переривання /INTх встановлюється прапор IEх регістра TCON. Очищення прапора IEх виробляється апаратно: при перериванні по фронту, IEх скидається при зверненні до відповідної підпрограми обробки переривання; при перериванні по рівню прапор очищається при знятті запиту зовнішнього переривання, тобто в IEх відстежується стан виводу /INTх.

Щоб зовнішнє переривання по рівню було розпізнане, необхідно, щоб низький рівень на висновку INTх утримувався на протязі не менше 12 періодів сигналу тактової частоти. Якщо ж переривання активізується по переходу із стану високого рівня в стан низького рівня, то циклу низького рівня повинен передувати цикл високого рівня на виводі /INTх. Якщо зовнішнє переривання  активізується по рівню, запит  повинен утримуватися до початку обслуговуючої підпрограми і зніматися перед завершенням цієї підпрограми для запобігання повторному обслуговуванню.

Переривання від таймерів/лічильників виконуються по прапорах TF0 і TF1 регістра TCON, які встановлюються при переповнюванні відповідних регістрів таймерів/лічильників (за винятком режиму 3). Очищення прапорів TF0 і TF1 відбувається при переході до підпрограми обслуговування переривання.

Переривання від послідовного порту виконується по прапору закінчення прийому RI або по прапору закінчення передачі TI, які встановлюються в регістрі SCON.

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

У разі одночасного надходження запитів переривання з однаковим рівнем пріоритету, рівним 0 або 1, обробка їх проводиться у порядку внутрішнього опиту прапорів:

IEO -> TFO -> TE1 -> TF1 -> (TI + RI)

Установка прапорів переривання відбувається в кінці машинного циклу, а їх опит в наступному циклі. І лише після виконання останнього циклу поточної команди проводиться апаратний виклик відповідної підпрограми обслуговування, еквівалентний команді LCALL.

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

  •  проводиться обробка переривання з таким же або вищим пріоритетом;
  •  поточний машинний цикл (цикл опиту прапора) не є останнім циклом виконуваної команди;
  •  виконувана команда поточної програми RETI або будь-яка команда звернення до регістрів IE, IP.

У останній умові після закінчення одній з вищезгаданих команд обов'язково виконається ще одна команда поточної програми перед викликом підпрограми обслуговування переривання.

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

Підпрограма обслуговування переривання триває до виконання команди RETI по якій відновлюється стан логіки переривання і стан програмного лічильника PC з двох верхніх комірок стека. При використанні команди RET відновлюється тільки стан програмного лічильника, а стан логіки переривання залишається незмінним.

  1.  Початкові адреси векторів переривань

Джерело   переривання

Адреса

Зовнішнє переривання 0     

0003H

Переповнювання таймера 0

000BH

Зовнішнє переривання 1

0013H

Переповнювання таймера 1

001BH

Послідовний порт

0023H

У складі учбово-налагоджувального стенду є дві окремі кнопки S10-S11, які можуть опитуватися, як програмно, так і за допомогою використання функцій переривань INT0-INT1 відповідно.

У складі учбово-налагоджувального стенду є матрична 3x4 клавіатура SW3-SW14. Клавіатура підключена до шини даних ОЕОМ за допомогою мікросхеми буфера DD1 74245(АП6).

Опитування всієї клавіатури проводиться за три рази (за один раз прочитується стан тільки одного стовпця клавіатури). Щоб провести опитування стовпця клавіатури (SW3,SW6,SW9,SW12; SW4,SW7,SW10,S13; або SW5,SW8,SW11,SW14) необхідно виставити на відповідній лінії адреси (A0,A1,A2 для першого, другого і третього стовпця відповідно) рівень логічного нуля, а на інших лініях рівень логічної одиниці і прочитати стан буфера клавіатури, підключеного до шини даних ОЕОМ як доступний для читання елемент пам'яті з адресою 9000h. Якщо кнопка натиснута то відповідний біт в зчитаному байті буде рівний нулю, якщо ж не натиснута то одиниці.

Таблиця 4

Стовпецо (кнопки)

Адреса

1 (SW3,SW6,SW9,SW12)

9006h

2 (SW4,SW7,SW10,SW13)

9005h

3 (SW5,SW8,SW11,SW14)

9003h

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

CSEG

ORG 0

   jb  p3.2,$    ;опитування натисення кнопки SW15, якщо

                    ;кнопка натиснута, програма виконується

                    ;дальше

Continue:

   mov A,#0

   mov DPTR,#0A004h

   movx @DPTR,A          ;Відмінити гасіння знакомісць С_інд

   mov A,#04h            ;записати в Акк. число 04

   mov DPTR,#0A000h      ;встановити в DPTR адресу лівої пари 

 ;знакомісць С_інд

   movx @DPTR,A          ;засвітити число 04

   mov DPTR,#0B000h      ;встановити в DPTR адресу правої пари

    ;знакомісць С_інд

   movx @DPTR,A          ;засвітити число 04

   CALL ZAD              ;визов підпрограми затримки

   mov A,#00001111b

   mov DPTR,#0A004h

   movx @DPTR,A          ;погасити все знакомісця С_інд

   CALL ZAD

jmp Continue                    ;перехід на початок програми

ZAD:                            ;підпрограма затримки

         mov R1,#0FFh

C2:       mov R2,#0FFh

C4:       djnz R2, C4

         djnz R1, C2

         ret                   ;вихід з підпрограми

END

Відображати на С_інд. числа 33.33 і 32.32 при натисненні кнопок SW16, SW15 відповідно (програма написана на мові С).

#include <8051.h>

#include "..\ev8031.lib\ev8031.c"

#include "..\ev8031.lib\bitdef.h"

int main()

{

begin:

DC_REG=0x0F;              //гасити індикатор HG1

if (!P3_2)

{

  new_dotsi=0x20;

    lefti=0x32;

    righti=0x32;          //якщо кнопка 

                  //SW15 натиснута, вивести 32.32

 }   

if (!P3_3)

 {

   new_dotsi=0x20;

   lefti=0x33;

   righti=0x33;            //якщо кнопка 

       //SW16 натиснута, вивести 33.33

 }

 goto begin;

}


4. Варіанти індивідуальних завдань

  1.  Таблиця завдань до л.р. №8

Текст індивідуального завдання

1

Підрахувати і відобразити на статичному індикаторі кількість натиснень кнопки SW15

2

Реалізувати опитування клавіатури. Номер клавіші відображати шляхом засвічення відповідної крапки на знако-синтезуючому індикаторі.

3

Реалізувати опитування клавіатури. Номер клавіші послідовно відображати в кожному розряді динамічному індикаторі.

4

Після натиснення SW15 запускати вогонь, що біжить, на світлодіодах HL1-HL8, при відпуску плавне загоряння числа 3 на знако-синтезуючому індикаторі.

5

Після натиснення SW16 включити секундомір з відображенням на статичному індикаторі значення секунд при відпусканні запускати “тінь”, що біжить, на світлодіодах HL1-HL8

6

Реалізувати опитування клавіатури. Номер клавіші відображати позиційним кодом на світлодіодах HL1-HL8, з відображенням значення кнопки на динамічному індикаторі.

7

Реалізувати програму вводу чотиризначного числа з клавіатури, використовуючи статичному індикаторі і дублюючи значення натиснутої кнопки на знако-синтезуючому індикаторі.

8

Реалізувати опитування клавіатури після 2-х натиснень SW16. Номер клавіші відображати на динамічному індикаторі.

9

Після натиснення SW15 запускати будь-яке значення, що біжить, на знако-синтезуючому індикаторі, а після натиснення SW16 запалити всі крапки в шаховому порядку.

10

Відображати значення секунд на статичному індикаторі. По перериванню INT0 зупинити секундомір і засвітити світлодіоди HLn (n-непарне)

11

Відображати число 7543 на динамічному індикаторі. По перериванню INT1 засвітити світлодіоди HLn (n-парне)

12

На статичному індикаторі відобразити  число 5555. По перериванню INT0 відображати “шахматку” на знако-синтезуючому індикаторі, По перериванню INT1 відобразити на статичному індикаторі число 3333

13

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

14

Після натиснення SW16 запускати “тінь”, що біжить, на знако-синтезуючому індикаторі, а при повторному натисненні SW16 згасити всі крапки.

15

Реалізувати опитування клавіатури. Номер клавіші відображати двійковим кодом на світлодіодах HL1-HL8

PAGE  1