第一个程序:让流水灯,从左到右,第一个灯,一会儿到最高亮度,然后降到最低亮度,之后,便是前两个灯重复第一个灯的状况,然后是前三个灯,然后是前4个灯,直到悉数完结
程序如下:
#include
delay(k)//延时函数
{
while(k–)
{}
}
void
{
unsigned
P1
for(n = 1;n
{
delay(t);
P1
P1
}
}
开端的时分不会用位运算,把每一步都写出来(一闪一灭,每一次都是用赋值来表明),数着到那一个闪耀,
代码很杂乱,经过提示后,然后经过位运算,大大化简了代码的数量,并且可读性进步不少..
过错的原因是:不了解编译言语是否能够像c言语相同编译,想了一会,就用杂乱的代码去写出这个程序.
第二个程序:让流水灯,从右到左,第一个灯从暗到明,然后到最亮程度就坚持住这个状况,然后第二个灯紧接着从暗到明,然后是第3个灯,以此类推直到全亮,然后团体平息.
程序如下:
#include
delay(k)//延时函数
{
while(k–)
{}
}
void
{
unsigned
const int t = 600;
P1
for(n = 1;n
{
for(i
{
delay(t-i);//经过每一次循环暗的时刻削减
P1
delay(i);//经过每一次循环,亮的时刻增多,在人的眼睛看来就能够逐渐增亮
P1
}
}
P1
delay(25000);
}
开端的时分,以为经过闪耀次数和平息的次数相同,然后最终就亮了,就能够算是由暗到亮了,这个主意到最终烧写发现改变太快了,由暗到亮的进程不算表明出来,呈现了最丧命的过错…
其实咱们主要是在亮和暗的时刻方面做了缓慢的改变就能够表明有暗到亮的进程….
第三个程序:让流水灯,从左到右,第一个灯,从暗到明,然后亮度再降下来,然后是接下一个灯,便是顺次明暗亮一个灯,一次只亮暗一个
程序如下:
#include
delay(k)//一个延时的函数
{
while(k–)
{}
}
void
{
unsigned
const
P1
for(n
{
for(i
P1
delay(t-i);
P1
delay(i);
}
for(i
{
delay(t-i);
P1
delay(i);
P1
}
dark
}
}
开端的时分,也是想到用加法去表明出来,用0xff<
在其间有一个常量用了变量的方式去表明,这个是占用内存的过错,因而,每一次写,就要想好这个量是用常量仍是用变量,假如是常量,能够用宏的方式去表明,也能够用const 去表明..用宏更简单保护
最终,我想下一次,每一次烧写我的程序之前,都会用流水灯的程序运转运转一次,保证灯的连线闭路的…
并且,写完运转之后,就找找那些变量是不是变了,是不是能够用常量表明.
自己看自己的程序,是不是能够一路看到最终,走到那个一步是要找出他的巨细..会有费事,不方便…就看是否能够进行修正…