51单片机中断用法实例解析

控制/MCU

1811人已加入

描述

今天就以51单片机的外部中断0为例,来简单讲解一下单片机中断的用法。

151单片机的中断源

51单片机共有5个中断源,分别为:

外部中断0

定时器0中断

外部中断1

定时器1中断

串口中断

每一个中断都对应一个中断向量,中断向量表如下所示:

串口中断

2什么是中断事件

当中断发生时单片机将正在执行的程序暂时放下而去处理中断事件,当中断事件处理完毕后再接着去处理之前的事情,这样可以大大降低单片机的资源,提高执行效率。举个例子说明一下什么是中断:

在这个例子里,打游戏就是主任务,水烧开就是中断,吱吱叫就是中断向量,听到吱吱响我就明白水烧开了,这时我要把打游戏这个主任务暂时放下,转而去处理水烧开了这个中断事件,水倒完后我就又回到了游戏这个主任务中。这样是不是提高了打游戏的效率呢?

3中断的硬件实现

51单片机的外部中断0引脚接一只按键,该按键通过上拉电阻接到电源,即没有按键发生时单片机检测到的是高电平,当按键按下时单片机检测到的是低电平。单片机的P0.0引脚以灌电流的方式接了一只LED,当按键按下时LED灯点亮,没按键时LED灯熄灭。

串口中断

4中断的软件实现

单片机中断函数的写法比较固定,51单片机中断函数的写法如下:

void Initd() interrupt 0

其中:

void:为中断函数的返回类型,中断函数多为空类型;

Initd():是中断函数的名称,这个函数名符合C语言函数命名规范就可以,随便起;

interrupt:为51单片机中断的关键字,必须这么写(51单片机必须这么写);

0:为中断向量,该值详看第一个表格,如果是外部中断1就写2,如果是定时器1中断就写3;

中断函数不用在主函数中调用,只要中断事件发生,单片机自己主动会调到中断函数中。

该例子的函数如下所示:

串口中断

5仿真实现

当按键发生时,LED灯点亮,如下图所示。注意对比两种图中按键的状态。

串口中断

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
评论(0)
发评论
jf_23321919 2022-03-27
0 回复 举报
讲的真好 收起回复

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分