完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
今天就以51单片机的外部中断0为例,来简单讲解一下单片机中断的用法。
1 51单片机的中断源 51单片机共有5个中断源,分别为: 外部中断0 定时器0中断 外部中断1 定时器1中断 串口中断 每一个中断都对应一个中断向量,中断向量表如下所示: 2 什么是中断事件 当中断发生时单片机将正在执行的程序暂时放下而去处理中断事件,当中断事件处理完毕后再接着去处理之前的事情,这样可以大大降低单片机的资源,提高执行效率。举个例子说明一下什么是中断: 我很喜欢打CS,每天晚上我都会抽时间打CS,但同时厨房里正在烧水,为了不使水烧干,我每隔5分钟就去厨房看一下水有没开,但这就错过了游戏老被别人爆头干掉,我很苦恼,怎么办。于是我在网上买了一个水烧开就会叫的水壶,这样我就不用每隔5分钟去厨房了从而可以专心的打游戏,只有听到水壶吱吱叫的时候,我去把水倒出来就可以了。 在这个例子里,打游戏就是主任务,水烧开就是中断,吱吱叫就是中断向量,听到吱吱响我就明白水烧开了,这时我要把打游戏这个主任务暂时放下,转而去处理水烧开了这个中断事件,水倒完后我就又回到了游戏这个主任务中。这样是不是提高了打游戏的效率呢? 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灯点亮,如下图所示。注意对比两种图中按键的状态。 |
|
|
|
只有小组成员才能发言,加入小组>>
2513 浏览 0 评论
1083浏览 2评论
700浏览 1评论
452浏览 0评论
193浏览 0评论
329浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 06:03 , Processed in 1.099731 second(s), Total 78, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号