int0() interrupt 0 using 0
{
time1++;
}
time0() interrupt 3 using 2{
}
int1() interrupt 2 using 1{
time2++;
}
void main()
{
time1=0,time2=0;//外部中断个数清零
TMOD=0X10;//定时器T0方式1
EA=1;//CPU开中断
ET1=1;//允许定时器T0开中断
EX0=1;EX1=1;
TR1=1;//启动T0
IT0=0;//低电平触发
IT1=0;//低电平触发
while(1)
{ if(time1<10)
{ time1=0;
EW_FREE_SN_FREE();
}else if(time1<20)
{ time1=0;
EW_FREE_SN_NOR();
}
}
}
为什么当中断次数11时,程序 EW_FREE_SN_FREE();执行完后停住了;
EW_FREE_SN_FREE()是26+26=54s
EW_FREE_SN_NOR()是26+52=78s
要怎么修改啊
我不知中断一次是多少S?假设是5S 的话
去掉第1个time1=0
while(1)
{ if(time110)&&(time1>25))
{
time1=0;
EW_FREE_SN_NOR();
}
}
这样实际成了顺序执行,要if语句已无作用
while(time1<26)
{
EW_FREE_SN_FREE();
EW_FREE_SN_NOR();
time1=0;
}
不知你程序其它部分,单看这部分推测的,用了那么多中断, 不知冲突否?