думаю, надо делать на прерываниях, например вот так
Код
#pragma vector = TIMER1_COMPA_vect
__interrupt void overflow_timer1(void)
{
CntMC++;
}
здесь я ровно каждую миллисекунду увеличиваю переменную (так настроил счетчик)
а тут
void main(void) {
BOOL active = TRUE;
for (;;) {
if (active) {
on (LED);
CntMC=0;
active =FALSE;
}
if (CntMC >=200) { //например, 20 мс
off (LED);
active =TRUE;
}
}
вроде как должно работать, и диод будет мигать, и прога не будет тормозиться, только может есть более элегантное решение?
А если надо две лампочки? т.е. в прерываниях не хотел бы ничего менять.
Сообщение отредактировал rezident - May 21 2010, 21:39
Причина редактирования: Оформление цитаты исходника.