产品选型

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

小编 2024-10-08 产品选型 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单片机 外部中断0 没有按下按键就会自动进入?

这是不可能的,不是程序有问题就是电路有问题。你先自己检查,自己不能解决就贴程序代码和电路图,帮你分析。这是不可能的,不是程序有问题就是电路有问题。你...

单片机 试题解答1.当CPU响应 外部中断0 后,... _作业帮

[最佳回答]一,选择题1.当CPU响应外部中断0后,PC的值是(A)A.0003HB.2000HC.000BHD.3000H2.当MCS-51复位时,下面说法准确的是(A)A.PC=0000HB....

51单片机 的哪个口具有外 中断 的作用?

基本型mcs51单片机有两个外部中断引脚,分别是P3.2和P3.3。现在以stc为代表的生产厂家研发出了多款扩展型的51单片机,以STC8A单片机为例,又增加了P3.6和P3.7...

51单片机 有哪几个内部 中断 ?

mcs-51单片机有5个中断源,分别为:1.外部中断0(INT0):默认中断级别最高,中断入口地址0003H;2.定时/计数器0(T1):默认中断级别第2,中断入口地址000BH;3.外....

51单片机 中的 外部中断 有什么作用?

实际应用中这个开关什么时候按下去是不确定的,你能用程序实现吗?最简单的就是报警,比如电路中过流监测,你怎么知道什么时候什么时候电流会过大?如果你把过流...

单片机51 ,两个 外部中断 不能同时使用,就是这个...

同时有多个中断的话,就要考虑中断优先级的问题了。51单片机,默认的中断优先级是:外中断0>定时器0>外中断1>定时器1>串口由于低级中断不能打断高级...51单...

mcs- 51单片机 中断 源有哪些?

51单片机总共有5个中断源,分别为:外部中断0(int0),对应中断号是0,中断入口地址0003h定时/计数器0(t1),对应中断号1,中断入口地址000bh外部中断1(int1...

51单片机 汇编如何用 外部中断 实现暂停?

问题是:一个程序暂停,还有其它程序在执行吗?主循环程序也暂停吗?那就设置一个标志位,中断后,标志为1,再次中断,又恢复为0。回主循环程序,如果标志...问题...

80C 51单片机 有哪些 中断 源?它们对应的 中断 入口地址分别是什么?

AT89S51共有5个中断向量:2个外中断(INT0和INT1),2个定时中断(Timer0和Timer1)和一个串行中断。中断入口地址如下:外部中断INT00003H定时器0...AT89S51...

80c 51外部中断 有哪两种触发方式?

有两种方式:下降沿触发方式和低电平触发方式80C51单片机属于MCS-51系列单片机,由Intel公司开发,其结构是8048的延伸,改进了8048的缺点,增加了如乘(MUL)、...

猜你喜欢