а допомогою нескінченного циклу while (1), в тілі якого відбувається перевірка керуючих прапорів і залежно від стану цих прапорів здійснюється виклик відповідних процедур і скидання стану прапора. br/>
Лістинг програми
# include
# define PORTBIT (adr, bit) ((unsigned) (& adr) * 8 + (bit)) bit RS @ PORTBIT (PORTC, 6); bit RW @ PORTBIT (PORTC, 5 ); bit E @ PORTBIT (PORTC, 4); probel = 0x20 ;//0x20;// 0x5Fint _time = 0, _settime, _time1 = 0, _time2 = 0, _time3 = 0, _time4 = 0; char status = 0, temperature, settemperature = 50, regim = 1, subregim = 0, mig = 0; char d1 = 0, d2 = 0, d3 = 0, d4 = 0, d5 = 0, d6 = 0, kl = 0, displayed = 1 ;
// Функція коригування подання временіCorrectTime (unsigned int & ttime)
{(ttime> 24 * 60-1)
{ttime = _time1 = _time2 = _time3 = _time4 = 0;
}
}
// Функція коригування температуриCorrectTemperature (unsigned char & ttemperature)
{(ttemperature> 99) ttemperature = 99; (ttemperature <30) ttemperature = 30;
}
// ПаузаWait (uchar kk)
{(kk -);
}
// Читаємо з індікатораchar ReadInd (void)
{char DATA; = 0x0F ;//на введення 4мл біта порту
RW = 1; = 1; = (PORTC && 0x0F) <<4 ;//зчитуємо 4ст. біта = 0; = 1; = DATA | | (PORTC && 0x0F) ;//зчитуємо 4мл біта = 0; = 0; (DATA);
}
// Записуємо в індикатор код
void WriteInd (uchar Dann)
{stDann, mlDann; = Dann && 0xF0 ;//старші тетради = Dann && 0x0F ;//молодші тетради = 0; = 0; = PORTC && 0xF0 ;// очищаємо 4мл біта порту С = PORTC | | stDann ;//передаємо 4ст біта
E = 1; = 0; = PORTC && 0xF0 ;//очищаємо 4мл біта порту С = PORTC | | mlDann ;//передаємо 4мл біта = 1; = 0; = 0x0F;
}
// Перевірка готовності індікатораCheck (void)
{DATA ;//описали змінну DATA типу uchar
RS = 0;
{= ReadInd (); <<= 1;
} (CARRY) ;//якщо біт перенесення дорівнює 1, то індикатор не готовий
} WriteData (uchar kod)
{(20);
Check (); = 1; (kod) ;//записати в індикатор код
} WriteCommand (uchar kod)
{(20) ;//пауза (20 машинних циклів) () ;//перевірити стану індикатора = 0; (kod) ;//записати в індикатор код
RS = 1;
}
// Вивід на дісплейDisplay (int i)
{(_time); (settemperature); (_settime);