用C語言實現流水燈控制的方式有好幾種。
方法1:IO口移位法,用C語言編寫的單片機程序可以讓八個LED輪流點亮,每個燈點亮和熄滅時間均為1秒。首先賦值P2=0x01;然后進入主循環
P2口是8個引腳,P2.0到P2.7;每8秒一個循環,
第1秒我們給P2引腳賦值00000001,寫成16進制就是0x01;。
第2秒左移一位我們給P2引腳賦值00000010,寫成16進制就是0x02;。
第3秒左移一位我們給P2引腳賦值00000100,寫成16進制就是0x04;。
第4秒左移一位我們給P2引腳賦值00001000,寫成16進制就是0x08;。
第5秒左移一位我們給P2引腳賦值00010000,寫成16進制就是0x10;。
第6秒左移一位我們給P2引腳賦值00100000,寫成16進制就是0x20;。
第7秒左移一位我們給P2引腳賦值01000000,寫成16進制就是0x40;。
第8秒左移一位我們給P2引腳賦值10000000,寫成16進制就是0x80;。
方法2:查表賦值法,首先定義一個數組。
data[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
然后在主循環中采用查表法對P2端口賦值。分別將data[0]到data[7]賦值給P2端口,并在中間間隔1秒的時間延時,達到流水燈的效果。
方法3:定時器中斷法,在主循環中不做任何處理,在定時中斷中采用查表法對P2端口進行賦值。
無論采用何種方法,其目的只有一個,在P2端口上實現流水燈效果。
以上是我個人的答案,難免會有漏洞。