 asdert (07.12.2007 12:52, просмотров: 1960)
 asdert (07.12.2007 12:52, просмотров: 1960)
Народ посмотрите прогу, не пойму в чем глюк! Прога на WINAVR, работаю с avrstudio4.13 SP1 Build 557
По нажатию кнопки PIND2(высокий уровень) срабатывает прерывание, переменная BUTTON принимет значение = 1, а основная прога далжна проверять значение этой  переменной, и если оно = 1, то переменная fr должна увеличиваться (инкремент), НО ПРОГА ЭТОГО НЕ ДЕЛАЕТ, при проверке disassembler-ом  регистр, куда пишется значение BUTTON, не изменяет свое значение - он всегда =0 
#include 
#include 
//***************************
int BUTTON,fr;
//**************************
void Interrupt_initialization(void)
{
   EICRA=1;
   EIMSK=1;//3;
}
//**************************
ISR(INT0_vect)               // прерывание от клавиши PIND2
    {
        BUTTON = 1; 
    }
//***********************
int main (void)
{
	cli();
	Interrupt_initialization();
	sei();	
	while (1)
	{	
		if (BUTTON == 1)
		{
			BUTTON=0;
			fr++;  
		}
	}
}