历史上的今天
返回首页

历史上的今天

今天是:2024年08月23日(星期五)

正在发生

2021年08月23日 | 51单片机-中断函数

2021-08-23 来源:eefocus

1.中断函数概念

上一讲里,当赋值IT0为1时,P3.2遇到下降沿,IE0被置1,要想使IE0自动清零,我们引用中断函数就可以了。


我们可能已经习惯了都是在main函数里阅读分析代码,其实还有另一种函数需要我们认识的,那就是中断函数。所谓中断函数就是当它满足一定的条件时就会暂停主函数的执行内容,转而去执行中断函数。关于这个概念网上很多说法都已经讲解的很详细了,这里点一下即可。


因为我们擅长的是从实践中领悟真理,所以后面我们尽量用例程去理解中断函数。

 

2.中断函数的书写

中断函数与其他我们封装过的子函数的写法不同,有个区分标志“interrupt”。

至于后面为什么会有个数字0我们以后再讲。

6.8.png?imageView2/2/w/550

当然函数名我们可以随意取,只要不跟以前封装定义好的函数名冲突就行。这里我们取“EXTI0_IRQHandler”作为函数名是模仿STM32单片机的写法。

 

3.EX0和EA

我们说过要想进入中断函数,必须满足它的一些前提条件。这里的EX0(IE^0)和EA(IE^7)要初始化赋值给1才能进入的了中断函数去执行任务。

EA叫做总中断开关,EX0是针对P3.2的外部中断的开关。

也就是要想进入中断函数必须满足两个开关都要闭合(都为1)。


6.9.png?imageView2/2/w/550


4.实战

同样像上一讲那样拔插杜邦线观察现象,可以看到程序中IE0的身影不再出现但实现功能也都是一样的


#include  

#include //详见第六章第8讲

 

void main()

{  

    IT0 = 1;    //下降沿触发模式

    EX0 = 1;

    EA  = 1;

   

    LED_Init(); //初始化LED硬件模块 

    while(1);   //主函数什么事都不做,空循环这条语句

}

  

void EXTI0_IRQHandler() interrupt 0

{

    LED2=!LED2; 

}


所以看起来主函数什么内容也没有,但是在拔插杜邦线的过程中触发了中断函数,所以LED2被执行跳变,这就是中断函数的作用。


即使主函数一直执行“while(1);”,中断函数还是能执行的了的。


大家把“EX0=1;”改为“EX0=0;”,或者把“EA=1;”改为“EA=0;”再编译下载进去拔插杜邦线发现LED2没有反应,因为这样做已经不满足触发中断函数响应了。

推荐阅读

史海拾趣

Advanced Illumination Inc公司的发展小趣事

随着技术的不断进步,Ai公司在LED照明光源领域取得了重大突破。公司成功研发出了一系列高效、稳定、可靠的LED光源产品,这些产品不仅性能卓越,而且设计新颖,满足了市场对于高质量照明光源的迫切需求。同时,公司还不断创新,推出了多款具有自主知识产权的新型LED光源,进一步巩固了公司在行业内的领先地位。

德力西(DELIXI)公司的发展小趣事

进入新世纪后,德力西开始全国化布局和多元化发展。1998年,在上海注册成立了上海德力西集团有限公司,与西安高压电器研究所联合生产高压电器和成套设备。此外,德力西还积极参与国企改革,整体并购了杭州西子(集团)公司,并进入环保领域,建设垃圾处理及水处理项目。这些举措使德力西在电子行业的地位更加稳固。

DAVE Embedded Systems公司的发展小趣事

DAVE Embedded Systems公司于1998年在意大利创立,其初衷是提供嵌入式系统解决方案。在成立初期,公司只有几名工程师和有限的资金,但他们凭借对技术的热爱和对市场的敏锐洞察力,成功设计并销售出了第一款基于微处理器和Linux平台的嵌入式系统模块(SOM)。这款产品因其高性价比和出色的性能,很快赢得了市场的认可,为公司的发展奠定了基础。

台湾固锝(GD)公司的发展小趣事
检查所有元件和电路的连接是否正确无误。
Daewoo公司的发展小趣事

随着金融危机的持续影响,Daewoo汽车公司最终未能幸免于难。2000年,大宇汽车公司宣告破产。然而,就在此时,美国通用汽车公司看到了Daewoo汽车公司的潜力和价值,决定对其进行收购。这一收购不仅为Daewoo汽车公司带来了新的生机,也使其能够借助通用汽车的技术和管理经验实现转型和升级。

Helium公司的发展小趣事

随着Helium在物联网领域的不断突破和发展,其市场认可度逐渐提升。在2021年,Helium通过Token销售完成了1.11亿美元的融资;次年年初,又以12亿美元估值完成了2亿美元的D轮融资。这些融资的成功不仅为Helium提供了充足的资金支持,也进一步验证了其在物联网和区块链领域的商业价值和发展潜力。同时,Helium还吸引了众多明星机构和投资者的青睐,为其未来的发展奠定了坚实的基础。

问答坊 | AI 解惑

滤波器设计基础

滤波器基础设计讲义   …

查看全部问答>

新手问题:二极管怎样确定A.K

 我画的PCB中的二极管始终没有连线.是不是需要定义A.K啊?该如何定义呢??…

查看全部问答>

基于硬件构件的嵌入式底层软件开发方法研究及其应用

200892_荐红梅--基于硬件构件的嵌入式底层软件开发方法研究及其应用…

查看全部问答>

谁有MS-DOS 3.1的软件?

网上找了很多,都没法使用。 大家有没有可以分享的?…

查看全部问答>

求ISD4003 资料

请问哪位高手 有关ISD4003 语音芯片   C版本的…

查看全部问答>

求助:(TFTP)TIMEOUT waiting for Ack block

我是个新手,用一块板子s3c2510测试了下tftp的功能,发现程序中定义的的包结构,都偏移了两个字节发送出去,在发送前人为添加了两个字节,可以正常与tftpserver通信了,并能下载104K 的BIN文件, 但在下载稍微大点的应用文件(大约4M)时,总会报 ...…

查看全部问答>

急求msp430控制led自动调光电路图

方案为:利用光敏电阻监测光强输送给msp430,通过msp430改变led两端电压的占空比以调光…

查看全部问答>

NUC100VE3AN如何读写IS61C6416AL

/*请教下各位大侠  为什么读出来的数据老是等于0呢  麻烦各位这点一下*/ #include #include \"NUC1xx.h\" #include \"DrvGPIO.h\" #include \"DrvSYS.h\" /*$$$$$$$$$$$$$$$$$RAM$$$$$$$$$$$$$$$$$$$$$$*/ #define& ...…

查看全部问答>

哪位大牛给介绍一款常用的内部带flash的fpga

哪位大牛给介绍一款常用的内部带flash的fpga 领导非要用内部带flash的,小弟新手找了好久爱也没找到,不知道从手册的哪里能够看出来有没有内置flash。 我们公司以前的产品里面貌似只有XC3S50AN-4TQ144C这个里面有,但是这个的资源不够用…

查看全部问答>

MAX913比较器外围电路如何搭建

刚学习一下MAX913比较器,一开始外围电路没用电阻,直接输入输出,LE脚接的地,可是把正玄波转换成方波总是出现问题   几百Khz时仿真就出现错误:本来应该高电平的却出现多个三角波 。再网上找别人的经验,试试还是不行   有 ...…

查看全部问答>