单片机中查询和中断的本质区别? 10
也查了一些资料,大体意思就是如果采用查询方式,CPU需要不断对各个外设进行轮回检查,效率较低,中断则不是。但我不太理解,这里以最简单的51单片机定时器0为例。判断定时器是...
也查了一些资料,大体意思就是如果采用查询方式,CPU需要不断对各个外设进行轮回检查,效率较低,中断则不是。但我不太理解,这里以最简单的51单片机定时器0为例。判断定时器是否溢出,采用查询方式的话,则需要不断查询溢出标志位:
while(1)
{if(TF0==1)
......
}
采用中断的话,大概程序如下:
while(1)
{if(flag==1)
......
}
其中flag为中断标志,在中断服务程序中进行赋值,一旦产生中断则将该值置1。
问题来了,第一个程序CPU需要不断查询TF0是否为1,但采用中断的第二个程序,CPU不也得反复查询flag是否是1吗?中断相对查询有提高效率的优点吗? 展开
while(1)
{if(TF0==1)
......
}
采用中断的话,大概程序如下:
while(1)
{if(flag==1)
......
}
其中flag为中断标志,在中断服务程序中进行赋值,一旦产生中断则将该值置1。
问题来了,第一个程序CPU需要不断查询TF0是否为1,但采用中断的第二个程序,CPU不也得反复查询flag是否是1吗?中断相对查询有提高效率的优点吗? 展开
2个回答
展开全部
说一下个人的理解,
什么时候用中断,
一般的单片机中断响应时间也就是一个或两个机器周期这样,所以如果我们要处理的东西要求时间很严格,那就要在中断服务程式里来出来,比如常用的发送或接收异步通信数据,发送接收遥控信号, 等等. 这个时候就要用中断来做.
什么时候用查询
一般一些处理事件要求时间不是很严格的情况下,就可以用查询来做,比如键盘扫描,等等.
你说的例子,有些单片机,计时中断后还要重先赋值给计时器COUNTER.那是一定要中断来做的.
如果你只是想知道计时器是否有中断发生而已,那查询和中断都可以看到.所以中断相对查询而言不是提高效率,而是不同的处理事件要不同的做法来做才可以达到目的.当然如果你要处理的事件很简单,不会影响到中断服务程式的正常中断,那么在中断里处理的话,效率是很提高.
看你说的例子,应该就是某个事件 要求多少时间才处理,但要求的时间准确性不会很高,时间到了,给一个标志,查询到标志了,就去出来这个事件.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询