周國運版51單片機課后習題答案_第1頁
周國運版51單片機課后習題答案_第2頁
已閱讀5頁,還剩61頁未讀, 繼續免費閱讀

下載本文檔

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

文檔簡介

1、.第1章 習題答案1什么是單片機.答:將中央處理器Central Processing Unit,CPU、隨機存儲器、只讀存儲器、中斷系統、定時器/計數器以及I/O接口電路等微型計算機的主要部件集成在一塊芯片上,使其具有計算機的根本功能,就叫做單片微型計算機Single Chip Micro puter,SCMC,簡稱單片機。由于單片機的指令功能是按照工業控制的要求設計,所以單片機又稱為微控制器Micro Controller Unit,MCU。2單片機有哪些特點.答: 1單片機的存儲器ROM和RAM是嚴格區分的。ROM稱為程序存儲器,只存放程序、固定常數及數據表格。RAM那么為數據存儲器,用

2、作工作區及存放用戶數據。2采用面向控制的指令系統。3單片機的I/O引腳通常是多功能的。4單片機的外部擴展能力強。5單片機體積小,本錢低,運用靈活,易于產品化。6面向控制,能有針對性地解決從簡單到復雜的各類控制任務,因而能獲得最正確的性能價格比。7抗干擾能力強,適用溫度X圍寬。8可以方便地實現多機和分布式控制,使整個控制系統的效率和可靠性大為提高。3單片機的應用有哪些.答: 1工業控制。單片機可以構成各種工業控制系統、數據采集系統等。如數控機床、自動生產線控制、電機控制、測控系統等。2儀器儀表。如智能儀表、醫療器械、數字示波器等。3計算機外部設備與智能接口。如圖形終端機、 機、復印機、打印機、繪

3、圖儀、磁盤/磁帶機、智能終端機等。4商用產品。如自動售貨機、電子收款機、電子秤等。5家用電器。如微波爐、電視機、空調、洗衣機、錄像機、音響設備等。6消費類電子產品。7通訊設備和網絡設備。8兒童智能玩具。9汽車、建筑機械、飛機等大型機械設備。10智能樓宇設備。11交通控制設備。4常見的單片機有哪些類型.答: 1AVR單片機;2Motorola單片機;3MicroChip單片機;4Scenix單片機;5EPSON單片機;7GMS90單片機;8華邦單片機9Zilog單片機;10NS單片機;11AX1001單片機第2章 習題答案1MCS-51單片機內部包含哪些主要邏輯功能部件.答:11個8位的微處理器

4、CPU。28KB的片內程序存儲器Flash ROM51子系列的Flash ROM為4KB,用于燒錄運行的程序、常數數據。3256B的片內數據存儲器RAM51子系列的RAM為128B,在程序運行時可以隨時寫入數據和讀出,用于存放函數相互傳遞的數據、接收的外部數據、中間結果、最后結果以及顯示的數據等。43個16位的定時器/計數器51子系列僅有2個定時器,每個定時器/計數器可以設置為計數方式,用于對外部事件信號進展計數,也可以設置為定時方式,滿足各種定時要求。5有一個管理6個中斷源51子系列1是5個中斷源、兩個優先級的中斷控制器。64個8位并行I/O端,每個端口既可以用作輸入,也可以用于輸出。7一個

5、全雙工的UART通用異步接收發送器串行I/O口,用于單片機之間的串行通信,或者單片機與PC機、其它設備、其它芯片之間的串行通信。8片內振蕩電路和時鐘發生器,只需外面接上一晶振或輸入振蕩信號就可產生單片機所需要的各種時鐘信號。9有一個可尋址64KB外部數據存儲器、還可以尋址64KB外部程序存儲器的三總線的控制電路。2MCS-51單片機的引腳有何功能.信號為何種電平.答:為片外程序存儲器選擇輸入端。該引腳為低電平時,使用片外程序存儲器,為高電平時,使用片內程序存儲器。3MCS-51單片機的ALE引腳有何功能.信號波形是什么.答: ALE為地址鎖存信號,每個機器周期輸出兩個正脈沖。在訪問片外存儲器時

6、,下降沿用于控制外接的地址鎖存器鎖存從P0口輸出的低8位地址。在沒有接外部存儲器時,可以將該引腳的輸出作為時鐘信號使用。4MCS-51單片機的存儲器分為哪幾個空間.如何區分不同空間的尋址.答: MCS-51單片機有4個存儲空間,它們是片內程序存儲器和數據存儲器,在片外可以擴展的程序存儲器和數據存儲器。這4個存儲空間可以分成三類:片內數據存儲空間256B的RAM和128B的特殊功能存放器、片外數據存儲空間64KB、片內和片外統一編址的程序存儲空間64KB。不同的存儲空間,它們有各自的尋址方式和訪問指令。片內數據存儲空間用MOV指令訪問。片外數據存儲空間用MOVX指令訪問。片內和片外統一編址的程序

7、存儲空間用MOVC指令訪問。5簡述MCS-51單片機片內RAM的空間分配。內部RAM低128字節分為哪幾個主要局部.各局部主要功能是什么.答: 片內數據存儲器按照尋址方式,可以分為三個局部:低128字節數據區,高128字節數據區間,特殊功能存放器區。低128字節數據區分為三個區域:工作存放器區,位尋找區和通用數據區。工作存放器區4組工作存放器;位尋找區既可以做位操作,也可以字節操作;通用數據區用于堆棧和存放程序運行時的數據和中間結果。6簡述MCS-51單片機布爾處理器存儲空間分配,片內RAM包含哪些可以位尋址的單元。位地址7DH與字節地址7DH如何區別.位地址7DH具體在片內RAM中的什么位置

8、.答:低128字節數據區的位尋找區和高128字節數據區的某些可位尋址的特殊功能存放器。位地址7DH與字節地址7DH可通過不同的指令來區別,位地址7DH用位尋址指令來訪問,字節地址7DH用字節尋址指令來訪問,位地址7DH在低128字節數據區的位尋找區的2FH字節。7MCS-51單片機的程序狀態存放器PSW的作用是什么.常用標志有哪些位.作用是什么.答:PSW是一個8位存放器,用于設定CPU的狀態和指示指令執行后的狀態。CYPSW.7:進位標志。在執行加減運算指令時,如果運算結果的最高位D7發生了進位或借位,那么CY由硬件自動置1。ACPSW.6:半進位標志位,也稱為輔助標志位。在執行加減運算指令

9、時,如果運算結果的低半字節D3發生了向高半字節進位或借位,那么AC由硬件自動置1。F0、F1PSW.5 和PSW.1:用戶標志位。用戶可以根據需要對F0、F1賦予一定的含義,由用戶置1和清0,作為軟件標志。RS1、RS0PSW.4 和PSW.3:工作存放器組選擇控制位。通過對這兩位設定,可以從4個工作存放器組中選擇一組作為當前工作存放器。OVPSW.2:溢出標志位,有兩種情況影響該位。一是執行加減運算時,如果D7或D6任一位,并且只一位發生了進位或借位,那么OV自動置1, PPSW.0:奇偶標志位。每條指令執行完后,該位都會指示當前累加器A中1的個數。如果A中有奇數個1,那么P自動置1。8MC

10、S-51單片機復位后,CPU使用哪組工作存放器.它們的地址是什么.用戶如何改變當前工作存放器組.答: MCS-51單片機復位后,CPU使用0組工作存放器。它們的地址是08H0FH。通過程序狀態字PSW中的RS1、RS0標志位改變當前工作存放器組。9什么叫堆棧.堆棧指針SP的作用是什么.答: 堆棧是在RAM專門開辟的一個特殊用途的存儲區。堆棧是按照“先進后出即先進入堆棧的數據后移出堆棧的原那么存取數據。堆棧指針SP是一個8位存放器,其值為棧頂的地址,即指向棧頂,SP為訪問堆棧的間址存放器。10PC與DPTR各有哪些特點.有何異同.答: PC與DPTR都是16位的存放器。PC由兩個8位的計數器PC

11、H和PCL組成。PC實際是程序的字節地址計數器,它的內容是將要執行的下一條指令的地址,具有自加1功能。改變PC的內容就可以改變程序執行的方向。DPTR的高字節存放器用DPH表示,低字節存放器用DPL表示。DPTR既可以作為一個16位存放器使用,也可以作為兩個獨立的8位存放器使用。DPTR主要用于存放16位地址,以便對64KB的片外RAM和64KB的程序存儲空間作間接訪問。11測試哪個引腳,可以快捷地判斷單片機是否正在工作.答: 假設要檢查單片機是否工作,可以使用示波器查看ALE引腳是否有脈沖信號輸出。12讀端口鎖存器和“讀引腳有何不同.各使用哪些指令.答:一種是讀取鎖存器原來的輸出值,另一種情

12、況是翻開端口的緩沖器讀取引腳上的信號,讀端口鎖存器,用MOV A,Pi指令?!白x引腳,要先用MOV Pi,*0FFH對相應端口寫FFH,使輸出場效應管T截止,才能夠正確輸入,再用MOV A,Pi指令。13MCS-51單片機的P0P3口構造有何不同.用作通用I/O口輸入數據時應注意什么.答: P2口是一個雙功能口,一是通用I/O口,二是以總線方式訪問外部存儲器時作為高8位地址口。與P1口的構造類似,驅動局部根本上與P1口一樣,但比P1口多了一個多路切換開關MUX和反相器3。P3口是一個多功能口,與P1口的構造相比不難看出,P3口與P1口的差異在于多了“與非門3和緩沖器4。正是這兩個局部,使得P3

13、口除了具有P1口的準雙向I/O口的功能之外,還可以使用各引腳所具有的第2功能。P0多了一路總線輸出地址/數據、總線輸出控制電路反相器3和與門4、兩路輸出切換開關MUX及開關控制C,并且把上拉電阻換成了場效應管T1,以增加總線的驅動能力。用作通用I/O口輸入數據時應注意要先用MOV Pi,*0FFH對相應端口寫FFH,使輸出場效應管T截止,才能夠正確輸入。14P0口用作通用I/O口輸出數據時應注意什么.答: P0口與其它端口不同,它的輸出級無上拉電阻。當把它用作通用I/O口時,輸出級是開漏電路,故用其輸出去驅動NMOS輸入時外接上拉電阻,這時每一位輸出可以驅動4個LS型TTL負載。用作輸入時,應

14、先向端口鎖存器寫1。15什么叫時鐘周期.什么叫機器周期.什么叫指令周期.時鐘周期、機器周期與振蕩周期之間有什么關系.答: 時鐘周期即振蕩周期:為晶振的振蕩周期,是最小的時序單位。狀態周期:是振蕩頻率2分頻后的時鐘周期。顯然,一個狀態周期包含2個振蕩周期。機器周期MC:1個機器周期由6個狀態周期、即12個振蕩周期組成,是量度指令執行時間的單位。指令周期:是執行一條指令所需要的時間。一個指令周期由14個機器周期組成。16MCS-51單片機常用的復位電路有哪些.復位后機器的初始狀態如何.答: 復位電路有兩種方式:上電自動復位電路和手動復位電路。復位后,程序計數器PC變為0000H,使單片機從程序存儲

15、器地址0000H單元開場執行。除P0P3為FFH;SP為07H;SBUF為不確定。大局部特殊功能存放器清零。17MCS-51單片機有幾種低功耗工作方式.如何實現,又如何退出.答: MCS-51單片機有空閑和掉電兩種低功耗工作方式。當CPU執行完置IDL=1的指令后,系統就進入空閑方式。進入空閑方式之后,有兩種方法可以退出。一種是任何中斷請求被響應都可以由硬件將IDL位清0而完畢空閑方式。另一種退出空閑方式的方法是硬件復位。當CPU執行完置PD=1的指令后,系統就進入掉電工作方式。對于一般的單片機來說,退出掉電方式的唯一方法是由硬件復位。第3章 習題答案1簡述MCS-51匯編指令格式。答:MCS

16、-51匯編語言指令由四局部組成,其一般格式如下: 標號:操作碼 操作數 ;注釋格式中的方括號意為可以沒有相應局部,可以沒有標號、操作數和注釋,至少要有操作碼。其操作數局部最多可以是兩項: 第1操作數 ,第2操作數2何謂尋址方式.MCS-51單片機有哪些尋址方式,是怎樣操作的.各種尋址方式的尋址空間和X圍是什么.答:MCS-51單片機有7種尋址方式:立即數尋址、存放器尋址、直接尋址、存放器間接尋址、變址尋址、位尋址和指令尋址。可以分為兩類:操作數尋址和指令尋址。立即數尋址的尋址空間和X圍是:在程序存儲空間,隨指令讀入MOV A,*46H直接尋址的尋址空間和X圍是:片內RAM中,低128字節和SF

17、RMOVA,46H存放器尋址的尋址空間和X圍是:使用R0R7、A、B、C、DPTRMOVA,R2存放器間接尋址的尋址空間和X圍是:片內RAM:使用Ri,SP;X圍為256B,不含SFR,片外RAM:使用Ri,DPTR;X圍為64KBMOVA,R0 MOVX A,DPTR變址尋址的尋址空間和X圍是:使用A+PC,A+DPTR;在程序存儲器中;X圍分別為PC之后256B之內和64KB全空間MOVC A,A+DPTR位尋址的尋址空間和X圍是:使用位地址;在位尋址空間;RAM的20H2FH和SFRSETB 36H指令絕對尋址的尋址空間和X圍是:操作數是目標地址;在程序存儲空間;X圍為2KB或64KB全

18、空間AJMP FIRST LJMP SECON指令相對尋址的尋址空間和X圍是:操作數是相對地址;在程序存儲空間;X圍128127SJMP LOOP3訪問片內RAM低128字節使用哪些尋址方式.訪問片內RAM高128字節使用什么尋址方式.訪問SFR使用什么尋址方式.答: 訪問片內RAM低128字節使用直接尋址,存放器間接尋址,位尋址;訪問片內RAM高128字節使用存放器間接尋址;訪問SFR使用直接尋址,位尋址。4訪問片外RAM使用什么尋址方式.答: 訪問片外RAM使用存放器間接尋址5訪問程序存儲器使用什么尋址方式.指令跳轉使用什么尋址方式.答: 訪問程序存儲器使用指令絕對尋址,指令相對尋址。指令

19、跳轉使用指令絕對尋址,指令相對尋址。6分析下面指令是否正確,并說明理由。MOVR3,R7錯,兩個操作數不能同時為工作存放器MOVB,R2對DECDPTR錯,不存在MOV20H.8,F0錯,位傳送指令必須用CPUSHDPTRCPL36H錯,不存在MOVPC,*0800H錯,PC不能訪問7分析下面各組指令,區分它們的不同之處。MOVA,30H與MOVA,*30H前者表示:30HA 后者表示:30HAMOVA,R0與MOVA,R0前者表示:R0A 后者表示:R0AMOVA,R1與MOVXA,R1前者表示:在片內數據存儲器R1A 后者表示:在片外數據存儲器R1AMOVXA,R0與MOVXA,DPTR前

20、者R0表示8位地址 后者DPTR表示16位地址MOVXA,DPTR與MOVCA,A+DPTR前者表示:DPTRA 后者表示:DPTR+AA8在MCS-51單片機的片內RAM中,30H=38H,38H=40H,40H=48H,48H=90H。請說明下面各是什么指令和尋址方式,以及每條指令執行后目的操作數的結果。MOVA,40H;數據傳送,直接尋址,A=48HMOVR0,A;數據傳送,存放器尋址,R0=48HMOVP1,*0FH;數據傳送,立即數尋址,P1=0FHMOVR0,30H;數據傳送,直接尋址,48H=38HMOVDPTR,*1234H;數據傳送,立即數尋址,DPTR=1234HMOV40

21、H,30H;數據傳送,直接尋址,40H=38HMOVR0,38H;數據傳送,直接尋址,R0=40HMOVP0,R0;數據傳送,直接尋址,P0=40HMOV28H,*30H;數據傳送,立即數尋址,28H=30HMOVA,R0;數據傳送,存放器間接尋址,A=38H9A=23H,R1=65H,DPTR=1FECH,片內RAM65H=70H, ROM205CH=64H。試分析以下各條指令執行后目標操作數的內容。MOVA,R1;A=70HMOVXDPTR,A;1FECH=70HMOVCA,A+DPTR;A=64HXCHDA,R1;A=65H10A=76H,R1=76H,B=4,CY=1,片內RAM76H

22、=0D0H,80H=6CH。試分析以下各條指令執行后目標操作數的內容和相應標志位的值。ADDA,R1;A=46H,CY=1SUBBA,*75H;A=0D0H,CY=1MULAB;A=40H,B=03HDIVAB;A=15H,B=01HANL76H,*76H;76H=50HORLA,*0FH;A=1FHXRL80H,A;80H=73H11A=83H,R0=17H,17H=34H,試分析當執行完下面程序段后累加器A、R0、17H單元的內容。ANLA,*17H;A=03HORL17H,A;17H=37HXRLA,R0;A=34HCPLA;A=0CBH12閱讀下面程序段,說明該段程序的功能。MOVR0

23、,*40HMOVR7,*10CLRALOOP:MOVR0,AINCAINCR0DJNZR7,LOOPSJMP$答:把0,1,2,3數列送到40H開場的10個單元中。13閱讀下面程序段,說明該段程序的功能。MOVR0,*40HMOVA,R0INCR0ADDA,R0MOV43H,ACLRAADDCA,*0MOV42H,ASJMP$答:40H加41H單元的數,結果送42H:43H第4章 習題答案1用C51編程較匯編語言有哪些優勢.答:1編程容易2容易實現復雜的數值計算3容易閱讀、調試、維護程序4容易實現模塊化開發5程序可移植性好2C51字節數據、整型數據以及長整型數據在存儲器中的存儲方式各是怎樣的.

24、答:字符變量char無論是unsigned char數據還是signed char數據,均為1個字節,即8位,因此被直接存儲在RAM中,可能存儲在00x7f區域包括位尋址區域,也可能存儲在0x800xff區域,與變量的定義有關。整型變量int不管是unsigned int數據還是signed int數據,均為2個字節,即16位,其存儲方法是高位字節保存在低地址在前面,低位字節保存在高地址在后面。長整型變量long為4個字節,即32位,其存儲方法與整型數據一樣,是最高位字節保存的地址最低在最前面,最低位字節保存的地址最高在最后面。3C51定義變量的一般格式是什么.變量的4種屬性是什么.特別要注意

25、存儲區屬性。答:存儲類型數據類型 存儲區 變量名1=初值 ,變量名2=初值 ,變量的4種屬性是存儲類型,數據類型,存儲區,變量名4C51的數據存儲區域類型有哪些.各種存儲區域類型是哪種存儲空間,存儲X圍是什么.如何將變量定義存儲到確定的位置.答:bit片內數據區的位尋找區,位地址0x000x7f,128位(字節地址0x200x2f)data直接尋址片內數據區的低128字節bdata片內數據區的位尋址區0x200x2f,也可字節訪問,16字節idata間接尋址片內數據區的256字節,與MOV Ri 對應pdata分頁尋址片外數據區的256字節,與MOVX Ri 對應,P2不變xdata片外數據區

26、的全空間,64KBcode全部程序存儲空間,64KB絕對定位關鍵字_at_ ,指針,庫函數的絕對定位宏。5C51位變量的定義格式是什么.如何定義bdata型字節變量的位變量.答:存儲類型 bit 位變量名1=初值 ,位變量名2=初值 ,sbit 位變量名 bdata型變量名位號常數6如何定義8位字節型特殊功能存放器.如何定義16位特殊功能存放器.如何定義特殊功能存放器的位變量.答:sfr特殊功能存放器名 地址常數sfr16特殊功能存放器名 地址常數sbit位變量名 特殊功能存放器名位號常數7C51專用指針定義的一般格式是什么.如何確定專用指針定義的指向空間和指針變量本身存儲的空間.答:存儲類型

27、 數據類型 指向存儲區 *指針存儲區 指針名1 ,*指針存儲區 指針名2,*的左面是指向存儲區,*的右面是指針存儲區8C51函數定義的一般形式是什么.如何定義中斷處理程序.如何選擇工作存放器組.答:返回類型 函數名形參表 函數模式 reentrant interrupt m using n局部變量定義執行語句interrupt m字段中的m定義中斷處理程序的中斷號using n字段中的n選擇工作存放器組9在C51中,對匯編語言函數的命名規那么是怎樣的,具體地說:不傳遞參數的函數名格式是什么.通過存放器傳遞參數的函數名格式是什么.傳遞參數重入函數的函數名格式是什么.答:"PR.函數名.

28、模塊名/不傳遞參數"PR._函數名.模塊名/通過存放器傳遞參數"PR._"函數名.模塊名/對重入函數通過堆棧傳遞參數10在C51中,函數返回值傳遞的規那么是什么.答:1調用時參數的傳遞分三種情況:少于等于3個參數時通過存放器傳遞存放器不夠用時通過存儲區傳遞,多于3個時有一局部通過存儲區傳遞,對于重入函數參數通過堆棧傳遞。通過存放器傳遞速度最快。2函數返回值的傳遞當函數有返回值時,其傳遞都是通過存放器11在C51中,怎樣嵌入匯編語言程序.怎樣進展處理實現混合編程.答:其方法是用編譯控制指令“*pragma src、“*pragma asm和“*pragma enda

29、sm實現。編譯控制命令“*pragma src是控制編譯器將C源文件編譯成匯編文件,“*pragma src要放在文件的開場;“*pragma asm和“*pragma endasm指示匯編語言程序的開場和完畢,分別放在匯編程序段的前面和后面。對于函數的調用方法,與調用匯編語言中的函數一樣,在C語言文件中調用匯編語言中的函數,必須先聲明再調用。聲明格式如下:extern返回值類型 函數名參數表;12在C51中如何定義模塊名.在C51文件中的模塊名是什么.答:模塊定義格式如下:NAME 模塊名13在匯編語言文件中:怎樣聲明函數段.怎樣聲明公共函數.怎樣聲明引用函數.怎樣聲明引用變量.定義函數的格

30、式是什么.答:對本模塊定義的函數段作聲明,其格式為:"PR"函數名.模塊名 SEGMENTCODE公共函數聲明。聲明格式為:PUBLIC 函數名引用聲明。聲明格式為:EXTRN CODE函數名引用聲明。聲明格式為:EXTRN 存儲區域類型變量名匯編語言函數的格式如下: RSEG "PR"函數名"模塊名函數名:14在C51中怎樣把函數定義到確定的位置.答:對函數的定位方法,CSEGAT001BH15如何在C51文件和匯編語言文件中相互調用對方文件中的函數.答:匯編語言文件中對于函數的調用方法,與調用匯編語言中的函數一樣,如:LCALLDISPLA

31、Y在C語言文件中調用匯編語言中的函數,必須先聲明再調用。聲明格式如下:extern返回值類型 函數名參數表;例如:externunsigned char right_shift ( char, char );16在C51中,如何訪問DATA空間、PDATA空間、XDATA空間、CODE空間某個確定地址單元.答:用指針定義的訪問存儲器的宏使用時需要用預處理命令把該頭文件包含到文件中,形式為:*include <absacc.h>。1按字節訪問存儲器宏的形式宏名地址2按整型數訪問存儲器宏的形式宏名下標17在某程序中需要定義如下變量:1定義數碼管的顯示09的共陰極顯示代碼0x3f,0x0

32、6,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f數組dis_code,將其定義在CODE區。2定義定時器/計數器0的賦計數值的高、低字節變量TL0_L和TH0_H,將其定義在DATA去區的0x30、0x31處。3定義長度為20的無符號字符型數組data_buf于IDATA區中。4定義長度為100的無符號字符型數組data_array于XDATA區中。5先定義一個無符號字符型變量status于BDATA區中,再定義8個與status的8個位對應的位變量flag_lamp1、flag_lamp2、flag_machine1、flag_machine2、flag_p

33、ort1、flag_port2、flag_calcu1和calcu2從低位到高位。答:1unsigned char code dis_code10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; 2unsignedchardata TL0_L _at_ 0x30, TH0_H _at_ 0x31;3unsignedcharidata data_buf20;4unsignedcharxdata data_array100;5unsignedcharbdata status;sbitflag_lamp1=status0; sbitflag_la

34、mp2=status1; sbitflag_machine1=status2; sbitflag_machine2=status3; sbitflag_port1=status4; sbitflag_port2=status5; sbitflag_calcu1=status6; sbitflag_calcu2=status7; 18在89C52單片機中增加了定時器/計數器2T2,修改頭文件“REG51.H,添加如下內容:1特殊功能存放器T2CON、T2MOD、RCAP2L、RCAP2H、TL2、TH2,地址分別為0xc8 0xcd。2對T2CON的8個位分別定義位變量CP_RL2、C_T2、T

35、R2、EXEN2、TCLK、RCLK、EXF2、和TF2從低位到高位。3定義位變量T2、T2EX對應于P1口的第0位和第1位;定義位變量ET2對應于EI的第5位;定義位變量PT2對應于IP的第5位;4對P1口的8個位分別定義位變量P0_0、P0_1、P0_2、P0_3、P0_4、P0_5、P0_6和P0_7從低位到高位。答:1sfrT2CON=0xc8;sfrT2MOD=0xc9;sfrRCAP2L=0xca;sfrRCAP2H=0xcb;sfrTL2=0xcc;sfrTH2=0xcd;2sbitCP_RL2=T2CON0; sbitC_T2=T2CON1; sbitTR2=T2CON2; s

36、bitEXEN2=T2CON3; sbitTCLK=T2CON4; sbitRCLK=T2CON5; sbitEXF2=T2CON6; sbitTF2=T2CON7; 3sbitT2=P10;sbitT2EX=P11;sbitET2=EI5;sbitPT2=IP5;4sbitP0_0=P00;sbitP0_1=P01;sbitP0_2=P02;sbitP0_3=P03;sbitP0_4=P04;sbitP0_5=P05;sbitP0_6=P06;sbitP0_7=P07;19編寫一C51函數,把從鍵盤輸入的5位十進制數數轉換成一個無符號整型數假設未超出整型數X圍。設從鍵盤輸入的數存放在一無符號

37、數組中,低位數為低下標元素。unsigned char data key_buffer5;unsigned int trans_int(void)unsigned char data i;unsigned int data temp=0;for(i=0;i<5;i+)temp=temp*10+key_bufferi-0x30;return temp;20編寫一C51函數,把一整型數按十進制數將其各位別離,別離后放在一無符號數組中,便于顯示。要求把低位數作為低下標元素。unsigned char data shu5;void main(unsigned int x)unsigned int

38、 temp;unsigned char i;for(i=0;i<4;i+)shui=temp%10;temp=temp/10;shu4=temp;21編寫一C51函數,使用專用指針,把片外數據存儲器中從0x100開場的30個字節數據,傳送到片內從0x40開場的區域中。void main()unsigned char data i,*dpt;unsigned char xdata *xdpt;dpt=0x40;xdpt=0x100;for(i=0;i<30;i+)*(dpt+i)=*(xdpt+i);22編寫一C51程序,實現從P1口輸出產生的流水燈,要求用匯編語言函數實現數據左移或

39、右移。*pragma src*include <at89x52.h>void main()unsigned char temp,i;while(1)temp=0x55;P1=temp;delay();*pragma asmMOV A,tempRR AMOV temp,A*pragma endasmP1=temp;delay();23某單片機系統的P2口接一數模轉換器DAC0832輸出模擬量,現在要求從DAC0832輸出連續的三角波,實現的方法是從P2口連續輸出按照三角波變化的數值,從0開場逐漸增大,到某一最大值后逐漸減小,直到0,然后再從0逐漸增大,一直這樣輸出。試編寫一函數,使從

40、P2口輸出的值產生三角波,并且使三角波的周期和最大值通過入口參數能夠改變。*include<absacc.h>*define DAC0832 XBYTE0x7FFFvoid san(unsigned char max1,unsigned char zhou1)unsigned char i,j,max,zhou;max=max1;zhou=zhou1;while(1)for(i=0;i<=max,i+)DAC0832=i;for(j=0;j<zhou/max;j+)delay();for(i=max-1;i>0,i-)DAC0832=i;for(j=0;j<

41、zhou/max;j+)delay();24在數字濾波中有一種叫做“中值濾波技術,就是對采集的數據按照從大到小或者從小到大進展排序,然后取其中在中間位置的數作為采樣值。試編寫一函數,對存放在片內數據存儲器中從0x50開場的20個單元的采樣數據用冒泡法排序進展中值濾波,把得到的采樣數據存放到0x4f單元中。void midf()unsigned char data temp,i,j,*ptr,*ptr1;ptr=0x50;ptr1=0x4f;for(j=20;j>1,j-)for(i=0;i<j;i+)if(*(ptr+i)>*(ptr+i+1)temp=*(ptr+i+1);

42、*(ptr+i+1)=*(ptr+i);*(ptr+i)=temp;*ptr1=*(ptr+20/2);25在數字濾波中有一種叫做“去極值平均濾波技術,就是對采集的數據按照從大到小或者從小到大進展排序,然后去掉一樣數目的極大值和極小值,對中間局部數據求算術平均值作為采樣值。試編寫一函數,對存放在片外數據存儲器中從0x150開場的16個單元的采樣數據,用選擇法進展“去極值平均濾波,把得到的采樣數據存放到0x14f單元中。void teaf()unsigned char xdata *ptr;unsigned char data temp,i,j,*ptr1;ptr=0x150;ptr1=0x4f

43、;for(j=16;j>1,j-)for(i=0;i<j;i+)if(*(ptr+i)>*(ptr+i+1)temp=*(ptr+i+1);*(ptr+i+1)=*(ptr+i);*(ptr+i)=temp;temp=0;for(i=0;i<16-2;i+)temp=temp+*(ptr+i+1);*ptr1=temp/(16-2);26利用庫函數_getkey編寫一函數,實現從單片機串行口接收數據的C51程序,把接收的數據存放在片內數據存儲器從0x40開場的區域,遇到回車符CRASCII碼是0x0d完畢。include <stdio.h>void main

44、()unsigned char data *dpt;unsigned char i=0,temp;dpt=0x40;while(1)temp=_getchar();if(temp=0x0d)break;*dpt+i=temp;i+;27利用庫函數scanf編寫一函數,實現從單片機串行口接收數據的C51程序,把接收的數據存放在片外數據存儲器從0x240開場的區域,遇到回車符CRASCII碼是0x0d完畢。include <stdio.h>void main()unsigned char xdata *xdpt;unsigned char i=0,temp;xdpt=0x240;whi

45、le(1)scanf(“%c,&temp);if(temp=0x0d)break;*xdpt+i=temp;i+;28利用庫函數putchar編寫一函數,實現從單片機串行口發送數據的C51程序,發送的數據存放在片內數據存儲器從0x50開場的區域,遇到回車符CRASCII碼是0x0d完畢。include <stdio.h>void main()unsigned char data *dpt;unsigned char i=0;dpt=0x50;while(*dpt+i!=0x0d)putchar(*dpt+i);i+;29利用庫函數printf編寫一函數,實現從單片機串行口發

46、送數據的C51程序,發送的數據存放在片外數據存儲器從0x100開場的區域,遇到回車符CRASCII碼是0x0d完畢。include <stdio.h>void main()unsigned char xdata *xdpt;unsigned char i=0;xdpt=0x100;while(*xdpt+i!=0x0d)printf(“%c,*xdpt+i);i+;30編寫一定時器/計數器0定時100ms中斷處理函數,使函數實現時鐘的功能,即產生時鐘的秒、分鐘和小時。設定時初值的高、低字節分別為TIMER_H和TIMER_L。設fosc=6mhz*include <reg52

47、.h>sfr TIMER_H=0x8b;sfr TIMER_L=0x8a;unsigned char data shi,fen,miao,bfm;void main()TMOD=0x01;TIMER_H=15536/16;TIMER_L=15536%16;ET0=1;EA=1;TR0=1;while(1);void time0_int() interrupt 1TIMER_H=15536/16;TIMER_L=15536%16;bfm+;if(bfm=10)bfm=0;miao+;if(miao=60)miao=0;fen+;if(fen=60)fen=0;shi+;if(shi=24)

48、shi=0;31在Keill C的調試狀態下,如何使用跟蹤運行、單步運行、跳出函數運行命令.答:Step命令和Step Over命令的區別:當遇到調用函數時,前者將跟蹤進入函數,而后者是一步執行完函數。如果用全速運行命令Go,可以使用Stop Running命令停頓運行。欲退出調試狀態,可以再次點擊Debug菜單下的Start/Stop Debug Session命令或相應的按鈕。32在Keill C的調試狀態下,如何設置斷點和刪除斷點.答:方法1:用鼠標雙擊。在需要設置的行的最前面,雙擊鼠標左鍵,即可設置或去除斷點。方法2:用命令或命令按鈕。先將光標移到需要設置的行,然后點擊Debug菜單下

49、的Insert/Remove Breakpoint命令或工具欄中的相應按鈕,即可設置或去除斷點。另外還有斷點禁用和全部去除命令及按鈕。33在Keill C的調試狀態下,如何觀察和修改存放器.答:存放器窗口、在線幫助窗口和工程管理器是同一個窗口,在工程管理器窗口下包含3個標簽,即包含3個區域。在調試狀態下,點擊View菜單下的Project Window命令或對應的按鈕,就會顯示或隱藏工程管理器窗口,然后點擊窗口下邊的存放器標簽,即顯示出存放器窗口。除了sec和states之外,其它存放器的值都可以改變。改變的方式有兩種:一是用鼠標直接點擊左鍵進展修改;二是在調試命令窗口直接輸入存放器的值,如輸

50、入“A=0x32,那么存放器A的值立即顯示0x32。34在Keill C的調試狀態下,如何觀察和修改變量.答:在調試狀態下,點擊View菜單下的Watch & Call Stack Window命令或對應的按鈕,就會顯示出或隱藏起變量窗口。變量窗口包含有4個標簽,即4個顯示區,可以分別顯示局部變量Locals標簽、指定變量Watch *1和Watch *2兩個標簽、及堆棧調用Call Stack標簽。在局部變量區,顯示的是當前函數中的變量,這些變量不用設置,自動出現在窗口中。為了觀察其它變量,可以在Watch*1或Watch*2標簽按F2輸入變量名。在程序運行中,可以觀察這些顯示的變量

51、的變化,也可以用鼠標點擊修改它們的值。另外還有更簡單的方法觀察變量的值,在程序停頓運行時,將光標放到要觀察的變量上停大約1秒,就會出現對應變量的當前值,如operate=0x32。35在Keill C的調試狀態下,如何觀察和修改data區、idata區、xdata區的數據.如何觀察code區的數據.答:在調試狀態下,點擊View菜單下的Memory Window命令或對應的按鈕,就會顯示出或隱藏起存儲器窗口。存儲器窗口包含4個標簽,即4個顯示區,分別是Memory*1、Memory*4。在4個顯示區上邊的“Address欄輸入不同類型的地址,可以觀察不同的存儲區域。1設置觀察片內RAM直接尋址

52、的data區,在Address欄輸入D:*為十六進制的兩位數,下同,便顯示從*地址開場的數據。高128字節顯示的是特殊功能存放器的內容。2設置觀察片內RAM間接尋址的idata區,在Address欄輸入I:*,便顯示從*地址開場的數據。高128字節顯示的也是數據區的內容,而不是特殊功能存放器的內容。3設置觀察片外RAM xdata區,在Address欄輸入X:*,便顯示從*地址開場的數據。4設置觀察程序存儲器ROM code區,在Address欄輸入C:*,便顯示從*地址開場的程序代碼。在顯示區域中,默認的顯示形式為十六進制的字節。除了程序存儲器中的數據不能修改之外,其它3個區域的數據均可修改

53、。修改方法是,用鼠標對準欲修改的單元,點擊鼠標右鍵,在彈出的菜單中對Modify Memory at 0x命令點擊鼠標左鍵,會彈出的文本輸入欄輸入數據,然后用鼠標左鍵點擊“OK即可。36在Keill C的調試狀態下,如何觀察各個片內外設的運行狀態.如何修改它們的設置.答:在調試狀態下,點擊Peripherals菜單下的不同外設選項命令,就會顯示或隱藏對應外設的觀察窗口。如顯示定時器0窗口,點擊Peripherals菜單下的Timer下面的Timer0選項,便會顯示出定時器/計數器0狀態窗口。在程序運行時,各個片內外設的狀態會不斷地變化,為了隨時觀察它們的變化,可以啟用View菜單下的Periodic Windows Update命令,讓Keil C自動周期刷新各個調試窗口。另外,也可以在窗口中對設備直接進展設置,與程序中的命令設置一樣,并且立即生效。第5章 習題答案1.什么是中斷和中斷系統.計算機采用中斷系統帶來了哪些優越性"答:

溫馨提示

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

最新文檔

評論

0/150

提交評論