單片機原理和應用第三版林立張俊亮課后答案解析_第1頁
單片機原理和應用第三版林立張俊亮課后答案解析_第2頁
單片機原理和應用第三版林立張俊亮課后答案解析_第3頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第一章習題1什么是單片機?單片機和通用微機相比有何特點?答:單片機又稱為單片微計算機,它的結構特點是將微型計 算機的基本功能部件(如中央處理器()、存儲器、輸入接口、 輸出接口、定時/計數(shù)器及終端系統(tǒng)等)全部集成在一個半導體 芯片上。雖然單片機只是一個芯片,但無論從組成還是從邏輯 功能上來看,都具有微機系統(tǒng)的定義。與通用的微型計算機相比, 單片機體積小巧,可以嵌入到應用系統(tǒng)中作為指揮決策中心,是應用系統(tǒng)實現(xiàn)智能化。2.單片機的發(fā)展有哪幾個階段? 8位單片機會不會過時,為什 么?答:單片機誕生于1971年,經歷了、三大階段,早期的單 片機都是8位或4位的。其中最成功的是的 8031,此后在803

2、1 上發(fā)展出了 51系列系統(tǒng)?;谶@一系統(tǒng)的單片機系統(tǒng)直到現(xiàn)在 還在廣泛使用。隨著工業(yè)控制領域要求的提高,開始出現(xiàn)了16位單片機,但因為性價比不理想并未得到很廣泛的應用。90年代后隨著消費電子產品大發(fā)展,單片機技術得到了巨大提高。 隨著i960系列特別是后來的系列的廣泛應用,32位單片機迅速取 代16位單片機的高端地位,并且進入主流市場。然而,由于各 應用領域大量需要的仍是 8位單片機,因此各大公司紛紛推出高 性能、大容量、多功能的新型 8位單片機。目前,單片機正朝著高性能和多品種發(fā)展,但由于51系列8位單片機仍能滿足絕大多數(shù)應用領域的需要,可以肯定,以51系列為主的8位單片機,在當前及以后的

3、相當一段時間內仍將占 據(jù)單片機應用的主導地位。3.舉例說明單片機的主要應用領域。答:單片機廣泛應用于儀器儀表、家用電器、醫(yī)用設備、航空航天、專用設備的智能化管理及過程控制等領域,大致可分如下幾個范疇:智能儀器單片機具有體積小、功耗低、控制功能強、擴展靈活、微型化和使用方便等優(yōu)點,廣泛應用于儀器儀表中,結合不同類型的 傳感器,可實現(xiàn)諸如電壓、電流、功率、頻率、濕度、溫度、流 量、速度、厚度、角度、長度、硬度、元素、壓力等物理量的測 量。采用單片機控制使得儀器儀表數(shù)字化、智能化、微型化,且 功能比起采用電子或數(shù)字電路更加強大。例如精密的測量設備(電壓表、功率計,示波器,各種分析儀)。工業(yè)控制單片機

4、具有體積小、控制功能強、功耗低、環(huán)境適應能力強、擴展靈活和使用方便等優(yōu)點,用單片機可以構成形式多樣的控制 系統(tǒng)、數(shù)據(jù)采集系統(tǒng)、通信系統(tǒng)、信號檢測系統(tǒng)、無線感知系統(tǒng)、 測控系統(tǒng)、機器人等應用控制系統(tǒng)。 例如工廠流水線的智能化管 理,電梯智能化控制、各種報警系統(tǒng),與計算機聯(lián)網構成二級控制系統(tǒng)等。 家用電器現(xiàn)在的家用電器廣泛采用了單片機控制,從電飯煲、洗衣機、電冰箱、空調機、彩電、其他音響視頻器材、 再到電子秤量設備和白色家電等。網絡和通信現(xiàn)代的單片機普遍具備通信接口,可以很方便地與計算機進 行數(shù)據(jù)通信,為在計算機網絡和通信設備間的應用提供了極好的 物質條件,現(xiàn)在的通信設備基本上都實現(xiàn)了單片機智能控

5、制,從手機,電話機、小型程控交換機、樓宇自動通信呼叫系統(tǒng)、列車 無線通信、再到日常工作中隨處可見的移動電話, 集群移動通信, 無線電對講機等。醫(yī)用設備領域單片機在醫(yī)用設備中的用途亦相當廣泛,例如醫(yī)用呼吸機,各種分析儀,監(jiān)護儀,超聲診斷設備及病床呼叫系統(tǒng)等等。模塊化系統(tǒng)某些專用單片機設計用于實現(xiàn)特定功能,從而在各種電路中進行模塊化應用,而不要求使用人員了解其內部結構。 如音樂集 成單片機,看似簡單的功能,微縮在純電子芯片中(有別于磁帶 機的原理),就需要復雜的類似于計算機的原理。如:音樂信號 以數(shù)字的形式存于存儲器中(類似于),由微控制器讀出,轉化 為模擬音樂電信號(類似于聲卡)。在大型電路中,

6、這種模塊化 應用極大地縮小了體積,簡化了電路,降低了損壞、錯誤率,也 方便于更換。 汽車電子 單片機在汽車電子中的應用非常廣泛, 例如汽車中的發(fā)動機控制器,基于總線的汽車發(fā)動機智能電子控 制器、導航系統(tǒng)、防抱死系統(tǒng)、制動系統(tǒng)、胎壓檢測等。此外,單片機在工商、金融、科研、教育、電力、通信、物流和國防航空航天等領域都有著十分廣泛的用途。4將十進制數(shù)37轉換為二進制,碼和十六進制數(shù),并對轉換 結果進行對比分析。答:37=(100101)(25)H ; 碼為 0011 0111 ;可見,同一個數(shù)用不同進制表示,其結果也不同。5. 寫出下列十進制數(shù)在 8位微機中的原碼,反碼和補碼形式。(1)+36原碼

7、0010 0100B反碼 0010 0100B補碼 0010 0100B(2)-36原碼 1010 0100B反碼 1101 1011B補碼 1101 1100B(3)+127原碼 0111 1111B反碼 0111 1111B補碼 0111 1111B(4) -128原碼 1000 OOOOB反碼 0111 1111B補碼 1000 0000B(5) -121原碼 1111 1001B反碼 1000 0110B補碼 1000 0111B6. 對于二進制數(shù)1000 1001B,若理解為無符號數(shù),則該數(shù)對 應十進制數(shù)為多少?若理解為有符號數(shù), 則該數(shù)對應十進制為多 少?若理解為數(shù),則該數(shù)對應十進

8、制數(shù)為多少?答:1000 1001B無符號數(shù):137有符號數(shù):-9 ;數(shù):89;7. 對下列各組數(shù)進行“與”,“或”和“異或”運算。(1) 1010 1010 和 0000 0000與 0000 0000或 1010 1010異或 1010 1010(2) 0111 0111 和 1000 1000與 0000 0000或 1111 1111異或 1111 1111(3)1110 1110 和 0111 0111與 0110 0110或 1111 1111異或 1001 1001 0011 1100 和 1111 0000與 0011 0000或 1111 1100異或 1100 11008的

9、工作界面中包含哪幾個窗口?菜單欄中包含哪幾個選 項?答:的工作界面主要包括標題欄、菜單欄、工具欄、狀態(tài) 欄、方位控制按鈕、仿真進程控制按鈕、對象選擇窗口,原理圖 編輯窗口和預覽窗口等。主菜單欄包含文件、查看、編輯、工具、設計、圖形、源文 件、調試、庫、模板、系統(tǒng)、幫助選項。9. 利用模塊開發(fā)單片機系統(tǒng)需要經過哪幾個主要步驟?答:(1)啟動;(2)繪制電路原理圖;(3)輸入單片機程序;(4)進行源代碼調試;(5)仿真運行。10. 何謂?利用模塊進行設計需要經過哪幾個主要步驟?答:(),中文名稱為印制電路板,又稱印刷電路板、印刷線路板,是重要的電子部件,是電子元器件的支撐體,是電子 元器件電氣連接

10、的提供者。 由于它是采用電子印刷術制作的,故被稱為“印刷”電路板。利用模塊進行設計的主要步驟:(1)啟動;(2)元器件布局;(3)元器件布線;(4)鋪銅;(5)三維效果圖;(6)輸出。第2章51單片機結構及原理習題1. - 51單片機內部由哪些功能部件組成,各有什么功能?答:以51單片機為例,其內部功能部件有:控制器:是對取自程序存儲器中的指令進行譯碼,在規(guī)定的時刻發(fā)出各種操作所需的控制信號,完成指令所規(guī)定的功能;運算器:根據(jù)控制器發(fā)來的信號,執(zhí)行算術邏輯運算操作;存儲器:包括程序存儲和數(shù)據(jù)存儲器;定時器計數(shù)器:2個16位定時器/計數(shù)器,可對機器周期計數(shù),也可對外部輸入脈沖計數(shù);中斷系統(tǒng):可響

11、應三個內部中斷源和兩個外部中斷源的中斷請求;輸入輸出接口: 4個8位并行口和一個全雙工串行口;2. 51單片機外部引腳的名稱是什么?各有什么功能?答:(1)電源及晶振引腳(40腳):+5V電源引腳(20腳):接地引腳1(19腳);外接晶振引腳(內置放大器輸入端)2(18腳):外接晶振引腳(內置放大器輸出端) (2)控制引腳(9)為復位/備用電源引腳為地址鎖存使能輸出/編程脈沖輸入:輸出訪問片外程序存儲器讀選通信號:外部允許訪問/編程電源輸入并行口引腳P0.0 -P0.7(39,-32 腳)-P0 口;P1.0 -P1.7(18腳)-P1 口;P2.0 -P2.7(21/-28 腳)-P2 口;

12、P3.0 -P3.7(10-17 腳)-P3 口。3. 51系列單片機的封裝有哪些類型?請說明每一種封裝引腳之間的距離。 答:51系列單片機的封裝有:CY期RS1RS00VF1F40引腳雙列直插封裝(一一),引腳之間的距離是100();44引腳方形扁平封裝( 一一)方式,引腳之間的距離是;44引腳帶引線的塑料芯片載體()。4. 什么是復位?單片機復位電路有哪幾種,工作原理分別是 什么?答:復位使單片機恢復原始默認狀態(tài)的操作。單片機復位電路有:上電復位電路,由電阻和電容構成,通過上電時,電容相當于短路而使復位引腳在晶振有效的情況下保持8 / 582個機器周期的高電平;按鈕開關復位電路,由兩個電阻

13、的分壓 構成,通過手工按下按鈕,使復位引腳在晶振有效的情況下保持 2個機器周期的高電平。5. 通常的微機系統(tǒng)存儲器結構有哪幾種?51單片機存儲器屬于哪一類? 51可尋址多大空間?答:通常的微機系統(tǒng)存儲器結構有兩種結構,即哈佛結構和 馮諾依曼結構(也叫普林斯頓結構),51單片機存儲器屬于,51 可尋址空間是兩個64,即64的程序存儲空間和64的數(shù)據(jù)存儲 空間。6 .片內中低128個單元劃分為哪三個主要部分?各部分 的主要功能是什么?答:片內中低128個單元劃分為三個部分:工作寄存器區(qū)(001),四組,每組8個,可作用工作寄存器 切換使用; 可位尋址區(qū)(202), 16B,位地址為007,用作 為

14、按位尋址的空間;用戶區(qū)(307), 80B,用作普通單元或堆棧。7. 程序狀態(tài)字寄存器各位的定義是什么?答:程序狀態(tài)字寄存器各位的定義如下:.7 .6 .5 .4 .3 .2 .1 .0 .7:進/借位標志,加法有進位時置1,減法有借位時置1; .6 :輔助進位標志,加法運算低四位 向高上四位有進位時置1;.5、.1 :用戶標志位F0和用戶標志位F1,保存用戶的位數(shù)據(jù);.4、.3 :工作寄存器選擇控制位 1和0, 00至11分別選擇四 組工作之一作為當前工作寄存器.2 :溢出標志位,有符號數(shù)加、減運算結果有溢出或乘除上 結果異常(乘法運算結果大于255即乘積在中,或除法運算除數(shù) 為0)時置1

15、.0 :奇偶標志位P,累加器A中1的個數(shù)為奇數(shù)時 置1。8. 什么是時鐘周期?什么是機器周期?什么是指令周期?當 振蕩頻率為12時,一個機器周期為多少微秒?答:時鐘周期又叫振蕩周期或拍,用P表示,是51單片機中最小的時間單位,在一個時鐘周期內,完成一個最基本的動作。機器周期:由12個時鐘周期構成,完成一個基本操作指令周期:是執(zhí)行一條指令所需的時間,根據(jù)指令的復雜性, 可由14個機器周期構成。當振蕩頻率為12時,一個機器周期為1微秒。9. PO、P1、P2和P3 口的結構和功能分別是什么?答:P0 口的每一位由1個鎖存器、2個三態(tài)緩沖器、1個輸 出控制電路(非門X、與門、電子開關、輸出驅動電路構

16、成,其 功能既可以作為通用口實現(xiàn)輸入/輸出功能,也可作為單片機地 址線的低8位和數(shù)據(jù)線實現(xiàn)外部擴展功能。在用作輸入輸出口 時,需外接上拉電阻。P1 口的每一位由1個鎖存器、1個場效應管驅動器 V和2個 三態(tài)門緩沖器構成,其作用是用作輸入輸出口P2 口的每一位由1個鎖存器、2個三態(tài)緩沖器、1個輸出控制 單元、1個輸出驅動單元構成,其功能是用作輸入輸出口,或地 址總線的高8位。P3 口的每一位由1個鎖存器、2個三態(tài)緩沖器、1個第二功能 控制單元、1個輸出驅動單元構成,其作用是用作輸入輸出口 或第二功能。10. 51單片機引腳的作用是什么?當 51不外接存儲器時,上 的輸出的脈沖頻率是多少?答:51

17、單片機引腳的作用是對外部存儲尋址時鎖存P0 口輸出的低8位地址,當51不外接存儲器時,上的輸出的脈沖頻率是6。第3章 單片機的匯編語言與程序設計習題1. 51單片機有哪幾種尋址方式?適用于什么地址空間?答:51單片機有7種尋址方式:直接尋址、寄存器尋址、寄 存器間接尋址、立即尋址、變址尋址、位尋址、相對尋址。直接尋址方式:操作數(shù)的地址由指令直接給出,適用于片內 的所有地址空間;女口 A , 68HA,寄存器尋址方式:指令給出的是寄存器的編碼,操作數(shù)在編 碼指定的寄存器中,適用于片內00H至1的32個字節(jié),用R0,7 表示,通過的1和0選擇組號確定對應32個字節(jié)中的其中8個, 還有累加器A,以及

18、乘除法指令中的 A和B寄存器,位尋址方式 中的布爾累加器C;A,R1寄存器間接尋址方式:指令給出的是寄存器的編碼,操作數(shù) 地址在編碼指定的寄存器中,適用于片內的全部空間,其中52系列中的80H至只能用寄存器間接尋址;女口 A,0A,1A,立即尋址方式:操作數(shù)本身在指令中直接,給出適用于用8位立即數(shù)對片內所有地址單元賦值, 也可用16位立即數(shù)對賦值; 如A, #0E2H,#2000H變址尋址方式:以或作為基地址寄存器,以累加器A作為變址寄存器,將基址寄存器與變址寄存器的內容相加形成操作數(shù)的 實際地址的一種尋址方式, 變址尋址方式適用于程序存儲器,僅有三條指令如下:A,A,位尋址方式:指令中直接給

19、出操作數(shù)所在單元的位地址,適用于片內中地址20H至2中的16個字節(jié)中的128個位地址空間 和80H至中地址中可以被 8整除的所有中的每個位地址空間; 如C,7F0,CC,.7相對尋址方式:為相對轉移指令而設,指令中直接給出轉移的相對偏移量,其轉移目標在當前指令-128至+ 127字節(jié)范圍內 的地址空間。女口:;等效于:$2.51單片機的程序狀態(tài)字中無(零)標志位,怎樣判斷某內部 數(shù)據(jù)單元的內容是否為零?答:51單片機的程序狀態(tài)字中無(零)標志位,判斷某內部數(shù)據(jù)單元的內容是否為零是能通過取數(shù)到A累加器,再判斷A中的每一位是否為零來確定其值是否為零。3. 編程將內部的2030H單元內容清零。解:設

20、一個片內指針 R0,先指向首地址20H,通過累加器A 清零,然后采用間接尋址方式依次將 A中的零值傳送到指針所指 的片內單元,每傳送一個字節(jié),地址指針加 1,直到達到地址為 30H或達到計數(shù)器規(guī)定的17個字節(jié)為止。 程序1:R020H ;設地址指針初值A ;累加器清0:0;置0指針所指單元R0 ;地址指針加1R031 ;指針未超過終點則繼續(xù)$ ;暫停程序2:R020H ;設地址指針初值A ;累加器清0R717 ;計數(shù)器賦初值,從 20H到30H共17個字節(jié):0 ; 置 0指針所指單兀R0 ;地址指針加1R7,;計數(shù)器減1,非0,則繼續(xù)$ ;暫停4. 編程查找內部的32H41H單元中是否有0這個

21、數(shù)據(jù),若 有這一數(shù)據(jù),則將50H單元置為0,否則將50H單元清零。解:設一個片內指針 R0,先指向首地址32H,比較0與#0, 若相等,則退出循環(huán),給 50H單元賦0,若不相等,則R0加1 為繼續(xù)比較下一個字節(jié)做準備,直到達到地址為41H或達到計數(shù) 器規(guī)定的16個字節(jié)為止還沒找到,則給 50H單元賦00H程序1:R032H ;設地址指針初值:00;比較查找值與指針所指單元的值,不相等轉移0 ;相等,則準備好要賦的標志值 0;轉存到保存結果處:R0 ;修改地址指針R042 ;若指針未越過終點,則繼續(xù)00H ;查找失敗,則將00H存入結果標志單元:50 ; 將比 較結果標志存入50H單元$ ;暫停

22、程序2:R716 ;計數(shù)器賦初值,從 20H到30H共16個字節(jié) R032H ; 設地址指針初值:00 ;比較查找值與指針所指單元的值,不相等轉移0 ;相等,則準備好要賦的標志值 0;轉存到保存結果處:R0 ;修改地址指針R7 ;計數(shù)器減1,非0,則繼續(xù)00H ;查找失敗,則將00H存入結果標志單元:50 ; 將比 較結果標志存入50H單元$ ;暫停5. 查找20H4單元中出現(xiàn)00H的次數(shù),并將查找結果存入50H單元。 解:從20H到4共48個字節(jié)R748 ;字節(jié)計數(shù)器賦初值R020H ;設地址指針初值:000 ;比較查找值與指針所指單元的值,不相等轉移R6 ;相等,0的個數(shù)計數(shù)器加1:R0

23、;修改地址指針R7 ;計數(shù)器減1,非0,則繼續(xù)506 ;保存O的個數(shù)計數(shù)值到50H單元$ ;暫停6. 已知83H, R0=17H (17H)=34H,寫出下列程序段執(zhí)行之后的A中的內容。17H170A答:17H 03H17 ;(17H)=0011 0100 V 0000 0011=0011 0111 0 00000011 V 0011 0111 =0011 0100 A 1100 10117. 已知單片機的晶振頻率為 12,分別設計延時為0.1s、1s 的子程序。答:已知單片機的晶振頻率為 12,則機器周期為1, 延時子程序是通過執(zhí)行指令序列中機器周期數(shù)來達到,如果要0.1s ,即100,也就

24、是100000,所以需要機器周期數(shù)達到 100000O 要延時達到1S,可通過對延時為0.1秒的子程序調用10次來實 現(xiàn)。100: R6200 ;1個機器周期D1: R7250 ;1 個機器周期D2: ;1個機器周期R72 ;2 個機器周期,3*25仁753R61 ;2 個機器周期,(1+753+2)*132=99792;2 個機器周期,1+99792+2=99795,約 1001S: R710 ;計數(shù) 10 次 1:100 ; 延時100子程序99795+2R7 ;未達到10次則繼續(xù)10*(2+99795+2); 返回2+10*(2+99795+2)=9979928. 內部從20H單元開始處

25、有一數(shù)據(jù)塊,以為結束標志,試統(tǒng) 計該數(shù)據(jù)塊的長度,將該數(shù)據(jù)塊送到外部數(shù)據(jù)存儲器7E01H開始的單元,并將長度存入7E00 H單元。解:從20H的指針用R0,從外部7E01開始的指針用,計數(shù)器 用R7 R70 ;字節(jié)計數(shù)器賦初值R020H ;設片內地址指針初值7E01H ;設片外地址指針初值:0;取片內中的一個字節(jié);存入片外指針所指單兀R7 ;長度計數(shù)器加1R0 ;片內地址指針加1;片外地址指針加10 ;未達到結束標志7 ;取塊計數(shù)長度值;保存$ ;暫停9. 內部從開始的區(qū)域中存放著 10個單字節(jié)十進制數(shù),求其累加和,并將結果存入和 1單元。解:R7計數(shù),R6保存累加和高8位,R0用作地址指針0

26、000H100H30H40H:R710 ;字節(jié)計數(shù)器賦初值R0 ;設片內地址指針初值A ;累加器清0R6 ;累加結果的高8位:0;加中的一個字節(jié)到A;若無進位則不用管高8位R6 ;有進位,高8位加1:R0 ;片內地址指針加1R7 ;未完繼續(xù);保存低8位16 ;保存高8位$ ;暫停10. 內部從1和2單元開始處存放著兩個等長的數(shù)據(jù)塊,數(shù) 據(jù)塊的長度在單元中。請編程檢查這兩個數(shù)據(jù)塊是否相等,若相等,將0寫入單元,否則將0寫入單元。解:從1開始的指針用R0,從2開始的指針用R1,計數(shù)器用R7 101 30H2 40H50HR7 ;字節(jié)計數(shù)器賦初值R01 ;設片內地址指針初值R12 ;設片外地址指針初

27、值:0 ;取片內R0所指的的一個字節(jié)71 ;將R1所指單元內容取到片內地址 7中A,7 ;比較,不 相等則結束R0 1地址指針加1R1 2地址指針加1R7 ;未完,繼續(xù)0 ;相等,準備寫入;轉寫入結果處:0 ;不相等,準備寫入00H:;保存比較結果標志$ ;暫停11. 編制程序,將內部中 M1 M2 M3和M4單元中的無符號 數(shù)、x2、x3和x4相加,并把和存入和 R1(R0中為高8位)中。解:M1 30HM2 40HM3 45HM4 41 ;取第一個數(shù)2 ;與第二個數(shù)相加1 ;如果無進位,則轉移至第三個相加R01 ;有進位,高8位置11: 3 ;與第三個數(shù)相加2 ;沒有進位,則轉至第四個數(shù)相

28、加R0 ;有進位,高8位加12: 4 ;與第四個數(shù)相加3 ;沒有進位,則轉至結束R0 ;有進位,高8位再加13: R1 ;低8位保存到R1$ ;暫停第4章單片機的C51語言習題1. C語言的優(yōu)點是什么? C程序的主要結構特點是什么?答:C語言是一種高級語言,學習比低級容易,不需要具體組 織、分配存儲器資源和處理端口數(shù)據(jù), 可以直接驅動單片機的所 有資源。C程序以函數(shù)為單位,由一個主函數(shù)和若干個其他函數(shù)構成, 主函數(shù)是程序的入口,其他函數(shù)由主函數(shù)直接或間接調用。程序可以由一個文件或多個文件組成。 文件類型包括頭文件和 C語言 源文件,也可以是匯編語言文件,C程序可與匯編語言混合編程。2. C51

29、語言的變量定義包含哪些關鍵因素?為何這樣考慮?答:C語言的變量定義格式如下:存儲種類數(shù)據(jù)類型存儲類型變量名其中:存儲種類與標準C語言相同,包括:自動型()、外部型()、 靜態(tài)型()、寄存器型()。數(shù)據(jù)類型除了包含標準 C語言類型的字符型(),整型(),長 整型(),浮點型(),雙精度型()夕卜,還有二進制位型(),特殊功 能寄存器型(),可位尋址的位類型()。存儲類型包括:片內區(qū)()、片內可位尋址區(qū)(),片內間接尋 址區(qū)(),片外頁尋址區(qū)(),片外區(qū)()、區(qū)()。只所以比標準C語言多了存儲類型,就是因為一 51單片機的 存儲結構中有四個物理存儲空間(片內、片內,片外,片外),三21 / 58個

30、邏輯地址空間(片內,片外,),而且有多種尋址方式(直接尋 址、間接尋址、頁面尋址、位尋址)所致,所以在定義變量時, 要根據(jù)其所在位置和尋址方式明確指定存儲類型。3. C51與匯編語言的特點各有哪些?怎樣實現(xiàn)兩者的優(yōu)勢互 補?答:C51是結構化語言,代碼緊湊;接近自然語言,程序可讀 性強,易于調試、維護;庫函數(shù)豐富,編程工作量小,可使產品 開發(fā)周期短;具有機器級控制能力,功能很強,適合于嵌入式系 統(tǒng)開發(fā);匯編指令無關,易于掌握,上手快。匯編語言優(yōu)點是編寫的程序代碼精煉、執(zhí)行速度快,在相同功能下,匯編語言程序可能比 C語言程序效率高。缺點是對程序 員要求高,必須對單片機的硬件結構非常熟悉才能編程,

31、 不便于 編寫比較復雜的程序。可根據(jù)需要對要求時間性很強的代碼用匯編語言編寫,其它 部分用C語言編寫,兩者混合編程就可以實現(xiàn)優(yōu)勢互補。4. 指出下面程序的語法錯誤:<51>()7(10)();(;iv=255;答:<51>);();和C必須先定義才可使用7缺分號,應該提在使用前說明(10)延時子程序必須先定義,或先有函數(shù)原型說明();作為函數(shù)定義,有函數(shù)定義不能嵌套的問題,即不能在一個函數(shù)內定義另一個函數(shù),而且“ ”前不應有分 號作為函數(shù)原型說明,應該放在函數(shù)調用之前,且其后不應該接 函數(shù)體i ;字符型應該是(;i<=255;”)” 應改成主函數(shù)沒有結束,缺” ”

32、5. 定義變量a, b, c,其中a為內部的可位尋址區(qū)的字符變 量,b為外部數(shù)據(jù)存儲區(qū)浮點型變量,c為指向 型 區(qū)的指針。答:a;b;*c;6. 編程將8051的內部數(shù)據(jù)存儲器20H單元和35H單元的數(shù) 據(jù)相乘,結果存到外部數(shù)據(jù)存儲器中(任意位置)。解:方法一:用嵌入式匯編語言實現(xiàn)<51>()A, 20HB, 35H1234H方法二:單用C語言編程實現(xiàn)<51><>();()*0x25;0x30;*;*b;7. 8051的片內數(shù)據(jù)存儲器25H單元中存放有一個010的整 數(shù),編程求其平方根(精確到5位有效數(shù)字),將平方根放到30H 單元為首址的內存中。解:方法一

33、:用C語言與匯編語言混合編程實現(xiàn)用C語言編寫的主函數(shù)<51><>();()0x25;f;(a);(c);用匯編語言編寫的取數(shù)據(jù)子函數(shù),只有一個地址參數(shù)在R7中,返回值為指定地址單元中的內容,用R7返回主函數(shù)。:7;取地址參數(shù)R00R7 ;返回地址單元中的內容方法二:單用C語言編程實現(xiàn)<51><>();()n;*2;f;0x25;*;(n);2=0x30;8. 將外部10H15H單元的內容傳送到內部 10H15H單元。 解:方法一:米用 C語言與匯編語言混合編程用C語言編寫的主函數(shù)<51>();()0x100x06;();用匯編語言編寫

34、的移動數(shù)據(jù)子函數(shù),其中第一個參數(shù)在R7中為首地址,第二個參數(shù)在 R5中為字節(jié)數(shù):7;取參數(shù)R0:00R5方法二:單用C語言編程實現(xiàn)<51>();()6;*1= 0x10;2=0x20;()*2*1;9. 內部20H、21H和22H 23H單元分別存放著兩個無符號的 16位數(shù),將其中的大數(shù)置于 24H和25H單元。解:方法一:<51>()*;設置一個內部指針0x20;指向0x20單元*;取第一個數(shù)0x22;指向0x22單元*;取第二個數(shù)(x>y);將兩數(shù)中的較大者賦給z0x24;指向地址為0x24的目標單元*;將大數(shù)存入目標單元方法二:<51><&

35、gt;()0X20*2560X21;0X22*2560X23;(x>y);將兩數(shù)中的較大者賦給z0X24256;0X25256;方法三:x 0x20;y 0x22;z 0x24;()(x>y);第4章單片機的C51語言習題1. C語言的優(yōu)點是什么? C程序的主要結構特點是什么?答:C語言是一種高級語言,學習比低級容易,不需要具體組 織、分配存儲器資源和處理端口數(shù)據(jù), 可以直接驅動單片機的所 有資源。C程序以函數(shù)為單位,由一個主函數(shù)和若干個其他函數(shù)構成, 主函數(shù)是程序的入口,其他函數(shù)由主函數(shù)直接或間接調用。程序可以由一個文件或多個文件組成。 文件類型包括頭文件和 C語言 源文件,也可

36、以是匯編語言文件,C程序可與匯編語言混合編程。2. C51語言的變量定義包含哪些關鍵因素?為何這樣考慮?答:C語言的變量定義格式如下:存儲種類數(shù)據(jù)類型存儲類型變量名其中:存儲種類與標準C語言相同,包括:自動型()、外部型()、 靜態(tài)型()、寄存器型()。數(shù)據(jù)類型除了包含標準 C語言類型的字符型(),整型(),長 整型(),浮點型(),雙精度型()夕卜,還有二進制位型(),特殊功 能寄存器型(),可位尋址的位類型()。存儲類型包括:片內區(qū)()、片內可位尋址區(qū)(),片內間接尋 址區(qū)(),片外頁尋址區(qū)(),片外區(qū)()、區(qū)()。只所以比標準C語言多了存儲類型,就是因為一 51單片機的 存儲結構中有四個

37、物理存儲空間(片內、片內,片外,片外),三 個邏輯地址空間(片內,片外,),而且有多種尋址方式(直接尋址、間 接尋址、頁面尋址、位尋址)所致,所以在定義變量時,要根據(jù) 其所在位置和尋址方式明確指定存儲類型。3. C51與匯編語言的特點各有哪些?怎樣實現(xiàn)兩者的優(yōu)勢互 補?答:C51是結構化語言,代碼緊湊;接近自然語言,程序可讀 性強,易于調試、維護;庫函數(shù)豐富,編程工作量小,可使產品 開發(fā)周期短;具有機器級控制能力,功能很強,適合于嵌入式系 統(tǒng)開發(fā);匯編指令無關,易于掌握,上手快。匯編語言優(yōu)點是編寫的程序代碼精煉、執(zhí)行速度快,在相同功能下,匯編語言程序可能比 C語言程序效率高。缺點是對程序 員要

38、求高,必須對單片機的硬件結構非常熟悉才能編程, 不便于 編寫比較復雜的程序??筛鶕?jù)需要對要求時間性很強的代碼用匯編語言編寫,其它 部分用C語言編寫,兩者混合編程就可以實現(xiàn)優(yōu)勢互補。4. 指出下面程序的語法錯誤:<51>()7(10)();i ;(;iv=255;” ”);答:<51>();和C必須先定義才可使用7缺分號,應該提在使用前說明(10)延時子程序必須先定義,或先有函數(shù)原型說明 ();作為函數(shù)定義,有函數(shù)定義不能嵌套的問題,即不能在一個函數(shù)內定義另一個函數(shù),而且“ ”前不應有分號作為函數(shù)原型說明,應該放在函數(shù)調用之前,且其后不應該接函數(shù)體i ;字符型應該是(;i

39、v=255;”)” 應改成主函數(shù)沒有結束,缺” ”5.定義變量a, b, c,其中a為內部的可位尋址區(qū)的字符變量,b為外部數(shù)據(jù)存儲區(qū)浮點型變量,c為指向型區(qū)的指針。答:a;b;*c;6.編程將8051的內部數(shù)據(jù)存儲器20H單元和35H單元的數(shù)據(jù)相乘,結果存到外部數(shù)據(jù)存儲器中(任意位置)。解:方法:用嵌入式匯編語言實現(xiàn)<51>()A,20HB,35H1234H方法二:單用C語言編程實現(xiàn)<51><>();()x;*0x25;*;0x30;*;*b;7. 8051的片內數(shù)據(jù)存儲器25H單元中存放有一個010的整 數(shù),編程求其平方根(精確到5位有效數(shù)字),將平方根放

40、到30H 單元為首址的內存中。解:方法一:用C語言與匯編語言混合編程實現(xiàn)用C語言編寫的主函數(shù)<51><>();()0x25;f;(a);(c);R7;用匯編語言編寫的取數(shù)據(jù)子函數(shù),只有一個地址參數(shù)在 中,返回值為指定地址單元中的內容,用R7返回主函數(shù)。:7;取地址參數(shù)R00R7 ;返回地址單元中的內容方法二:單用C語言編程實現(xiàn)<>();()n;f;0x25;(n);2=0x30;*2;15H單元。8. 將外部10H15H單元的內容傳送到內部 10H解:方法一:米用 C語言與匯編語言混合編程用C語言編寫的主函數(shù)<51>();()0x100x06;(

41、);R7;用匯編語言編寫的移動數(shù)據(jù)子函數(shù),其中第一個參數(shù)在中為首地址,第二個參數(shù)在 R5中為字節(jié)數(shù):7;取參數(shù)R0:00R5方法二:單用C語言編程實現(xiàn)<51>();()6;*1=0x10;*2;2=0x20;()9. 內部20H、21H和22H 23H單元分別存放著兩個無符號的 16位數(shù),將其中的大數(shù)置于 24H和25H單元。解:方法一:<51>()*;設置一個內部指針0x20;指向0x20單元*;取第一個數(shù)0x22;指向0x22單元*;取第二個數(shù)(x>y);將兩數(shù)中的較大者賦給z0x24;指向地址為0x24的目標單元*;將大數(shù)存入目標單元方法二:<51&g

42、t;<>()0X20*2560X21;0X22*2560X23;(x>y);將兩數(shù)中的較大者賦給z0X24256;0X25256;方法三:<51>x 0x20;y 0x22;z 0x24;()(x>y);第5章單片機的中斷系統(tǒng)習題1. 什么是中斷、中斷源、中斷優(yōu)先級和中斷嵌套?答:中斷是指單片機內部有一個中斷管理系統(tǒng),它對內部的 定時器事件、串行通信的發(fā)送和接收及外部事件(如鍵盤按鍵動作)等進行自動的檢測判斷。當正在處理某件事情(例如正在執(zhí) 行主程序)的時候,外部或內部發(fā)生的某一事件(如某個引腳上電平的變化,一個脈沖沿的發(fā)生或計數(shù)器的計數(shù)溢出等)請求迅速處理

43、,于是,中斷管理系統(tǒng)會置位相應標志通知暫時中止當前 的工作,迅速轉去處理所發(fā)生的事件。處理完該事件后,再回到 原來被中止的地方,繼續(xù)原來的工作,這樣的過程稱為中斷。引發(fā)中斷的事件稱為中斷源。將中斷事件按輕重緩急分若干級別叫中斷優(yōu)先級。允許中斷優(yōu)先級高的中斷源中斷正在執(zhí)行的低優(yōu)先級的中斷服務程序叫中斷嵌套。2. 什么叫中斷源? 51有哪些中斷源?各有什么特點?它們的中斷向量地址分別是多少?答:中斷源即引發(fā)中斷的事件。51單片機有5個中斷源,它們是外部中斷 0,定時器T0,外 部中斷1,定時器T1,串行口。外部中斷源是由引腳的觸發(fā)信號引起的中斷,定時器中斷源 是由于定時器計數(shù)器的溢出引發(fā)的中斷,串

44、行口是由于串行通信 的發(fā)送或接收引發(fā)的中斷。外部中斷0,定時器T0,外部中斷1,定時器T1,串行口五個中斷源的中斷向量地址依次為: 0003H, 000,0013H, 001,0023H3. 51中斷的中斷響應條件是什么?答:(1)中斷源有中斷請求;(2) 此中斷源允許位為1,即中斷源可以向發(fā)中斷請求;(3) 開總中斷,即1;(4) 無同級或者更高級中斷正在服務4. 51的中斷響應過程是怎樣的?答:(1)將相應的中斷優(yōu)先級狀態(tài)觸發(fā)器置1,以阻斷后來的同級和低級中斷請求;(2) 由硬件清除相應的中斷請求標志,串行口的發(fā)送和接收 中斷除外;(3) 執(zhí)行一條硬件指令,即把程序計數(shù)器的內容壓入堆棧保存

45、,再將相應的中斷服務程序的入口地址送入;5. 編寫出外部中斷1為下跳沿觸發(fā)的中斷初始化程序。解:1()1=1;11=1; 0x84 0x84;6. 有一外部中斷源,接入 0端,當其中有中斷請求時,要求 把一個從內部30H單元開始的50個字節(jié)的數(shù)據(jù)塊傳送到外部從 1000H開始的連續(xù)存儲區(qū)。請編寫對應的程序。解:<51>()0=1 ;1;0=1;(1);0() 0 1* 仁 0x30;* 2=0x1000;(0<50) *2*1;7. 設=12 ,利用定時器,(工作在方式2)在P1.1引腳上獲 取輸出周期為0.4的方波信號,定時器溢出時采用中斷方式處 理,請編寫,T0的初始化程

46、序及中斷服務程序。解:=12,則機器周期=1 ;當T0工作在方式2時,其最大 定時時間為256,要輸出周期為0.4即400的方波信號,則其高、 低電平應各為200,顯然當定時器T0按方式2工作時,只需計 數(shù)達到200次即可,因此其時間常數(shù)初值為256-200=56。在T0的中斷服務程序中,只需將 P1.1引腳求反即可。<51>P1_11八1;0() 1 1P1_11_1;()P1_|=0;0x02;0=56;0=56;0x82;0=1;(;)8. 設=6,要求每隔50,從內部以30H開始的數(shù)據(jù)存儲區(qū)傳 送一個字節(jié)數(shù)據(jù)到外部以 2000H開始的連續(xù)存儲區(qū),共傳送 50 個數(shù)據(jù)。要求:

47、采用定時器 T1以方式2實現(xiàn)定時,數(shù)據(jù)傳送在 中斷服務程序中完成。解:=6,機器周期=12/6*10-621工作在方式2時,最大定 時時間為512,要定時50,可以計數(shù)100次,每次定時500來實 現(xiàn),方式2定時500需計數(shù)250次,故其時間常數(shù)為256-250=6<51>0;0;* 仁 0x30;*2=0x2000;1() 3 1(100)(<50)1=0;0;()0x20;1=6;1=6;0x84;1=1;(;)9. 8051單片機只有兩個外部中斷源, 若要擴展成8個外部中 斷源,請畫出實現(xiàn)這種擴展的硬件線路圖, 并說明如何確定各中 斷源的優(yōu)先級。解:用按鈕開關模擬中斷源

48、的中斷請求,0單獨作為一個中斷源,1擴展成7個中斷源,有中斷請求時,借助于P2 口識別是這七個中斷源是哪個請求中斷,為了驗證正確性,如果是0中斷,則在P0 口的數(shù)碼管上顯示 0,是1中斷,則根據(jù)從上到下是哪 個中斷源在P0 口的數(shù)碼管上顯示1 7。具體電路和程序如下:<51>=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07;0 () 0 1外部中斷0處理程序P00;1 () 2 2外部中斷1處理程序2;()001;002;003;0704;005;007;()1;0=1;1=1;P0=0;(1);第6章單片機的定時器/計數(shù)器習題1. 51系列的8051單片機內有幾個定時/計數(shù)器?每個定時/ 計數(shù)器有幾種工作方式?如何選擇?答:51系列的8051單片機內有2個定時/計數(shù)器,即T0和 T1,每個都可以編程為定時器或計數(shù)器,T0有四種工作方式(方式013位、方式1 16位、方式2-可自動裝入初值的8位、 方式3-兩個8位),T1有三種工作方式(與T0相同的前三種), 通過對的設置選擇,其高四位選擇T1,低四位選擇T0。2. 如果采用的晶振頻率為3,定時/計數(shù)器分別工作在方式 0、 1和2下,其最大的定時時間各為多少?答:如果采用的晶振頻率為 3,

溫馨提示

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

評論

0/150

提交評論