打印

求助,C语言中断进出栈如何控制

[复制链接]
2043|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huweiping|  楼主 | 2007-5-22 13:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我的这个程序是控制电机圈数加减用.就是在当中断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;
}

相关帖子

沙发
aibxyz| | 2007-5-22 13:46 | 只看该作者

用汇编写着两个中断服务程序

实在不愿意这样的,那在两个中断后分别增加using 1 /using 2,这样中断就不会压栈很多内容了

使用特权

评论回复
板凳
huweiping|  楼主 | 2007-5-22 14:09 | 只看该作者

谢谢,是少了.还有没有办法不入栈,条件满足才出入栈

如果是用汇编写中断,我在那里面有单精度数加减运算,那样的话我还没有写过.
能不能提供给我一个例子,模仿.谢谢.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

34

帖子

0

粉丝