你们敢不敢把刚刚复制粘贴的东西发出来?
作者:卡卷网发布时间: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 函数里的循环次数来改变亮灯变化的速度,看看是否能达到你想要的效果。
免责声明:本文由卡卷网编辑并发布,但不代表本站的观点和立场,只提供分享给大家。
- 上一篇:知乎写文为什么这么难?
- 下一篇:你能编一个欧亨利式结尾的小故事吗?
相关推荐

你 发表评论:
欢迎