51单片机:外部中断控制P2口流水灯与闪烁灯代码全解析
# 51单片机外部中断控制P2口流水灯与闪烁灯代码 以下是使用51单片机外部中断控制P2口流水灯和闪烁灯的完整代码,包含注释说明: ```c #include <reg51.h> // 包含51单片机头文件 // 定义LED灯连接端口 #define LED_PORT P2 // 函数声明 void delay(unsigned int ms); void flow_led(); void blink_led(); // 变量定义 unsigned char mode = 0; // 0-流水灯模式,1-闪烁灯模式 // 外部中断0服务函数 void ext0_isr() interrupt 0 { mode = !mode; // 切换模式 LED_PORT = 0xFF; // 关闭所有LED } // 主函数 void main() { // 初始化外部中断0 IT0 = 1; // 设置INT0为边沿触发方式 EX0 = 1; // 使能INT0中断 EA = 1; // 开启总中断 while(1) { if(mode == 0) { flow_led(); // 流水灯模式 } else { blink_led(); // 闪烁灯模式 } } } // 流水灯函数 void flow_led() { unsigned char i; for(i = 0; i < 8; i++) { LED_PORT = ~(0x01 << i); // LED从P2.0到P2.7依次点亮 delay(200); // 延时200ms } } // 闪烁灯函数 void blink_led() { LED_PORT = 0x00; // 所有LED亮 delay(500); // 延时500ms LED_PORT = 0xFF; // 所有LED灭 delay(500); // 延时500ms } // 延时函数 void delay(unsigned int ms) { unsigned int i, j; for(i = 0; i < ms; i++) for(j = 0; j < 123; j++); } ``` ## 代码说明 1. 硬件连接: - LED灯连接在P2口,P2.0-P2.7分别连接8个LED - 外部中断0(INT0)连接一个按键,用于切换模式 2. 功能说明: - 默认模式为流水灯,LED依次从P2.0到P2.7点亮 - 按下外部中断按键后切换为闪烁模式,所有LED同时亮灭 - 再次按下按键切换回流水灯模式 3. 中断配置: - IT0=1:设置INT0为边沿触发方式 - EX0=1:使能INT0中断 - EA=1:开启总中断 4. 延时函数: - 使用简单的双重循环实现延时 - 延时时间可根据实际需求调整 ## 使用说明 1. 将代码编译后烧录到51单片机 2. 连接8个LED到P2口 3. 连接一个按键到INT0引脚(P3.2) 4. 上电后LED将开始流水灯效果 5. 按下按键可切换为全LED闪烁模式 6. 再次按下按键返回流水灯模式 注意:实际延时时间可能因晶振频率不同而有所变化,可根据需要调整延时函数中的循环次数。 ######[AI问答 | 770点数解答 | 2025-06-09 09:12:31]
- C51 程序:利用外部中断 0 边沿触发实现 P2 口 8 个 LED 依次点亮及代码分析(DeepSeek | 228点数解答 | 2025-06-22 23:18:42)169
- 优化星空代码:从可读性到性能与交互的全面提升(字节豆包 | 171点数解答 | 2025-03-15 23:59:30)246
- 星空特效代码揭秘:从基础实现到性能优化全攻略(DeepSeek | 460点数解答 | 2025-03-16 00:00:00)198
- C++ 实现:求解使序列为空的最小操作次数及代码优化要点(阿里通义 | 462点数解答 | 2024-12-21 17:35:25)440
- C++ 求解序列清空最小操作次数:贪心算法与哈希表的巧妙运用(百度文心 | 812点数解答 | 2024-12-21 17:36:14)583
- C51 编程:开关状态控制 LED 闪烁与常亮,中断触发实现! (字节豆包 | 421点数解答 | 2024-11-11 12:43:19)234
- 51 单片机:中断触发,开关状态点亮 LED 并闪烁控制全解析(百度文心 | 1343点数解答 | 2024-11-11 19:35:36)349
- C52编程:利用P1开关与P2 LED,借P3.3中断实现闪烁与常亮效果 (百度文心 | 1029点数解答 | 2024-11-11 19:37:19)299
- C51编程:利用P1口开关和P2口LED,响应P3.3中断实现闪烁控制(百度文心 | 1077点数解答 | 2024-11-11 19:37:27)346
- 51 单片机:8 只发光二极管闪烁 3 次后随开关状态亮灭的代码实现及优化探讨 (字节豆包 | 377点数解答 | 2024-11-26 18:19:50)169
- C51 编程:外部中断 0 边沿触发控制 P2 口 8 个 LED 依次点亮(字节豆包 | 41点数解答 | 2025-06-22 11:25:54)159
- 8051 单片机:用外部中断 0 边沿触发实现 P2 口 8 个 LED 依次点亮(附代码与详解) (字节豆包 | 538点数解答 | 2025-06-22 11:26:15)135