你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

单片机中断的用法

[复制链接]
gaosmile 发布时间:2020-8-14 21:47
应某位朋友的要求,讲解一下单片机中断的知识,那今天就以51单片机的外部中断0为例,来简单讲解一下单片机中断的用法。
151单片机的中断源
51单片机共有5个中断源,分别为:
  • 外部中断0
  • 定时器0中断
  • 外部中断1
  • 定时器1中断
  • 串口中断
每一个中断都对应一个中断向量,中断向量表如下所示: 微信图片_20200814213328.png
2什么是中断事件
当中断发生时单片机将正在执行的程序暂时放下而去处理中断事件,当中断事件处理完毕后再接着去处理之前的事情,这样可以大大降低单片机的资源,提高执行效率。举个例子说明一下什么是中断:我很喜欢打CS,每天晚上我都会抽时间打CS,但同时厨房里正在烧水,为了不使水烧干,我每隔5分钟就去厨房看一下水有没开,但这就错过了游戏老被别人爆头干掉,我很苦恼,怎么办。于是我在网上买了一个水烧开就会叫的水壶,这样我就不用每隔5分钟去厨房了从而可以专心的打游戏,只有听到水壶吱吱叫的时候,我去把水倒出来就可以了。在这个例子里,打游戏就是主任务,水烧开就是中断,吱吱叫就是中断向量,听到吱吱响我就明白水烧开了,这时我要把打游戏这个主任务暂时放下,转而去处理水烧开了这个中断事件,水倒完后我就又回到了游戏这个主任务中。这样是不是提高了打游戏的效率呢?

3中断的硬件实现
51单片机的外部中断0引脚接一只按键,该按键通过上拉电阻接到电源,即没有按键发生时单片机检测到的是高电平,当按键按下时单片机检测到的是低电平。单片机的P0.0引脚以灌电流的方式接了一只LED,当按键按下时LED灯点亮,没按键时LED灯熄灭。 微信图片_20200814213331.jpg
4中断的软件实现
单片机中断函数的写法比较固定,51单片机中断函数的写法如下:void   Initd()   interrupt   0 其中:
  • void:为中断函数的返回类型,中断函数多为空类型;
  • Initd():是中断函数的名称,这个函数名符合C语言函数命名规范就可以,随便起;
  • interrupt:为51单片机中断的关键字,必须这么写(51单片机必须这么写);
  • 0:为中断向量,该值详看第一个表格,如果是外部中断1就写2,如果是定时器1中断就写3;
中断函数不用在主函数中调用,只要中断事件发生,单片机自己主动会调到中断函数中。该例子的函数如下所示: 微信图片_20200814213334.jpg
5仿真实现
当按键发生时,LED灯点亮,如下图所示。注意对比两种图中按键的状态 微信图片_20200814213336.jpg
收藏 评论0 发布时间:2020-8-14 21:47

举报

0个回答

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版