当一个女生对你说讨厌的时候,很大的可能是在说喜欢。所以,俺也学习一下,来个恨死单片机吧。
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,这个用汇编而已。(暂时这么类比)。
下一篇文章,就讲讲流水灯吧。现在还没做出来,明天继续奋斗。