c51循環(huán)移位的淺談
記得如果你打開intri
可是,如果你去面試的時(shí)候,這個(gè)時(shí)候,你難道還用它自帶的循環(huán)函數(shù)么?當(dāng)然不能了。真是的(有時(shí)候我們自己小組出的筆試題就是流水燈,可是我卻緊鎖眉頭,感覺很是窩囊??龋裉炀桶言闯绦?qū)懗鰜?。)這時(shí)候就要用到你的c語言知識了,呵呵。
假如說是共陰極數(shù)碼管的話:
程序可以這樣(只寫主要算法):
while(1)
{
temp=0x01;
P1=temp;
delay(100); //延時(shí)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);
}
}
看到?jīng)]有,其中核心的一條語句就是 temp=temp<<1;P1=temp;和P1=(temp<>(8-i);,其實(shí)第一個(gè)可以用第二個(gè)代替,不過對于共陰極的太過簡單,直接寫出來就行了,可是對于共陽極的話,就得思考思考了,先左移,然后和右移的數(shù)進(jìn)行相或,這是相當(dāng)經(jīng)典的(8次)。呵呵,可能還有更經(jīng)典的,以后有時(shí)間補(bǔ)充上,呵呵。
評論