C51点亮led 使用数组从上到下依次点亮
时间: 2024-09-26 19:03:19 浏览: 36
在C51语言中,要使用数组控制LED灯从上到下依次点亮,首先需要准备一组状态变量来表示每个LED的状态,通常使用位操作来简化处理。以下是一个基本的示例:
```c
#include <reg52.h> // 如果是Atmel AVR系列,假设已经包含了必要的头文件
#define LED_COUNT 8 // 设定LED的数量
unsigned char led_array[LED_COUNT]; // 创建一个存储LED状态的数组
void init_LEDs() {
for (int i = 0; i < LED_COUNT; i++) {
led_array[i] = 0; // 初始化所有LED为关闭状态
}
}
// 点亮指定索引位置的LED
void toggle_led(int index) {
if(index >= 0 && index < LED_COUNT) {
led_array[index] ^= 1; // 对应的位取反,即开或关
PORTB = led_array; // 将LED状态更新到实际的GPIO端口
}
}
void main() {
init_LEDs();
// 例如,想要从上到下依次点亮LED
for (int i = LED_COUNT - 1; i >= 0; i--) { // 从最后一个LED开始向下
toggle_led(i);
delay_ms(100); // 每个LED点亮100毫秒,这里可以用延时函数实现
}
while(1); // 无限循环保持程序运行
}
阅读全文