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