本文引用地址:http://m.butianyuan.cn/article/201611/322434.htm法二:使用數(shù)組
#include
unsignedchartable[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
voidyanshi();
voidmain()
{unsignedinti;
while(1)
{
for(i=0;i<8;i++)
{P1=table[i];(注意,在這里的大括號是一定要加的,否則你就out了)
yanshi();
}}}
voidyanshi()
{unsignedinti;
for(i=0;i<10000;i++);}
法三:左移右移
#include
unsignedchartable[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsignedinti;
voidyanshi();
voidmain()
{P1=0xfe;
while(1)
{P1=P1<<1;
P1=P1|0x01;(因為是左移而不是循環(huán)左移,所以要末位置一,這樣的結(jié)果也會導(dǎo)致最后只挨個量一次)
yanshi();}
}
voidyanshi()
{unsignedinti;
for(i=0;i<10000;i++);}
其實想想并不是很難,就是賦值控制亮滅,主要是記住延時那個函數(shù),最后調(diào)用就可以了,在這個基礎(chǔ)上再拓展一下,雙燈左移右移閃爍,也就是雙燈左移7次,右移7次,然后全閃7次,程序如下:
#include
voidDelay(unsignedinti);
voidmain()
{unsignedchari;
unsignedchartemp;
while(1)
{temp=0xfc;
P1=temp;
for(i=0;i<7;i++)
Delay(50000);
{temp<<=1;
temp=temp|0x01;
P1=temp;}之所以加入temp做中間變量,防止直接操作端口造成的短暫閃爍
Temp=0x3f;
P1=temp;
For(i=0;i<7;i++)
{Delay(50000);
Temp>>=1;
Temp|=0x80;
P1=temp;}
For(i=0;i<3;i++)
P1=0xff;
Delay(50000);
P1=0x00;
Delay(50000);}
}}
voidDelay(unsignedinti)
{
while(--i);
}
這么一分析,發(fā)光二極管真的很簡單,賦值端口,控制亮滅,延時,調(diào)用函數(shù),基本上就可以了,最重要的是c語言簡單知識的一些規(guī)范,這都是入門的,不難理解,細心一些就好了,個人覺得比較好的還是自己寫程序去調(diào)試,調(diào)試次數(shù)多了,自然而然就熟悉了,孰能生巧,對很多事情都是亙古不變的真理,學(xué)習(xí)更是如此。
評論