單片機流水燈設計方法
圖4: ISP編程器燒寫目標文件liu01.hex |
到此,我們做的流水燈已成功,工作原理也清楚啦,若你完全掌握了上面程序,那么你就可以將“流水燈”的流向改變一下,可以將從"左向右流"改為從"右向左流",也可以改為"兩邊向內(nèi)流"、"內(nèi)部向外流"......,我想你一定能用前面學到的方法實現(xiàn)這些功能??赡苡行└呤终f,前面的編程方法是最最笨的!不錯!但初學單片機初期可以不必講究語言的簡練,只要能實現(xiàn)預先要求就好,最主要的是學好基本指令(111條)的用法,清楚各個指令的功能,這是初學者要知道的。那么還有更好的編程思路嗎?當然有!請跟隨站長繼續(xù)學習下面的內(nèi)容。
在前面學習的程序中我們讓LED流水是去逐個控制P1端口的每個位來實現(xiàn)的,因此程序顯得有點復雜,下面我們就采用新的思路來編程。新的編程思路如下:我們在程序一開始就給P1口送一個數(shù),這個數(shù)本身就讓P1.0先低,其他位為高,然后讓這個數(shù)據(jù)向高位移動不就實現(xiàn)“流水”效果啦?的確如此!8051指令中沒有讓P1數(shù)據(jù)移動的指令,但有對累加器ACC中數(shù)據(jù)左移或右移的指令,ACC在指令中常寫為A,累加器A數(shù)據(jù)左移指令為"RL A",累加器數(shù)據(jù)右移指令為"RR A",累加器在數(shù)據(jù)傳輸和數(shù)據(jù)處理過程中作用十分重要,累加器ACC為8位。他可與片內(nèi)所有單字節(jié)寄存器交換數(shù)據(jù),實際上P1和其他端口在單片機中也是一個寄存器。這樣我們可以將需移動的數(shù)據(jù)先放到ACC中,讓其移動,然后將ACC移動后的數(shù)據(jù)再轉(zhuǎn)送到P1口,這樣同樣可以實現(xiàn)“流水”效果。下面程序就是采用新的編程思路源程序liu02.asm。
|
接下來,我們將上述程序編譯,并燒寫到實驗芯片中,放到實驗板上可以看到程序的"流水"效果是一樣的,但源程序看起來更加簡潔,直觀。其實8051單片機有111條指令,有的指令常用,有的指令不常用,只要遵守語法規(guī)則,你可以用這些指令“組合”成你想象到的任何程序。當然,有時一條指令可以替代很多條指令,這樣會使程序簡潔,程序代碼減少,在編寫較大程序時可以讓程序存儲器放得下你需要的代碼,這也是單片機高手所追求的“程序簡潔高效”。當然,初學者不必刻意去追求程序的簡潔高效,主要是要全面地掌握各種指令的應用,只要你對基本指令都熟悉了,那么你也就可以編出簡潔高效的程序了,不過這編程“內(nèi)功”是需要你勤學苦練,日積月累的練習、實驗才能達到的哦!馬上拿起你的實驗板,現(xiàn)在就開始動手吧:)
上面我們學習的兩個程序都是比較簡單的流水燈程序,"流水"花樣只能實現(xiàn)單一的"從左到右"流方式。下面介紹一個實用的流水燈程序,程序能夠?qū)崿F(xiàn)任意方式流水,而且流水花樣無限,只要更改流水花樣數(shù)據(jù)表的流水數(shù)據(jù)就可以隨意添加或改變流水花樣,真正實現(xiàn)隨心所欲的流水。只要將下面的程序稍稍修改一下,通過S51增強型單片機實驗板的擴展接口連接到霓虹燈高壓驅(qū)動接口板就可以驅(qū)動真正的霓虹燈了。
實用的查表方式多功能流水燈程序 liu03.asm | ||||
|
評論