如果了解 使能中断 和 中断标志位发生置位的 本质,就不会产生以下疑问了,不过没时间去了解,只能先用下面的结论了
为什么不使能中断,中断标志位也会被置一
不使能中断,不影响中断标志位的变化,但是程序不会跳转到中断处理函数入口的地址处,去执行中断程序了
使能中断的情况下,中断标志位不清除, 结果是完成中断处理程序后, 它就继续再进中断, 根本不会回到主程序。
注意:中断标志位,,,置一时,由硬件置一。。置零时,可以硬件置零(即硬件置零),也可以程序员置零(软件置零)。
中断标志位硬件清零(自动清零)和软件清零(程序员用程序清零)
举一个我在项目开发中用到的实例
必须由MCU清零才能使中断复位——–他这里的意思应该是软件复位,

今天才发现我用了这么长时间的中断服务函数,竟然不知道中断请求标志位到底具体是什么意思~~~悲哀!!!
一般就用了定时器中断服务函数,没关心中断请求标志位,今天才发现,原来定时器中断请求标志位就是定时器溢出标志位,定时器溢出时自动跳到相应中断向量处,当主机响应该定时器中断时,该标志位由硬件自动清零。所以,我虽然写了定时器中断服务函数,而没操作定时器溢出标志位,程序还能运行,是因为单片机自己把这事儿给办了~~是典型的瞎猫碰到死老鼠
对于外部中断,其中断请求标志位跟定时器溢出标志位相似,都是主机相应中断后自动硬件清零,所以,也不必考虑需要不需要软件清零
串行口中断就不一样了,它分为发送中断标志位和接受中断标志位,在方式0中,当发送完或者接受完第八位数据后,由硬件置位,而其他工作方式下,(发送时)当发送停止位前或者(接收时)当接受到停止位的中间时刻由硬件置位。标志位置位象征着一帧数据的操作完成,继而转到中断服务函数,但是,这些标志位不能由硬件清零,只能用软件清零。
其他扩展的单片机,还有N多可以产生中断的功能,如果写中断服务函数,就要看清楚这些中断标志位了,看下到底需要不需要软件清零,需要软件清零但是不软件清零的,可能就要死在终端服务函数中了~~~~~~应该是吧,至少我这么理解
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!