巧用外部与定时器中断:实现三种模式流水灯切换(附代码)
以下是使用外部中断和定时器中断实现流水灯的示例代码: ```c #include <reg51.h> // 定义LED连接的IO口 sbit LED = P1; // 定义外部中断INT0连接的IO口 sbit SW = P3^2; // 定义定时器中断频率控制变量,用于切换流水灯时间 unsigned int t; // 定义流水灯模式变量 unsigned char mode = 0; // 定义定时器0中断服务函数 void timer0_isr() interrupt 1 { TL0 = 0x06; // 设置定时器初值 TH0 = 0x06; switch (mode) { case 0: // 模式0 LED <<= 1; // 左移一位 if (LED == 0) { LED = 0x01; // 如果最后一个灯已亮,则重置为第一个灯 } break; case 1: // 模式1 LED >>= 1; // 右移一位 if (LED == 0) { LED = 0x80; // 如果最后一个灯已亮,则重置为第一个灯 } break; case 2: // 模式2 LED ^= 0x0F; // 高低四位互换 break; } } // 定义外部中断0的中断服务函数 void ext0_isr() interrupt 0 { if (mode < 2) { mode++; // 切换模式 } else { mode = 0; // 如果已经是最后一个模式,则重置为第一个模式 } } void main() { // 定时器0的初始化 TMOD = 0x01; // 定时器0工作在模式1(16位自动重装载) TL0 = 0x06; // 设置定时器初值 TH0 = 0x06; TR0 = 1; // 启动定时器0 ET0 = 1; // 允许定时器0中断 // 外部中断INT0的初始化 IT0 = 1; // 下降沿触发 IE0 = 1; // 允许外部中断INT0 // 主循环 while (1) { // 控制流水灯切换时间 switch (mode) { case 0: t = 5000; // 0.5秒 break; case 1: t = 10000; // 1秒 break; case 2: t = 20000; // 2秒 break; } while (t--); // 等待切换时间结束 } } ``` 在以上示例代码中,使用定时器0来控制流水灯的切换时间。定时器0中断服务函数中,根据流水灯模式选择相应的操作:在模式0中,LED单个灯从左往右移动;在模式1中,LED单个灯从右往左移动;在模式2中,LED的高四位和低四位互换。外部中断0的中断服务函数中,用于切换流水灯的模式。在主循环中,通过一个延时等待切换时间结束,实现流水灯的切换。 ######[AI写代码神器 | 1428点数解答 | 2024-06-05 08:48:05]
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)369
- 页面兼具内、嵌、外三种 CSS 样式,却遇服务器繁忙提示! (GPT | 15点数解答 | 2024-06-07 00:10:01)263
- Android开发:用Intent轻松实现Activity切换与数据传递(阿里通义 | 308点数解答 | 2023-11-07 22:46:17)319
- JavaScript开发:Button插件装载、切换及复选框、单选框处理全解析(阿里通义 | 378点数解答 | 2023-11-09 01:25:25)351
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)341
- 用 JS 中 for 循环实现 1 到 100 相加并输出结果到页面的完整代码 ( | 240点数解答 | 2024-05-20 22:11:29)493
- 用 JS 的 while 循环实现 1 到 100 相加并输出到页面的代码揭秘( | 47点数解答 | 2024-05-20 22:16:48)378
- 深度解析:Vue中MVVM模式的组成、原理与双向数据绑定优势 (阿里通义 | 249点数解答 | 2023-11-09 00:56:24)275
- Android开发:Kotlin实现Builder模式示例及优势解析(百度文心 | 456点数解答 | 2023-11-09 17:29:15)258
- 工程师必知:PO模式与Page Factory的深度解析(百度文心 | 132点数解答 | 2023-11-09 18:33:18)292
- 2026 年苍溪县印刷企业年报工作:现状、问题与未来举措(字节豆包 | 1245点数解答 | 2026-03-09 12:55:05)25
- Python实现整数序列奇偶项输出(字节豆包 | 346点数解答 | 2026-03-15 02:01:10)30