卡卷网
当前位置:卡卷网 / 每日看点 / 正文

你们敢不敢把刚刚复制粘贴的东西发出来?

作者:卡卷网发布时间:2025-04-10 00:42浏览数量:28次评论数量:0次

你提供的代码本身就是放在 while(1) 无限循环里的,理论上是会持续运行的。但如果你觉得有异常,可能是其他原因导致看起来没有持续亮灯。以下是优化和确认逻辑无误后的代码,确保灯能按照“往上亮后,接着往下,从下再往上亮一遍,从上往下亮一遍,从下往上亮一遍”这样的顺序持续循环亮灯:

c

#include <AT89X52.H>

sfr P3 = 0xB0;


// 适当调整延时,让亮灯变化速度更合适,也可根据实际情况再调整

void Delay() {

unsigned int i, j;

for (i = 0; i < 100; i++)

for (j = 0; j < 127; j++);

}


void main() {

unsigned char i;

unsigned char temp;

while (1) {

// 往上亮

for (i = 0; i < 8; i++) {

temp = 0x01 << i;

P3 = ~temp;

Delay();

}

// 往下亮

for (i = 6; i >= 0; i--) {

temp = 0x80 >> (6 - i);

P3 = ~temp;

Delay();

}

// 从下再往上亮

for (i = 0; i < 8; i++) {

temp = 0x80 >> i;

P3 = ~temp;

Delay();

}

// 从上往下亮

for (i = 6; i >= 0; i--) {

temp = 0x01 << (6 - i);

P3 = ~temp;

Delay();

}

// 从下往上亮

for (i = 0; i < 8; i++) {

temp = 0x01 << i;

P3 = ~temp;

Delay();

}

}

}

这段代码中, while(1) 会让内部的亮灯逻辑不断重复执行。如果还是出现没有持续亮灯的情况,你可以检查一下硬件连接是否稳固,比如单片机和 LED 灯之间的线路有没有松动、短路等问题。另外,也可以再进一步调整 Delay 函数里的循环次数来改变亮灯变化的速度,看看是否能达到你想要的效果。

END

免责声明:本文由卡卷网编辑并发布,但不代表本站的观点和立场,只提供分享给大家。

卡卷网

卡卷网 主页 联系他吧

请记住:卡卷网 Www.Kajuan.Net

欢迎 发表评论:

请填写验证码