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