我八到一没有成功,不知道怎么搞?
只搞成功了一到八
希望大家可以帮我看看~

关注【以下回答由 GPT 生成】
问题是如何修改代码,使得LED灯可以从八亮到一的过程。
以下是给出的解决方法:
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
void delay(uchar);
void main(void) {
uchar LedTemp1 = 0xfe, LedTemp2 = 0x7f;
while (1) {
P1 = LedTemp1;
P2 = LedTemp2;
if (LedTemp1 == 0x7f) { // 如果灯已经是亮到最大亮度,开始亮度递减
LedTemp1 = _cror(LedTemp1, 1);
} else {
LedTemp1 = _crol(LedTemp1, 1); // 亮度递增
}
if (LedTemp2 == 0xfe) { // 如果灯已经是亮到最大亮度,开始亮度递减
LedTemp2 = _crol(LedTemp2, 1);
} else {
LedTemp2 = _cror(LedTemp2, 1); // 亮度递增
}
delay(255);
}
}
void delay(uchar x) {
uchar k;
while (x--) {
for (k = 0; k < 125; k++);
}
}
解决方法是在原有代码的基础上添加了条件判断,以确定何时开始递减亮度。当灯的亮度已经达到最大亮度时,开始递减亮度。然后使用 _crol 和 _cror 函数来实现亮度递增和递减。
【相关推荐】