Есть глобальная переменная flag. В начале работы ей присваивается значение ноль. По прерыванию ей присваивается значение 1. Однако при возвращении в основную программу она воспринимается как ноль, при этом в дебагере ее значение равно 1. В чем проблема не могу понять.
Использую среду разработки AVR Studio.
Код
int flag;
void init(void)
{
DDRB = 0xFB;//set direction of pins
PORTB = 0xFC;//set default value of pins
GIMSK = 0x40;//external pin interrupt is enabled
MCUCR = 0x00;
sei();
flag = 0;
}
ISR(INT0_vect)//handle of interruption
{
if (flag==0){
flag = 1;
}
}
int main(void){
int i;
init();
while(1){
if (!flag){
//что-то делается
};
};
};
Сообщение отредактировал vv_gulyaev - Oct 15 2009, 07:45