使用51单片机AT89C52使用定时器实现流水灯代码
时间: 2025-02-16 17:16:11 浏览: 149
在51单片机AT89C52中,可以利用T0或T1定时器配合P0、P1等I/O口来实现流水灯效果。下面是一个简单的使用定时器T0的例子,假设我们有8个LED通过P0口连接:
```c
#include <reg52.h>
sbit LED_0 = P0^0; // 第0个LED映射到P0.0
// ... 以此类推,其他LED依次映射到P0.1至P0.7
void delay(unsigned int cnt) {
while (cnt--) {
__asm__("nop");
}
}
void main() {
TMOD = 0x01; // 设置T0工作于模式1(16位计数)
TH0 = 0xFF; // 高8位寄存器设置最高频率
TL0 = 0xFD; // 低8位寄存器设置周期
ET0 = 1; // 开启T0溢出中断
EA = 1; // 开启全局中断
TR0 = 1; // 启动T0
while(1) {
for(int i=0; i<8; ++i) { // 从第一个LED开始循环点亮
LED_0 = !LED_0; // 点亮LED
delay(25); // 持续时间大约25ms,根据实际需求调整
}
// 为了让LED呈现流动的效果,需要在每个LED亮起的同时,下一个LED熄灭
// 为了简单起见这里省略了LED_0=0的操作
}
}
阅读全文
相关推荐


















