单片机c52用数组写程序led一到八偶数反复循环,奇数保持熄灭每次点亮一个
时间: 2024-02-12 20:05:47 浏览: 99
好的,以下是使用C语言编写的单片机C52程序,实现了该功能:
```
#include <REG52.H>
#define LED P1 // 定义LED灯的端口为P1口
void delay(unsigned int time) // 延时函数
{
unsigned int i, j;
for (i = time; i > 0; i--)
{
for (j = 110; j > 0; j--);
}
}
void main()
{
unsigned char led[8] = {0}; // 定义一个长度为8的数组,初始值全部为0
unsigned int i = 0;
while (1) // 无限循环
{
if (i % 2 == 0) // 如果i为偶数
{
for (unsigned char j = 0; j < 8; j += 2) // 循环点亮偶数位的LED灯
{
led[j] = 1; // 点亮LED灯
}
}
else // 如果i为奇数
{
for (unsigned char j = 0; j < 8; j++) // 循环熄灭所有LED灯
{
led[j] = 0; // 熄灭LED灯
}
led[i % 8] = 1; // 点亮第i个LED灯
}
// 输出LED灯状态
LED = ~led[0]; // 将数组第0个元素的值取反后输出到LED灯
delay(100); // 延时100ms
LED = ~led[1];
delay(100);
LED = ~led[2];
delay(100);
LED = ~led[3];
delay(100);
LED = ~led[4];
delay(100);
LED = ~led[5];
delay(100);
LED = ~led[6];
delay(100);
LED = ~led[7];
delay(100);
i++; // i加1
}
}
```
该程序使用了一个长度为8的数组来表示8个LED灯的状态,初始状态全部为0,即熄灭状态。程序使用一个无限循环来不断改变LED灯的状态,使用了延时函数delay来实现延时效果。当i为偶数时,程序会点亮偶数位的LED灯,当i为奇数时,程序会熄灭所有LED灯,然后点亮第i个LED灯。最后,程序会输出当前LED灯的状态,通过将数组的每个元素的值取反后输出到LED灯。
阅读全文