單片機C51期末複習答案

單片機C51期末複習答案:僅做參考
題目來源
本答案來源個人筆記,無論對錯,如果閣下發現有錯,可以評論區留言。

1、當EA=1時,可擴展的外部存儲器大小 ?
答案解析:60KB
當EA=1時,表示首先訪問內部程序存儲器(rom),再訪問外部程序存儲器又因爲51單片機中可尋址程序存儲器最大爲64k,所以最多可擴展的rom大小=最大可擴展內存(64kb)- 內部rom(4kb) = 60KB。

2、CPU中反應程序運行狀態和結果的特徵寄存器 ?
答案解析:PSW(程序狀態字寄存器)。

3、存儲器的芯片地址線爲12根,其容量爲 ?
答案解析:4KB
ram芯片的存儲容量 =地址線條數×數據線的條數bit = 字數(存儲單元個數)×字長;
地址線12根,表示能指示2^12個內存單元, 2^12 = (2^2) * (2^10) = 4KB 。

4、外部中斷初始化內容 ?
答案解析:
(1). 設置外部中斷的觸發方式,下降沿或低電平;
(2). 開外部中斷
(3). 開總中斷

5、P1口作輸入時,必須完成那些步驟 ?
答案解析:輸入端要先置1
不置1,讀的是引腳驅動緩衝器中的內容,置1的目的,是把引腳和緩衝寄存器電氣相聯,使緩衝器能反映引腳電平變化。

6、下載到單片機的程序擴展名 ?
答案解析:.hex (16進制文件,燒入單片機的必須品)。

7、子程序和中斷返回時的斷點在哪裏 ?
答案解析:當前偏移地址的下一地址,即下一條指令的首地址
中斷服務子程序入口地址相對某一中斷是固定的,調用子程序的偏移地址是隨機的,基本過程差不多,返回時,中斷服務子程序用的是RETI ,調用子程序是RET;
調用中斷服務子程序和調用子程序都會把當前偏移地址的下一地址壓棧,但調用子程序的返回指令RET不影響標誌位,RETI從中斷程序返回,並會清除內部相應的中斷狀態寄存器。

8、C51中一般字節變量佔用幾個字節 ?
答案解析:3字節
第一個字節表示存儲器類型,第二,三個字節是指向數據地址的高字節和低字節。

9、使用宏來訪問庫文件,應包含那個頭文件 ?
答案解析:修改:#include <absacc.h>
寫法:#include <assert.h>

10、正確定義一維數組的格式 ?
答案解析:部分示例如下:
//重點:數組不能越界

char a[] = {0,1,2,3,4,5};
int  a[] = {0,1,2,3,4,5};
float a[] = {0,1,2,3,4,5};
double a[] = {0,1,2,3,4,5};

11、單片機的那個端口的引腳具有串行通信功能 ?
答案解析:P3
89C51單片機P3口具有外中斷、串行通信等第二功能。

12、單片機既可位尋址,又可字節尋址的單元有哪些 ?
答案解析:20H~2FH + 其他
片內RAM字節地址20H~2FH,這部分空間就是既能位尋址又能字節尋址的空間。
另外在21個特殊功能寄存器裏面,字節地址號碼可以被8整除的,也可以位尋址

13、定時器T0工作在計數方式時,信號應接在那個引腳 ?
答案解析: P3.4口(89C51)

14、外部中斷的請求標誌 ?
答案解析:IE0,IE1
89C51有5箇中斷源,兩個外中斷,兩個定時器中斷,一個串口中斷;
外部中斷標誌是IE0,IE1;
定時器中斷標誌是TF0,TF1;
串口中斷標誌是RI,TI;
外中斷和定時器中斷硬件置位,硬件清零,軟件不用管,串口中斷必須使用軟件清零(向TI和RI寫0)。

15、要測量引腳INT0上的正脈衝寬度,問TMOD ?
答案解析:TMOD = 0x01H 或 TMOD = 0x09HTMOD詳細解答參考

16、如果A中的內容68H,則P標誌位中的內容爲多少 ?
答案解析:1
P爲奇偶校驗標誌位,由硬件置位或清0;
根據累加器A中“1”的個數的奇偶性,即“1”的個數爲偶數時P=0,奇數時P=1;
當A中的內容 68H = 0110 1000 時,A中“1”的個數爲3,所以P=1。

17、74LS154具有4個輸入的譯碼器芯片,最多可以訪問幾個芯片 ?
答案解析:16

18、單片機訪問外部存儲器信號利用哪裏的信號鎖存低八位地址 ?
答案解析:利用( ALE )信號鎖存來自( P0 )發出的低8位地址信號。

19、C51訪問外部數據的數據存儲器是什麼 ?
答案解析:pdataxdata 是片外數據存儲器類型

20、存儲器首地址爲3000H,則擴展32KB後,末地址爲多少?若首地址爲4000H呢?
答案解析:
32KB=2^5 * 2^10 =2^15 即1000 0000 0000 0000 即8000H
首地址爲3000H,故尾地址爲8000H + 3000H - 1 = AFFFH
若首地址爲4000H,故尾地址爲8000H + 4000H - 1 = BFFFH

21、單片機外部中斷請求信號有哪幾種方式,有效信號是什麼時,激勵外部中斷 ?
答案解析:電平方式和邊沿方式,電平方式下,有效信號爲低電平,邊沿方式下,有效信號爲下降沿

22、單片機復位後,所有的中斷申請是否都會開放 ?
答案解析:51系列單片機復位後入口地址都是0000H,不會開放中斷申請
復位是0000H
外部中斷INT0是0003H
外部中斷INT1是0013H
定時器中斷T0是000BH
定時器中斷T1是001BH
串行口中斷是0023H

23、單片機內部包含哪些主要配件 ?
答案解析:
51單片機在一塊芯片中集成了 CPU 、RAM、ROM、定時/計數器、多功能 I/O 口 和中斷控制等基本功能部件。
單片機的核心部分是 CPU ,CPU 是單片機的大腦和心臟。
程序存儲器用於存放編好的程序或表格常數。
數據存儲器用於存放中間運算結果、數據 暫存和緩衝、標誌位等。
定時/計數器實質上是加法計數器,當它對具有固定時間間隔的內部機器週期進行計數時 ,它是定時器;當它對外部事件進行計數時,它是計數器。
I/O 接口的主要功能包括:緩衝與鎖存數據、地址譯碼、信息格式轉換、傳遞狀態(外 設狀態)和發佈命令等。
中斷控制可以解決 CPU 與外設之間速度匹配的問題,使單片機可以及時處理系統中許 多隨機的參數和信息,同時,它也提高了其處理故障與應變能力的能力。

24、特殊功能寄存器的字節地址多少時,既可字節尋址,又可位尋址 ? 注意問的是特殊功能寄存器
答案解析:80H
詳情參考如下:
(1)片內RAM字節地址20H~2FH,這部分空間就是既能位尋址又能字節尋址的空間;
(2)另外在21個特殊功能寄存器裏面,字節地址號碼可以被8整除的,也可以位尋址。

25、單片機的PC能否尋址,是直接還是間接尋址 ?
答案解析:修改:間接尋址
參考

一般不可尋址,只在MOVC查表指令中可參與尋址。
PC爲16位寄存器,意味着51單片機的程序存儲器尋址空間爲2的16次方,復位後PC爲0000H,意味着單片機從頭開始執行程序。
程序計數器PC始終指向下一條將要執行的指令地址。尋址範圍是0000H ~FFFFH,其中0000H ~ 0FFFH爲64KB片內和片外公共地址,靠EA來區分,0FFFH ~FFFFH爲外部程序存儲器地址。

26、如何區分外部程序存儲器和數據存儲器 ?
答案解析:看其是被RD還是被PSEN信號連接
硬件上,控制信號不一樣:片外程序存儲器工作,要PSEN信號有效;
片外數據最可靠的方法是:觀察連線,片選端(CS)連接到單片機的PSEN引腳的,是片外。
數據存儲區在掉電再上電的時候 裏面的數據會丟失,
外部程序存儲區則不會,片外存儲區的開始地址是1000H,
內部程序存儲區的地址是0000~0FFFH 可以根據地址來區分。
外部數據存儲區的地址是0000~FFFFH,
外部數據存儲區和內部數據存儲區根據指令來區分。

27、中斷源發出的中斷請求信號標記在那個寄存器 ?
答案解析:TCON/SCON

28、單片機程序和數據存儲器擴展的最大範圍是一樣的嗎 ?
答案解析:
(1)8051單片機內部程序存儲器:爲4K掩膜程序存儲器,
尋址範圍爲:0000H~0FFFH,
8051單片機片內片加上片外的總的尋址纔是:0000H~FFFFH
(2)8051單片機內部數據存儲器只有128個單元:
尋址範圍爲:00H~7FH,其餘80H ~FFH爲特殊寄存器區
51單片機數據儲存器擴展最大容量可達64K字節,
地址範圍:0000H~FFFFH
注(此處來源網絡,參考需謹慎):用16片F29C51004芯片(512k字節/片),可擴充至8M字節:地址範圍:00000H~7FFFF

29、單片機系統擴展時使用的鎖存器功能是 ?
答案解析:所謂鎖存就是就是把當前的狀態鎖存起來,使CPU送出的數據在接口電路的輸出端保持一段時間鎖存後狀態不再發生變化,直到解除鎖存。數據、地址是分時複用的,整個工作過程是先輸出地址信號,再輸出數據信號,先輸出的地址信號需要鎖存,不然輸出數據信號時地址信號就會變。

30、程序返回void ,其含義 ?
答案解析:
void:空的意思,不能用來定義變量,只能用來作爲返回值類型:無返回值使用;
void真正發揮的作用在於:
(1) 對函數返回的限定;
(2) 對函數參數的限定。

31、程序存儲器的功能 ?
答案解析:
程序存儲器:是用於存放是系統工作的應用程序及一些不需改變的數據常數的,程序寫入程序存儲器後,單片機系統只能讀取程序指令使系統運行,而不能再進行改寫,且系統掉電後,程序不會丟失。因此,程序存儲器是ROM(Read Only Memory),即只讀存儲器。

數據存儲器:是用於存放程序運行的中間處理數據的,可隨程序運行而隨時寫入或讀出數據存儲器的內容,當系統掉電時,數據全部會丟失。因此,數據存儲器是RAM(Random Accese Memory),即可隨機讀寫的存儲器。

32、單片機內的容量是256B的數據存儲器可以分爲幾個區,其作用是什麼 ?
答案解析:
工作寄存器區:00H-1FH、作用:與CPU內部的RAM一起完成邏輯和算術功能,設置內部電路的運行方式、記錄電路的運行狀態,並置相關的標誌位,另外接口電路如4個8位並行口、1個全雙工的串口等也映射到特殊功能寄存器中;
位尋址區:20H-2FH、作用:此區間的寄存器可以位尋址,可以對它們進行位操作、位運算。在使用上可以用位地址存儲某個開關量(只有0,1兩個值),將位地址數值做邏輯運算,或傳遞給特殊功能寄存器等,特殊功能寄存器裏有許多也可位運算,置位,置零等,這就可以僅對該位操作而不影響其他位;
通用RAM區:30H-7FH、作用:普通的數據緩存區,用來建立堆棧,還有放一些不太常用的數據;
兩個80-FFH的數據區
其一:80-FFH,特殊功能寄存器組區,支持直接尋址,各種各樣的特殊功能寄存器都在這裏。
其二:80-FFH,間接尋址區,只支持間接尋址,使用間接尋址指令避免和特殊功能寄存器區衝突,用來放一些不常用(相對不常用)的數據,由於使用R0或R1作指針尋址,用來建立數組數組是非常好的。

詳情參考如下:
(1)空間劃分存儲器分爲程序存儲器(ROM)和數據存儲器(RAM)兩大類。程序存儲器有片內和片外存儲器兩種;數據存儲器也有片內和片外存儲器兩種。
(2)地址範圍及容量程序存儲器是片內外統一尋址,片內程序存儲空間+片外程序存儲空間=64K的存儲空間(0000H-FFFFH)。而數據存儲器則是單獨尋址,片內數據存儲空間+片外數據存儲空間=128B(00H-7FH)+64KB(0000H-FFFFH)。
注意:51的片內數據存儲空間爲128B,而增強型52的片內數據存儲空間爲256B。52是在51基礎上增加了80H-FFH的高128B的空間。增加的這一部分只能採用間接尋址。
51片內數據存儲器又可分爲:
工作寄存器區:00H-1FH             
位尋址區: 20H-2FH             
通用RAM區: 30H-7FH
(3)使用上的不同RAM和ROM在結構上是不同的。對於RAM來說,CPU在運行時能隨時進行數據修改,但卻有個缺點,一旦電源掉電,存儲信息將丟失。所以,它只能用來存放暫時性的輸入輸出數據,運算中間結果和堆棧等。(注意,要區別於FLASH)對於ROM,它是一種寫入信息不易改寫的存儲器。就算電源掉電,存儲信息都保留不變。所以,ROM用來存放程序或常數等。

33、C51語言的數據存儲模式及其區別 ?
答案解析:
(1)SMALL模式:所有變量都默認位於8051內部的數據存儲器中,這和使用data存儲器類型標識符明確聲明是相同的。該模式變量訪問非常有效,但所有數據對象和堆棧必須適合內部RAM。因爲使用的堆棧空間決定於不同函數嵌套的深度,故對堆棧的尺寸要求嚴格;
(2)COMPACT模式:所有變量都默認位於外部數據存儲器的1頁(256字節),這和使用pdata存儲器類型標識符明確聲明是相同的,地址高字節通常設置P2,編譯器無法設置這個端口,故必須在啓動代碼中手工設置。該模式能容納最多256B的變量,這個限制是用R0、R1間接尋址造成的。該模式的效率不如Small模式的效率,變量訪問速度不如Small模式的快,但比Large模式快。
(3)LARGE模式:所有變量都默認位於外部數據存儲器,這和使用xdata存儲器類型標識符明確聲明是相同的。尋址使用數據指針(DPRT),變量訪問效率低,特別是對多字節變量,該模式的數據訪問比Small模式和Compact模式生成的代碼多。
詳情參考

34、如何書寫一段中斷初始化程序,要求:INT0,INT1,串行口中斷允許,INT1跳沿觸發,INT0爲高優先級中斷。
答案解析:
部分解答參考
(1)觸發方式:
電平觸發指的是低電平到來之後,中斷即被觸發,跟之前電平高低無關;
跳變觸發:剛開始時必須是高電平,然後突然拉低至低電平,這就是跳變,這樣才能觸發。
(2)IP寄存器—優先級設置:ip=0x01;
89S51特殊功能寄存器IP是中斷優先級控制寄存器,各位功能說明如下:

符號 位置 位地址 說明(1=高優先級,0=低優先級)
- IP.7 BFH 未實現,備用
- IP.6 BEH 未實現,備用
PT2 IP.5 BDH 定時器2中斷優先級(只有80×2)
PS IP.4 BCH 串行端口中斷優先級
PT1 IP.3 BBH 定時器1中斷優先級
PX1 IP.2 BAH 外部中斷1優先級
PT0 IP.1 B9H 定時器0中斷優先級
PX0 IP.0 B8H 外部中斷0優先級
//初始化程序
void init()
{
   //設置INT0
   EX0 = 1;    //開(INT0)外部中斷0的中斷允許
   IT0 = 1;    //選擇電平負跳變(下降沿)觸發方式
   IP = 0x01;  //設置外部中斷0爲高級優先級
    
   //設置INT1
   EX1 = 1;    //開外部中斷1
   IT1 = 1;    //選擇電平負跳變(下降沿)觸發方式,
   EA = 1;     //開總中斷
    
    //設置串行口中斷
    SCON = 0X50;  //串口工作方式設置,串口方式1 ,允許接收
    TMOD = 0X20;  //定時器工作方式設置,T1工作於方式2
    PCON = 0X00;  //波特率倍增設置,不倍增
    TH1 = 0XFD;   //波特率設置
    TL1 = 0XFD;
    TR1 = 1;   //開啓定時器
}

35、編程題:有TMOD初值,用定時器+中斷作答(TH,TL初始化值使用16進制): 點擊此處查看(例子中TH\TL的計算方法我是直接用公式的,記得算一下)

另外一篇習題參考,很不錯的哦,點擊此處跳轉

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章