嵌入式技術基礎與實踐_習題參考答案_第1頁
嵌入式技術基礎與實踐_習題參考答案_第2頁
嵌入式技術基礎與實踐_習題參考答案_第3頁
嵌入式技術基礎與實踐_習題參考答案_第4頁
嵌入式技術基礎與實踐_習題參考答案_第5頁
已閱讀5頁,還剩15頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、單片機習題參考答案第1章 概述 習題參考答案1嵌入式系統(tǒng)的基本含義是什么?為什么說單片機是典型的嵌入式系統(tǒng)?答:即MCU的含義是:在一塊芯片上集成了中央處理單元( CPU、存儲器(RAM/RO懈)、定時器 / 計數(shù)器及多種輸入輸出 ( I/O ) 接口的比較完整的數(shù)字處理系統(tǒng)。 大部分嵌入式系統(tǒng)以MCU核心進彳T設計。MCUR體系結(jié)構到指令系統(tǒng)都是按照嵌入式系統(tǒng)的應用特點專門設計的, 它能很好地滿足應用系統(tǒng)的嵌入、 面向測控對象、 現(xiàn)場可靠運行等方面的要求。 因此以MCU核心的系統(tǒng)是應用最廣的嵌入式系統(tǒng)。簡述嵌入式系統(tǒng)的特點以及應用領域。答:嵌入式系統(tǒng)屬于計算機系統(tǒng),但不單獨以通用計算機的面目

2、出現(xiàn); 嵌入式系統(tǒng)開發(fā)需要專用工具和特殊方法;使用MCUS計嵌入式系統(tǒng),數(shù)據(jù)與程序空間采用不同存儲介質(zhì);開發(fā)嵌入式系統(tǒng)涉及軟件、 硬件及應用領域的知識; 嵌入式系統(tǒng)的其他特點 , 比如緊張的資源, 較高穩(wěn)定性要求,低功耗,低成本等。一般用于工業(yè)控制,智能家電,日常電子等領域。3.比較MCUt CPU勺區(qū)別與聯(lián)系。答:CPU一個單獨的PC處理器。而 MCU則有微處理器,存儲器(RAM/ROMI)、定時器/ 計數(shù)器及多種輸入輸出(I/O )接口的比較完整的數(shù)字處理系統(tǒng)。所以可以這么說,MCU是一個包含微處理器的嵌入式系統(tǒng),而CPU緊緊是一個處理器而已。4舉例說明嵌入式系統(tǒng)在日常生活中的應用。答:日

3、常數(shù)碼產(chǎn)品:手機, MP3 U盤,相機等。日常工業(yè)類:冰箱,空調(diào),微波爐,汽車等。5 . C語言的那些特性使得它成為嵌入式系統(tǒng)中使用頻率最高的高級語言。答:相比底端匯編,更簡單易學;與高級語言如(C+, C#, java 等)相比,執(zhí)行效率高,編譯后的編碼體積小,而且支持好的編譯器還支持嵌入?yún)R編代碼;對位的操縱能力很強。6 .閱讀光盤中【第01章(概述)閱讀資料】中的“嵌入式C語言工程簡明規(guī)范”, 用一頁紙給出嵌入式C語言工程簡明規(guī)范的要點。答:此規(guī)范主要針對單片機編程語言和 08 編譯器而言,包括命名、注釋、編碼規(guī)范性等內(nèi)容。 建議在一個工程或者一個項目中盡量遵循相同的代碼規(guī)范, 而不是說你

4、只能擁有一個代 碼規(guī)范。( 1 )命名規(guī)則:命名清晰明了,有明確含義,使用完整單詞或約定俗成的縮寫。通常,較短的單詞可通過去掉元音字母形成縮寫;較長的單詞可取單詞的頭幾個字母形成縮寫。即" 見名知意 " ; 命名風格要自始至終保持一致; 命名中若使用特殊約定或縮寫, 要有注釋說明;為了代碼復用,命名中應避免適用與具體項目相關的前綴;應使用英語命名。( 2 )注釋:注釋基本原則就是有助于對程序的閱讀理解,說明程序在" 做什么 " ,解釋代碼的目的、 功能和采用的方法。 一般情況源程序有效注釋量在30 左右。注釋語言必須準確、易懂、 簡潔。 邊寫代碼邊注釋,

5、 修改代碼同時修改相應的注釋, 不再有用的注釋要刪除。 匯編和C中都用"/",取消""不使用段注釋"/* */"(調(diào)試時可用)。使用文件注釋必須說明文件名、項目名稱、函數(shù)功能、創(chuàng)建人、創(chuàng)建日期、版本信息等相關信息。 修改文件代碼時,應在文件注釋中記錄修改日期、 修改人員,并簡要說明此次修改的目的。所有修改記錄必須保持完整。文件注釋放在文件頂端,用"/*/"格式包含。注釋文本每行縮進4 個空格;每個注釋文本分項名稱應對齊。函數(shù)頭部注釋應包括函數(shù)名稱、 函數(shù)功能、入口參數(shù)、出口參數(shù)等內(nèi)容。如有必要還可增加作者、創(chuàng)建日期

6、、修改記錄(備注)等相關項目。 函數(shù)頭部注釋放在每個函數(shù)的頂端,用"/* */"的格式包含。其中函數(shù)名稱應簡寫為FunctionName(),不加入、出口參數(shù)等信息。代碼注釋應與被注釋的代碼緊鄰, 放在其上方或右方, 不可放在下面。 如放于上方則需與其上面的代碼用空行隔開。 一般少量注釋應該添加在被注釋語句的行尾, 一個函數(shù)內(nèi)的多個注釋左對齊; 較多注釋則應加在上方且注釋行與被注釋的語句左對齊。 通常, 分支語句 (條件分支、循環(huán)語句等)必須編寫注釋。其程序塊結(jié)束行""的右方應加表明該程序塊結(jié)束的標記"end of ",尤其在多重嵌套

7、時。同一類型的標識符應集中定義, 并在定義之前一行對其共性加以統(tǒng)一注釋。 對單個標識符的注釋加在定義語句的行尾。 全局變量一定要有詳細的注釋,包括其功能、取值范圍、哪些函數(shù)或過程存取它以及存取時的注意事項等。注釋用"/”的格式。( 3 )編碼規(guī)范性:代碼的每一級均往右縮進4 個空格的位置;不使用 Tab 鍵,建議使用空格代替 tab 鍵, 這樣代碼打印不回造成錯亂; 相對獨立的程序塊之間要加空行; 括號內(nèi)側(cè) (即左括號后面和右括號前面)不加空格,多重括號間不加空格。如: SetName(GetFunc() ;函數(shù)形參之間應該有且只有一個空格(形參逗號后面加空格) ,如:CallFun

8、ction(para1, para2, para3) ,而 CallFunction(para1,para2,para3) 不符合要求;操作符前后均加一個空格,如: nSum = nNunml + nNum2 。而nSum=nNunm1+nNum2不符合要求;單目操作符,如"!" 、 "" 、 "+" 、 "-" 、 "&" (地址運算符)等,后面不加空格,如:i+ , pName = &name, bRes = !(x < 10); if 、 else if 、 else

9、 、 for 、 while 語句無論其執(zhí)行體是一條語句還是多條語句都必須加花括號,且左右花括號各獨占一行; Switch 語句必須包含 default 分支;一個函數(shù)不要超過80行代碼。第2章 Freescale S08 微控制器 習題參考答案1 .給出AW60存儲器映像的簡要說明。答:所謂存儲器映像,是指地址$0000 $FFFF 這個 64KB 空間,哪些地址被何種存儲器所占用,或者說 AW6的 RAM Flash、I/O映像寄存器各使用 $0000 肝FFF這個64KB空間中 的哪些地址。簡單地說,就是 $0000 $FFFF這個64KB空間是如何分配的。2 . AW60勺引腳主要分為

10、哪幾類?簡要說明主要引腳的功能。答: ( 1 )電源類信號引腳( 2 )復位信號引腳(3)主要功能模塊引腳。比如定時器,IRQ中斷等。(4)其他,比如背景調(diào)試BKG劇腳主要引腳:AW60m小系統(tǒng)連接的I/O 口,以及各具體功能I/O 口。3 .嵌入式系統(tǒng)中RAMf口 Flash作用分別是什么?答:一般來說 RAM這個區(qū)域安排用戶數(shù)據(jù)(主要是全局變量)和堆棧空間; Flash要用于存儲程序、常數(shù)、中斷向量等。4 .給出AW6(的硬件最小系統(tǒng)。答:AW6哈片的硬件最小系統(tǒng)包括電源及其濾波電路、復位電路、晶振電路及PLL濾波電路、寫入器接口電路。5指出下列指令中的源操作數(shù)和目的操作數(shù)的尋址方式。(1

11、) MOV #$80 , $80(2) MOV $80,$A0(3) MOV $80 , X+ (4) MOV X+ , $80(5) LDA $80 , X答: (1) 立即尋址,直接尋址(2) 直接尋址,直接尋址(3) 直接尋址,無偏移量變址、變址加1 尋址方式(4) 無偏移量變址、變址加1 尋址方式 , 直接尋址(5) 直接尋址,無偏移量變址、變址加1 尋址方式(6) 明跳轉(zhuǎn)指令BR所口 JMP的差別。答:BRA是無條件相對轉(zhuǎn)移指令,轉(zhuǎn)移范圍是前 127字節(jié)、后128字節(jié)。而JMP則是絕對地址跳轉(zhuǎn)指令。7哪些指令影響堆棧指針?如何影響?答:PSH,PUL。前者是向堆棧中放入,指針減 1,

12、向上移;而PUL剛好相反,指針加1,向下移。8說明芯片初始化時堆棧指針的初始化方法。答:SP是指向下一個棧地址的16位寄存器,堆棧指針 SP采用遞減的結(jié)構,即進棧SP減1,出棧時SP加1。初始化時,SP的初值為$00FF(前置符號$表示十六進制數(shù))。棧指 針復位指令(RSP)可將SP的低8位置為肝F,而不影響高8位。9寫出主要匯編偽指令?答:變量定義( 變量聲明 )數(shù)字常數(shù)與字符串常數(shù)定義常數(shù)賦值與文本替代符偽指令指令存儲定位偽指令文件包含偽指令宏定義和宏調(diào)用偽指令定義存儲區(qū)域偽指令具體細節(jié)請參照 2.7.2 節(jié)10編寫一段延時1000 個指令周期的延時子程序。答: DL1000;MOV R7

13、#248DJNZ R7$MOV R7#250DJNZ R74RET第 3章 第一個樣例程序及工程組織 習題參考答案1什么叫通用 I/O 口?答:所謂通用 I/O ,也記為 GPIO( General Purpose I/O ),即基本的輸入 /輸出,有時也稱并行I/O ,或普通 I/O ,它是I/O 的最基本形式。2 什么叫上拉電阻與下拉電阻?它們的作用是什么?如何選擇上拉電阻與下拉電阻的阻值?哪些情況下使用上拉電阻? 哪些情況下使用下拉電阻?答:通俗地說,若 MCU勺某個引腳通過一個電阻接到電源( Vcc)上,這個電阻被稱為“上 拉電阻”。與之相對應,若 MCU勺某個引腳通過一個電阻接到地(

14、 GND上,則相應的電阻被 稱為“下拉電阻” ;他們使得懸空的芯片引腳被上拉電阻或下拉電阻初始化為高電平或低電平;根據(jù)實際情況,上拉電阻與下拉電阻可以取值在1KQ10KQ之間,其阻值大小與靜態(tài)電流及系統(tǒng)功耗相關; 當某個引腳需要初始化成高電平時可以通過上拉電阻接電源, 當某 個引腳要初始化低電平時可以通過下拉電阻接地。3 .什么是OC輸出?為什么OC輸出的I/O 口一定要上拉?答:OC輸出,即開漏輸出,即集電極開路。只有接了上拉電阻,才能輸出高低電平,否則只能輸出低電平了。4為什么在無操作系統(tǒng)的嵌入式系統(tǒng)軟件主程序中使用無限循環(huán)?答:由于程序都是順序執(zhí)行的。 如果不使用無限循環(huán),程序執(zhí)行一遍代

15、碼, 就不能在接受其他的任務操作了。 在嵌入式系統(tǒng)中, 這是致命的, 如果一個嵌入式產(chǎn)品每次只能使用一次或只接受一次任務, 那是無法想象的。 但是使用了無限循環(huán), 就可以不停地監(jiān)聽任務, 并執(zhí)行。5 .找出樣例子工程的機器碼文件,解釋 S19文件的含義。答:源文件經(jīng)編譯、連接后可獲得目標碼文件(.S19文件),它是Freescale MCU勺機器碼文件,通過寫入程序可將機器碼下載到目標MClrt白F Flash存儲器,也可以通過光盤中蘇州大學嵌入式系統(tǒng)研發(fā)中心開發(fā)的獨立寫入軟件SD-Programmer-S08 讀出寫入到 Flash 的 S19的內(nèi)容,觀察實際寫入到Flash的內(nèi)容是否和S1

16、9的內(nèi)容相同。該程序也可以擦寫Flash。目標代碼文件是以 S記錄格式表示的機器碼文件。S記錄格式是Freescale公司的十六進制目標代碼文件, 它將目標程序和數(shù)據(jù)以 ASCII 碼格式表示, 可直接顯示和打印。 目標文件由 若干行S記錄構成,每行S記錄可以用CR/LF/NUL結(jié)尾。一行S記錄由五部分組成,具體細節(jié)請參考書中3.4.4 。6 .舉例給出CW環(huán)境C語言工程文件的組織結(jié)構圖。答:以下是控制小燈閃爍的CW環(huán)境C語言工程文件的組織結(jié)構圖的 IncLudjes. h Xi 5k jtiT生力件-4- TjFrameJ<忘臨加里頭文件>甌T7p±.k費型定義期書B

17、MC9S0aAttB0.h &版0寄存卷及其相美位定K 田| G«iMalFg.h通用求數(shù)去文耕匕曰 c,川 口 uiL«iL I-<ttfl-wn 是 Jt 林9 GFIO h地用輸入,輸出處I5D構制弘文部 n Light h指示燈(L岫,件女文件-爭卜aim.:闌敦皿inE二中新處理南融文件-匕股2工-Y總體制程序文件用的neralFun. c幽出南數(shù)WCUInit.c芯片初始化國闡95 口鼬粕C,C AIM普力;巖茂其相關位定更F7 jC,mporwRt Cf 蚣林構件、通GFIO. c的川輸入輸出體巴力和件程序文件 兇Li gtt. c指4址JLig

18、ht)文件-CLits-GF 丈件,幽 aasii £. lib匕£。拄H Seltii5s -UL程設置文件1±曰空artuf) Cod.e9 SLrtOfl c J_程后動文件-CjL.nker Filz 一送接文ft酊| burjner bblS Project. prmQ Projsct. iap憶工顏明.tKtLn說明文fl7 .分析Project.prm 文件的功能。答:Project.prm 文件主要實現(xiàn)了芯片的 RAM ROM勺定義,初始化 RAM的變量。初始化 堆棧的大小。定義復位向量,即應用程序的默認入口。還包含了啟動代碼,是硬件復位后的函數(shù)入

19、口。8 .如何查看一個文件.LST文件,舉例分析一個LST文件。答:利用Freescale Codewarrior打開控制小燈閃爍工程文件,通過settings-target - compiler for HC08-option-output-generate Listing File 編譯連接可以生成.LST文件。然后在該工程的bin文件夾中可以找Freescale Codewarrior 打開main.lst 文件。看下面的一段代碼:edit-standard點擊確定.LST文件,通過26:Light_Init(Light_Run_PORT,Light_Run,Light_OFF); 指示

20、燈初始化004c a606004e 87004f5f0050 4f2211LDA #6PSHA0051 cd0000 60054 8a 3CLRXCLRAJSR Light_InitPULH是C程序代碼;26: Light_Init(Light_Run_PORT,Light_Run,Light_OFF) 004c a606 004e 87 0050 4f0051 cd0000004f5f 0054 8a 是該程序的機器代碼;其后面的對應的是匯編程序代碼。9.如何能知道一段或一句 C語言源程序的匯編代碼與機器碼,舉例之。答:請參考第 8 題。10給出一個C 語言控制三盞小燈的程序,并調(diào)試,功能自

21、定。答:請參考課本中 3.5 及隨書光盤。11 .給出一個S08匯編語言控制三盞小燈的程序,并調(diào)試,功能自定。答:請參考課本中 3.6及隨書光盤。12 .分析一個map文件,簡要說明map文件給了我們什么信息?答:打開工程后,展開“工程設置文件夾<Project Settings> ”后,再展開“ Linker Files ”文件夾,可以看到“ Project.map ”文件,通常稱之為工程的“映像文件” ,這個文件告訴我們,源代碼被編譯連接后的機器碼,到底被下載到MCUJ存儲器中的什么地方,在高級調(diào)試時,可能需要用到這些知識。第 4章 基于硬件構件的嵌入式系統(tǒng)開發(fā)方法 習題參考答

22、案1 簡要闡述嵌入式硬件構件的基本思想及優(yōu)點。答:嵌入式硬件構件是指將一個或多個硬件功能模塊、支撐電路及其功能描述封裝成一個可重用的硬件實體,并提供一系列規(guī)范的輸入 / 輸出接口。 優(yōu)點:結(jié)構清晰,方便移植。2硬件構件如何分類?給出各類硬件構件的定義及原理圖設計要點。答:根據(jù)所擁有接口類型的不同,硬件構件分為核心構件、中間構件和終端構件三種類型。核心構件只有提供接口,沒有需求接口。也就是說,它只為其它硬件構件提供服務,而不接受服務。在以單MCM核心的嵌入式系統(tǒng)中,MCU勺最小系統(tǒng)就是典型的核心構件。中間構件 既有需求接口又有提供接口,即它不僅能夠接受其它構件提供的服務,而且也能夠為其它構件提供

23、服務。而終端構件只有需求接口,它只接受其它構件提供的服務。設計核心構件時,需考慮的問題是: “核心構件能為其他構件提供哪些信號?”核心構件設計的目標是:凡是使用該MCUS行硬件系統(tǒng)設計時,核心構件可以直接“組裝”到系統(tǒng)中,無須任何改動。為了實現(xiàn)這一目標,在設計核心構件的實體時必須考慮細致、周全,包括穩(wěn)定性、擴展性等,封裝要完整。設計中間構件時, 需考慮的問題是: “中間構件需要接受哪些信號, 以及提供哪些信號?”為直觀起見,設計中間構件時,將構件的需求接口放置在構件實體的左側(cè),提供接口放置在 右側(cè)。設計終端構件時,需考慮的問題是: “終端構件需要什么信號才能工作?” 。終端構件沒有提供接口,它

24、僅有與上一級構件交互的需求接口,因而接口標識均為斜體標注的接口注釋。3為什么要將某些寄存器名和寄存器位在頭文件中進行宏定義?答:對MCU內(nèi)的模塊寄存器名和端口名進行重定義,在其它的代碼里面都將使用宏名對模塊寄存器和端口進行操作。這樣,當?shù)讓域?qū)動程序移植到其它MCU時,只要修改重定義語句就可以了。4為什么在設計底層硬件驅(qū)動構件時,不能使用全局變量?答:應用程序在使用底層構件時,嚴格禁止通過全局變量來傳遞參數(shù),所有的數(shù)據(jù)傳遞都要通過函數(shù)的形式參數(shù)來接收。這樣做不但使得接口簡潔,更加避免了全局變量可能引發(fā)的安 全隱患。5給出設計底層硬件驅(qū)動構件的基本原則,并舉例說明。答:在對底層構件進行設計時,最關

25、鍵的工作是要對構件的共性和個性進行分析,抽取出構件的屬性和對外接口函數(shù)。盡量做到:當一個底層構件應用到不同系統(tǒng)中時,僅需修改構件的頭文件,對于構件的源程序文件則不必修改或改動很小。例如,串行通信模塊SCI是大多數(shù)MCUB具有的內(nèi)部模塊。仔細分析各種MCU串行通信程序發(fā)現(xiàn):在查詢方式下,各種MCU都是根據(jù)狀態(tài)寄存器中的兩個標志位來判斷是否接收到數(shù)據(jù)和數(shù)據(jù)是否發(fā)送完畢,這就是 SCI模塊的共性。X于不同的MCU該狀態(tài)寄存器的名稱可能不同,這兩個標志位的位號也有可能不同。此外,用以設置波特率、通信格式、是否校驗、是否允許中斷等參數(shù)的寄存器也不同,這就是SCI 模塊的個性。分析出了共性和個性之后,就可

26、以抽取出 SCI 構件的屬性和操作,編制構件頭文件和程序文件了。6什么叫程序復用?什么叫程序移植?怎樣才能方便重用與移植。答:復用是指在一個系統(tǒng)中,同一構件可被重復使用多次。移植是指將一個系統(tǒng)中使用到的構件應用到另外一個系統(tǒng)中;在設計時最關鍵的工作是要對構件的共性和個性進行分析,抽取出構件的屬性和對外接口函數(shù),設計是充分考慮這幾放面的因素,才能方便重用和移植。7怎樣方便驅(qū)動程序進行移植?答:首先對外接口函數(shù)設計要合理,其次要對 MCU 內(nèi)的模塊寄存器名和端口名進行重定義,在其它的代碼里面都將使用宏名對模塊寄存器和端口進行操作。這樣,當?shù)讓域?qū)動程序移植到其它MCIM,只要修改重定義語句就可以了,

27、這就方便了驅(qū)動程序的移植。8闡述利用硬件構件思想設計嵌入式應用系統(tǒng)時應該遵循的基本原則。答: 應當遵循以下基本規(guī)則:( 1)構件的頭文件和源程序文件的主文件名一致,且為構件名。( 2)屬性和操作的命名統(tǒng)一以構件名開頭。這樣做的好處是:當使用底層構件組裝軟件系統(tǒng)時,避免構件之間出現(xiàn)同名現(xiàn)象。同時,名稱要使人有“顧名思義”的效果。(3)對MCUJ的模塊寄存器名和端口名進行重定義,在其它的代碼里面都將使用宏名對模塊寄存器和端口進行操作。這樣,當?shù)讓域?qū)動程序移植到其它MCU時,只要修改重定義語句就可以了。( 4)內(nèi)部函數(shù)與外部函數(shù)要設計合理,函數(shù)參數(shù)個數(shù)及類型要考慮全面。內(nèi)部函數(shù)僅提供給同一構件中的其

28、它內(nèi)部函數(shù)或外部函數(shù)調(diào)用,作用域僅限于定義該函數(shù)的文件。外部函數(shù)是對外接口函數(shù),供上層應用程序調(diào)用。在定義外部函數(shù)時,應該對函數(shù)名、函數(shù)功能、入口參數(shù)、函數(shù)返回值、使用說明、函數(shù)適用范圍等進行詳細描述,以增強程序的可讀性。上層應用程序不能直接對構件的屬性進行讀取或設置,必須借助于該構件提供的接口操作函數(shù)來 實現(xiàn)。( 5)應用程序在使用底層構件時,嚴格禁止通過全局變量來傳遞參數(shù),所有的數(shù)據(jù)傳遞都要通過函數(shù)的形式參數(shù)來接收。這樣做不但使得接口簡潔,更加避免了全局變量可能引發(fā)的安全隱患。第 5章 串行通信接口 SCI 習題參考答案1簡要闡述異步串行通信涉及的主要基本概念。答:串行通信至少涉及到以下幾

29、個基本概念:第一,每個字節(jié)之間是如何區(qū)分開的?第二,發(fā)送一位的持續(xù)時間是多少?第三, 怎樣知道傳輸是正確的?第四, 可以傳輸多遠?這些問題屬于串行通信的基本概念。2表征串行通信速度的物理量是什么?串行通信的傳輸速度有限制嗎?答:位長( Bit Length ) ,也稱為位的持續(xù)時間( Bit Duration ) 。其倒數(shù)就是單位時間內(nèi)傳送的位數(shù)。人們把每秒內(nèi)傳送的位數(shù)叫做波特率( Baud Rate ) 。波特率的單位是:位/ 秒,記為 bps 。 bps 是英文 bit per second 的縮寫,習慣上這個縮寫不用大寫,而用小寫。通常情況下, 波特率的單位可以省略。 通常使用的波特率有

30、600、 900、 1200、 1800、 2400、 4800、9600、 19200、 38400、 57600、 115200、 128000 等。有限制。因為隨著波特率的提高,位長變小, 以至于很容易受到電磁源的干擾,通信就不可靠了。當然,還有通信距離問題,距離小,可以適當提高波特率,但這樣畢竟提高的幅度非常有限,達不到大幅度提高的目的。3. MCUt PC進行通信為什么要進行電平轉(zhuǎn)換?如何進行電平轉(zhuǎn)換?答:在MC",若用RS-232總線進行串行通信,則需外接電路實現(xiàn)電平轉(zhuǎn)換。在發(fā)送端,需要用驅(qū)動電路將TTL 電平轉(zhuǎn)換成RS-232 電平; 在接收端, 需要用接收電路將RS-

31、232 電平轉(zhuǎn)換為TTL 電平。電平轉(zhuǎn)換器不僅可以由晶體管分立元件構成,也可以直接使用集成電路。目前廣泛使用MAX23出片較多,該芯片使用單一+5V電源供電實現(xiàn)電平轉(zhuǎn)換。4給出 SCI 編程的通用模型。答: SCI 具有初始化、接收和發(fā)送三種基本操作。按照構件的思想,可將它們封裝成三個獨立的功能函數(shù), 初始化函數(shù)完成對SCI 模塊的工作屬性的設定, 接收和發(fā)送功能函數(shù)則完成實際的通信任務。 以 SCI 的初始化、 接收和發(fā)送三種基本操作為例, 來說明實現(xiàn)構件化的全 過程。( 1 ) SCI 模塊是最底層的構件,它主要向上提供三種服務,分別是SCI 模塊的初始化、接收單個字節(jié)和發(fā)送單個字節(jié),向下

32、則直接訪問模塊寄存器,實現(xiàn)對硬件的直接操作。另外,從現(xiàn)實使用角度出發(fā),它還需要封裝接收N個字節(jié)和發(fā)送N個字節(jié)的子功能函數(shù)。( 2) SCI 模塊在軟件上對應1 個 SCI.c 程序源代碼文件和1 個 SCI.h 頭文件,當需要對它進行移植時, 大多數(shù)情況下只需簡單拷貝這兩個文件即可, 無需對源代碼文件和頭文件進行修改,只有當實施不同芯片之間的移植時,才需要修改頭文件中與硬件相關的宏定義。( 3 )上層構件或軟件在使用該構件時,嚴格禁止通過全局變量來傳遞參數(shù),所有的數(shù)據(jù)傳遞都直接通過函數(shù)的形式參數(shù)來接收。 這樣做不但使得接口簡潔, 更加避免了全局變量可能 引發(fā)的安全隱患。5簡述中斷的作用與處理過

33、程。答:中斷是MC城時地處理內(nèi)部或外部事件的一種內(nèi)部機制。當某種內(nèi)部或外部事件發(fā)生時,中斷系統(tǒng)將迫使 CPUW停正在執(zhí)行的程序,轉(zhuǎn)而去進行中斷事件的處理,中斷處理完畢后, 又返回被中斷的程序處,繼續(xù)執(zhí)行下去。中斷的處理過程一般為:關中斷(在此中斷處理完成前,不處理其它中斷)、保護現(xiàn)場、執(zhí)行中斷服務程序、恢復現(xiàn)場、開中斷等。6. S08系列MCU?有哪些中斷源?答:S08系列MCUT26個中斷源,按優(yōu)先級從高到低的順序分別是:復位中斷(1個)、SW脂令中斷(1個)、IRQ引腳中斷(1個)、低電壓檢測中斷(1個)、ICG中斷(1個)、定時器中 斷(10個)、SPI中斷(1個)、SCI中斷(6個)、

34、鍵盤輸入中斷(1個)、ADC專換完成中斷(1 個)、IIC中斷(1個)和實時中斷(1個)。26個中斷源只有18個中斷向量,有的是幾個中斷 源使用同一個中斷向量。7. S08系列MCU勺中斷執(zhí)行過程分為哪幾個步驟?答:CP囪執(zhí)行完一條指令,若程序有開放某些中斷及總中斷(使用 CLI指令),則CPU®照優(yōu) 先級次序查詢所有中斷標志位,若某個中斷已發(fā)生,則響應該中斷請求。中斷響應過程是:1 1) CP吶的寄存器PCL PCH X、A CC豚次進棧(注意計被保護,這是為了與 HC0舔歹U MC廉容,所以必要時,H應由用戶中斷服務程序保護);(2)自動關總中斷(即相當于自動執(zhí)行SEI指令),防

35、止其他中斷進入;(3)從相應的中斷向量地址取出中斷向量(即中斷服務程序的入口地址)送給PC;(4)執(zhí)行中斷服務程序, 直到執(zhí)行中斷返回指令 RTI。RTI指令從堆棧中依次彈出 CCR A、X、 PCH PCL,使CPIM回原來中斷處繼續(xù)執(zhí)行;(5)若中斷過程也允許響應新的中斷,可在中斷服務程序中用 CLI指令開放中斷。一般不建議這樣做,可用其他編程技巧處理相關問題。8 .給出AW6(fr斷編程框架與基本步驟。答:在CW環(huán)境下使用 AW60芯片中斷步驟是:在 main.c中,依照“關總中斷一開模塊中 斷一開總中斷”的順序打開模塊中斷;在isr.c文件中,編寫中斷服務程序,修改中斷向量表;按照這種

36、思路,編程的基本步驟可以概括為3步:(1)新建(或者復制)一個 isr.c 文件,并加入工程中。(2)定義中斷向量表(復制 isr.c的應修改中斷向量表)。(3)定義ISR并在中斷向量表中填入相應 ISR的名稱。如中斷處理函數(shù)文件 (isr.c )之中 的函數(shù) interrupt void SCI1_Recv(void) 的定義。9 .用一種高級語言實現(xiàn)PC方串行數(shù)據(jù)收發(fā)的通用程序(要求:從 PC方發(fā)送數(shù) 據(jù)A至UMCU MCUC到后,判斷是否是A,若是,回發(fā)給PC機,在PC機顯示“用 行口正常”,若不是,則在 PC機顯示“通信有誤”。) 參見隨書光盤的習題參考解答程序。10 .在上一題測試的

37、基礎上編寫通信程序,實現(xiàn)如下功能:通過 PC機發(fā)送一個 命令以控制接在PTA0PTA目的8個小燈亮暗狀態(tài),各個小燈初始狀態(tài)都為暗, 首先進行通信測試,PC機發(fā)送“A” (65),若MCI#收到則8個小燈全亮,并 回送字符“A" (65),雖然MC頃收到但有問題,不是“A” (65),說明有誤碼, 則4個小燈全亮,并回送字符“ 0” (48),否則8個小燈全暗無反應,通信測試 成功后進入控制狀態(tài),PC機發(fā)送字符串“ 11”,PTA0口燈亮;發(fā)送“10”,PTA0 口燈暗;發(fā)送“ 21”,PTA1 口燈亮;發(fā)送“ 20”,PTA1 口燈暗;依此類推,當 給PTA口發(fā)送“01”,8個小燈全

38、亮,發(fā)送“ 00”,全暗。參見隨書光盤的習題參 考解答程序。第6章GPIO的應用實例一鍵盤、LE% LCD習題參考答案1為了實現(xiàn)對鍵盤的編程,至少應該考慮哪幾個方面的問題?分別如何解決?答:第一,如何識別鍵盤上的按鍵?第二,如何區(qū)分按鍵是否真正地被按下,還是抖動?第三,如何處理重鍵問題?( 1)鍵的識別如何知道鍵盤上哪個鍵被按下就是鍵的識別問題。若鍵盤上閉合鍵的識別由專用硬件實現(xiàn),稱為編碼鍵盤;而靠軟件實現(xiàn)的稱為未編碼鍵盤。在這里主要討論未編碼鍵盤的接口技術和鍵盤輸入程序的設計。識別是否有鍵被按下,主要有查詢法、定時掃描法與中斷法等。而要識別鍵盤上哪個鍵被按下主要有行掃描法與行反轉(zhuǎn)法。( 2)

39、抖動問題當鍵被按下時, 會出現(xiàn)所按的鍵在閉合位置和斷開位置之間跳幾下才穩(wěn)定到閉合狀態(tài)的情況,當釋放一個按鍵時也會出現(xiàn)類似的情況,這就是抖動問題。抖動持續(xù)的時間因操作者而異,一般為510ms之間,穩(wěn)定閉合時間一般為十分之幾秒幾秒,由操作者的按鍵動作所確定。在軟件上,解決抖動的方法通常是延遲等待抖動的消失或多次識別判定。( 3)重鍵問題所謂重鍵問題就是有兩個及兩個以上按鍵同時處于閉合狀態(tài)的處理問題。 在軟件上, 處理重鍵問題通常有連鎖法與巡回法。2編程:對于鍵盤程序,樣例中使用的是中斷法。請用查詢法實現(xiàn)鍵盤功能。答:略。3 .簡述才3描法LED顯示編程原理。答:略。具體參見本章6.2.1 。4 .

40、簡述字符型液晶顯示控制器HD44780!勺編程結(jié)構。答:從編程角度看,HD44780內(nèi)部主要由指令寄存器(IR)、數(shù)據(jù)寄存器(DR)、忙標志(BF)、地址計數(shù)器(AC) 、顯示數(shù)據(jù)寄存器(DD RAM) 、字符發(fā)生器ROM( CG ROM) 、字符發(fā)生器RAM(CG RAM及時序發(fā)生電路構成。5 .編程:在LCD上同步顯示PC時間。答:略。第 7章 定時器模塊 習題參考答案/ 定時1 實現(xiàn)計數(shù)與定時的基本方法有哪些?比較它們的優(yōu)缺點。答:實現(xiàn)計數(shù)與定時的基本方法有三種:完全硬件方式、完全軟件方式和可編程計數(shù)器 器方法。其中完全硬件方式速度快,但通用性和靈活性差;完全軟件方式的優(yōu)點是節(jié)省硬件。主

41、要缺點是執(zhí)行延時程序期間,CPUK直被占用,所以降低了 CPU的使用效率,也不容易提供多作業(yè)環(huán)境;可編程計數(shù)器/定時器方法的最突出的優(yōu)點是計數(shù)時不占用CPU的時間。2.簡述AW606時器模塊的定時功能是如何實現(xiàn)的。答:在AW60定時器的內(nèi)部有狀態(tài)和控制寄存器,通過對它某些位的設置,就可以確定多少時間計數(shù)器加1,即定時間隔。通過對狀態(tài)和控制寄存器的某位進行設置,可以決定在計數(shù)器溢出時,是否允許中斷。利用這樣的中斷,可以編寫中斷例程,實現(xiàn)預設的功能。在定時器內(nèi)部還有個預置寄存器,當計數(shù)器的值等于預置寄存器的值時,稱為計數(shù)器溢出,當計數(shù)器溢出時,計數(shù)器的值被賦0 ,同時將計數(shù)器溢出標志等狀態(tài)置于狀態(tài)和控制寄存器中。使用預置計數(shù)功能可以得到精確的溢出時間,可以在任何時候暫停或清除計數(shù)器的計數(shù)(溢出功能是定時器的最基本的功能) 。3定時器模塊的核心是什么,為什么?答:定時器模塊的核心是計數(shù)器。計數(shù)器裝載預置的初始計數(shù)值之后,啟動會以預設的頻率進行加一或者減一的運作, 當其值變化到0(溢出到0 或者減到 0) 時, 即完成了定時的功能,其定時的時長取決于預置的初始計數(shù)值和預設的頻率。4設

溫馨提示

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

評論

0/150

提交評論