标题:
写单片机LED流水灯和闪烁结合的程序出现的问题
[打印本页]
作者:
stayalone838
时间:
2022-11-28 17:27
标题:
写单片机LED流水灯和闪烁结合的程序出现的问题
171936d7sqnziqdnxxn0qi.png
(1.77 MB, 下载次数: 17)
下载附件
2022-11-28 17:18 上传
我写的是郭天祥10天征服单片机的LED课后练习5,我现在遇到的两个问题是,在流水灯结束后的闪烁那个循环里面,如果我把0xff(LED全灭)写在前面再延时300ms之后写0x00(LED全亮),LED会闪烁,但是LED非常暗;但是如果我把0x00(LED全亮),写在前面再延时300ms之后写0xff(LED全灭),LED就不闪烁了,会一直亮着,直到LED闪烁循环结束,这就相当于我闪烁部分白写了......有没有同样写过这个练习的,有遇到我这样的问题吗,感谢热心大佬解答~
以下为代码:
#include <REGX51.H>
typedef char u8;
typedef int u16;
#define LED_PORT P2//宏定义整个LED端口
void delay(u16 x)//延时函数,当ten_us传入1,大约延时10us
{
u16 y,z;
for(y=0;y<x;y++)
for(z=0;z<115;z++);
}
main()
{
u8 i=0,b=0;//定义变量i和b
while(1)
{
for(i=0;i<8;i++)
{
LED_PORT=~(0x01<<i);//从LED1亮起,i每增加一次,移位一次
delay(200); // 延时大约0.2秒
}
for(i=0;i<8;i++)
{
LED_PORT=~(0x80>>i);//从LED8亮起,i每增加一次,移位一次
delay(200);// 延时大约0.2秒
}
b++;//b自加1
if(b%2==0)//上下循环两次后进入此循环
{
for(i=0;i<5;i++)
{
LED_PORT=0xff;//LED全灭
delay(300);
LED_PORT=0x00;//LED全亮
}
}
}
}
作者:
lkc8210
时间:
2022-11-28 17:59
if(b%2==0)//上下循环两次后进入此循环
{
for(i=0;i<5;i++)
{
LED_PORT=0xff;//LED全灭
delay(300);
LED_PORT=0x00;//LED全亮
delay(300);//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
}
}
复制代码
作者:
stayalone838
时间:
2022-11-29 20:36
lkc8210 发表于 2022-11-28 17:59
原来是这样,是我疏忽了,非常感谢你~
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1