假设学习单片机,最基本的考题便是流水灯了,呵呵,但是有时分一个很厉害的工程师,还真是欠好弄出来,当然,我不是工程师,但是学习51单片机也有很长时刻了,回想起最初学习51的时分,一向都是没有自己的中心的东西,今日就谈谈c51循环移位的见地
记住假设你翻开intri
但是,假设你去面试的时分,这个时分,你莫非还用它自带的循环函数么?当然不能了。真是的(有时分咱们自己小组出的笔试题便是流水灯,但是我却紧闭眉头,感觉很是懦弱。咳,今日就把源程序写出来。)这时分就要用到你的c言语常识了,呵呵。
假设说是共阴极数码管的话:
程序能够这样(只写首要算法):
while(1)
{
temp=0x01;
P1=temp;
delay(100); //延时100ms
for(i=1;i<8;i++)
{
temp=temp<<1;
P1=temp;
delay(100);
}
}
但是假设是共阳极流水灯的话,就得写成这样,更好些:
while(1)
{
temp=0xfe;
P1=temp;
delay(100);
for(i=1;i<8;i++)
{
P1=(temp<>(8-i);
delay(100);
}
}
看到没有,其间中心的一条句子便是 temp=temp<<1;P1=temp;和P1=(temp<>(8-i);,其实第一个能够用第二个替代,不过关于共阴极的过分简略,直接写出来就行了,但是关于共阳极的话,就得考虑考虑了,先左移,然后和右移的数进行相或,这是适当经典的(8次)。呵呵,或许还有更经典的,今后有时刻弥补上,呵呵。