|
C51編程與80C51匯編語(yǔ)言相比,主要具有以下特點(diǎn): ⑴ 編程相對(duì)方便。 用匯編語(yǔ)言編程,幾乎每一條指令操作都與具體的存儲(chǔ)單元有關(guān),80C51單片機(jī)的片內(nèi)存儲(chǔ)空間容量有限,編程之初即需安排好片內(nèi)存儲(chǔ)單元的用途,且一般不宜重復(fù)使用。當(dāng)一些應(yīng)用項(xiàng)目程序量較大時(shí),片內(nèi)存儲(chǔ)單元有可能捉襟見(jiàn)肘,稍有不慎就將出錯(cuò),編程相對(duì)復(fù)雜。而C51編譯系統(tǒng)能自動(dòng)完成對(duì)變量存儲(chǔ)單元的分配和使用,且對(duì)函數(shù)內(nèi)局部變量占用的存儲(chǔ)單元,僅在調(diào)用時(shí)臨時(shí)分配,使用完畢即行釋放,大大提高了80C51片內(nèi)有限存儲(chǔ)空間的使用效率。因此,使用者只需專(zhuān)注于軟件編程,不需過(guò)多關(guān)注涉及的具體存儲(chǔ)單元及其操作指令,編程相對(duì)方便。 ⑵ 便于實(shí)現(xiàn)各種復(fù)雜的運(yùn)算和程序。 C語(yǔ)言具有豐富且功能強(qiáng)大的運(yùn)算符,能以簡(jiǎn)單的語(yǔ)句方便地實(shí)現(xiàn)各種復(fù)雜的運(yùn)算和程序。相比之下,匯編語(yǔ)言要實(shí)現(xiàn)較復(fù)雜的運(yùn)算和程序,就比較困難。例如,雙字節(jié)的乘除法,匯編語(yǔ)言要用許多條指令操作才能完成;而C51只需一條語(yǔ)句便能方便實(shí)現(xiàn)。又例如,循環(huán)、查表和散轉(zhuǎn)等程序,C51語(yǔ)句實(shí)現(xiàn)起來(lái)也相對(duì)簡(jiǎn)單方便(當(dāng)然C51語(yǔ)句編譯轉(zhuǎn)換為匯編語(yǔ)言指令后仍然復(fù)雜,只是不用程序員操心,由編譯器自動(dòng)完成罷了)。 ⑶ 可方便地調(diào)用各已有程序模塊。 已有程序模塊包括C51編譯器中豐富的庫(kù)函數(shù)、用戶自編的常用接口芯片功能函數(shù)和以前已開(kāi)發(fā)項(xiàng)目中的功能函數(shù)。讀者可能會(huì)說(shuō),匯編程序不也一樣可以調(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ì)合作開(kāi)發(fā),大大提高編程效率。 ⑷ 可讀性較好。 C語(yǔ)言屬于高級(jí)語(yǔ)言。一條C51語(yǔ)句,會(huì)編譯為多條甚至許多條匯編指令(例如數(shù)學(xué)運(yùn)算和循環(huán)程序等),相對(duì)來(lái)說(shuō),C51程序簡(jiǎn)潔而清晰,可讀性較好。 ⑸ 實(shí)時(shí)性較差。 匯編語(yǔ)言指令每一條對(duì)應(yīng)1~3字節(jié)機(jī)器碼,每一步的執(zhí)行動(dòng)作都很清楚,程序大小和堆棧調(diào)用情況都容易控制,響應(yīng)及時(shí),實(shí)時(shí)性較好。而C51程序并不能被單片機(jī)直接執(zhí)行,需編譯轉(zhuǎn)換為匯編語(yǔ)言指令。一條C51語(yǔ)句編譯后,會(huì)轉(zhuǎn)換成很多機(jī)器碼,占用單片機(jī)片內(nèi)較多資源,可能出現(xiàn)ROM、RAM空間不夠,堆棧溢出等問(wèn)題;且執(zhí)行步驟不很明確,有時(shí)還會(huì)兜圈子,因而實(shí)時(shí)性較差(參閱例9-3),甚至?xí)驎r(shí)序配合不好而出錯(cuò)。然而,隨著單片機(jī)芯片技術(shù)的發(fā)展,其運(yùn)行速度和內(nèi)存容量有了較大提高,這些都為C51的應(yīng)用創(chuàng)造了有利條件。 需要說(shuō)明的是,完整的C51是一個(gè)較龐大的體系,名詞概念較多,語(yǔ)法較復(fù)雜多變。欲在相對(duì)較短的課時(shí)內(nèi),完全掌握和熟悉C51是一件比較困難的事情。好在單片機(jī)在大多數(shù)情況下的主要任務(wù)是實(shí)時(shí)控制,這就大大降低了學(xué)習(xí)C51的要求和難度。更重要的是,學(xué)習(xí)本書(shū)的目的,不是為了系統(tǒng)學(xué)習(xí)C語(yǔ)言,而是為了學(xué)習(xí)單片機(jī)C51編程。因此,一般讀者只要求重點(diǎn)熟悉和掌握C51中與實(shí)時(shí)控制有關(guān)的常用語(yǔ)句和編程方法,而并不過(guò)分追求全面、完整和嚴(yán)密。 |
|