我的这个程序是控制电机圈数加减用.就是在当中断1先中断就置一个标志位,再来中断0就对这个数进行加一,如是先中断0再中断1就是减一,这二个中断感应器比较近时间上相差10-20us,就在一个中断后10-20us别外一个中断就来了.先中断的那个中断里面没有进行数数据加减,只是置个标志位,后中断的那个才进行数据加减.现在的问题就是先中断那个也进行入出栈,那样话10-20us后另外一个中断来的时候就没有来的及处理,如果不入出栈,直接给一个标位后就退出就可以有时间才响应另外一个中断进行加减了.
int count,set;
bit add,subbcount;
void ex0int() interrupt 0 { if(subbcount==1) //中断1已中断 {
if(++count<=set) moto=0;//圈数加1与设置相等电机停止运行
subbcount=0; }
else add=1; //没中断断置标志位 }
void ex0int() interrupt 2 { if(add==1) //中断0已中断
{
if(--count<=set) moto=0;//圈数减1与设置相等电机停止运行
add=0; }
else subbcount=1; }
|