流水灯实验代码
时间: 2023-07-09 07:15:01 浏览: 109
以下是一个简单的流水灯实验代码,使用的是 Keil C51 编译器和 STC89C52 单片机开发板:
```
#include <REG52.H>
// 定义 LED 灯的引脚号
sbit LED1 = P1^0;
sbit LED2 = P1^1;
sbit LED3 = P1^2;
sbit LED4 = P1^3;
// 定义定时器中断处理函数
void timer0_isr() interrupt 1
{
static unsigned char cnt = 0;
cnt++;
if (cnt == 1) {
LED1 = 1;
LED2 = 0;
LED3 = 0;
LED4 = 0;
} else if (cnt == 2) {
LED1 = 0;
LED2 = 1;
LED3 = 0;
LED4 = 0;
} else if (cnt == 3) {
LED1 = 0;
LED2 = 0;
LED3 = 1;
LED4 = 0;
} else if (cnt == 4) {
LED1 = 0;
LED2 = 0;
LED3 = 0;
LED4 = 1;
cnt = 0;
}
}
// 主函数
void main()
{
// 初始化定时器 0
TMOD = 0x01; // 定时器 0 工作在模式 1(16 位定时器)下
TH0 = 0x4c; // 定时器初值,0x4c00 对应 1ms 中断间隔
TL0 = 0x00;
ET0 = 1; // 允许定时器 0 中断
EA = 1; // 允许总中断
TR0 = 1; // 启动定时器 0
while (1) {
// 主程序空转
}
}
```
以上代码实现了四个 LED 灯的流水灯效果,使用定时器中断控制灯的亮灭时间,可以在单片机开发板上测试。
阅读全文