а потім аналізується в циклі основний процедури. p align="justify"> Обробник переривання від таймера 0 (void timer0 (void) interrupt 1). Виконує підрахунок часу. Для даного таймера встановлений 1 режим роботи, для якого коефіцієнт перерахунку становить 216 (65536). Необхідно розрахувати кількість переповнень, які відбудуться за 1 секунду. Один машинний цикл при частоті тактового генератора 12МГц становить 1мс, тобто переповнення відбудеться через 0,065536 секунди (65536/106). Таким чином, одна секунда це 15,2587 переповнень (1/0, 065 536). У програмі необхідно контролювати 4800 переповнень. p align="justify"> Оброблювач переривання від зовнішнього джерела INT0 (void int0 (void) interrupt 0). Реалізує клавіатуру. По натискання на кнопку її код виставляється на порти Р3.4, P3.5 і Р3.6. У програмі аналізується цей код: якщо код дорівнює 111 (1 клавіша), то відбувається скидання значень введених СС клавіатури, якщо 110,101,100 (2, 3, 4 клавіша) - відкриваються клапани 1,2,3 відповідно. При коді рівному 011 (5 клавіша) відбувається включення насоса. При коді рівному 010 (6 клавіша) відбувається включення двигуна. Дія відповідне клавіші відображається на РКІ. p align="justify"> Наступні блоки розташовані в тілі основної процедури (void main ()).
Блок встановлення режимів таймерів і регістрів. У регістр TMOD поміщається значення 0xA9 (перший режим для таймера 0, другий режим для таймера 1). Встановлюються прапори дозволу переривання від таймерів ЕТ0 і ЕТ1, а також від зовнішнього джерела EX0. Потім проводиться програмний запуск таймера TR0 = 1. p align="justify"> Блок ініціалізації послідовного порту прийому-передачі (com_initialize ()). Полягає в тому, що встановлюється в регістр управління енергоспоживанням (PCON) значення 0х80 (1000 00002). Тобто встановлюється подвійна швидкість передачі послідовного каналу. Послідовний порт працює під управлінням таймера 1. Задаються початкові значення таймера TH1 = 0xF9 і TL1 = 0xF9, вирахувані за формулою 256 - (12000/(192 * 9600)) = 24910 = 0xF916, де 9600 бод - необхідна швидкість передачі, 12000Гц - частота тактового генератора, 256 - коефіцієнт перерахунку таймера 1 в 2 режимі. Також необхідно встановити прапор ES - дозвіл переривання від послідовного приймально-передавача, і встановити в регістр управління роботою приймально-передавачів (SCON) значення 0x50 (010100002), 4 біт - дозвіл прийому, 6,7 - номер режиму (перший). p>
Інші підпрограми виконуються в нескінченному циклі.
Блок аналізу та реалізації команд, прийнятих від персонального комп'ютера. Включає перевірку 6 типів команд: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06. Команда 0x01-скидання. Проводиться скид попередніх команд. Команда 0x02, 0x03, 0x04 - відкриття клапанів 1,2,3. Команда 0x05 - запуск насоса. Команда 0x06 - запуск двигуна. p align="justify"> Блок зчитування температури з датчика. Всі сеанси прийому даних з датчика починаються подачею в л...