标题: 51单片机判断中断触发顺序问题 [打印本页]

作者: 一折    时间: 2018-4-26 18:07
标题: 51单片机判断中断触发顺序问题
两个外部中断,EX0和EX1,如果触发顺序是EX0 EX1,flag为1,如果触发顺序是EX1 EX0,flag为0,如何解决?

作者: yfpc2006    时间: 2018-4-26 19:22
//思路仅供参考
if(EX0 == 1 && EX1 == 0)
{
        flag = 1;
}
else if(EX0 == 0 && EX1 == 1)
{
        flag = 0;
}
else
{
        ;//第三种情况
}


//或者:
uchar f0,f1;

if(EX0 == 1 )
{
        f0 = 1;
}

if(f0 == 1 && EX1 == 0)
{
        f0 = 0;
        flag = 1;
}
//=============================
if(EX1 == 1 )
{
        f1 = 1;
}

if(f1 == 1 && EX0 == 0)
{
        f1 = 0;
        flag = 0;
}
//==============================
if(f0 == 1 && f1 == 1)
{
        ;//第三种情况
}


作者: 1085405788    时间: 2018-4-26 20:58
可以不错
作者: yzwzfyz    时间: 2018-4-26 22:22
这里隐含了一个重要的量:何时开始,如果没有起点,是谈不上先后的!
在刚开始的时候,并不知道谁先谁后,这时候FLAG当=?。
楼主的命题,未说明清楚!
模糊的方法是:假设两者是轮流到来的,那么:
当EX0到来时,就将FLAG清0,理由在EX0之前一定有EX1,所以认为是先EX1后EX0。
同理:
当EX1到来时,就将FLAG置1,理由在EX1之前一定有EX0,所以认为是先EX0后EX1。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1