ення, як тільки ці лінії будуть відпущені в нуль, це сигналізує про натискання клавіші.
Далі програма переходить в режим нескінченного циклу, що дозволяє виконати обробку більшості подій в незалежному режимі через обробку переривань.
Розглянемо обробники переривань:
) Оброблювач переривання клавіатури interrupt2 (обслуговує зовнішнє переривання int1, виникає, коли int1переходіт з 1 в о). У даному обробнику з порту Р3.4, Р3.5, Р3.7 зчитується код клавіші і виконується його перетворення. Таким чином, визначається, яка клавіша натиснута і відповідно, яку дію варто вжити, для того щоб виконати установку заданих параметрів. У обробнику переривань перевіряємо, якщо попередній стан (попередня натиснута клавіша) не дорівнює поточному (поточної клавіші), то ми обслуговуємо момент натискання. При натисканні нульової клавіші (хто клав включення/виключення) змінюється стан прапора onoff, при натисканні першої клавіші система переходить у нічний режим (мінімальна швидкість подачі повітря для найменшого виникнення шуму). Друга і третя клавіші для регулювання швидкості подачі повітря (+/- відповідно), четверта і п'ята клавіші для регулювання температури (+/- відповідно), шоста і сьома клавіші для регулювання таймера (+/- відповідно). Перевіряємо відповідні умови. p align="justify"> 2) Оброблювач переривання таймера0 interrupt1. У даному обробнику ми спочатку виробляємо перезавантаження таймера/лічильника. Предделітель, завантажуючи константу d8, ef відповідно в старшу і молодшу частину TH, TL (TH0 = 0xd8, TL0 = 0xef). Що забезпечує частоту переполненій100 разів на секунду. p align="justify"> Запускається висновок інформації на індикатор. При цьому змінна flag буде вказувати, що буде виводитися на семисегментні індикатори. Температура для виведення розраховується діленням на 10 (десятки) або отриманням залишку від ділення на 10 одиниці градусів. p align="justify"> Таким чином, в кожному такті обробника переривання виводимо раніше заповнений масив даних, що відображаються, тактіруя сигналом l, переводячи його в 0, потім в 1.
Далі йде підрахунок часу. Він ведеться змінної sec100 (вона відраховує соті частки секунд), інкрементіруем її в кожному перериванні таймера, ми отримуємо при sec100 = 1 відлік першої секунди. Тут же ми інкрементіруем змінну секунди і перевіряємо, не дорівнює чи вона 60, якщо так, то Обнуляємо її, а збільшуємо хвилини. Аналогічно перевіряються і хвилини. Також контролюються і годинник, але до 24. p align="justify"> Процедура обміну з термометром. У першому такті виконується скидання лінії зв'язку з датчиком температури в 0 (Р3.2 = 0), і утримується лінія зв'язку в нульовому стані до наступного переповнення таймера. У наступному такті лінія переводиться в одиничний стан (Р3.2 = 1) і витримується пауза в 45 мкс. Потім перевіряємо лінію, що вона знаходиться в нульовому стані. Це говорить про те, що термометр відповів....