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