技术文档

51单片机外部中断实验 51单片机外部中断0实例详解

小编 2024-10-10 技术文档 23 0

51单片机外部中断0实例详解

今天就以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灯点亮,如下图所示。注意对比两种图中按键的状态

本订阅号致力于单片机、ARM等嵌入式软硬件的设计经验分享,秉承“人人都是电子设计经验的分享者”的理念,成功路上不孤单,我们一起努力。公众号:micropoint8,对于本节内容欢迎大家讨论。

51单片机外部中断的总结

51单片机的外部中断有两种触发方式可选:电平触发和边沿触发。选择电平触发时,单片机在每个机器周期检查中断源口线,检测到低电平,即置位中断请求标志,向CPU请求中断。选择边沿触发方式时,单片机在上一个机器周期检测到中断源口线为高电平,下一个机器周期检测到低电平,即置位中断标志,请求中断。

这个原理很好理解。但应用时需要特别注意的几点:

1) 电平触发方式时,中断标志寄存器不锁存中断请求信号。也就是说,单片机把每个机器周期的S5P2采样到的外部中断源口线的电平逻辑直接赋值到中断标志寄存器。标志寄存器对于请求信号来说是透明的。这样当中断请求被阻塞而没有得到及时响应时,将被丢失。换句话说,要使电平触发的中断被CPU响应并执行,必须保证外部中断源口线的低电平维持到中断被执行为止。因此当CPU正在执行同级中断或更高级中断期间,产生的外部中断源(产生低电平)如果在该中断执行完毕之前撤销(变为高电平)了,那么将得不到响应,就如同没发生一样。同样,当CPU在执行不可被中断的指令(如RETI)时,产生的电平触发中断如果时间太短,也得不到执行。

2)边沿触发方式时,中断标志寄存器锁存了中断请求。中断口线上一个从高到低的跳变将记录在标志寄存器中,直到CPU响应并转向该中断服务程序时,由硬件自动清除。因此当CPU正在执行同级中断(甚至是外部中断本身)或高级中断时,产生的外部中断(负跳变)同样将被记录在中断标志寄存器中。在该中断退出后,将被响应执行。如果你不希望这样,必须在中断退出之前,手工清除外部中断标志。

3)中断标志可以手工清除。一个中断如果在没有得到响应之前就已经被手工清除,则该中断将被CPU忽略。就如同没有发生一样。

4)选择电平触发还是边沿触发方式应从系统使用外部中断的目的上去考虑,而不是如许多资料上说的根据中断源信号的特性来取舍。比如,有的书上说(《Keil C51使用技巧及实战》),就有类似的观点。

相关问答

51单片机外部中断 的工作过程?

外部信号触发外部硬件中断,现场保护,数据进栈保存,pc指针跳至中断服务程序入口处,外部信号触发外部硬件中断,现场保护,数据进栈保存,pc指针跳至中断服务程序...

mcs 51单片机 响应 外部中断 最长时间为多少?

1.mcs51单片机响应外部中断最长时间为2个机器周期。2.这是因为mcs51单片机在接收到外部中断信号后,需要进行一系列的处理操作,包括保存现场、跳转到中断服务...

单片机 复习题答案1、在MCS- 51单片机 中,需要软件实现 中断 撤...

[最佳回答]1、在MCS-51单片机中,需要软件实现中断撤销的是(A).A、定时器T中断\x09\x09B、外部中断C、串口中断\x09\x09D、都需要2、单片机程序存储器的寻址...

51单片机 外部中断 如何写按键消抖c程序?

跟外部的按键消抖一样处理就可以了。voidext0()interrupt0{delay(10);//flag=0;//按键有效标志=0为无效if(P3_2){while(!P3_2...

51单片机 外部中断 申请标志位IE0IE1有什么用?在程序中怎么用?

外部中断0:IE0,开放中断后,当INT0引脚有下降沿或者低电平时产生,响应中断后自然清0,外部中断1:IE1开放中断后,当INT1引脚有下降沿或者低电平时产生,响应中...

51单片机 中断 源 和 中断 入口?

51单片机的中断源就是指能够打断当前顺序执行的功能模块,比如外部中断事件源,定时器中断事件源,通讯模块数据发送接收中断源等。中断入口是指打断当前顺序执行...

51 汇编 中断 哪来的?

51单片机的中断源就是产生中断的源头,可以使外部中断0、外部中断1、定时器/计数器0、定时器/计数器1、串行接口。这些中断源可由用户自由配置,可以使用也可以...

51单片机 ,用 外部中断 0和外部中断1实现:1个七段LED数码管显示值加1和减1。程序怎么编?

另类计数器,仿真实例,可以参考一下,仿真试试。功能,1个主机---3个从机,主机按键1#、2#、3#、分别控制从机1、2、3、按钮按一下加1,从机x1#控制主机...

51单片机中断 系统程序实例?

/*硬件:AT89S52@12MHz*//*P1控制输入与输出,或非门4002进行逻辑判断,*//*...

AT89S 51单片机 有哪几种 中断 源?

AT89S51有5个中断源:(1)INT0:外部中断0请求,低电平有效。通过P3.2引脚输入。(2)INT1:外部中断1请求,低电平有效。通过P3.3引脚输入。(3)T0:定时器/...AT...

猜你喜欢