单片机
返回首页

51单片机day4——外部中断控制LED灯亮灭

2025-09-30 来源:cnblogs

/***

*外部中断——外部中断0和外部中断1控制LED小灯

*接口:

*   LED1-2接单片机P2^0-P2^2管脚

*   独立按键K1接单片机P3^2口(单片机外部中断0在P3^2口)

*   独立按键K2接单片机P3^3口(单片机外部中断1在P3^3口)

*原理:

*   1.在设置好TCON(IT0/1=0/1)寄存器,IE寄存器后当设定的外部中断电平被拉低时会执行中断程序,中断程序执行完毕后回到原程序执行处继续执行

*   2.外部中断TCON设置:IT0/1=0(低电平触发:持续低电平则一直持续触发中断)/1(负跳沿触发:电平被拉低后执行中断程序,中断程序执行完毕后返回之前程序运行到的位置)

*思路:

*   1.LED2和LED3交替闪烁,当外部中断0触发时LED1亮起,当外部中断1触发时LED1关闭

***/

#include "reg52.h"

sbit LED1=P2^0;  //LED1接P2^0口

sbit LED2=P2^1;  //LED2接P2^1口

sbit LED3=P2^2;  //LED3接P2^2口

void cshint();  //初始化中断0和中断1函数

void delay(int); //延时函数

void main(void)

{

 cshint();   //初始化中断

 while(1)    //LED2和LED3交替闪烁

 {

  LED2=0;    //点亮LED2

  delay(10000); //延时

  LED2=1;    //关闭LED2

  LED3=0;    //点亮LED3

  delay(10000); //延时

  LED3=1;    //关闭LED3

 }

}


void cshint(void)    //初始化中断函数

{

 IT0=0;   //设置外部中断0触发方式

 IT1=0;   //设置外部中断1触发方式

 EX0=1;   //打开外部中断0的IE寄存器中断

 EX1=1;   //打开外部中断1的IE寄存器中断

 EA=1;    //打开总中断

}


void int0() interrupt 0   //设置外部中断0事件

{

 LED1=0;   //开启LED1

}


void int1() interrupt 2   //设置外部中断1事件

{

 LED1=1;   //关闭LED1

}


void delay(int i)

{

 while(i>0) i--;

}


进入单片机查看更多内容>>
相关视频
  • 【TI MSPM0 应用实战】智能小车+工业角度编码器+血氧仪+烟雾探测器!硬核参考设计详解!

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

  • 直播回放: Microchip Timberwolf™ 音频处理器在线研讨会

  • 基于灵动MM32W0系列MCU的指夹血氧仪控制及OTA升级应用方案分享

精选电路图
  • 1瓦线性调频增强器

  • 家用电器遥控器

  • 12V 转 28V DC-DC 变换器(基于 LM2585)

  • 红外开关

  • DS1669数字电位器

  • HA1377 桥式放大器 BCL 电容 17W(汽车音频)

    相关电子头条文章