void interrupt3_init()
{
EIMSK|=0x08;//使能外部3中断
EICRA=0x80; //INT3下降沿触发中断
MCUCSR=0X00;
}
void djfz() //电机反转
{
uchar a,b,k;
for(k=n;k>0;k--)//转动10圈
{
if(motorstop==1)
{
break;
}
for(b=0;b<50;b++)//逆时针转一圈
{
if(motorstop==1)
{
break;
}
for(a=0;a<4;a++)
{
if(motorstop==1)
{
break;
}
PORTC=table0[a];
delay_ms(5);
}
// if(flag==1)
// break;;
}
// if(flag==1)
// break;
}
}
ISR(INT3_vect)
{
SREG|=0X00;
for(i=0;i<20;i++)
{
motorstop=1;
delay_ms(5);
}
// motorstop=1;//电机停止
//djfz();
SREG|=0X80;
}
int main()
{
system_init();
interrupt3_init();
motorstop=0;
n=10;
SREG|=0X80;
while(1)
{
// if(motorstop==1)
// break;
djfz();
}
}
为什么触发中断后电机不能立刻停下来,急。。。。 |