68精品久久久久久欧美,最近中文字幕完整在线看一,久久亚洲男人天堂,最近中文字幕完整视频高清1

你好!歡迎來(lái)到深圳市穎特新科技有限公司!
語(yǔ)言
當(dāng)前位置:首頁(yè) >> 技術(shù)中心 >> 單片機(jī)入門(mén) >> 單片機(jī)原理及應(yīng)用試題

單片機(jī)原理及應(yīng)用試題

關(guān)鍵字:單片機(jī)學(xué)習(xí) 單片機(jī)考試 作者:admin 來(lái)源:不詳 發(fā)布時(shí)間:2018-05-08  瀏覽:322

《單片機(jī)原理及應(yīng)用》習(xí)題參考答案
1. 為什么計(jì)算機(jī)要采用二進(jìn)制數(shù)?學(xué)習(xí)十六進(jìn)制數(shù)的目的是什么?
    在計(jì)算機(jī)中,由于所采用的電子邏輯器件僅能存儲(chǔ)和識(shí)別兩種狀態(tài)的特點(diǎn),計(jì)算機(jī)內(nèi)部一切信息存儲(chǔ)、處理和傳送均采用二進(jìn)制數(shù)的形式。可以說(shuō),二進(jìn)制數(shù)是計(jì)算機(jī)硬件能直接識(shí)別并進(jìn)行處理的惟一形式。十六進(jìn)制數(shù)可以簡(jiǎn)化表示二進(jìn)制數(shù)。
2.什么是總線?總線主要有哪幾部分組成?各部分的作用是什么?
總線是連接計(jì)算機(jī)各部件之間的一組公共的信號(hào)線。一般情況下,可分為系統(tǒng)總線和外總線。
系統(tǒng)總線應(yīng)包括:
地址總線(AB)
控制總線(CB)
數(shù)據(jù)總線(DB)
地址總線(AB):CPU根據(jù)指令的功能需要訪問(wèn)某一存儲(chǔ)器單元或外部設(shè)備時(shí),其地址信息由地址總線輸出,然后經(jīng)地址譯碼單元處理。地址總線為16位時(shí),可尋址范圍為216=64K,地址總線的位數(shù)決定了所尋址存儲(chǔ)器容量或外設(shè)數(shù)量的范圍。在任一時(shí)刻,地址總線上的地址信息是惟一對(duì)應(yīng)某一存儲(chǔ)單元或外部設(shè)備。
控制總線(CB):由CPU產(chǎn)生的控制信號(hào)是通過(guò)控制總線向存儲(chǔ)器或外部設(shè)備發(fā)出控制命令的,以使在傳送信息時(shí)協(xié)調(diào)一致的工作。CPU還可以接收由外部設(shè)備發(fā)來(lái)的中斷請(qǐng)求信號(hào)和狀態(tài)信號(hào),所以控制總線可以是輸入、輸出或雙向的。
數(shù)據(jù)總線(DB):CPU是通過(guò)數(shù)據(jù)總線與存儲(chǔ)單元或外部設(shè)備交換數(shù)據(jù)信息的,故數(shù)據(jù)總線應(yīng)為雙向總線。在CPU進(jìn)行讀操作時(shí),存儲(chǔ)單元或外設(shè)的數(shù)據(jù)信息通過(guò)數(shù)據(jù)總線傳送給CPU;在CPU進(jìn)行寫(xiě)操作時(shí),CPU把數(shù)據(jù)通過(guò)數(shù)據(jù)總線傳送給存儲(chǔ)單元或外設(shè)
3.什么是接口電路? CPU與接口電路連接一般應(yīng)具有哪些信號(hào)線?外部設(shè)備與接口電路連接一般應(yīng)具有哪些信號(hào)線?
CPU通過(guò)接口電路與外部輸入、輸出設(shè)備交換信息,
一般情況下,外部設(shè)備種類(lèi)、數(shù)量較多,而且各種參量(如運(yùn)行速度、數(shù)據(jù)格式及物理量)也不盡相同。CPU為了實(shí)現(xiàn)選取目標(biāo)外部設(shè)備并與其交換信息,必須借助接口電路。一般情況下,接口電路通過(guò)地址總線、控制總線和數(shù)據(jù)總線與CPU連接;通過(guò)數(shù)據(jù)線(D)、控制線(C)和狀態(tài)線(S)與外部設(shè)備連接。
4. 存儲(chǔ)器的作用是什么?只讀存儲(chǔ)器和隨機(jī)存儲(chǔ)器有什么不同?
存儲(chǔ)器具有記憶功能,用來(lái)存放數(shù)據(jù)和程序。計(jì)算機(jī)中的存儲(chǔ)器主要有隨機(jī)存儲(chǔ)器(RAM)和只讀存儲(chǔ)器(ROM)兩種。隨機(jī)存儲(chǔ)器一般用來(lái)存放程序運(yùn)行過(guò)程中的中間數(shù)據(jù),計(jì)算機(jī)掉電時(shí)數(shù)據(jù)不再保存。只讀存儲(chǔ)器一般用來(lái)存放程序,計(jì)算機(jī)掉電時(shí)信息不會(huì)丟失。
5.某存儲(chǔ)器的存儲(chǔ)容量為64KB,它表示多少個(gè)存儲(chǔ)單元?
64×1024
6. 簡(jiǎn)述微型計(jì)算機(jī)硬件系統(tǒng)組成。
一臺(tái)計(jì)算機(jī)的基本結(jié)構(gòu)由運(yùn)算器、控制器、存儲(chǔ)器、輸入設(shè)備和輸出設(shè)備五部分組成。
7. 什么是單片機(jī)?單片機(jī)與微機(jī)相比有何特點(diǎn)?
單片機(jī)(Single-Chip-Microcomputer)又稱(chēng)單片微控制器,其基本結(jié)構(gòu)是將微型計(jì)算機(jī)的基本功能部件:中央處理機(jī)(CPU)、存儲(chǔ)器、輸入接口、輸出接口、定時(shí)器/計(jì)數(shù)器、中斷系統(tǒng)等全部集成在一個(gè)半導(dǎo)體芯片上,因此,單片機(jī)其體積小、功耗低、價(jià)格低廉,且具有邏輯判斷、定時(shí)計(jì)數(shù)、程序控制等多種功能。
單片機(jī)結(jié)構(gòu)上的設(shè)計(jì),在硬件、指令系統(tǒng)及I/O能力等方面都有獨(dú)到之處,具有較強(qiáng)而有效的控制功能。雖然單片機(jī)只是一個(gè)芯片,但無(wú)論從組成還是從其邏輯功能上來(lái)看,都具有微機(jī)系統(tǒng)的含義。另一方面,單片機(jī)畢竟是一個(gè)芯片,只有外加所需的輸入、輸出設(shè)備,才可以構(gòu)成實(shí)用的單片機(jī)應(yīng)用系統(tǒng)。
8. 單片機(jī)主要應(yīng)用于哪些領(lǐng)域?
(1) 智能儀器。智能儀器是含有微處理器的測(cè)量?jī)x器。單片機(jī)廣泛應(yīng)用于各種儀器儀表,使儀器儀表智能化取得了令人矚目的進(jìn)展。
(2) 工業(yè)控制。單片機(jī)廣泛應(yīng)用于各種工業(yè)控制系統(tǒng)中,如數(shù)控機(jī)床、溫度控制、可編程順序控制等。
(3) 家用電器。目前各種家用電器普遍采用單片機(jī)取代傳統(tǒng)的控制電路,如洗衣機(jī)、電冰箱、空調(diào)、彩電、微波爐、電風(fēng)扇及高級(jí)電子玩具等。由于配上了單片機(jī),使其功能增強(qiáng)而身價(jià)倍增,深受用戶(hù)的歡迎。
(4) 機(jī)電一體化。機(jī)電一體化是機(jī)械工業(yè)發(fā)展的方向,機(jī)電一體化產(chǎn)品是指集機(jī)械技術(shù)、微電子技術(shù)、計(jì)算機(jī)技術(shù)于一體,具有智能化特征的機(jī)電產(chǎn)品。
單片機(jī)除以上各方面應(yīng)用之外,還廣泛應(yīng)用于辦公自動(dòng)化領(lǐng)域(如復(fù)印機(jī))、汽車(chē)電路、通信系統(tǒng)(如手機(jī))、計(jì)算機(jī)外圍設(shè)備等,成為計(jì)算機(jī)發(fā)展和應(yīng)用的一個(gè)重要方向。
9. 什么是嵌入式系統(tǒng)?嵌入式系統(tǒng)有哪些重要特征?
所謂嵌入式系統(tǒng),是“以應(yīng)用為中心、以計(jì)算機(jī)技術(shù)為基礎(chǔ)、軟件硬件可裁減、功能、可靠性、成本、體積、功耗嚴(yán)格要求的專(zhuān)用計(jì)算機(jī)系統(tǒng)”。即以嵌入式應(yīng)用為目的計(jì)算機(jī)系統(tǒng)。
嵌入式系統(tǒng)的重要特征:
⑴、系統(tǒng)內(nèi)核小
⑵、專(zhuān)用性強(qiáng)。
⑶、系統(tǒng)精簡(jiǎn)
嵌入式系統(tǒng)一般沒(méi)有系統(tǒng)軟件和應(yīng)用軟件的明顯區(qū)分,其功能設(shè)計(jì)及實(shí)現(xiàn)上不要求過(guò)于復(fù)雜,這樣一方面利于控制系統(tǒng)成本,同時(shí)也利于實(shí)現(xiàn)系統(tǒng)安全。
⑷、高實(shí)時(shí)性
第二章
1. 舉例說(shuō)明MCS-51有哪些典型產(chǎn)品,它們有何區(qū)別?
 MCS-51系列單片機(jī)可分為兩大系列:51子系列和52子系列。
51子系列單片機(jī)的典型產(chǎn)品有8051、8751、8031、80C51、80C31等。它們的結(jié)構(gòu)基本相同,其主要差別反映在片內(nèi)存儲(chǔ)器的配置上有所不同
2. 8051單片機(jī)內(nèi)部包含哪些主要功能部件?各功能部件的主要作用是什么?
 8051單片機(jī)內(nèi)部由CPU、4KB的ROM、128B的RAM、4個(gè)8位的I/O并行端口、一個(gè)串行口、兩個(gè)16位定時(shí)/計(jì)數(shù)器及中斷系統(tǒng)等組成。
3. 程序狀態(tài)字寄存器PSW各位的定義是什么?
PSW是一個(gè)8位寄存器,用于寄存當(dāng)前指令執(zhí)行后的某些狀態(tài),即反映指令執(zhí)行結(jié)果的一些特征信息。
Cy(PSW.7):即PSW的D7位,進(jìn)位/借位標(biāo)志。
AC(PSW.6):即PSW的D6位,輔助進(jìn)位標(biāo)志。
F0(PSW.5)及F1(PSE.1):即PSW的D5位、D1位,用戶(hù)標(biāo)志位。
RS1及RS0(PSW.4及PSW.3):即PSW的D4位、D3位,寄存器組選擇控制位。
OV(PSW.2):即PSW的D2位,溢出標(biāo)志。
4. MCS-51存儲(chǔ)器結(jié)構(gòu)的主要特點(diǎn)是什么?程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器各有何不同?
MCS-51單片機(jī)的存儲(chǔ)器結(jié)構(gòu)與一般微機(jī)存儲(chǔ)器的配置方法不同,一般微機(jī)把程序和數(shù)據(jù)共存同一存儲(chǔ)空間,各存儲(chǔ)單元對(duì)應(yīng)惟一的地址。而MCS-51的存儲(chǔ)器把程序和數(shù)據(jù)的存儲(chǔ)空間嚴(yán)格區(qū)分開(kāi)。
數(shù)據(jù)存儲(chǔ)器用于存放程序運(yùn)算的中間結(jié)果、狀態(tài)標(biāo)志位等。
程序存儲(chǔ)器用于存放已編制好的程序及程序中用到的常數(shù)。
5. MCS-51單片機(jī)內(nèi)部RAM可分為幾個(gè)區(qū)?各區(qū)的主要作用是什么?
內(nèi)部數(shù)據(jù)存儲(chǔ)器分為高、低128B兩大部分。
低128B為RAM區(qū),地址空間為00H~7FH,可分為:寄存器區(qū)、位尋址區(qū)、堆棧及數(shù)據(jù)存儲(chǔ)區(qū)。存放程序運(yùn)算的中間結(jié)果、狀態(tài)標(biāo)志位等。
高128B為特殊功能寄存器(SFR)區(qū),地址空間為80H~FFH,其中僅有21個(gè)字節(jié)單元是有定義的。
6. MCS-51單片機(jī)的P0~P3四個(gè)I/O端口在結(jié)構(gòu)上有何異同?使用時(shí)應(yīng)注意哪些事項(xiàng)?
P0口是一個(gè)8位漏極開(kāi)路型雙向I/O端口。
P1口是一個(gè)內(nèi)部帶上拉電阻的8位準(zhǔn)雙向I/O端口。
P2口也是一個(gè)內(nèi)部帶上拉電阻的8位準(zhǔn)雙向I/O端口
P3口是一個(gè)內(nèi)部帶上拉電阻的8位多功能雙向I/O端口。
在使用時(shí)應(yīng)注意以下方面:
① P0~P3都是準(zhǔn)雙向I/O口,即CPU在讀取數(shù)據(jù)時(shí),必須先向相應(yīng)端口的鎖存器寫(xiě)入“1”。各端口名稱(chēng)與鎖存器名稱(chēng)在編程時(shí)相同,均可用P0~P3表示。當(dāng)系統(tǒng)復(fù)位時(shí),P0~P3端口鎖存器全為“1”,故可直接對(duì)其進(jìn)行讀取數(shù)據(jù)。
② P0口每一輸出位可驅(qū)動(dòng)8個(gè)LS型TTL負(fù)載,P0口可作通用輸入、輸出端口使用,此時(shí),若要驅(qū)動(dòng)NMOS或其他拉電流負(fù)載時(shí),需外接上拉電阻,才能使該位高電平輸出有效。
在單片機(jī)進(jìn)行外部存儲(chǔ)器擴(kuò)展時(shí),P0口必須作為地址/數(shù)據(jù)復(fù)用線使用,此時(shí),不必外接上拉電阻,P0也不能作通用I/O口使用。
③ P1、P2、P3口輸出均接有內(nèi)部上拉電阻,輸入端無(wú)需外接上拉電阻,每一位輸出可以驅(qū)動(dòng)4個(gè)LS型TTL電路。
④ P0、P2口除可以作通用I/O端口、以實(shí)現(xiàn)與外部進(jìn)行數(shù)據(jù)交換外,更主要的是,當(dāng)CPU訪問(wèn)外部存儲(chǔ)器時(shí),CPU將自動(dòng)地把外部存儲(chǔ)器的地址線信號(hào)(16位)送P0、P2口,作為地址總線(P0口輸出低8位地址,P2口輸出高8位地址),向外部存儲(chǔ)器輸出16位存儲(chǔ)單元地址。在控制信號(hào)作用下,該地址低8位被鎖存后,P0口自動(dòng)切換為數(shù)據(jù)總線,這時(shí)經(jīng)P0口可向外部存儲(chǔ)器進(jìn)行讀、寫(xiě)數(shù)據(jù)操作。此時(shí),P2口不再作通用I/O端口,P0口為地址/數(shù)據(jù)復(fù)用口。
7. 在什么情況下,P3口作為第二功能使用?
P3口的第二功能是作為控制端口使用的。由于單片機(jī)沒(méi)有專(zhuān)設(shè)的控制信號(hào)引腳,單片機(jī)在進(jìn)行外部存儲(chǔ)器和I/O端口擴(kuò)展時(shí)所需要的控制信號(hào)必須由P3口提供,P3口第二功能相當(dāng)于PC機(jī)中CPU的控制線引腳。
8. 為什么說(shuō)單片機(jī)具有較強(qiáng)的位處理能力?
對(duì)于許多控制系統(tǒng),開(kāi)關(guān)量控制是控制系統(tǒng)的主要對(duì)象之一。作為傳統(tǒng)的CPU,對(duì)于簡(jiǎn)單的個(gè)別開(kāi)關(guān)量進(jìn)行控制卻顯得不那么方便,而讓MCS-51值得驕傲的正是它有效地解決了單一位的控制。
MCS-51片內(nèi)CPU還是一個(gè)性能優(yōu)異的位處理器,也就是說(shuō)MCS-51實(shí)際上又是一個(gè)完整而獨(dú)立的1位單片機(jī)(也稱(chēng)布爾處理機(jī))。該布爾處理機(jī)除了有自己的CPU、位寄存器、位累加器(即進(jìn)位標(biāo)志Cy)、I/O口和位尋址空間外,還有專(zhuān)供位操作的指令系統(tǒng),可以直接尋址對(duì)位存儲(chǔ)單元和SFR的某一位進(jìn)行操作。MCS-51單片機(jī)對(duì)于位操作(布爾處理)有置位、復(fù)位、取反、測(cè)試轉(zhuǎn)移、傳送、邏輯與和邏輯或運(yùn)算等功能。所以,單片機(jī)具有較強(qiáng)的位處理能力。
9. 指出8051可進(jìn)行位尋址的存儲(chǔ)空間。
  00~7FH(即20H.0~2FH.7)及SFR地址能被8整除的寄存器中的各位。
10. 位地址90H和字節(jié)地址90H及P1.0有何異同?如何區(qū)別?
位地址90H表示P1.0位
字節(jié)地址90H表示P1口
11. 在訪問(wèn)外部ROM或RAM時(shí),P0和P2口各用來(lái)傳送什么信號(hào)?P0口為什么要采用片外地址鎖存器?
 P0口傳送地址低八位后可復(fù)用數(shù)據(jù)線,所以,P0口要采用片外地址鎖存器。P2口傳送地址高八位。
12. 什么是時(shí)鐘周期?什么是機(jī)器周期?什么是指令周期?當(dāng)振蕩頻率為12MHz時(shí),一個(gè)機(jī)器周期為多少微秒?
時(shí)鐘周期:也稱(chēng)振蕩周期,即振蕩器的振蕩頻率fosc的倒數(shù),是時(shí)序中最小的時(shí)間單位。機(jī)器周期:執(zhí)行一條指令的過(guò)程可分為若干個(gè)階段,每一階段完成一規(guī)定的操作,完成一個(gè)規(guī)定操作所需要的時(shí)間稱(chēng)為一個(gè)機(jī)器周期,一個(gè)機(jī)器周期包含12個(gè)時(shí)鐘周期。
當(dāng)振蕩頻率為12MHz時(shí),一個(gè)機(jī)器周期為12/(12×1000000)秒=1微秒
指令周期:定義為執(zhí)行一條指令所用的時(shí)間。
13. MCS-51單片機(jī)有幾種復(fù)位方法?復(fù)位后,CPU從程序存儲(chǔ)器的哪一個(gè)單元開(kāi)始執(zhí)行程序?
MCS-51的復(fù)位電路包括上電復(fù)位電路和按鍵(外部)復(fù)位電路
0000H
14. 8051系統(tǒng)掉電時(shí)如何保存內(nèi)部RAM中的數(shù)據(jù)?
單片機(jī)在運(yùn)行過(guò)程中,如果發(fā)生掉電,片內(nèi)RAM和SFR中的信息將會(huì)丟失。為防止信息丟失,可以把一組備用電源加到RST/VPD端,當(dāng)VCC上的電壓低于VPD上的電壓時(shí),備用電源通過(guò)VPD端,以低功耗保持內(nèi)部RAM和SFR中的數(shù)據(jù)。
15. 8051單片機(jī)引腳ALE的作用是什么?當(dāng)8051不外接RAM和ROM時(shí),ALE上輸出的脈沖頻率是多少?其作用是什么?
地址鎖存使能輸出ALE:當(dāng)單片機(jī)訪問(wèn)外部存儲(chǔ)器時(shí),外部存儲(chǔ)器的16位地址信號(hào)由P0口輸出低8位,P2口輸出高8位,ALE可用作低8位地址鎖存控制信號(hào);當(dāng)不用作外部存儲(chǔ)器地址鎖存控制信號(hào)時(shí),該引腳仍以時(shí)鐘振蕩頻率的1/6固定地輸出正脈沖,可以驅(qū)動(dòng)8個(gè)LS型TTL負(fù)載。
第三章
1.MCS-51有哪幾種尋址方式?舉例說(shuō)明它們是怎樣尋址的?
MCS-51指令系統(tǒng)的尋址方式有以下7種:
立即尋址方式:操作數(shù)直接出現(xiàn)在指令中。
直接尋址方式中:操作數(shù)的單元地址直接出現(xiàn)在指令中。
寄存器尋址方式中:寄存器中的內(nèi)容就是操作數(shù)。
寄存器間接尋址方式中,指定寄存器中的內(nèi)容是操作數(shù)的地址,該地址對(duì)應(yīng)存儲(chǔ)單元的內(nèi)容才是操作數(shù)。
變址尋址方式是以程序指針PC或數(shù)據(jù)指針DPTR為基址寄存器,以累加器A作為變址寄存器,兩者內(nèi)容相加(即基地址+偏移量)形成16位的操作數(shù)地址,
相對(duì)尋址是以程序計(jì)數(shù)器PC的當(dāng)前值作為基地址,與指令中的第二字節(jié)給出的相對(duì)偏移量rel進(jìn)行相加,所得和為程序的轉(zhuǎn)移地址。
位地址:內(nèi)部RAM地址空間的可進(jìn)行位尋址的128位和SFR地址空間的可位尋址的11個(gè)8位寄存器的88位。位尋址給出的是直接地址。
2.位尋址和字節(jié)尋址如何區(qū)分?在使用時(shí)有何不同?
由尋址方式可以看出,不同的尋址方式所尋址的存儲(chǔ)空間是不同的。正確地使用尋址方式不僅取決于尋址方式的形式,而且取決于尋址方式所對(duì)應(yīng)的存儲(chǔ)空間。字節(jié)尋址必須是對(duì)8位存儲(chǔ)單元,位尋址的存儲(chǔ)空間只能是片內(nèi)RAM的20H~2FH字節(jié)地址中的所有位(位地址為00H~7FH)和部分SFR的位,決不能是該范圍之外的任何單元的任何位。
3.要訪問(wèn)專(zhuān)用寄存器和片外數(shù)據(jù)寄存器,應(yīng)采用什么尋址方式?舉例說(shuō)明。
  訪問(wèn)專(zhuān)用寄存器:可采用直接尋址或寄存器尋址。
訪問(wèn)片外數(shù)據(jù)寄存器:寄存器間接尋址
4.什么是堆棧?其主要作用是什么?
 堆棧是后進(jìn)先出的數(shù)據(jù)存儲(chǔ)區(qū)
一般用于中斷處理過(guò)程中,若需要保護(hù)現(xiàn)場(chǎng)數(shù)據(jù)(如內(nèi)部RAM單元的內(nèi)容),可使用入棧指令,將數(shù)據(jù)壓入堆棧,中斷處理過(guò)程執(zhí)行完后,再使用出棧指令恢復(fù)現(xiàn)場(chǎng)數(shù)據(jù)。
5.編程將內(nèi)部RAM的20H單元的內(nèi)容傳送給外部RAM的2000H單元。
      MOV A,20H
MOV DPTR,#2000H
MOVX @DPTR,A
6.編程將內(nèi)部數(shù)據(jù)存儲(chǔ)器20H~30H單元內(nèi)容清零。
         MOV R0,#20H
MOV A,#0
MOV R3,#17
LOP :MOV @R0,A
INC R0
DJNZ R3,LOP
7.編程查找內(nèi)部RAM的32H~41H單元中是否有0AAH這個(gè)數(shù)據(jù),若有這一數(shù)據(jù),則將50H單元置為0FFH,否則清50H單元為0。
MOV R3, #10H                                                                                              
MOV A,#0AAH     
MOV R0,#31H
LOP :INC R0
    SUBB A,@R0
    JZ  LOP1
         DJNZ  R3,LOP
         MOV 50H,#0H
         AJMP  LOP3
    LOP1:MOV 50H,#0FFH
    LOP3: AJMP 1OP3  
8.查找20H~4FH單元中出現(xiàn)00H的次數(shù),并將查找結(jié)果存入50H單元。
         MOV R3,#30H
         MOV R0,#20H
         MOV A,#0
LOP:  MOV A,@R0
      JZ  LOP1
LOP3: INC R0
      DJNZ R3,LOP
      AJMP LOP2
LOP1: INC 50H
      AJMP LOP3
LOP2:AJMP LOP2
9.已知A=83H,R0=17H,(17H)=34H,寫(xiě)出下列程序段執(zhí)行完后的A中的內(nèi)容。
ANL        A,  #17H
ORL        17H, A

XRL        A,  @R0
CPL           A
    (A)=11001011B=0CBH
10.已知單片機(jī)的fosc=12MHz,分別設(shè)計(jì)延時(shí)0.1s、1s、1min的子程序。
    設(shè)晶振頻率為12MHz,一個(gè)機(jī)器周期為1?s,
延時(shí)1ms的子程序:                               執(zhí)行時(shí)間(機(jī)器周期)
DELAY:    MOV   R7, #0FFH                                 1
 LOOP:     NOP                                                          1
                  NOP                                                          1
                  DJNZ   R7, LOOP                                  2
                  RET                                                           2
該程序段的總的執(zhí)行時(shí)間為:
(1+4×255+2)ms=1023?s≈1ms
延時(shí)時(shí)間為100ms的子程序:
DELAY:   MOV   R5,#64H                對(duì)延時(shí)1ms的子程序循環(huán)100次。
LOP1:      MOV   R7, #0FFH                                
 LOOP:     NOP                                                         
                  NOP                                                        
                  DJNZ   R7, LOOP
DJNZ   R5,LOP1                                  
                  RET                                                          
延時(shí)時(shí)間為1s的子程序:
DELAY1: MOV    R3, #0AH             對(duì)延時(shí)100ms的子程序循環(huán)10次
DELAY:   MOV   R5,#64H                。
LOP1:      MOV   R7, #0FFH                                
 LOOP:     NOP                                                         
                  NOP                                                        
                  DJNZ   R7, LOOP
DJNZ   R5,LOP1                                  
                  DJNZ  R3, DELAY
RET
延時(shí)時(shí)間為60s的子程序:           對(duì)延時(shí)1s的子程序循環(huán)60次
11.MCS-51匯編語(yǔ)言中有哪些常用的偽指令?各起什么作用?
    BIT(地址符號(hào)命令)
END(結(jié)束匯編)
EQU(等值)
    DB(定義字節(jié))
DW(定義字)
DS(定義存儲(chǔ)單元)
ORG(匯編起始地址)
12.比較下列各題中的兩條指令有什么異同?
 、 MOV  A,  R1;    MOV  0E0H,  R1    指令功能相同,尋址方式表示不同
    ② MOV  A,  P0;    MOV  A,   80H      指令功能相同,尋址方式表示不同
    ③ LOOP:SJMP  LOOP;  SJMP  $              指令功能相同
13.下列程序段匯編后,從3000H開(kāi)始各有關(guān)存儲(chǔ)單元的內(nèi)容是什么?
                           ORG         3000H
         TAB1:        EQU        1234H
         TAB2:        EQU        5678H
                           DB             65,13,"abcABC"
                           DW            TAB1,TAB2,9ABCH
     3000H: 65
     3001H: 13
     3002H: ‘a(chǎn)’
     3003H: ‘b’
     3004H: ‘c’
     3005H: ‘A’
     3006H:’B’
     3007H: ‘C’
     3008H: 34H
     3009H: 12H
     300AH: 78H
     300BH: 56H
     300CH: 0BCH
     300DH: 9AH
14.為了提高匯編語(yǔ)言程序的效率,在編寫(xiě)時(shí)應(yīng)注意哪些問(wèn)題?
(1) 把要解決的問(wèn)題化成一個(gè)個(gè)具有一定獨(dú)立性的功能模塊,各模塊盡量采用子程序完成其功能。
(2) 力求少用無(wú)條件轉(zhuǎn)移指令,盡量采用循環(huán)結(jié)構(gòu)。
(3) 對(duì)主要的程序段要下功夫精心設(shè)計(jì),這樣會(huì)收到事半功倍的效果。
(4) 能用8位數(shù)據(jù)解決問(wèn)題的就不要使用16位數(shù)據(jù)。
(5) 累加器是信息傳遞的樞紐,在調(diào)用子程序時(shí)應(yīng)通過(guò)累加器傳送子程序的參數(shù),通過(guò)累加器向主程序傳送返回參數(shù)。所以,在子程序中一般不把累加器推入堆棧。若需保護(hù)累加器的內(nèi)容時(shí),應(yīng)先把累加器的內(nèi)容存入其他寄存器單元,然后再調(diào)用子程序。
(6)為了保證程序運(yùn)行的安全可靠,應(yīng)考慮使用軟件抗干擾技術(shù),如數(shù)字濾波技術(shù)、指令冗余技術(shù)、軟件陷井技術(shù),用匯編語(yǔ)言程序?qū)崿F(xiàn)這些技術(shù),不需要增加硬件成本,可靠性高,穩(wěn)定性好,方便靈活。
15.試編寫(xiě)8字節(jié)外部數(shù)據(jù)存儲(chǔ)器到內(nèi)部數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)塊傳送程序,外部數(shù)據(jù)存儲(chǔ)器地址范圍為40H~47H,內(nèi)部數(shù)據(jù)存儲(chǔ)器地址范圍為30H~37H。
MOV R3,#8
     MOV R0,#40H
     MOV R1,#30H
LOP1:MOVX A,@R0
      MOV @R1,A
      INC R0
      INC R1     
DJNZ R3,LOP1
16.試編寫(xiě)8字節(jié)外部程序存儲(chǔ)器到內(nèi)部數(shù)據(jù)RAM的傳送程序,外部程序存儲(chǔ)器地址為2040H~2047H,內(nèi)部RAM地址為30H~37H。
參看15題答案(提示:外部程序存儲(chǔ)器地址為16位地址:2040H~2047H,間接尋址采用DPTR)
17.試編程使內(nèi)部RAM的20H~4FH單元的數(shù)據(jù)塊按降序排列。
   參看23題答案(提示:本題對(duì)20H~4FH單元(48個(gè))數(shù)據(jù)降序排列)。
18.內(nèi)部RAM的20H單元開(kāi)始有一個(gè)數(shù)據(jù)塊,以0DH為結(jié)束標(biāo)志,試統(tǒng)計(jì)該數(shù)據(jù)塊長(zhǎng)度,將該數(shù)據(jù)塊傳送到外部數(shù)據(jù)存儲(chǔ)器7E01H開(kāi)始的單元,并將長(zhǎng)度存入7E00H單元。
      MOV  R0, #20H
      MOV  DPTR, #7E01H
LOP:  MOV  A, @R0
      MOV  60H,A
SUBB  A, #0DH
      JZ     LOP1
      MOV  A,60H
      MOVX  @DPTR, A
INC    R3
      INC    R0
      INC    DPTR
      AJMP   LOP
LOP1: MOV   DPTR, #7E00H
      MOV   A,R3
      MOVX  @DPTR, A
      END
19.試編寫(xiě)一個(gè)用查表法查0~9字形7段碼(假設(shè)表的首地址為T(mén)ABLE)的子程序,調(diào)用子程序前,待查表的數(shù)據(jù)存放在累加器A中,子程序返回后,查表的結(jié)果也存放在累加器A中。
SQR1: MOV   DPTR,#TABLE
      MOVC  A, @A+DPTR
      RET
TABLE: DB 0C0H,0F9H,0A4H,0B0H,99H  ; 0~9的字形顯示段碼(LED共陽(yáng)極。
DB 92H,82H,F8H,80H,90H 
20.內(nèi)部RAM的DATA開(kāi)始的區(qū)域中存放著10個(gè)單字節(jié)十進(jìn)制數(shù),求其累加和,并將結(jié)果存入SUM和SUM+1單元。
       MOV  R0,#DATA
       MOV  R3,#0AH
       MOV  A,#0
LOP:  ADD  A,@R0
       MOV  R4,A
       ADDC  A, #0
       MOV  R5,A
       INC    R0
       DJNZ  R3, LOP
       MOV  SUM,R4
       MOV  SUM+1,R5
        END
21.內(nèi)部RAM的DATA1和DATA2單元開(kāi)始存放著兩個(gè)等長(zhǎng)的數(shù)據(jù)塊,數(shù)據(jù)塊的長(zhǎng)度在LEN單元中。請(qǐng)編程檢查這兩個(gè)數(shù)據(jù)塊是否相等,若相等,將0FFH寫(xiě)入RESULT單元,否則將0寫(xiě)入RESULT單元。
         MOV  R0,#DATA1
         MOV  R3, LEN
    LOP:  MOV A, @R0
         CJNZ A,DATA2, LOP1
         INC R0
         INC DATA2
         DJNZ R3,LOP
         MOV A,#0FFH
         MOV RESULT,A
         AJMP LOP2
    LOP1:MOV A,#0
         MOV RESULT, A
    LOP2: AJMP LOP2
         END
22.有一輸入設(shè)備,其端口地址為20H,要求在1秒鐘時(shí)間內(nèi)連續(xù)采樣10次讀取該端口數(shù)據(jù),求其算術(shù)平均值,結(jié)果存放在內(nèi)部RAM區(qū)20H單元。
        MOV R0,#20H
        MOV R2,#0
        MOV A,#0
        MOV R4,#0
LOP : MOV R3,#0AH
    IN :  ACALL  DELAY
     MOVX  A, @R0
     MOV  R2 , A
     MOV A, R4
     ADD A,  R2
     MOV  R4, A
     DJNZ  R3,  IN
     MOV  B,#0AH
     DIV   AB
     MOV 20H,A
     AJMP LOP       

DELAY:  MOV   R5,#64H                延時(shí)時(shí)間為0.1s的子程序:
LOP1:    MOV   R7, #0FFH                                   
LOOP:         NOP                                                         
                  NOP                                                        
                  DJNZ   R7, LOOP
DJNZ   R5,LOP1                                  
                  RET
         END                                                         
23.編寫(xiě)子程序,將內(nèi)部RAM區(qū)以30H為起始地址的連續(xù)10個(gè)存儲(chǔ)單元中的數(shù)據(jù),按照從小到大的順序排序,排序結(jié)果仍存放在原數(shù)據(jù)區(qū)。
采用冒泡法排序:
冒泡排序法的基本算法是:N個(gè)數(shù)排序,從數(shù)據(jù)存放單元的一端(如起始單元)開(kāi)始,將相鄰二個(gè)數(shù)依次進(jìn)行比較,如果相鄰兩個(gè)數(shù)的大小次序和排序要求一致,則不改變它們的存放次序,否則相互交換兩數(shù)位置,使其符合排序要求,這樣逐次比較,直至將最小(降序)或最大(升序)的數(shù)移至最后。然后,再將n-1個(gè)數(shù)繼續(xù)比較,重復(fù)上面操作,直至比較完畢。
可采用雙重循環(huán)實(shí)現(xiàn)冒泡法排序,外循環(huán)控制進(jìn)行比較的次數(shù),內(nèi)循環(huán)實(shí)現(xiàn)依次比較交換數(shù)據(jù)。
程序如下:
ORG                   0000H
BLOCK     EQU   30H                   ;設(shè)BLOCK為30H單元                             
                  MOV         R7,  #9H          ;設(shè)置外循環(huán)計(jì)數(shù)器
NEXT:      MOV  A,   R7
MOV  80H,  A        
                  MOV  R6,   A               ;設(shè)置外循環(huán)計(jì)數(shù)器
                  MOV  R0,  #30H             ;設(shè)置數(shù)據(jù)指針
COMP:      MOV  A,  @R0
              MOV  R2,  A
              INC    R0
              CLR C
              SUBB  A,  @R0
              JC    LESS
              MOV        A,  R2
              XCH         A,  @R0
DEC        R0
              MOV        @R0,  A
              INC         R0
LESS:        DJNZ         R6,COMP           ;(R6)-1不等于0,轉(zhuǎn)COMP繼續(xù)內(nèi)循環(huán)
MOV         R0,#30H   
              DEC         80H
MOV    R6,  80h
              DJNZ        R7,   COMP
              RET
              END
第四章
1.MCS-51系列單片機(jī)能提供幾個(gè)中斷源、幾個(gè)中斷優(yōu)先級(jí)?各個(gè)中斷源的優(yōu)先級(jí)怎樣確定?在同一優(yōu)先級(jí)中,各個(gè)中斷源的優(yōu)先順序怎樣確定?
答:MCS-51系列單片機(jī)能提供5個(gè)中斷源,2個(gè)中斷優(yōu)先級(jí)。各個(gè)中斷源的優(yōu)先級(jí)是由特殊功能寄存器IP來(lái)確定,IP中和各個(gè)中斷源對(duì)應(yīng)位為1時(shí),此中斷源為高優(yōu)先級(jí),否則為低優(yōu)先級(jí)。在同一優(yōu)先級(jí)中,各個(gè)中斷源的優(yōu)先順序是由自然優(yōu)先級(jí)來(lái)確定的。
2.簡(jiǎn)述MCS-51系列單片機(jī)的中斷響應(yīng)過(guò)程。
答:MCS-51系列單片機(jī)的中斷響應(yīng)過(guò)程是按照以下順序執(zhí)行的:開(kāi)中斷-----中斷請(qǐng)求------中斷判斷-------中斷響應(yīng)-------中斷返回。
3.MCS-51系列單片機(jī)的外部中斷有哪兩種觸發(fā)方式?如何設(shè)置?對(duì)外部中斷源的中斷請(qǐng)求信號(hào)有何要求?
答:MCS-51系列單片機(jī)的外部中斷有電平觸發(fā)和邊沿觸發(fā)兩種方式。是由特殊功能寄存器TCON中IT0,IT1的狀態(tài)確定的,如:IT0為1時(shí)外部中斷0為邊沿觸發(fā)方式,當(dāng)INT0外部引腳出現(xiàn)下降沿時(shí)向CPU提出中斷請(qǐng)求, 否則為電平觸發(fā)方式,當(dāng)INT0外部引腳出現(xiàn)低電平時(shí)向CPU提出中斷請(qǐng)求。
4.MCS-51單片機(jī)中斷響應(yīng)時(shí)間是否固定?為什么?
答:MCS-51單片機(jī)中斷響應(yīng)時(shí)間不固定,因?yàn)楫?dāng)中斷源向CPU提出中斷請(qǐng)求時(shí),CPU正在執(zhí)行的指令的指令周期是不一樣的。
5.MCS-51單片機(jī)如果擴(kuò)展6個(gè)中斷源,可采用哪些方法?如何確定它們的優(yōu)先級(jí)?
答:一般可采取中斷加查詢(xún)方式,軟件先查詢(xún)到的為高優(yōu)先級(jí),最后查詢(xún)到的為低優(yōu)先級(jí)。
6.當(dāng)正在執(zhí)行某一中斷源的中斷服務(wù)程序時(shí),如果有新的中斷請(qǐng)求出現(xiàn),問(wèn)在什么情況下可響應(yīng)新的中斷請(qǐng)求?在什么情況下不能響應(yīng)新的中斷請(qǐng)求?
答:當(dāng)正在執(zhí)行某一中斷源的中斷服務(wù)程序時(shí),如果有新的中斷請(qǐng)求出現(xiàn),當(dāng)新中斷源中斷級(jí)別比正在執(zhí)行中斷源的中斷級(jí)別高時(shí)可響應(yīng)新的中斷請(qǐng)求,否則不能響應(yīng)新的中斷請(qǐng)求。
7.8051單片機(jī)有5個(gè)中斷源,但只能設(shè)置兩個(gè)中斷優(yōu)先級(jí),因此,在中斷優(yōu)先級(jí)安排上受到一定的限制。問(wèn)以下幾種中斷優(yōu)先級(jí)順序的安排(級(jí)別由高到低)是否可能?如可能,則應(yīng)如何設(shè)置中斷源的中斷級(jí)別?否則,請(qǐng)敘述不可能的理由。
(1)定時(shí)器0,定時(shí)器1,外中斷0,外中斷1,串行口中斷。
可能。其中:定時(shí)器0,定時(shí)器1為高優(yōu)先級(jí)。
(2)串行口中斷,外中斷0,定時(shí)器0,外中斷1,定時(shí)器1。
可能。其中:串行口中斷為高優(yōu)先級(jí)。
(3)外中斷0,定時(shí)器1,外中斷1,定時(shí)器0,串行口中斷。
不可能。
(4)外中斷0,外中斷1,串行口中斷,定時(shí)器0,定時(shí)器1。
可能。其中:外中斷0,外中斷1,串行口中斷為高優(yōu)先級(jí)。
(5)串行口中斷,定時(shí)器0,外中斷0,外中斷1,定時(shí)器1。
不可能。
(6)外中斷0,外中斷1,定時(shí)器0,串行口中斷,定時(shí)器1。
不可能。
(7)外中斷0,定時(shí)器1,定時(shí)器0,外中斷1,串行口中斷。

可能。其中:外中斷0,定時(shí)器1為高優(yōu)先級(jí)。
第5章習(xí)題答案
1.8051定時(shí)器/計(jì)數(shù)器有哪幾種工作模式?各有什么特點(diǎn)?
答:8051定時(shí)器/計(jì)數(shù)器有0,1,2,3四種工作模式。模式0為13位1定時(shí)器/計(jì)數(shù)器,模式1為16位1定時(shí)器/計(jì)數(shù)器,模式2為自動(dòng)賦初值的8位定時(shí)器/計(jì)數(shù)器,模式3可以增加一個(gè)8位定時(shí)器(T1沒(méi)有模式3)。
2.8051定時(shí)器作定時(shí)和計(jì)數(shù)時(shí),其計(jì)數(shù)脈沖分別由誰(shuí)提供?
答:8051定時(shí)器作定時(shí)器時(shí),輸入的記數(shù)脈沖是由晶體振蕩器的輸出經(jīng)12分頻后得到的,所以定時(shí)器可看作是對(duì)單片機(jī)機(jī)器周期的計(jì)數(shù)器。8051定時(shí)器作計(jì)數(shù)器時(shí),則對(duì)外部事件進(jìn)行計(jì)數(shù)。
3.8051定時(shí)器的門(mén)控信號(hào)GATE為1時(shí),定時(shí)器如何啟動(dòng)?
答:8051定時(shí)器的門(mén)控信號(hào)GATE為1時(shí),只有 (或 )引腳為高電平且TR0(或TR1)置1時(shí),相應(yīng)的T0或T1才能選通工作。
4.定時(shí)器/計(jì)數(shù)器0已預(yù)置為156,且選定用于模式2的計(jì)數(shù)方式,現(xiàn)在T0引腳上輸入周期為1ms的脈沖,問(wèn):
(1) 此時(shí)定時(shí)器/計(jì)數(shù)器0的實(shí)際用途是什么?
(2) 在什么情況下,定時(shí)器/計(jì)數(shù)器0溢出?
答:(1)此時(shí)定時(shí)器/計(jì)數(shù)器0的實(shí)際用途是0。1S脈沖信號(hào)發(fā)生器。
   (2)當(dāng)T0每記數(shù)100次后定時(shí)器/計(jì)數(shù)器0溢出。
5.設(shè)fosc=12MHz,定時(shí)器0的初始化程序和中斷服務(wù)程序如下:
MAIN:      MOV        TH0, #9DH
MOV        TL0, #0D0H
MOV        TMOD, #01H
SETB        TR0
                           …
中斷服務(wù)程序:
MOV        TH0, #9DH
MOV        TL0, #0D0H

RETI
問(wèn):(1) 該定時(shí)器工作于什么方式?
    (2) 相應(yīng)的定時(shí)時(shí)間或計(jì)數(shù)值是多少?
答:(1)該定時(shí)器以模式1工作于定時(shí)方式。
   (2)相應(yīng)的定時(shí)時(shí)間為25。136ms.
6.8051單片機(jī)的fosc=6MHz,如果要求定時(shí)時(shí)間分別位0.1ms和5ms,當(dāng)T0工作在模式0、模式1和模式2時(shí),分別求出定時(shí)器的初值。
答:(1)定時(shí)時(shí)間分別位0.1ms時(shí):模式0初值為8142、模式1初值為65486,模式2初值206。
   (2)定時(shí)時(shí)間分別位5ms時(shí):模式0初值為5692、模式1初值為63036,模式2此時(shí)定時(shí)時(shí)間不夠。
7.以定時(shí)器1進(jìn)行外部事件計(jì)數(shù),每計(jì)數(shù)1000個(gè)脈沖后,定時(shí)器1轉(zhuǎn)為定時(shí)工作方式。定時(shí)10ms后,又轉(zhuǎn)為計(jì)數(shù)方式,如此循環(huán)不止。設(shè)fosc=6MHz,試用模式1編程。
解:先確定T1作為計(jì)數(shù)器時(shí)初值為:64536(0FC68H)
          T1作為定時(shí)器時(shí)初值為:60536(0EC78H)
    程序:SETB  TR1
  LOOP: MOV  TMOD,#50H
          MOV  TH1,#0FCH
          MOV  TL1,#68H
  AA :  JBC   TF1,AA
          MOV  TMOD,#10H
          MOV  TH1,#0E0H
          MOV  TL1,#78H
  BB:   JBC   TF1,BB
          SJMP  LOOP
          END        
8.已知8051單片機(jī)的fosc=6MHz,試?yán)肨0和P1.0輸出矩形波。矩形波高電平寬100μs,低電平寬300μs。
解:先確定 T0作為定時(shí)器工作于模式2時(shí)初值為:高電平為50,低電平為150。
采用中斷方式編程。
      ORG   0000H
      AJMP  MAIN
      ORG   001BH
      AJMP  TIM0
          ORG   0030H
 MAIN:  MOV  SP,#30H           ; 設(shè)置棧底
          MOV  TMOD,#02H
          MOV  TL0,#50
          MOV  IE,#82H
          SETB   P1.0
          SETB   TR0
          SJMP   $
       
          ORG   0100H
 TIM0:    JNB  P1.0, AA
          CLR  P1.0
          MOV  TL0,#150
          RETI
 AA:      SETB  P1.0
          MOV  TL0,#50
          RETI
          END
9.設(shè)fosc=12MHz,試編寫(xiě)一段程序,功能為:對(duì)定時(shí)器T0初始化,使之工作在模式2,產(chǎn)生200μs定時(shí),并用查詢(xún)T0溢出標(biāo)志的方法,控制P1.1輸出周期為2ms的方波。
解:先確定 T0作為定時(shí)器時(shí)初值為:56
   程序:  MOV  TMOD,#02H
           MOV  TL0,#56
           MOV  TH0,#56
           MOV  R7,#5        ; 設(shè)置循環(huán)次數(shù)
           SETB  TR0
AA:    JBC  TF0,AA
            DJNZ  R7,AA
            CPL  P1.1
            MOV  R7,#5
            SJMP  AA
            END
10.已知8051單片機(jī)系統(tǒng)時(shí)鐘頻率為6MHz,利用其定時(shí)器測(cè)量某正脈沖寬度時(shí),采用哪種工作模式可以獲得最大的量程?能夠測(cè)量的最大脈寬是多少?
答:首先設(shè)置TMOD中GATE為1,以定時(shí)方式工作在模式1,外部正脈沖從外部中斷引腳引入,可獲得最大的量程。
    能夠測(cè)量的最大脈寬為:131ms.
第6章習(xí)題答案
1.異步通信和同步通信的主要區(qū)別是什么?MCS-51串行口有沒(méi)有同步通信功能?
答案:
異步通信因?yàn)槊繋瑪?shù)據(jù)都有起始位和停止位,所以傳送數(shù)據(jù)的速率受到限制。但異步通信不需要傳送同步脈沖,字符幀的長(zhǎng)度不受限制,對(duì)硬件要求較低,因而在數(shù)據(jù)傳送量不很大。同步通信一次可以連續(xù)傳送幾個(gè)數(shù)據(jù),每個(gè)數(shù)據(jù)不需起始位和停止位,數(shù)據(jù)之間不留間隙,因而數(shù)據(jù)傳輸速率高于異步通信。但同步通信要求用準(zhǔn)確的時(shí)鐘來(lái)實(shí)現(xiàn)發(fā)送端與接收端之間的嚴(yán)格同步。
MCS-51串行口有同步通信功能。
2.解釋下列概念:
(1) 并行通信、串行通信。
(2) 波特率。
(3) 單工、半雙工、全雙工。
(4) 奇偶校驗(yàn)。
答案:
(1)并行通信:數(shù)據(jù)的各位同時(shí)進(jìn)行傳送。其特點(diǎn)是傳送速度快、效率高,數(shù)據(jù)有多少位,就需要有多少根傳輸線。當(dāng)數(shù)據(jù)位數(shù)較多和傳送距離較遠(yuǎn)時(shí),就會(huì)導(dǎo)致通信線路成本提高, 因此它適合于短距離傳輸。
串行通信:數(shù)據(jù)一位一位地按順序進(jìn)行傳送。其特點(diǎn)是只需一對(duì)傳輸線就可實(shí)現(xiàn)通信,當(dāng)傳輸?shù)臄?shù)據(jù)較多、距離較遠(yuǎn)時(shí),它可以顯著減少傳輸線,降低通信成本,但是串行傳送的速度慢。
(2)波特率:每秒鐘傳送的二進(jìn)制數(shù)碼的位數(shù)稱(chēng)為波特率(也稱(chēng)比特?cái)?shù)),單位是bps(bit per second),即位/秒。
(3)單工:只允許數(shù)據(jù)向一個(gè)方向傳送,即一方只能發(fā)送,另一方只能接收。
半雙工:允許數(shù)據(jù)雙向傳送,但由于只有一根傳輸線,在同一時(shí)刻只能一方發(fā)送,另一方接收。
全雙工:允許數(shù)據(jù)同時(shí)雙向傳送,由于有兩根傳輸線,在A站將數(shù)據(jù)發(fā)送到B站的同時(shí),也允許B站將數(shù)據(jù)發(fā)送到A站。
(4)奇偶校驗(yàn):為保證通信質(zhì)量,需要對(duì)傳送的數(shù)據(jù)進(jìn)行校驗(yàn)。對(duì)于異步通信,常用的校驗(yàn)方法是奇偶校驗(yàn)法。
采用奇偶校驗(yàn)法,發(fā)送時(shí)在每個(gè)字符(或字節(jié))之后附加一位校驗(yàn)位,這個(gè)校驗(yàn)位可以是“0”或“1”,以便使校驗(yàn)位和所發(fā)送的字符(或字節(jié))中“1”的個(gè)數(shù)為奇數(shù)——稱(chēng)為奇校驗(yàn),或?yàn)榕紨?shù)——稱(chēng)為偶校驗(yàn)。接收時(shí),檢查所接收的字符(或字節(jié))連同奇偶校驗(yàn)位中“1”的個(gè)數(shù)是否符合規(guī)定。若不符合,就證明傳送數(shù)據(jù)受到干擾發(fā)生了變化,CPU可進(jìn)行相應(yīng)處理。
3.MCS-51串行口控制寄存器SCON中SM2、TB8、RB8有何作用?主要在哪幾種方式下使用?
答案:
SM2:多機(jī)通信控制位,主要在方式1、2、3下使用;
TB8:存放發(fā)送數(shù)據(jù)的第9位,主要在方式2、3下使用;
RB8:存放接收數(shù)據(jù)的第9位或停止位,主要在方式1、2、3下使用。
4.試分析比較MCS-51串行口在四種工作方式下發(fā)送和接收數(shù)據(jù)的基本條件和波特率的產(chǎn)生方法。
答案:
發(fā)送數(shù)據(jù)的基本條件:
方式0、1、2、3:CPU執(zhí)行一條將數(shù)據(jù)寫(xiě)入發(fā)送緩沖器SBUF的指令;
接收數(shù)據(jù)的基本條件:
方式0:用軟件使REN=1(同時(shí)RI=0);方式1:用軟件使REN=1,一幀數(shù)據(jù)接收完畢后,必須同時(shí)滿(mǎn)足以下兩個(gè)條件:①RI=0;②SM2=0或接收到的停止位為1,這次接收才真正有效,將8位數(shù)據(jù)送入SBUF,停止位送RB8,置位RI。否則,這次接收到的數(shù)據(jù)將因不能裝入SBUF而丟失。方式2、3:軟件使REN=1,同時(shí)滿(mǎn)足以下兩個(gè)條件:① RI=0;② SM2=0或接收到的第9位數(shù)據(jù)為1(SM2=1),則這次接收有效,8位數(shù)據(jù)裝入SBUF,第9位數(shù)據(jù)裝入RB8,并由硬件置位RI。否則,接收的這一幀數(shù)據(jù)將丟失。
波特率的產(chǎn)生方法:
在方式0下,串行口的波特率是固定的,即波特率=fosc /12;在方式1、3下,串行口波特率由定時(shí)器T1的溢出率和SMOD值同時(shí)決定。相應(yīng)公式為:波特率=2SMOD×T1溢出率/32;在方式2下,串行口的波特率可由PCON中的SMOD位控制:若使SMOD=0,則所選波特率為fosc/64;若使SMOD=1,則波特率為fosc/32。即
2SMOD
64
×fosc
波特率=
5.為何T1用作串行口波特率發(fā)生器時(shí)常用模式2?若fosc=6MHz,試求出T1在模式2下可能產(chǎn)生的波特率的變化范圍。
答案:定時(shí)器T1作為波特率發(fā)生器可工作于模式0、模式1和模式2。其中模式2在T1溢出后可自動(dòng)裝入時(shí)間常數(shù),避免了重裝參數(shù),因而在實(shí)際應(yīng)用中除非波特率很低,一般都采用模式2。
若fosc=6MHz,T1在模式2下可能產(chǎn)生的波特率的變化范圍為:61.04 bps ~ 15625 bps。
6.簡(jiǎn)述多機(jī)通信原理。
答案:當(dāng)主機(jī)選中與其通信的從機(jī)后,只有該從機(jī)能夠與主機(jī)通信,其他從機(jī)不能與主機(jī)進(jìn)行數(shù)據(jù)交換, 而只能準(zhǔn)備接收主機(jī)發(fā)來(lái)的地址幀。上述要求是通過(guò)SCON寄存器中的SM2和TB8來(lái)實(shí)現(xiàn)的。當(dāng)主機(jī)發(fā)送地址幀時(shí)使TB8=1,發(fā)送數(shù)據(jù)幀時(shí)使TB8=0,TB8是發(fā)送的一幀數(shù)據(jù)的第9位,從機(jī)接收后將第9位數(shù)據(jù)作為RB8,這樣就知道主機(jī)發(fā)來(lái)的這一幀數(shù)據(jù)是地址還是數(shù)據(jù)。另外,當(dāng)一臺(tái)從機(jī)的SM2=0時(shí),可以接收地址幀或數(shù)據(jù)幀,而當(dāng)SM2=1時(shí)只能接收地址幀,這就能實(shí)現(xiàn)主機(jī)與所選從機(jī)之間的單獨(dú)通信。
7.試用8051串行口擴(kuò)展I/O口,控制16個(gè)發(fā)光二極管自右向左以一定速度輪流發(fā)光,畫(huà)出電路并編寫(xiě)程序。
答案:電路如下:
程序如下:
ORG 0000H
              AJMP    MAIN
ORG          0023H
AJMP        SBS                                      ; 轉(zhuǎn)向串行口中斷服務(wù)程序
ORG          2000H
MAIN:   MOV       SCON, #00H                        ; 串行口設(shè)置為方式0
MOV        A, #01H                                ; 最右邊一位發(fā)光二極管先亮
CLR           P1.0                                      ; 關(guān)閉并行輸出,熄滅顯示
CLR           P1.1 
MOV        SBUF,A                               ; 開(kāi)始串行輸出
LOOP:       SJMP         LOOP                                   ; 等待中斷
SBS:          INC      R0
CJNE     R0, #11H, DSP
MOV     R0, #01H
DSP :   CJNE     R0, #08H, DSPR
SETB P1.1                                           ; 啟動(dòng)高8位并行輸出
DSPR: SETB P1.0                                           ; 啟動(dòng)低8位并行輸出
ACALL     DELY                                   ; 顯示延遲1s
CLR           TI                                          ; 清發(fā)送中斷標(biāo)志
RL             A                                          ; 準(zhǔn)備點(diǎn)亮下一位
CLR           P1.0                                      ; 關(guān)閉并行輸出,熄滅顯示
CLR           P1.1 
MOV        SBUF, A                              ; 串行輸出
ZDFH:   RETI
DELY:       MOV        R2, #05H                              ; 延時(shí)1s子程序(fosc=6MHz)
DELY0:     MOV        R3, #0C8H
DELY1:     MOV        R4, #0F8H
NOP
DELY2:     DJNZ         R4, DELY2
DJNZ        R3, DELY1
DJNZ        R2, DELY0
RET
END
8.試設(shè)計(jì)一個(gè)8051單片機(jī)的雙機(jī)通信系統(tǒng),串行口工作在方式1,波特率為2400bps,編程將甲機(jī)片內(nèi)RAM中40H~4FH的數(shù)據(jù)塊通過(guò)串行口傳送到乙機(jī)片內(nèi)RAM的40H~4FH單元中。
答案:
雙方約定的通信協(xié)議如下:
甲機(jī)先發(fā)送請(qǐng)求乙機(jī)接收信號(hào)“0AAH”,乙機(jī)收到該信號(hào)后,若為準(zhǔn)備好狀態(tài),一個(gè)則發(fā)送數(shù)據(jù)“0BBH”作為應(yīng)答信號(hào),表示同意接收。當(dāng)甲機(jī)發(fā)送完16個(gè)字節(jié)后,再向乙機(jī)發(fā)送一個(gè)累加校驗(yàn)和。校驗(yàn)和是針對(duì)數(shù)據(jù)塊進(jìn)行的,即在數(shù)據(jù)發(fā)送時(shí),發(fā)送方對(duì)塊中的數(shù)據(jù)簡(jiǎn)單求和,產(chǎn)生一個(gè)單字節(jié)校驗(yàn)字符(校驗(yàn)和),附加到數(shù)據(jù)塊結(jié)尾。在數(shù)據(jù)接收時(shí),接收方每接收一個(gè)數(shù)據(jù)也計(jì)算一次校驗(yàn)和;接收完數(shù)據(jù)塊后,再接收甲機(jī)發(fā)送的校驗(yàn)和,并將接收到的校驗(yàn)和與乙機(jī)求出的校驗(yàn)和進(jìn)行比較,向甲機(jī)發(fā)送一個(gè)狀態(tài)字,表示正確(00H)或出錯(cuò)(0FFH),出錯(cuò)則要求甲機(jī)重發(fā)。甲機(jī)收到收到乙機(jī)發(fā)送的接收正確應(yīng)答信號(hào)(00H)后,即結(jié)束發(fā)送,否則,就重發(fā)一次數(shù)據(jù)。
甲機(jī)采用查詢(xún)方式進(jìn)行數(shù)據(jù)發(fā)送,乙機(jī)采用中斷方式進(jìn)行數(shù)據(jù)接收。雙方約定傳輸波特率為2400bps,兩機(jī)主頻均為11.059MHz,雙機(jī)串行口都工作于方式1,查表6-2可知SMOD=0,定時(shí)器T1采用工作模式2,初值為F4H。
甲機(jī)發(fā)送子程序:
ORG          2000H
SEND:       MOV        TMOD, #20H                       ; 定時(shí)器1設(shè)為模式2
MOV        TL1, #0F4H
MOV        TH1, #0F4H                         ; 置定時(shí)器初值
SETB        TR1                                      ; 啟動(dòng)T1
MOV        SCON, #50H                        ; 設(shè)串行口為方式2
MOV        PCON, #00H                        ; SMOD=0
TLLS:    MOV        SBUF, #0AAH                     ; 發(fā)送請(qǐng)求接收信號(hào)
WFS1:    JBC          TI, RYD1               ; 等待發(fā)送
SJMP     WFS1
RYD1:    JBC          RI, RYD2               ; 等待乙機(jī)回答
SJMP     RYD1
RYD2:    MOV    A, SBUF                ; 接收應(yīng)答信號(hào)
XRL     A, #0BBH
JNZ      TLLS                   ; 乙機(jī)未準(zhǔn)備好,繼續(xù)聯(lián)絡(luò)
SDD1:    MOV       R0, #40H                              ; 首地址40H→R0
MOV        R1, #10H                              ; 數(shù)據(jù)個(gè)數(shù)→R1
MOV        R2, #00H                              ; 清校驗(yàn)和寄存器
SDD2:    MOV        SBUF, @R0                         ; 發(fā)送一個(gè)數(shù)據(jù)
MOV        A, R2
ADD         A, @R0                                ; 求校驗(yàn)和
MOV        R2, A                                    ; 保存校驗(yàn)和
INC          R0
WFS2:    JBC          TI, SDD3                ; 等待發(fā)送
SJMP     WFS2
SDD3:    DJNZ        R1, SDD2                             ; 數(shù)據(jù)塊是否發(fā)送完
MOV        SBUF, R2                             ; 發(fā)送校驗(yàn)和
WFS3:       JBC           TI, RYD3
SJMP     WFS3
RYD3:       JBC           RI, RYD4               ; 等待乙機(jī)回答
SJMP        RYD3
RYD4:    MOV        A, SBUF
JNZ          SDD1                  ; 回答出錯(cuò)則重發(fā)
RET
乙機(jī)接收子程序:
ORG          2000H
RECV:       MOV        TMOD, #20H                       ; 定時(shí)器1設(shè)為模式2
MOV        TL1, #0F4H
MOV        TH1, #0F4H                         ; 置定時(shí)器初值
SETB        TR1                                      ; 啟動(dòng)T1
MOV        SCON, #50H                        ; 設(shè)串行口為方式2
MOV        PCON, #00H                        ; SMOD=0
MOV        R0, #40H                          ; 首地址40H→R0
MOV        R1, #10H                              ; 數(shù)據(jù)個(gè)數(shù)→R1
MOV        50H, #00H                            ; 清校驗(yàn)和寄存器
SETB        7FH
SETB        7EH                                      ; 標(biāo)志位初始置1
SETB        ES                     ; 允許接收中斷
SETB        EA                                        ; 開(kāi)中斷
LOOP:       SJMP         LOOP                                   ; 等待中斷
中斷服務(wù)子程序:
CLR         EA
CLR         RI                      ; 清中斷
JB           7FH, RCMD                         ; 是請(qǐng)求接收信號(hào)嗎
JB           7EH, DATA                         ; 是數(shù)據(jù)塊嗎
MOV        A, SBUF                              ; 接收校驗(yàn)和
CJNE        A, 50H, ERR                        ; 判斷發(fā)送是否正確
MOV        A, #00H
MOV        SBUF, A                              ; 正確,發(fā)00H
WFS1:    JNB          TI, WFS1                ; 等待發(fā)送
CLR         TI
SJMP        RETN
ERR:     MOV         A, #0FFH
MOV        SBUF, A                              ; 出錯(cuò),發(fā)0FFH
WFS2:    JNB          TI, WFS2                ; 等待發(fā)送
CLR         TI
SJMP        AGAN
RCMD:   MOV        A, SBUF                ; 接收甲機(jī)請(qǐng)求信號(hào)
XRL          A, #0AAH
JZ            TYDX
SJMP        RETN
TYDX:   MOV                  SBUF, #0BBH           ; 發(fā)送應(yīng)答信號(hào)0BBH
WFS3:    JNB          TI, WFS3                ; 等待發(fā)送
CLR         TI
CLR         7FH
SJMP        RETN
DATA:   MOV                  A, SBUF                ; 接收數(shù)據(jù)
MOV        R0, A
INC          DPTR
ADD         A, 50H                                  ; 求校驗(yàn)和
MOV        50H, A&

編輯:admin  最后修改時(shí)間:2023-03-03

聯(lián)系方式

0755-82591179

傳真:0755-82591176

郵箱:vicky@yingtexin.net

地址:深圳市龍華區(qū)民治街道民治大道973萬(wàn)眾潤(rùn)豐創(chuàng)業(yè)園A棟2樓A08

Copyright © 2014-2023 穎特新科技有限公司 All Rights Reserved.  粵ICP備14043402號(hào)-4

承德县| 湘乡市| 扶余县| 延津县| 永顺县| 焦作市| 德州市| 奉节县| 鹿邑县| 逊克县| 宁武县| 托克逊县| 黄梅县| 乡宁县| 息烽县| 宝山区| 麻栗坡县| 遂昌县| 定安县| 吉木乃县| 阜阳市| 吉首市| 鹤山市| 衡山县| 得荣县| 重庆市| 澄城县| 威宁| 南木林县| 隆林| 普安县| 诏安县| 普陀区| 宿松县| 唐海县| 台东市| 湛江市| 新竹市| 湘潭县| 喀喇| 仙游县|