请问怎么写才能让它从八灯齐亮再一个一个灭到一个灯亮?这样就可以跟一个一个亮呈完美循环了
追答这样啊,那你搞个标志位也可以
char flag=0;
P2=0x00;
while(1)
{
if(flag == 0)
{
P2=(P2>1;
if(P2==0x01)
flag=0;
delay500ms();
}
}
啊,这是把原来while那删掉再加进去吗吗?还有P2=(P21;那边是不是)错打成1了?
哪里有P21,你那里显示跟我的不一样?
真的谢谢!!
我现在上单片机实训,之前没好好上c语言的课,现在补的头都要秃了TT
我已经采纳了吧?
追答不是吧,还真的显示变得不一样了,真的是奇了怪了
追问大哥,能否再帮我写一下你帮我改的那个函数的程序流程图?
???
追答比较简单的做法是:定义一个数组,并把驱动码0x01、0x03、0x07、0x1F、0x3F、0x7F、0xFF赋值数组,然后,在你的流水驱动代码外面套一个for循环,以循环变量为数组下标,每外循环一次把数组的驱动码赋值给P2就行了。
<<1后面再加+1?
追答对,循环左移会把最高位的0移动到最低位,用+1把它变成1;所以初始化之后那句if可以不用了,即使初始化之后0000 0000,因为+1也会把它点亮。
然后要考虑的问题是八个全亮之后1111 1111再+1会溢出。
只需要改c语言就可以了 不需要再接
详细点吧,写结果也行求求了