51单片机按键作为外部中断控制led流水灯灯代码
时间: 2023-08-16 07:03:26 浏览: 205
基于51单片机的按键控制流水灯
以下是使用51单片机的按键作为外部中断来控制LED流水灯的代码:
```
#include <reg51.h>
sbit LED1 = P1^0;
sbit LED2 = P1^1;
sbit LED3 = P1^2;
sbit LED4 = P1^3;
sbit KEY = P3^2; //按键接在P3.2
void delay(unsigned int t) //延时函数
{
unsigned int i,j;
for(i=0;i<t;i++)
for(j=0;j<123;j++);
}
void main()
{
EA = 1; //开总中断
EX0 = 1; //开外部中断0
IT0 = 1; //设置外部中断0为下降沿触发
LED1 = LED2 = LED3 = LED4 = 0; //初始化LED灯
while(1)
{
LED1 = 1; //LED1亮
delay(500); //延时
LED1 = 0; //LED1灭
LED2 = 1; //LED2亮
delay(500); //延时
LED2 = 0; //LED2灭
LED3 = 1; //LED3亮
delay(500); //延时
LED3 = 0; //LED3灭
LED4 = 1; //LED4亮
delay(500); //延时
LED4 = 0; //LED4灭
}
}
void Interrupt0() interrupt 0 //外部中断0处理函数
{
delay(10); //延时去抖
if(KEY == 0) //判断是否按下按键
{
LED1 = LED2 = LED3 = LED4 = 0; //所有LED灯熄灭
}
}
```
以上代码中,我们使用了P1.0~P1.3口控制4个LED灯,P3.2口作为外部中断0的触发口,当按下按键时,外部中断0会被触发,执行Interrupt0()函数中的LED灯熄灭操作。当没有按下按键时,程序会一直循环执行LED流水灯效果。需要注意的是,在程序中我们加入了延时去抖,避免按键抖动导致误触发。
阅读全文