asdert (07.12.2007 12:52, просмотров: 1803)
Народ посмотрите прогу, не пойму в чем глюк! Прога на 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++;
}
}
}