單片機應(yīng)用項目式教程-基于Keil和Proteus 第2版 習(xí)題答案 第2章 思考和練習(xí)解答_第1頁
單片機應(yīng)用項目式教程-基于Keil和Proteus 第2版 習(xí)題答案 第2章 思考和練習(xí)解答_第2頁
單片機應(yīng)用項目式教程-基于Keil和Proteus 第2版 習(xí)題答案 第2章 思考和練習(xí)解答_第3頁
單片機應(yīng)用項目式教程-基于Keil和Proteus 第2版 習(xí)題答案 第2章 思考和練習(xí)解答_第4頁
單片機應(yīng)用項目式教程-基于Keil和Proteus 第2版 習(xí)題答案 第2章 思考和練習(xí)解答_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第2章思考和練習(xí)解答參閱本書P.34。2.1C51編程與80C51匯編語言相比,主要有什麼優(yōu)勢?答:C51編程與80C51匯編語言相比,主要的優(yōu)勢是編程相對方便。具體如下:=1\*GB2⑴C51軟件編程不需過多關(guān)注具體的存儲單元。用匯編語言編程,幾乎每一條指令(除NOP指令)操作都與具體的存儲單元有關(guān),80C51單片機的片內(nèi)存儲空間容量有限,編程之初即需安排好片內(nèi)存儲單元的用途,且一般不能重復(fù)使用。當(dāng)一些應(yīng)用項目較大時,片內(nèi)存儲單元有可能捉襟見肘,稍有不慎就將出錯。因此,編程時,不但要注意用哪一條指令正確操作,而且要注意指令在哪一個存儲單元操作,編程相對復(fù)雜。而C51編程能自動完成變量存儲單元的分配和使用,且對函數(shù)內(nèi)局部變量占用的存儲單元,僅在調(diào)用時臨時分配,使用完畢即行釋放,大大提高了片內(nèi)有限存儲空間的利用效率。使用者只需專注于軟件編程,不需過多關(guān)注具體的存儲單元及其操作指令。因此,編程相對方便。=2\*GB2⑵便于實現(xiàn)各種復(fù)雜的運算和程序。C語言有豐富且功能強大的運算符,能以簡單的語句方便地實現(xiàn)各種復(fù)雜的運算和程序。相比之下,匯編語言要實現(xiàn)較復(fù)雜的運算和程序,就比較困難。例如,雙字節(jié)的乘除法,匯編語言要用許多條指令操作才能完成;而C51只需一條語句便能實現(xiàn)。又例如,循環(huán)、查表和散轉(zhuǎn)等程序,C51語句實現(xiàn)起來也相對簡單方便。=3\*GB2⑶可方便地調(diào)用各已有程序模塊。已有程序模塊包括C51編譯器中豐富的庫函數(shù)、用戶自編的常用接口芯片功能函數(shù)和以前已開發(fā)項目中的功能函數(shù)。讀者可能會說,匯編程序不也一樣可以調(diào)用嗎?不一樣。匯編程序調(diào)用時,涉及到模塊中具體的存儲單元,這些存儲單元很可能與主調(diào)用程序有重復(fù),會引起沖突而出錯。而C51程序函數(shù)中的變量一般為局部變量,主函數(shù)調(diào)用前不占用存儲單元,僅在調(diào)用時由C51編譯器根據(jù)空余情況臨時分配,使用完畢即行釋放,因而一般不會發(fā)生沖突而出錯。因此,C51程序可方便地調(diào)用各已有程序模塊,減少重復(fù)勞動,大大提高編程效率。=4\*GB2⑷編譯生成的代碼效率比匯編語言低一些;實時時效不如匯編語言快捷;一條C語言指令編譯后,會轉(zhuǎn)換成很多機器碼,占用單片機片內(nèi)資源較多。2.2C51基本數(shù)據(jù)類型有哪幾種?其數(shù)據(jù)長度為多少?答:參閱教材書基礎(chǔ)知識4.1,圖2-32.3C51標識符命名有何要求?答:在C51程序中,數(shù)據(jù)、變量和函數(shù)等常用標識符表示。實際上,標識符就是一個代號或名字。C51規(guī)定:=1\*GB2⑴標識符只能由字母、數(shù)字和下劃線三種字符組成,且須以字母或下劃線開頭。=2\*GB2⑵標識符不能與“關(guān)鍵詞”同名。=3\*GB2⑶英文字母區(qū)分大小寫。即標識符中的英文字母大小寫不能通用。2.4怎樣理解變量的存儲器類型和編譯模式?答:存儲器類型和編譯模式是確定變量存放在那一存儲區(qū)域,不同的存儲區(qū)域與訪問速度有關(guān)。存儲器類型是在變量定義時確定,而未定義存儲器類型的變量由編譯模式默認。存儲種類與變量存放在那一存儲區(qū)域基本無關(guān)(除寄存器類變量),與變量值的生存期和作用范圍有關(guān)。中、小型程序一般可采用默認的存儲種類auto。變量的存儲種類與變量的存儲器類型、編譯模式是兩個完全不同的概念,不能混淆。2.5為什么變量要盡量使用無符號字符型格式?答:C51變量的基本數(shù)據(jù)類型主要有字符型char、整型int和長整型long,又可分別分為有符號signed和無符號unsigned。80C51是8位機,本身并不支持有符號運算。若變量使用有符號格式,C51編譯器要進行符號位檢測并需調(diào)用庫函數(shù),生成的代碼比無符號時長得多,占用的存儲空間會變大,程序運行速度會變慢,出錯的機會也會增多。80C51單片機主要用于實時控制,變量一般為8bit無符號格式,16bit較少,有符號和有小數(shù)點的數(shù)值計算也很少。因此,在已知變量長度和正整數(shù)的情況下,應(yīng)盡量采用無符號格式:unsignedchar。2.6為什么變量要盡量使用局部變量?答:與80C51匯編語言相比,C51編程的突出優(yōu)點是能自動完成變量存儲單元的分配和使用,對函數(shù)內(nèi)局部變量占用的存儲單元,僅在調(diào)用時臨時分配,使用完畢即行釋放,大大提高了片內(nèi)有限存儲空間的利用效率。使用者只需專注于軟件編程,不需過多關(guān)注具體的存儲單元及其操作指令。因此,編程相對方便。使用全局變量的缺點:一是始終占用一個固定的存儲單元,降低了內(nèi)部存儲單元的利用率;二是降低了函數(shù)的通用性。若函數(shù)涉及某一全局變量,該函數(shù)移植到其他文件時需同時將全局變量一起移植。否則,若全局變量名與其他文件中的變量同名,就會出現(xiàn)問題。三是過多使用全局變量,降低了程序的清晰度。若程序較大,人們較難清晰地判斷程序執(zhí)行過程中每個瞬間全局變量的變化狀況,易出錯。因此,應(yīng)盡量減少全局變量的使用,能不用就盡量不用。2.7for循環(huán)語句括號內(nèi)3個表達式分別表示什麼含義?能否缺位?答:第一個表達式是循環(huán)變量初值,第二個表達式是循環(huán)終止條件,第三個表達式是循環(huán)變量更新。3個表達式之間必須用分號“;”分隔,允許有一個或多個缺位。2.8while(1)和for(;;)表示什麼含義?答:while(1)和for(;;)均表示一個循環(huán)條件始終滿足的無限循環(huán)。若后面有循環(huán)體語句,則反復(fù)無限執(zhí)行循環(huán)體語句;若后面無循環(huán)體語句,則表示程序在原地踏步。2.9什麼是數(shù)組?如何定義和表示?答:數(shù)組是一組具有相同類型數(shù)據(jù)的有序集合。例如:inta[10]={10,11,22,33,44,55,66,77,88,99};上式表示:數(shù)組名為a,數(shù)組內(nèi)的數(shù)據(jù)類型為int,元素個數(shù)(也稱為數(shù)組長度,即數(shù)組內(nèi)數(shù)據(jù)的個數(shù))有10個。10個數(shù)組元素分別為:a[0]=10,a[1]=11,a[2]=22,a[3]=33,a[4]=44,a[5]=55,a[6]=66,a[7]=77,a[8]=88,a[9]=99。需要注意的是,數(shù)組定義時,方括號內(nèi)是數(shù)組元素個數(shù);數(shù)組元素引用時,方括號內(nèi)是數(shù)組元素的序號。而且,數(shù)組元素序號是從0開始編號的。因此,上述數(shù)組a[10]中沒有a[10]這個數(shù)組元素,其最后一個數(shù)組元素是a[9]。2.10函數(shù)參數(shù)傳遞,值傳遞與地址傳遞有什麼不同?答:函數(shù)的實參傳遞給形參,稱為值傳遞。值傳遞是單向的,即不會影響主調(diào)用函數(shù)中實參值的變化。指針變量或數(shù)組作為實參傳遞給形參時,是將一個變量的地址傳送到另一個函數(shù)中去,稱為地址傳遞,其結(jié)果具有雙向性。若在被調(diào)用函數(shù)中該地址存儲單元中的內(nèi)容發(fā)生了變化,在調(diào)用結(jié)束后這些變化將被保留下來,即其結(jié)果會被返回到主調(diào)用函數(shù)。2.11已知雙鍵控3燈電路如圖2-11所示,要求實現(xiàn):=1\*GB3①S0單獨按下,紅燈亮,其余燈滅;=2\*GB3②S1單獨按下,綠燈亮,其余燈滅;=3\*GB3③S0、S1均未按下,黃燈亮,其余燈滅;=4\*GB3④S0、S1均按下,紅綠黃燈全亮。試按任務(wù)4.1中3種形式編寫C51程序,畫出ProteusISIS虛擬電路,并仿真調(diào)試。解:=1\*GB2⑴if-else語句=2\*GB2⑵if語句嵌套=3\*GB2⑶switch語句2.12求:sum=1+3+5+…+99。試用“while循環(huán)”編寫、輸入源程序并調(diào)試運行。解:2.13求:sum=2+4+6+…+100。試用“do-while循環(huán)”編寫、輸入源程序并調(diào)試運行。解:2.14求:sum=1!+2!+…+10!。試用“for循環(huán)”編寫、輸入源程序并調(diào)試運行。解:2.15電路如圖2-5所示,按以下要求亮燈循環(huán),間隔約1秒,試編寫程序,并仿真調(diào)試。=1\*GB3①從兩邊到中心依次點亮,每次增加2個,直至全亮;=2\*GB3②從兩邊到中心依次暗滅,每次減少2個,直至全暗;=3\*GB3③重復(fù)上述過程,不斷循環(huán)重復(fù)。解:2.16電路和亮燈循環(huán)同上題,要求用指針指向并輸出數(shù)組元素,試編寫程序,并仿真調(diào)試。=1\*GB3①從兩邊到中心依次點亮,每次增加2個,直至全亮;=2\*GB3②從兩邊到中心依次暗滅,每次減少2個,直至全暗;=3\*GB3③重復(fù)上述過程,不斷循環(huán)重復(fù)。解:2.17電路如圖2-5所示,按以下要求亮燈循環(huán),間隔約0.5秒,試編寫程序,并仿真調(diào)試。=1\*GB3①從上至下依次點亮,點亮燈先閃爍3次,后保持點亮,直至全亮;=2\*GB3②全亮全暗閃爍3次;=3

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論