历史上的今天
返回首页

历史上的今天

今天是:2026年01月12日(星期一)

正在发生

2023年01月12日 | 51单片机外部中断点亮LED

2023-01-12 来源:zhihu

外部中断软件设计原理

中断发生的三个条件

①中断源有中断请求;

②此中断源的中断允许位为 1;

③CPU 开中断(即 EA=1)。

比如我们配置外部中断 0,对应的配置程序如下:

EA=1;//打开总中断开关

EX0=1;//开外部中断 0

IT0=0/1;//设置外部中断的触发方式(下降沿触发)

如果要配置的是外部中断 1,只需将 EX0 改为 EX1,IT0 改为 IT1

在编写程序时通常我们会将外部中断的配置放到一个自定义函数内便于管

理维护。如下伪代码所示:

void Int0Init()


{

//设置 INT0

IT0=1;//边沿触发方式(下降沿)

EX0=1;//打开 INT0 的中断允许。

EA=1;//打开总中断

}

/*当触发中断后即会进入中断服务函数,外部中断 0 中断服务函数如下:*6/

void Int0() interrupt 0

//外部中断 0 的中断函数

{

//执行所需的功能

}


硬件实现原理

实现的功能:使用独立按键 K3 控制 LED 亮灭,K3 连接外部中断0(P3.2)管脚。

原理图:

左图为独立按键原理图,右图为LED原理图


实现原理:

要想使用外部中断 0 控制 LED,就必须通过单片机外部中断管脚与按键 K3 连接。由于开发板上部分模块电路是集成的,所以直接使用单片机 P3^2 和 P2^0 管脚即可。

代码实现

#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器

typedef unsigned int u16; //对数据类型进行声明定义

typedef unsigned char u8;

sbit k3=P3^2; //定义按键 K3

sbit led=P2^0; //定义 P20 口是 led


/*

* 函 数 名 : delay

* 函数功能 : 延时函数,i=1 时,大约延时 10us

*/

void delay(u16 i)

{

while(i--);

}


/*

* 函 数 名 : Int0Init()

* 函数功能 : 设置外部中断 0

* 输 入 : 无

* 输 出 : 无

*/

void Int0Init()

{

//设置 INT0

IT0=1;//跳变沿出发方式(下降沿)

EX0=1;//打开 INT0 的中断允许。

EA=1;//打开总中断

}


/*

* 函 数 名 : main

* 函数功能 : 主函数

* 输 入 : 无

* 输 出 : 无

*/

void main()

{

Int0Init(); // 设置外部中断 0

while(1);//等待下降沿的产生,若k3按键按下,下降沿产生,立即进入中断服务函数

}


/*

* 函 数 名 : Int0() interrupt 0

* 函数功能 : 外部中断 0 的中断函数

* 输 入 : 无

* 输 出 : 无

*/

void Int0() interrupt 0 //外部中断 0 的中断函数

{

delay(1000); //延时消抖

if(k3==0)  //判断按键是否按下

{

led=~led;  //控制灯亮或灯灭

}

}


推荐阅读

史海拾趣

ETA-USA公司的发展小趣事

ETA-USA公司起源于XXXX年,当时由几位电子工程领域的先驱者在美国密歇根州的Troy市创立了这家专注于电子技术和解决方案的公司。初创时期,ETA-USA面临着技术挑战、资金短缺和市场竞争激烈等多重困难。然而,通过不断创新和提供高质量的工程服务,公司逐渐在电子行业崭露头角,赢得了客户的信任。

Greenray Industries Inc公司的发展小趣事

GreenTech还致力于绿色照明技术的研发和推广。公司推出了一系列高效节能的LED照明产品,包括智能路灯、室内照明系统等。这些产品不仅具有长寿命、低能耗等优点,还通过智能控制实现了按需照明,进一步降低了能耗。GreenTech积极与各地政府和企业合作,推动绿色照明技术在城市照明、工业照明等领域的广泛应用,为节能减排和环境保护做出了积极贡献。

Actel公司的发展小趣事

为了加速绿色技术的推广和应用,GreenTech积极寻求与全球知名企业的战略合作。例如,公司与一家国际领先的电动汽车制造商达成合作协议,共同研发用于电动汽车的高效电池管理系统。通过这一合作,GreenTech不仅提升了自身在电池技术领域的竞争力,还成功将绿色技术应用于实际产品中,推动了电动汽车行业的绿色发展。

Holt Integrated Circuits公司的发展小趣事

自成立以来,Holt Integrated Circuits便专注于为航空电子行业提供高性能的集成电路解决方案。四十多年来,Holt始终站在技术前沿,为全球超过400家制造商提供模拟和混合信号IC数据总线解决方案。从F-16到A-350等先进飞行器,Holt的IC产品已成为飞行控制、导航、发动机管理、通信、安全系统及机上娱乐系统的核心部件。这种长期且稳定的合作关系,不仅奠定了Holt在航空电子领域的领导地位,也推动了整个行业的技术进步。

Benchmarq Microelectronics Inc公司的发展小趣事

在国内市场取得一定成绩后,Benchmarq Microelectronics Inc开始积极拓展国际市场。公司积极参加国际电子展会和交流活动,与国际同行建立合作关系,将产品打入国际市场。同时,公司还加强品牌建设,提升品牌知名度和美誉度。通过广告宣传、媒体报道等多种方式,公司成功塑造了专业、可靠的品牌形象,赢得了客户的信任和认可。

永源微电子(APM)公司的发展小趣事

随着产品线的拓展和技术实力的增强,永源微电子开始积极拓展市场。公司在台湾、深圳、香港、无锡等地设立了研发与销售中心,通过多渠道的市场推广和品牌建设活动,不断提升“APM”品牌的知名度和影响力。同时,永源微电子还积极参加国内外电子行业的展会和交流活动,与业界同行建立了广泛的合作关系,进一步拓展了公司的市场版图。

问答坊 | AI 解惑

后级是用IGBT管子的电鱼器

后级是用IGBT管子的电鱼器…

查看全部问答>

9G-LINUX嵌入式开发书籍推荐(附WINCE部分)

来源:我的博客:http://blog.163.com/yuan_xihua/blog/static/3074054420087135650488/ 一,编程语言部分1,C语言 《C语言大全(第四版)》  市场价 :¥48.00 【原 书 名】 The Complete Referene,Fourth Edition   【 ...…

查看全部问答>

QuartusII7.2SP3破解文件

QuartusII7.2SP3破解文件…

查看全部问答>

电源模块测试规范

电源模块测试规范…

查看全部问答>

s3c2410 Nand flash 驱动问题

在看2.4.18内核的关于三星的nand flash 驱动时遇到一个地方没有看明白,请指教 使用的nand flash 为 k9f1208 其中有个函数:作用是向flash发送一个地址 static void s3c2410_command (struct mtd_info *mtd, unsigned command, int column, int ...…

查看全部问答>

招聘 兼职嵌入式Linux讲师 (上海)

招聘嵌入式Linux讲师,工作地点上海,要求如下: 1、具有3年或以上相关领域工作经验 2、熟悉嵌入式Bootloadr 3、熟悉Linux 内核及实时系统 4、熟悉Linux驱动 5、熟悉Linux设备驱动 6、熟悉嵌入式文件系统 工作时间可在周末,一经录用 ...…

查看全部问答>

【晒经典】1.25—30V稳压可调电源电路

本帖最后由 dontium 于 2015-1-23 13:24 编辑 LM117/LM317是美国国家半导体公司的三端可调正稳压器集成电路。我国和世界各大集成电路生产商均有同类产品可供选用,是使用极为广泛的一类串联集成稳压器。 LM117/LM317 的输出电压范围是1.2V 至3 ...…

查看全部问答>

【白皮书分享】为无线扩容铺平道路

作者:Ralf Bendlin,德州仪器系统工程师Tony Ekpenyong,德州仪器系统工程师Debbie Greenstreet,德州仪器战略市场营销   摘要       智能手机与其它手持设备的发展以及其上数据消费应用的大量繁衍生息,不 ...…

查看全部问答>

请各位大大能不能给我说明下这张图的工作原理

谢谢请告诉我这张图的工作原理好吗谢谢!…

查看全部问答>

INOUT引脚:在FPGA中使用方法

INOUT引脚: 1.FPGA IO在做输入时,可以用作高阻态,这就是所说的高阻输入; 2.FPGA IO在做输出时,则可以直接用来输入输出。 芯片外部引脚很多都使用inout类型的,为的是节省管腿。就是一个端口同时做输入和输出。 inout在具体实现上一般用 ...…

查看全部问答>