今天就以51单片机的外部中断0为例,来简单讲解一下单片机中断的用法。 151单片机的中断源 51单片机共有5个中断源,分别为:
每一个中断都对应一个中断向量,中断向量表如下所示: 2什么是中断事件 当中断发生时单片机将正在执行的程序暂时放下而去处理中断事件,当中断事件处理完毕后再接着去处理之前的事情,这样可以大大降低单片机的资源,提高执行效率。举个例子说明一下什么是中断:
在这个例子里,打游戏就是主任务,水烧开就是中断,吱吱叫就是中断向量,听到吱吱响我就明白水烧开了,这时我要把打游戏这个主任务暂时放下,转而去处理水烧开了这个中断事件,水倒完后我就又回到了游戏这个主任务中。这样是不是提高了打游戏的效率呢? 3中断的硬件实现 51单片机的外部中断0引脚接一只按键,该按键通过上拉电阻接到电源,即没有按键发生时单片机检测到的是高电平,当按键按下时单片机检测到的是低电平。单片机的P0.0引脚以灌电流的方式接了一只LED,当按键按下时LED灯点亮,没按键时LED灯熄灭。 4中断的软件实现 单片机中断函数的写法比较固定,51单片机中断函数的写法如下: void Initd() interrupt 0 其中:
中断函数不用在主函数中调用,只要中断事件发生,单片机自己主动会调到中断函数中。 该例子的函数如下所示: 5仿真实现 当按键发生时,LED灯点亮,如下图所示。注意对比两种图中按键的状态。
|
|