Учусь программировать под Attiny 2313, написал такую программку:
Если нажать на кнопку, то запускается цикл мигания 6 светодиодов, если в конце мигания шестого светодиода нажать кнопку, то мигание выключится.
Вот код для gcc:
Код
unsigned char LIGHT = 0;
while (1) {
// Если свет не горит и нажата кнопку
if (LIGHT == 0 && bit_is_clear(PIND,0)) {
// Включить свет
while (LIGHT == 0) {
PORTB = 0b11111110;
_delay_ms(200);
PORTB = 0b11111101;
_delay_ms(200);
PORTB = 0b11111011;
_delay_ms(200);
PORTB = 0b11110111;
_delay_ms(200);
PORTB = 0b11101111;
_delay_ms(200);
PORTB = 0b11011111;
_delay_ms(200);
// Если нажата кнопка, то выключаем свет
if (bit_is_clear(PIND,0)) {
PORTB = 0b11111111;
_delay_ms(200);
LIGHT = 1;
}
}
}
// Если свет выключен и нажата кнопка, то включаем свет
if (LIGHT == 1 && bit_is_clear(PIND,0)) {
LIGHT = 0;
}
}
Работает как я и планировал, но есть одна недоработка.
Как сделать так, чтобы нажав на кнопку в ЛЮБОЙ момент времени светодиоды остановились мигать (а не только в конце цикла мигания)? подскажите куда копать? если есть простой пример на Си буду рад его изучить.
Сообщение отредактировал aivs - Mar 8 2013, 20:14