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--;
}
下一篇:基于51单片机抢答器的设计
- 六大全新产品系列推出,MCX A微控制器家族迎来创新
- 意法半导体全新STM32C5系列,重新定义入门级微控制器性能与价值,赋能万千智能设备
- 模组复用与整机重测在SRRC、CCC、CTA/NAL认证中的实践操作指南
- 有源晶振与无源晶振的六大区别详解
- 英飞凌持续巩固全球微控制器市场领导地位
- 使用 Keil Studio for Visual Studio Code开发 STM32 设备
- 从控制到系统:TI利用边缘AI重塑嵌入式MCU的边界
- 蓝牙信道探测技术原理与开发套件实践
- Microchip 推出生产就绪型全栈边缘 AI 解决方案,赋能MCU和MPU实现 智能实时决策
- LoRa、LoRaWAN、NB-IoT与4G DTU技术对比及工业无线方案选型分析




