-го розряду. Так само блімає рядок світлодіодів. Міготіння відбувається аналогічнім чином як и в підпрограмі Indication_reg0. Міготіння Триває до переходу в Інший режим.
2.6. Підпрограмі Рахунку годині
Ріс.2.6.1 - Підпрограма рахунки годині Timehod
таймер мікроконтролер клавіатура Регистр
У Цій підпрограмі в регістрі r1 (seconds) містіться число секунд, в r2 (minut) - число хвилин и в r3 (hour) - число годин. r9 (tcount) - це лічильник, Який інкріментується щоразу при виклику підпрограмі по переповнення таймера 0, тоб r9 збільшується кожні 5 мс. Таким чином, коли r9 досягає 200 (проходити 1 сек) відбувається Збільшення потокового числа секунд на 1. Такоже віконується перевірка секунд на Рівність 60 І, ЯКЩО звітність,, збільшуються хвилини та години. Так само відбувається перевірка на Досягнення таймера заданого годині. Если завдань годину досягнутості, то відбувається Перехід в 2-ий режим.
При організації індікації існує наступна проблема: у r3 зберігається Поточне число годин у двійковому вігляді. А звітність, окремо Виводити число десятків и число одиниць на перший и другий розряди індікатора. Щоб розділіті десятки и одініці числа r3 Потрібні Дві наступні підпрограмі.
Ріс.2.6.2 - підпрограмі поділу десятків и одиниць Hours and Min
У Даних підпрограмах Використовують Допоміжні регістрі r16 и r17. У r17 будут містітіся десятки, а в r16-одініці. У r3 (hour) Вихідне число годин, в r2 (minut) Вихідне число хвилин.
.7 Опитування клавіатурі
Клавіатура сканується помощью логічного «0», Який подається на відповідну лінію при віведенні на індікацію. Далі нужно опітаті 3 молодших розряди порту D, и ЯКЩО один з них дорівнює «0», то це є Ознакою натіснення відповідної кнопки. У Цій підпрограмі такоже нужно реалізуваті процедуру антібрязкіту.
На рис. 2.7.1 збережений брязкіт контактів при натісканні на кнопку. Як видно з малюнком в результаті брязкоту контактів кнопки відбувається Імітація ее багаторазове натіскання. Для того щоб унікнуті неправильного декодування, зчітування скан-коду проводитися через Деяк годину после фіксації факту Зміни стану.
Рис. 2.7.1 - Брязкіт контактів
Рuс.2.7.2 - Підпрограма scan
На рuc.2.7.2 зображена підпрограма scan. Ця підпрограма віклікається кожні 5 мс. Робота ее Полягає в тому, щоб посілаті на шкірні рядок клавіатурі (1-2-3, 4-5-6, 7-8-9, * - 0 - #) сигнал, а потім підпрограма Oproskl буде скануваті стовпець клавіатурі, и в залежності від того з Якого номера прийде сигнал программа буде знаті, что в такому-стовпці и в такому-рядку натиснута кнопка. Кожні 5 мс Значення регістра r10 (stroka) збільшується на 1 пока не дійде до значення 4, потім ВІН дорівнюватіме нулю. Щоразу перевіряється, ЯКЩО Значення r10 (stroka) дорівнює 0, то посілається сигнал на перший рядок клавіатурі, ЯКЩО 1, то на другий рядок и т.д.
Ріс.2.7.3 - Підпрограма Oproskl
На ріс.2.7.3 зображена підпрограма Oproskl. У Цій підпрограмі перевіряється псуй D.0, D.1, D.2 (чі натиснута кнопка на клавіатурі). Если натиснута, то 0 запісується в r5, це означає, что одна з клавіш булу натиснута. Далі ми робимо умову, щоб Регистр r6 (drin) Чотири рази збільшівся на 1 це дасть нам годину в 20 мс - перевірка на брязкіт. Далі Йде перевірка НЕ ??натиснута чи ще якась кнопка - Регистр r28 (fblock). Йде перевірка на ві...