一个按键点一个灯然后又按键点一个流水灯的51单片机程序
时间: 2024-11-30 13:15:29 浏览: 20
基于51单片机的按键控制流水灯
在51单片机中编写一个简单的按键控制LED灯以及流水灯程序,通常我们会使用P0口作为IO口连接LED,定时器T1配合中断实现流水灯效果。下面是一个基础的示例程序:
```c
#include <reg52.h> // 包含51单片机头文件
// 定义GPIO口寄存器
sbit KEY = P2^0; // 按键连接到P2.0
sbit LEDS[] = {P1^0, P1^1, P1^2}; // LED分别连接到P1.0, P1.1, P1.2
void main() {
TMOD = 0x01; // 设置T1工作模式为定时器
TH1 = 0xFD; // 计算定时周期,假设周期约为10ms
TL1 = 0xFD;
EA = 1; // 开启总中断
ET1 = 1; // 开启外部中断
TR1 = 1; // 启动定时器T1
while (1) {
if (KEY == 1) { // 如果按下按键
for (int i = 0; i < sizeof(LED); i++) { // 流水灯循环点亮每个LED
LEDS[i] = 1;
delay_ms(10); // 等待一段时间再切换
LEDS[i] = 0;
}
}
// T1溢出中断处理函数
void timer1_isr() interrupt 1 {
TF1 = 0; // 清除标志位
TH1 = TL1 + 1; // 更新定时值
}
}
}
阅读全文