當一個女生對你說討厭的時候,很大的可能是在說喜歡。所以,俺也學習一下,來個恨死單片機吧。
51開發板買來一個學期了。可是就是沒有學過,汗啊。。趁著暑假的時候,終于開始動工。最近在聽徐成老師的課,收獲很大,雖然他講的知識點不多,但是很能開拓視野。更重要的是,從他那里學到的不是知識,而是學習知識的方法。收獲最大的,就是從宏觀的角度看問題。舉個例子:徐老師講,啥單片機,DSP,ARM,PC機,搞那么多干什么,在我看來,就是圖靈機。在具體一點,就是馮諾依曼結構。頓時如同醍醐灌頂。
話不多說,轉入正題。
以前學習單片機,都是從C語言入手的。后來覺得,從匯編入手能更好的理解計算機。所以又從頭開始學。可惡的匯編啊。一句話,真難。
來個程序
;******************************************************************* ;* by 小馬哥 * ORG 0000H AJMP MAIN ;*************************************************** MAIN: MOV P0,#0FFH ;端口初始化,0表示無符號 ; START: MOV P0,#00FH ;LED ON 此時LED正極接電源,負極接P1.0 CALL DELAY ;做一個延遲 MOV P0,#0FFH ;LED OFF CALL DELAY ;做一小段延遲 AJMP START ; ; 延時子程序1秒 ;================================================== ;================================================== DELAY: mov r1,#11 delay_1s_lp2: mov r2,#200 delay_1s_lp1: mov r3,#200 djnz r3,$ djnz r2,delay_1s_lp1 djnz r1,delay_1s_lp2 ret END ;結束 ;************************************************
看懂沒,如果看不懂的話,看看下面的視頻吧。
視頻錄制的不是很清楚,將就著看吧。
如果我們稍微改變一個數字,把上面的一段程序改為下面的
;*************************************************** MAIN: MOV P0,#0FFH ;端口初始化,0表示無符號 ; START: MOV P0,#0AAH ;LED ON 此時LED正極接電源,負極接P1.0 CALL DELAY ;做一個延遲 MOV P0,#055H ;LED OFF CALL DELAY ;做一小段延遲 AJMP START ; ; 延時子程序1秒 ;==================================================
再來看看一個視頻,
怎么樣。。。是不是很好玩。
本來想講講這個程序。但是不知道從何講起。不過有一點可以說明一下。這玩意就像我們在實驗室做的FPGA一樣,把管教設置為0或者1。不同的不過是那個用VHDL,這個用匯編而已。(暫時這么類比)。
下一篇文章,就講講流水燈吧。現在還沒做出來,明天繼續奮斗。