ється на введення з підтяжкою. Далі обнуляються вікорістовувані в Програмі регістрі або заносяться до них Потрібні значення. Налаштовуються таймери и заносяться Потрібні значення в регістрі управління МК. Переривані по переповнення таймера становится активним после Дозволу глобальних переривані. Далі програма заціклюється, и в цьом випадка вся обробка буде відбуватіся по переривані таймера 0.
.3 Підпрограма ОБРОБКИ переривані таймера
У Algorithm Builder це підпрограма з ім'ям Timer_0_Overflow (ріс.2.4.1). Виклик цієї підпрограмі здійснюється при переповненні таймера / лічільніка. У якості таймера в даним випадка может буті використаних наявний в мікроконтролері AT90S8515 таймер_0. При віборі частоти тактування CK/256, де СК - частота тактового генератора рівна 8 МГц, Период переповнення дорівнює 8.192 мс. Для Отримання годині переповнення в 5 мс звітність, в Регистр TCNT0 занести число $ 64 (100), віходячі з таких міркувань:
Тпереп=256? (256-N)?=256? (256-100)? »5 мс.
При вході в Цю підпрограму звітність, реалізуваті Збереження ВАЖЛИВО змінніх и регістра прапорів SREG в стеку, а при віході з неї відновіті ЦІ значення. Тепер можна організуваті лічильник, Який фіксуватіме число входів в Дану п / п. Колі цею лічильник таборі рівнім 200, це означатіме, что пройшла 1с (200 * 5мс=1с) i при цьом звітність, збільшити Поточне Значення секунд на 1. Даній лічильник можна використовуват в п / п Рахунку годині. Потім звітність, реалізуваті виклик підпрограм Рахунку годині, ЯКЩО ми знаходимо не в режімі Введення, сканування клавіатурі и Виведення на індікацію.
.4 Підпрограма ОБРОБКИ переривані таймера 0. Режими роботи пристрою
У Algorithm Builder це підпрограма з ім'ям Timer_0_Overflow. Виклик цієї підпрограмі здійснюється при переповненні таймера / лічільніка 0, в нашому випадка кожні 5мс. Роботу пристрою можна розділіті на 3 режиму:
Рис. 2.4.1 - Підпрограма Timer_0_Overflow
Кожні 5 мс лічильник tcount інкрімінується. Режим 0 - введення годині годин, блімають розряди по черзі в залежності від змінної mode. При mode=1 блімає 1 розряд, очікується Введення десятків годин, mode=2 - введення одиниць годин, mode=3 - введення десятків хвилин, mode=4 - введення одиниць хвилин.
На рис 2.6.2 наведена підпрограма запису в регістрі хвилин, годин и секунд при введенні в Певний розряд. Тут Враховується: коли вводяться десятки хвилин, то можна вводіті Тільки 0, 1, 2, інакше Нічого НЕ відбувається, такоже ЯКЩО введена 2 в десятки годин, то в одініці годин можна ввести Тільки 0, 1, 2, 3, в десятки хвилин можна вводіті позбав числа <6. После Введення годині, години (hour) i хвилини (minut) заносяться в змінні thour и tminut, відповідно, для Подальшого порівняння з ними, после цього - обнуляються.
Режим 1 - годинник працює, блімає 8-й сегмент 2-го розряду.
Режим 2 - Таймер Закінчив відлік годині. Блімають ВСІ 4 розряду и рядок світлодіодів.
. ПІДПРОГРАМІ ІНДІКАЦІЇ
Динамічна індікація здійснюється Наступний чином: спочатку в порт А виводу код, Який запалює сегменти індікатора, при якіх світіться Необхідна цифра (0, 1, 2 ...) i відкрівається перший транзисторний ключ, путем посилки 0 в PORTD.4. При цьом буде відображатіся Тільки перший розряд індікатора. Через 5 мс звітність, закрити перший транзисторний ключ, вивести в порт А код, Який відповідає ціфрі, вів...