大二上學(xué)期終于開(kāi)單片機(jī)課程了,今天找了一點(diǎn)時(shí)間來(lái)51hei單片機(jī)教程網(wǎng)寫(xiě)了點(diǎn)東西,作為一個(gè)初學(xué)者,在下面通過(guò)我自己做的一個(gè)電子表實(shí)例寫(xiě)一下這一段時(shí)間的學(xué)習(xí)總結(jié)。 不知道以后我看到自己寫(xiě)的這篇文章是否會(huì)覺(jué)得很幼稚。
第一次上課,老師就讓我們用C編寫(xiě)程序控制一個(gè)LED燈的閃爍,真是搞不懂,我覺(jué)得應(yīng)該是對(duì)單片機(jī)匯編語(yǔ)言和單片機(jī)的體系結(jié)構(gòu)有一定的了解后,在用C寫(xiě)單片機(jī)程序才有進(jìn)步。先學(xué)單片機(jī)體系結(jié)構(gòu)和單片機(jī)匯編語(yǔ)言然后再學(xué)單片機(jī)C語(yǔ)言應(yīng)該是一個(gè)循序漸進(jìn)的過(guò)程。這里有匯編的單片機(jī)教程: http://www.torrancerestoration.com/mcuteach/252.html ,以及單片機(jī)c語(yǔ)言教程: http://www.torrancerestoration.com/mcuteach/150.html 。我將結(jié)合自做的一個(gè)實(shí)例來(lái)說(shuō)我對(duì)這個(gè)過(guò)程的理解。
先比較一下單片機(jī)匯編語(yǔ)言與單片機(jī)C語(yǔ)言:
匯編相對(duì)于C來(lái)說(shuō),它的執(zhí)行效率要高一些。為什么這么說(shuō),用C寫(xiě)的單片機(jī)程序在編譯的過(guò)程中,可以理解為 先編譯成匯編程序,然后在編譯成機(jī)器可以執(zhí)行的二進(jìn)制文件。編譯軟件在將C程序編譯成匯編程序的過(guò)程中會(huì)產(chǎn)生很多冗余的語(yǔ)句。每一條語(yǔ)句都有固定的執(zhí)行時(shí)間,這樣看來(lái),對(duì)于同一功能的C程序和匯編程序,冗余語(yǔ)句就是使C程序比匯編程序效率低的原因。這有點(diǎn)像一件商品在經(jīng)過(guò)很多中間渠道后,它的價(jià)格比直銷價(jià)格要高。中間的經(jīng)銷商所得利潤(rùn)就像那個(gè)冗余語(yǔ)句。
匯編既然在效率上要高于C,為什么還要用C,而且C在單片機(jī)程序中用的最多,這是由于我們這些程序員用
C編寫(xiě)程序要比用匯編程序要簡(jiǎn)單些,這樣就可以使開(kāi)發(fā)周期縮短,而且在很多時(shí)候冗余很小甚至可以沒(méi)有。我這
次做的電子時(shí)鐘就是由于因?yàn)槲疫x擇了用匯編語(yǔ)言來(lái)寫(xiě),整整花費(fèi)了我兩天時(shí)間來(lái)做。如果用C寫(xiě)的話,可能一天
就可以搞定了。C相對(duì)于匯編還有一點(diǎn)很不好,如果要寫(xiě)一段延時(shí)程序的話,用匯編可以輕松搞定,但是用C寫(xiě)的話,真不
知道該怎么寫(xiě)。我覺(jué)得除了以上兩點(diǎn)外,C相對(duì)于匯編什么地方都很有優(yōu)勢(shì)。如果弄懂了匯編,在學(xué)單片機(jī)C就很快了。而且是在我們大一學(xué)過(guò)一年的條件下。一上來(lái)就用C,對(duì)于我們學(xué)習(xí)單片機(jī)的很多原理就是很難去理解。因?yàn)镃與單片機(jī)硬件還隔一層匯編。