用51单片机写一个用外部中断0,控制流水灯的代码
时间: 2024-02-06 08:11:36 浏览: 76
STC 51单片机47-外部中断控制流水灯
好的,下面是用51单片机写一个用外部中断0控制流水灯的代码:
```c
#include <reg52.h> // 包含51单片机头文件
sbit LED1 = P1^0; // 定义LED1的引脚
sbit LED2 = P1^1; // 定义LED2的引脚
sbit LED3 = P1^2; // 定义LED3的引脚
sbit LED4 = P1^3; // 定义LED4的引脚
void delay(unsigned int t) // 延时函数
{
unsigned int i, j;
for (i = t; i > 0; i--)
for (j = 110; j > 0; j--);
}
void main()
{
EA = 1; // 开启总中断
EX0 = 1; // 开启外部中断0
IT0 = 1; // 设置外部中断0为下降沿触发
while (1); // 等待中断触发
}
void INT0_ISR() interrupt 0 // 外部中断0的中断服务程序
{
unsigned int i;
for (i = 0; i < 4; i++) // 控制4个LED依次亮起
{
LED1 = i == 0 ? 1 : 0;
LED2 = i == 1 ? 1 : 0;
LED3 = i == 2 ? 1 : 0;
LED4 = i == 3 ? 1 : 0;
delay(500); // 每个LED亮500ms
}
LED1 = LED2 = LED3 = LED4 = 0; // 关闭所有LED
}
```
这是一个基本的外部中断0控制流水灯的代码,当外部中断0触发时,会依次点亮4个LED,每个LED点亮500ms。在实际应用中,可以根据需要修改中断服务程序和延时函数,以实现更复杂的功能。
阅读全文