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