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