дно встановити час, що збігається з діючим. При введенні часу спочатку висвічуються хвилини, починаючи з 1 хв., Потім, при натисканні на кнопку В«6В» параметр збільшується на 1 хв., Як тільки параметр стає дорівнює 60с, то час автоматично перекладається в години і, при натисканні на кнопку В«7 В»час збільшується на 1 годину, після того як параметр стає дорівнює 24 ч., він переводиться в 0, після цього відлік починається заново.
Спочатку програми знаходиться блок оголошення змінних. У цьому блоці регістрів і спеціальним бітам системних регістрів присвоюються символьні значення для більш зручного звернення до них. Також описуються і инициализируются допоміжні керуючі прапори і змінні. p align="justify"> Потім йде блок ініціалізації програми. У цьому блоці здійснюється первісна настройка мікроконтролера. p align="justify"> Після скидання відбувається ініціалізація контролера. Призначається предделітель таймера 1. При цьому таймер 1 встановлюється в TH1 = 0xFD. Ця константа порахована для режиму SCON = 0x50 при частоті кварцу 11000,0952 МГц. Цей предделітель дає швидкість на послідовному порту близьку до стандартної швидкості 9600. Також для таймера1 встановлюється другий режим роботи, що забезпечує автоматичну навантаження предделітеля з TH ВTL. Таким чином, вирішується питання автоматичного завдання частоти. p align="justify"> Таймер 0 встановлюється в перший режим 16-бітного лічильника і надалі буде використовуватися для підрахунку часу. Таймер 0 використовує обробник переривання 1 і для його дозволу необхідно встановити прапор ET0 в одиничний стан (ET0 = 1). Щоб запустити таймер 0 TR0 встановлюємо в одиницю (TR0 = 1), одночасно запускаємо і таймер 1 (TR1 = 1). p>
Для обробки переривань від клавіатури встановлюємо прапор EX1 в одиничний стан (ЕХ1 = 1) і дозволяємо всі переривання прапором ЕА (ЕА = 1).
Для обробки переривань від послідовного порту встановлюємо ES в одиницю (ES = 1).
Потім встановлюємо порт Р1 в нульовий стан (Р1 = 0, тобто все вимкнено за замовчуванням).
Прапор включення on/off встановлюємо в нульовий стан (flag on/off = 0, тобто він вимкнений).
Йде ініціалізація змінних годин, хвилин, секунд. Крок прийому в нульовому стані (step = 0), команда в нульовому стані (komanda = 0). Також скидаються прапори onoff і flag (flagonoff = 0, flag = 0). p align="justify"> Встановлюємо порти Р3.2 і Р3.3 в одиницю на введення, як тільки ці лінії будуть відпущені в нуль, це сигналізує про натискання клавіші.
Далі програма переходить в режим нескінченного циклу, що дозволяє виконати обробку більшості подій в незалежному режимі через обробку переривань.
Розглянемо обробники переривань:
) Оброблювач переривання клавіатури interrupt2 (обслуговує зовнішнє переривання int1, виникає, коли int1 переходить з 1 в о). У даному...