单片机AT89C51用C语言写出:请设计程序依次点亮单片机 P1 口连接的 8 个 LED 灯,要求第一次按照 DO~D7 的顺序亮灯,第二次按照 D7~DO 的顺序亮灯,之后反复该现象。
时间: 2024-03-16 09:47:07 浏览: 99
单片机控制LED灯点亮(C语言)
好的,下面是代码实现:
```c
#include <reg51.h>
#define LED_PORT P1
void delay(unsigned int time) { // 延时函数
unsigned int i, j;
for (i = 0; i < time; i++)
for (j = 0; j < 125; j++);
}
void main() {
unsigned char led, i;
while (1) {
led = 0x01;
for (i = 0; i < 8; i++) { // 依次点亮 8 个 LED
LED_PORT = led;
delay(100); // 延时 100 毫秒
led <<= 1;
}
led = 0x80;
for (i = 0; i < 8; i++) { // 依次点亮 8 个 LED
LED_PORT = led;
delay(100); // 延时 100 毫秒
led >>= 1;
}
}
}
```
程序的基本思路是:通过移位的方式控制 P1 口的输出,从而依次点亮 8 个 LED。其中 `delay` 函数是为了让 LED 亮起来的时间更长,不然可能看不出来亮灭的变化。
程序中的 `led <<= 1` 和 `led >>= 1` 分别表示将 `led` 向左和向右移动一位,从而控制下一个 LED 的亮灭。
阅读全文