本帖最后由 zl2168 于 2017-2-27 16:22 編輯
C程序與匯編程序雖各有千秋,但C程序優點更多。
⒊ C51編程的特點
C51編程與80C51匯編語言相比,主要具有以下特點:
⑴ 編程相對方便。
用匯編語言編程,幾乎每一條指令操作都與具體的存儲單元有關,80C51單片機的片內存儲空間容量有限,編程之初即需安排好片內存儲單元的用途,且一般不宜重復使用。當一些應用項目程序量較大時,片內存儲單元有可能捉襟見肘,稍有不慎就將出錯,編程相對復雜。而C51編譯系統能自動完成對變量存儲單元的分配和使用,且對函數內局部變量占用的存儲單元,僅在調用時臨時分配,使用完畢即行釋放,大大提高了80C51片內有限存儲空間的使用效率。因此,使用者只需專注于軟件編程,不需過多關注涉及的具體存儲單元及其操作指令,編程相對方便。
⑵ 便于實現各種復雜的運算和程序。
C語言具有豐富且功能強大的運算符,能以簡單的語句方便地實現各種復雜的運算和程序。相比之下,匯編語言要實現較復雜的運算和程序,就比較困難。例如,雙字節的乘除法,匯編語言要用許多條指令操作才能完成;而C51只需一條語句便能方便實現。又例如,循環、查表和散轉等程序,C51語句實現起來也相對簡單方便(當然C51語句編譯轉換為匯編語言指令后仍然復雜,只是不用程序員操心,由編譯器自動完成罷了)。
⑶ 可方便地調用各已有程序模塊。
已有程序模塊包括C51編譯器中豐富的庫函數、用戶自編的常用接口芯片功能函數和以前已開發項目中的功能函數。讀者可能會說,匯編程序不也一樣可以調用嗎?不一樣。匯編程序調用時,涉及到模塊中具體的存儲單元,這些存儲單元很可能與主調用程序有重復,會引起沖突而出錯。而C51程序函數中的變量一般為局部變量,主函數調用前不占用存儲單元,僅在調用時由C51編譯器根據存儲區域空余情況臨時分配,使用完畢即行釋放,一般不會發生沖突而出錯。因此,C51程序可方便地調用各已有程序模塊,減少重復勞動,利于團隊合作開發,大大提高編程效率。
⑷ 可讀性較好。
C語言屬于高級語言。一條C51語句,會編譯為多條甚至許多條匯編指令(例如數學運算和循環程序等),相對來說,C51程序簡潔而清晰,可讀性較好。
⑸ 實時性較差。
匯編語言指令每一條對應1~3字節機器碼,每一步的執行動作都很清楚,程序大小和堆棧調用情況都容易控制,響應及時,實時性較好。而C51程序并不能被單片機直接執行,需編譯轉換為匯編語言指令。一條C51語句編譯后,會轉換成很多機器碼,占用單片機片內較多資源,可能出現ROM、RAM空間不夠,堆棧溢出等問題;且執行步驟不很明確,有時還會兜圈子,因而實時性較差(參閱例9-3),甚至會因時序配合不好而出錯。然而,隨著單片機芯片技術的發展,其運行速度和內存容量有了較大提高,這些都為C51的應用創造了有利條件。 以上摘自張志良編著《80C51單片機實用教程——基于Keil C和Proteus》高等教育出版社ISBN 978-7-04-044532-9
|