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