版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
單片機(jī)原理及應(yīng)用
張?zhí)m紅
9第1章微型計算機(jī)的基本概念
1.1微型計算機(jī)由哪幾部分組成?每一部分各起何作用?
解:微型計算機(jī)由微處理器芯片、存儲器芯片、輸入/輸出接口電路芯片與總線組成。
微處理器是微型計算機(jī)的核心,它通常包括3個基本部分:①算術(shù)邏輯部件
ALU(Arithmetic
LogicUnit),對傳送到微處理器的數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算或邏輯運(yùn)算的電路,如執(zhí)行加法、減
法運(yùn)算,
邏輯與、邏輯或運(yùn)算等。②工作寄存器組,用來存放操作數(shù)及運(yùn)算的中間結(jié)果等。③控制
部件,
包括時鐘電路和控制電路,時鐘電路產(chǎn)生時鐘脈沖,用于計算機(jī)各部分電路的同步定時;控
制電路
產(chǎn)生完成各種操作所需的控制信號。
存儲器是微型計算機(jī)的重要組成部分,計算機(jī)有了存儲器才具備記憶功能。
I/O接口是溝通CPU與外部設(shè)備的不可缺少的重要部件。外部設(shè)備種類繁多,其運(yùn)行速度、
數(shù)據(jù)形式、電平等各不相同,常常與CPU不一致,所以要用I/O接口作橋梁,起到信息
轉(zhuǎn)換與協(xié)
調(diào)的作用。
總線是在微型計算機(jī)各芯片之間或芯片內(nèi)部各部件之間傳輸信息的一組公共通信線。
1.2什么是CPU?什么是主機(jī)?
解:由于運(yùn)算器、控制器是計算機(jī)處理信息的關(guān)鍵部件,所以常將它們合稱為中央處理單元
CPU
(CentralProcessingUnit,簡稱CPU)。
通常把運(yùn)算器、控制器、存儲器這三部分稱為計算機(jī)的主機(jī)。
1.3何謂計算機(jī)系統(tǒng)?何謂單板機(jī)?何謂單片機(jī)?
解:計算機(jī)與外圍設(shè)備、電源、系統(tǒng)軟件一起構(gòu)成應(yīng)用系統(tǒng),稱為計算機(jī)系統(tǒng)。
在一塊印刷電路板上,集成了中央處理單元CPU、只讀存儲器ROM、隨機(jī)存取存儲器RAM、
I/O接口、定時器/計數(shù)器、中斷系統(tǒng)等功能部件,構(gòu)成一臺完整的微型計算機(jī),稱為單板
機(jī)。
在一塊半導(dǎo)體芯片上,集成了中央處理單元CPU、只讀存儲器ROM、隨機(jī)存取存儲器RAM、
I/O接口、定時器/計數(shù)器、中斷系統(tǒng)等功能部件,構(gòu)成?臺完整的微型計算機(jī),稱為單片
機(jī)。
1.4為什么要采用總線結(jié)構(gòu)?芯片為什么要通過緩沖器才能掛在總線上?
解:微型計算機(jī)采用總線結(jié)構(gòu)后,芯片之間不需單獨(dú)走線,大大減少了連接線的數(shù)量。
掛在總線上的芯片不能同時發(fā)送信息,否則多個信息同時出現(xiàn)在總線上將發(fā)生沖突而造成
出錯。
如果有幾塊芯片需要輸出信息,就必須分時傳送,為了實(shí)現(xiàn)這個要求,掛在總線上的各芯片
必須通
過緩沖器與總線相連。
1.5何謂程序計數(shù)器?程序計數(shù)器中存放的是什么內(nèi)容?它對計算機(jī)的工作起什么作用?
在什么情
況下,程序的執(zhí)行順序發(fā)生轉(zhuǎn)移?此時程序計數(shù)器的內(nèi)容是怎么樣的?
解:程序計數(shù)器PC是管理程序執(zhí)行次序的特殊功能寄存器。
程序計數(shù)器PC中存放的是下一條要執(zhí)行的指令的地址。它管理程序執(zhí)行的次序。
在執(zhí)行轉(zhuǎn)移指令的情況下,程序的執(zhí)行順序發(fā)生轉(zhuǎn)移。此時程序計數(shù)器直接接受內(nèi)部總線送
來
的數(shù)據(jù),并用該數(shù)據(jù)取代原有的內(nèi)容。
1.6評價存儲器有哪些重要的指標(biāo)?為什么說存儲器性能已成為計算機(jī)性能提高的關(guān)鍵?
10
解:存儲器的重要指標(biāo)是容量和存取速度。
容量越大,則記憶的信息越多,計算機(jī)的功能就越強(qiáng)。存儲器的存取速度比CPU的運(yùn)算速
度要
低,所以存儲器的工作速度是影響計算機(jī)工作速度的主要因素。
1.7綜述存儲器的種類、特點(diǎn)、用途和優(yōu)缺點(diǎn)?(主要針對內(nèi)存)
解:按結(jié)構(gòu)與使用功能分,內(nèi)存儲器可分為隨機(jī)存取存儲器RAM和只讀存儲器ROM兩類。
隨機(jī)存取存儲器RAM又稱讀寫存儲器,它的數(shù)據(jù)讀取、存入時間都很短,因此,計算機(jī)運(yùn)
行時,
既可以從RAM中讀數(shù)據(jù),又可以將數(shù)據(jù)寫入RAMo但掉電后RAM中存放的信息將丟失。
RAM適宜存放原始數(shù)據(jù)、中間結(jié)果及最后的運(yùn)算結(jié)果,因此又被稱作數(shù)據(jù)存儲器。
只讀存儲器ROM讀出一個數(shù)據(jù)的時間為數(shù)百納秒,有時也可改寫,但寫入一個數(shù)據(jù)的時間
長達(dá)
數(shù)十ms,因此在計算機(jī)運(yùn)行時只能執(zhí)行讀操作。掉電后ROM中存放的數(shù)據(jù)不會丟失。
ROM適宜存放程序、常數(shù)、表格等,因此又稱為程序存儲器。
只讀存儲器又可以分為下列四類:
①掩膜ROM:在半導(dǎo)體工廠生產(chǎn)時,已經(jīng)用掩膜技術(shù)將程序做入芯片,用戶只能讀出其內(nèi)
容而
不能改寫。掩膜ROM只能應(yīng)用于有固定程序且批量很大的產(chǎn)品中。
②可編程只讀存儲器PROM:用戶可將程序?qū)懭隤ROM,僅程序一經(jīng)寫入就不能改寫。
③可擦除可編程只讀存儲器EPROM:用戶可將程序?qū)懭隕PROM芯片。如果要改寫程序,先
用紫外燈照射芯片,擦去原先的程序,然后寫入新程序。與PROM芯片一樣,寫入的速度很
慢,且
要用到高壓,所以必須用特定的EPROM編程器寫入信息。在計算機(jī)運(yùn)行時只能執(zhí)行讀操作。
④電擦除可編程只讀存儲器EEPROM:這是近年發(fā)展起來的一種只讀存儲器。由于采用電擦
除方式,而且擦除、寫入、讀出的電源都用十5V,故能在應(yīng)用系統(tǒng)中在線改寫。但目前寫
入時間較
長,約需10ms左右,讀出時間約為幾百ns,
1.8何謂堆棧?為什么要設(shè)置堆棧?棧區(qū)是怎樣確定的?數(shù)據(jù)進(jìn)棧、出棧按照何種規(guī)律?進(jìn)
棧用什
么指令?出棧用什么指令?進(jìn)棧、出棧時棧指針如何變化?通常棧底所指是什么內(nèi)容?
解:微型計算機(jī)中的堆棧是讀寫存儲器RAM中的一個特殊的區(qū)域,是一組按照“先進(jìn)后出”
的方式工
作的、用于暫存信息的存儲單元。
設(shè)置堆棧的目的是便于保護(hù)斷點(diǎn)地址與現(xiàn)場信息。
用堆棧指針指示堆棧所在的位置。
數(shù)據(jù)進(jìn)棧、出?!鞍聪冗M(jìn)后出”的原則工作。
進(jìn)棧用PUSH指令,出棧用POP指令。進(jìn)棧時指針向地址增加的方向變化,出棧時指針向
地址
減小的方向變化。
棧底是最先進(jìn)棧的信息所在的單元。
1.9請解釋下列名詞:
(1)字長,字,字節(jié),BCD碼,ASCII碼。
(2)指令,指令地址,指令系統(tǒng),程序。
解:(1)一臺計算機(jī)一次所能處理的二進(jìn)制代碼的位數(shù)稱為該計算機(jī)的字長。
16位二進(jìn)制數(shù)稱為一個字。
8位二進(jìn)制數(shù)稱為一個字節(jié)。
二進(jìn)制編碼的十進(jìn)制數(shù),簡稱二
十進(jìn)制數(shù),又稱BCD碼(BinaryCodedDecimal)?
11
ASCII碼是美國標(biāo)準(zhǔn)信息交換代碼(AmericanStandardCodeforInformationInterchange)
的縮寫。
(2)指令:控制計算機(jī)進(jìn)行各種操作的命令稱為指令。
指令地址:指令所在存儲單元的地址。
指令系統(tǒng):一臺計算機(jī)所具有的所有指令的結(jié)合,稱為該計算機(jī)的指令系統(tǒng)。
程序:一系列指令的有序集合稱為程序。
1.10計算機(jī)中常用的計數(shù)制有哪些?
解:二進(jìn)制、十進(jìn)制(BCD)、十六進(jìn)制。
1.11什么是機(jī)器碼?什么是真值?
解:把符號數(shù)值化的數(shù)稱為機(jī)器數(shù)或機(jī)器碼,原來的數(shù)值叫做機(jī)器數(shù)的真值。
1.12完成下列數(shù)制的轉(zhuǎn)換。
(l)10100110B=()D=()H
(2)0.11B=()D
(3)253.25=()B=()H
(4)1011011.101B=()H=()BCD
解:
(1)166,A6
(2)0.75
(3)11111101.01,FD.4
(4)5B.A,10010001.011000100101
1.138位和16位二進(jìn)制數(shù)的原碼、補(bǔ)碼和反碼可表示的數(shù)的范圍分別是多少?
解:8位二進(jìn)制數(shù)原碼(127
?+127)、16位二進(jìn)制數(shù)原碼(32767
?+32767)
8位二進(jìn)制數(shù)補(bǔ)碼(128?+
127)、16位二進(jìn)制數(shù)補(bǔ)碼(32768
?+32767)
8位二進(jìn)制數(shù)反碼(127?+
127)、16位二進(jìn)制數(shù)反碼(32767-+
32767)
1.14寫出下列真值對應(yīng)的原碼和補(bǔ)碼的形式。
(1)X=1110011B
(2)X=71D
(3)X=+1001001B
解:
(1)原碼:1111001IB補(bǔ)碼:10001101B
(2)原碼:11000111B補(bǔ)碼:10111001B
(3)原碼:01001001B補(bǔ)碼:01001001B
1.15寫出符號數(shù)10110101B的反碼和補(bǔ)碼。
解:11001010B,11001011B
1.16已知X和Y的真值,求[X+Y]的補(bǔ)碼
(1)X=1110111B
Y=+1011010B
(2)X=56DY=21D
12
解;(1)1110001IB
(2)00100011B
1.17己知X=1101001B,
Y=1010110B.
用補(bǔ)碼求XY
的值。
解:11101101B
1.18請寫出下列字符的ASCII碼。
4A3=!
解:34H,41H,33H,3DII,21H
1.19若給字符4和9的ASCII碼加奇校驗(yàn),應(yīng)是多少?
解:34H,B9II
1.20上題中若加偶校驗(yàn),結(jié)果如何?
解:B4H,3911
1.21計算下列表達(dá)式。
(1)(4EH+10110101B)X(0.0101)BCD=()D
(2)4EH(
24/08H十'B'/2)=()B
解:⑴129.51)
(2)101010B
13
第2章MCS51
單片機(jī)的硬件結(jié)構(gòu)
2.1請結(jié)合課本中MCS51
系列單片機(jī)的結(jié)構(gòu)圖,闡明其大致組成。
解:按功能部件分,51子系列單片機(jī)由CPU、數(shù)據(jù)存儲器RAM、程序存儲器ROM、特殊功
能寄存
器、4個并行I/O口、1個串行口、定時器/計數(shù)器、中斷系統(tǒng)等八個功能部件組成。
CPU由累加器A、暫存器1、2、ALU、PSW等組成
數(shù)據(jù)存儲器由RAM地址寄存器、RAM單元等組成。
程序存儲器指EPROM或ROMo
SFR指PO、Pl、P2、P3鎖存器、B、DPTR等。
2.2綜述MCS51
系列單片機(jī)各引腳的作用,并進(jìn)行分類。
解:(D主電源引腳
Vcc:接+5V電源正端。
Vss::接+5V電源地端。
(2)外接晶體引腳
XTAL1:片內(nèi)反相放大器輸入端
XTAL2:片內(nèi)反相放大器輸出端
(3)輸入/輸出引腳
PO.0P0.7:
P0口的8個引腳。在不接片外存儲器與不擴(kuò)展I/O接口時,作為準(zhǔn)雙向輸入/輸
出接口(在輸入時需要附加條件的雙向輸入輸出口,稱為準(zhǔn)雙向I/O口)。在接有片外存
儲器或擴(kuò)展
I/O接口時,P0口分時復(fù)用為低8位地址總線和雙向數(shù)據(jù)總線。
P1.0P1.7:
P1口的8個引腳??勺鳛闇?zhǔn)雙向I/O接口使用。對于52子系列,P1.0與Pl.1還有
第二種功能:P1.0可用作定時器/計數(shù)器2的計數(shù)脈沖輸入端T2;Pl.1可用作定時器/
計數(shù)器2的
外部控制端T2EX。
P2.0P2.7;
P2口的8個引腳。-?般可作為準(zhǔn)雙向I/O接口;在接有片外存儲器或擴(kuò)展I/O接
口且尋址范圍超過256個字節(jié)時,P2口用為高8位地址總線。
P3.0P3.7;
P3口的8個引腳。
①一般可作為準(zhǔn)雙向I/O接口;
②P3口的第二功能如表21
所示。
表21
引腳第二功能
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5
P3.6
P3.7
RXD(串行輸入U)
RXD(串行輸出口)
INTO(外部中斷0請求輸入端)
INT1(外部中斷1請求輸入端)
TO(定時器/計數(shù)器0計數(shù)脈沖輸入端)
T1(定時器/計數(shù)器1計數(shù)脈沖輸入端)
WR(片外數(shù)據(jù)存儲器寫選通信號輸出端)
RD(片外數(shù)據(jù)存儲器讀選通信號輸出端)
14
2.3EA引腳的作用是什么?在下列四種情況下,EA引腳各應(yīng)該接何種電平?
⑴只有片內(nèi)ROM.
(2)只有片外ROM。
(3)有片內(nèi)ROM和片外ROM。
(4)有片內(nèi)ROM和片外ROM,片外ROM所存為調(diào)試程序。
解:EA/VDD:片外程序存儲器選用端。
(1)EA=1。
(2)EA=0。
(3)若片外ROM和片內(nèi)ROM編址不重疊,則EA=1。
(4)若片外ROM和片內(nèi)ROM編址重疊,則訪問片內(nèi)ROM時EA=1,訪問片外ROM時EA=O。
2.4MCS51
系列單片機(jī)的引腳中有多少根I/O線?它們與單片機(jī)對外的地址總線和數(shù)據(jù)總線之間有
什么關(guān)系?其地址總線和數(shù)據(jù)總線各有多少位?對外可尋址的地址空間有多大?
解:MCS51
系列單片機(jī)有4個I/O端口,每個端口都是8位雙向口,共占32根引腳。在無片外擴(kuò)
展的存儲器的系統(tǒng)中,這4個端口的每一位都可以作為雙向通用I/O端口使用。在具有片
外擴(kuò)展存
儲器的系統(tǒng)中,P2口作為高8位地址線,P0口分時作為低8位地址線和雙向數(shù)據(jù)總線,
P3口作為
控制線使用。地址和數(shù)據(jù)線分別是16位和8位,對外可尋址的地址空間是64KB。
2.5程序計數(shù)器的符號是什么?MCS51
系列單片機(jī)的程序計數(shù)器有幾位?它的位置在哪里?
解:程序計數(shù)器的符號是PC,MCS51
系列單片機(jī)的程序計數(shù)器有16位,為一個專用寄存器。在
CPU內(nèi)部。
2.6何謂程序狀態(tài)字?它的符號是什么?它的位置在哪里?它各位的含義是什么?為1、為
0各代表
什么?各在何種場合有用?
解:程序狀態(tài)字是一個8位寄存器,它包含了程序運(yùn)行的狀態(tài)信息,它的符號是PSW,它
的位置在
CPU中。各位含義如下:
D7D6D5D4D3D2DID0
CAcF0RSIRSO02P
(1)進(jìn)位標(biāo)志位C(PSW.7):
作用:在執(zhí)行某些算術(shù)操作類、邏輯操作類指令時,可被硬件或軟件置位或清零。
例如8位加法運(yùn)算時,如果運(yùn)算結(jié)果的最高位D7有進(jìn)位,則C=l,否則C=0;
又如8位減法運(yùn)算時,如果運(yùn)算結(jié)果的最高位D7有借位,則C=l,否則C=0。
(2)輔助進(jìn)位標(biāo)志Ac(PSW.6):
作用:8位加法運(yùn)算時,如果低半字節(jié)的最高位D3有進(jìn)位,則Ac=l,否則Ac=O;8位
減法
運(yùn)算時,如果D3有借位,貝UAc=l,否則Ac=O。
Ac在作BCD碼運(yùn)算而進(jìn)行二一十進(jìn)制調(diào)整時有用。
(3)軟件標(biāo)志FO(PSW.5)
作用:是用戶定義的一個狀態(tài)標(biāo)志??赏ㄟ^軟件對它置位、或清零。編程時,也常測試其是
否
建起而進(jìn)行程序分支。
15
(4)工作寄存器組選擇位RSI、RSO(PSW.4、PSW.3):
作用:用軟件置位或清零,以確定四組工作寄存器中的哪一組工作,它們與各組的對應(yīng)關(guān)系
為
RSIRSO
000組(地址從0007H)
011組(地址從080FH)
102組(地址從101711)
113組(地址從181FH)
(5)溢出標(biāo)志OV(PSW.2):
作用:當(dāng)執(zhí)行算術(shù)運(yùn)算時,由硬件置位或清零,以指示溢出狀態(tài)。各種算術(shù)指令對該位的影
響情
況在指令系統(tǒng)中詳細(xì)介紹。
(6)奇偶標(biāo)志P(PSW.0):
每執(zhí)行一條指令,單片機(jī)都能根據(jù)A中1的個數(shù)的奇偶自動令P置位或清零:奇為1,
偶為0。
此標(biāo)志對串行通信的數(shù)據(jù)傳輸非常有用,通過奇偶校驗(yàn)可檢驗(yàn)傳輸?shù)目煽啃浴?/p>
2.7MCS51
系列單片機(jī)的內(nèi)存由哪幾部分組成?其編址與訪問的規(guī)律是怎樣的?
解:MCS51
系列單片機(jī)內(nèi)存由程序存儲器與數(shù)據(jù)存儲器兩個獨(dú)立的空間。
程序存儲器的編址自0000H開始,最大可至FFFFILMCS51
單片機(jī)有3種不同的芯片:片內(nèi)
有掩膜只讀存儲器的(如8051、8052)、片內(nèi)有EPROM的(如8751)和片內(nèi)沒有只讀存儲器
的(如8031、
8032),而ROM的尋址范圍為64KB,所以片內(nèi)程序存儲器的容量遠(yuǎn)小于該數(shù),可見如擴(kuò)展
片外存
儲器,其裕量是很大的。
ROM編址規(guī)律:程序存儲器的編址規(guī)律為:先片內(nèi)、后片外,片內(nèi)、片外連續(xù),二者一般不
作
重疊。根據(jù)PC的內(nèi)容進(jìn)行訪問。
片內(nèi)RAM從00H開始編址,片外RAM從0000H開始,部分地址重疊(實(shí)際并不完全一樣),
若只需擴(kuò)展少量片外RAM,容量不超過256個單元,則也可以按照8位二進(jìn)制編址,從00H
開始,
到FFH結(jié)束。由于訪問片內(nèi)外RAM所用的指令不一樣,不會引起混淆。
2.8MCS51
系列單片機(jī)片內(nèi)RAM有多少單元?有哪些用途?這些用途各占用哪些單元?堆棧的棧
區(qū)設(shè)在哪里?
解:51子系列片內(nèi)RAM有128B單元,52子系列片內(nèi)RAM有256B單元。
單片機(jī)片內(nèi)RAM可分為:工作寄存器區(qū),位尋址區(qū),數(shù)據(jù)緩沖區(qū)三個區(qū)域。
(1)工作寄存器區(qū):00H1FH
單元為工作寄存器區(qū)。供用戶編程時使用,臨時寄存8位信息。分
為四組:07R~R,但同時只能有一組參與程序程序的運(yùn)行,用RSI,RSO兩位的狀態(tài)
來選擇參與
運(yùn)行的工作寄存器組。
(2)位尋地址:20H2FH,
對該區(qū)的每一位,都有一個位地址,共有128個位地址。
(3)數(shù)據(jù)緩沖區(qū):30H7FH(
52子系列為30H'FFH),作為普通的RAM單元使用。
(4)堆棧棧區(qū)一般設(shè)在2FH以上的單元。
2.9MCS51
系列單片機(jī)在片內(nèi)集成了哪些主要邏輯功能部件?各個邏輯部件的主要功能是什么?
解:MCS51
單片機(jī)在片內(nèi)集成了中央處理器(CPU)、程序存儲器(ROM)、數(shù)據(jù)存儲器(RAM)、
定時器/計數(shù)器、并行I/O接口、串行I/O接口和中斷系統(tǒng)等幾大單元。
CPU是整個單片機(jī)的核心部件,由運(yùn)算器和控制器組成。運(yùn)算器可以完成算術(shù)運(yùn)算和邏輯
運(yùn)算,
16
其操作順序在控制器控制下進(jìn)行??刂破魇怯沙绦蛴嫈?shù)器PC(ProgramCounter),指令寄
存器IR
(InstructionRegister),指令譯碼器ID(InstructionDecoder)>定時控制邏輯和振
蕩器OSC等電路組
成。CPU根據(jù)PC中的地址將欲執(zhí)行指令的指令碼從存儲器中取出,存放在IR中,ID對IR
中的指
令碼進(jìn)行譯碼,定時控制邏輯在OSC配合下對ID譯碼后的信號進(jìn)行分時,以產(chǎn)生執(zhí)行本
條指令所
需的全部信號。
程序存儲器(ROM)用于存儲程序、常數(shù)、表格等。
數(shù)據(jù)存儲器(RAM)用于存儲數(shù)據(jù)。
8051內(nèi)部有兩個16位可編程序的定時器/計數(shù)器T0和T1,均為加1計數(shù)器??捎糜诙?/p>
時和對
外部輸入脈沖的計數(shù)。
8051的中斷系統(tǒng)主要由中斷允許控制器IE和中斷優(yōu)先級控制器IP等電路組成。可實(shí)現(xiàn)
對5個
中斷源的管理。8051的中斷系統(tǒng)主要由中斷允許控制器IE和中斷優(yōu)先級控制器IP等電
路組成。其
中,IE用于控制5個中斷源中哪些中斷請求被允許向CPU提出,哪些中斷源的中斷請求被
禁止;IP
用于控制5個中斷源的中斷請求的優(yōu)先權(quán)級別。
I/O接口是MCS51
單片機(jī)對外部實(shí)現(xiàn)控制和信息交換的必經(jīng)之路,用于信息傳送過程中的速度
匹配和增加它的負(fù)載能力??煞譃榇泻筒⑿蠭/O接口。
2.108051單片機(jī)的控制總線信號有哪些?各有何作用?
解:獨(dú)立的控制線一共有4條:
(1)ALE/PROG:地址鎖存允許/編程線,配合P0口引腳的第二功能使用。在訪問片外存
儲器時,
8051CPU在P0.7?P0.0引腳上輸出片外存儲器低8位地址的同時在ALE/PROG上輸出一
個高電位
脈沖,用于把這個片外存儲器低8位地址鎖存到外部專用地址鎖存器,以便空出P0.7-P0.0
引腳線
去傳送隨后而來的片外存儲器讀寫數(shù)據(jù)。在不訪問片外存儲器時,8051自動在ALE/PROG
上輸出頻
率為fosc/6的脈沖序列。該脈沖序列可用作外部時鐘源或作為定時脈沖源使用。
(2)EA/Vpp:允許訪問片外存儲器/編程電源線,可以控制8051使用片內(nèi)ROM還是使
用片外
ROM。若EA=0,則允許使用片內(nèi)ROM;若EA=1則允許使用片外ROM。
(3)PSEN:片外ROM選通線,在執(zhí)行訪問片外ROM的指令MOVC時,8051自動在PSEN上
產(chǎn)
生一個負(fù)脈沖,用于為片外ROM芯片的選通。其他情況下PSEN線均為高電平封鎖狀態(tài)。
(4)RST/VPD:復(fù)位/備用電源線,可以使8051處于復(fù)位工作狀態(tài)。
2.11何謂特殊功能寄存器?8031有哪些特殊功能寄存器?試按其用途相關(guān)聯(lián)的硬件功能
單元(如
CPU、并行1/0口、串行1/0口、定時器/計數(shù)器、中斷控制等)進(jìn)行分類。
解:特殊功能寄存器也稱專用寄存器。專用于控制、管理片內(nèi)算術(shù)邏輯部件,并行1/0口,
串行1/0
口,定時器/計數(shù)器,中斷系統(tǒng)等功能模塊的工作,用戶在編程時可以置數(shù)設(shè)定,但不能移
作它用。
除PC外,8031有18個專用寄存器,其中3個為雙字節(jié)寄存器,共占用21個字節(jié),按
其用途
相關(guān)聯(lián)的硬件功能單元可分:P0口,堆棧指針、數(shù)據(jù)指針低字節(jié),數(shù)據(jù)指針高字節(jié),定時
器/計數(shù)器
/計數(shù)器0高、低字節(jié),定時器/計數(shù)器1高、低字節(jié),P1口,電源控制、串行控制;串
行數(shù)據(jù)緩沖
器,P2口,中斷允許控制,P3口,中斷允許優(yōu)先級控制,程序狀態(tài)字,累加器,B寄存器
共18個
專用寄存器。
2.12何謂時鐘周期、指令周期、機(jī)器周期?針對MCS51
系列單片機(jī),如采用12MHZ晶振,它們
的頻率和周期各是什么?
解:振蕩器輸出的振蕩脈沖經(jīng)二分頻成為內(nèi)部時鐘信號,用作單片機(jī)內(nèi)部各功能部件按序
協(xié)調(diào)工作
的控制信號,其周期稱時鐘周期。
機(jī)器周期:6個時鐘周期構(gòu)成一個機(jī)器周期。
17
指令周期:CPU執(zhí)行一條指令的時間。
針對MCS51
系列單片機(jī),采用12MHz晶振,則振蕩周期為0.167us,時鐘周期為0.333us,
頻率為6MHZ,機(jī)器周期為lus,頻率為1MHZ,指令周期為lus到4us,頻率為1MHZ到
0.25MHz。
2.13綜述P0、Pl、P2、P3口各有哪幾種功能。
解:這4個接口可以并行輸入或輸出8位數(shù)據(jù);也可按位使用,即每一?根輸入/輸出線都
能獨(dú)立地
用作輸入或輸出。四個8位并行口的功能各不相同:
P0口是三態(tài)雙向口,通常稱為數(shù)據(jù)總線口,因?yàn)橹挥性摽谀苤苯佑糜趯ν獠繑?shù)據(jù)總線的讀
寫操
作,P0口還用于輸出外部數(shù)據(jù)存儲器的低8位地址。山于是分時輸出,故應(yīng)在外部加地址
鎖存器將
地址數(shù)據(jù)鎖存,地址鎖存信號用ALE。
Pl口是專門供用戶使用的I/O接口,是準(zhǔn)雙向接口。
P2口是供系統(tǒng)擴(kuò)展時作高8位地址線用,如果沒有系統(tǒng)擴(kuò)展,例如使用8051/8751單片
機(jī)不擴(kuò)
展外部存儲器時,P2口也可以作為用戶I/O線使用。P2口也是準(zhǔn)雙向口。
P3口是雙功能口,該口的每一位均可以獨(dú)立地定義為第一I/O功能或第二I/O口功能。
P3口的
第二功能如表21
所示。
2.14在讀回端口數(shù)據(jù)時,為什么應(yīng)讀鎖存器內(nèi)容,而不宜讀引腳電平?
解:假如通過三態(tài)門從引腳上讀回數(shù)據(jù),有時會發(fā)生錯誤。例如用一根口線去驅(qū)動一個晶體
管的
基極,在向此口線輸出1時,鎖存器Q=l,但晶體管導(dǎo)通后,引腳上的電平已拉到低電平
(0.7V),
從引腳讀回數(shù)據(jù)會錯讀為0。
2.15闡明“準(zhǔn)雙向口”這一名稱所以要加用“準(zhǔn)”字的理由。
解:在執(zhí)行輸入操作時,如果鎖存器原來寄存的數(shù)據(jù)Q=0。那么由于Q=1將使VI導(dǎo)通,
引腳被
始終箝拉在低電平上,不可能輸入高電平。為此,用作輸入前,必須先用輸出指令置Q=l,
使VI
截止。正因?yàn)槿绱薖1口稱為準(zhǔn)雙向接口。
2.168031單片機(jī)與開關(guān)及LED發(fā)光二極管接口電路如2.16題圖所示。用8031單片機(jī)Pi口的
P1.3P1.0
作為數(shù)據(jù)輸入口,聯(lián)接開關(guān)K3K0,
P1.7P1.4
作為輸出口,聯(lián)接發(fā)光二極管LED3LED。;
編程使開關(guān)
K3Ko
的狀態(tài)由P1.3P1.0
輸入,再由P1.7P1.4
輸出,通過發(fā)光二極管顯示出來,要求開關(guān)合上時,二
極管亮,開關(guān)斷開時,二極管不亮。
+5V
EA
P1.5
P1.6
8031
P1.7
LED1
LED2
LED3
P1.4
+5V
PL0
Pl.1
PL2
LED0
Pl.3
KI
K2
K3
KO
2.16題圖
解:ORG2200H
MOVA,#FFH;Pl口為輸入,先送1
18
MOVPi,A;Pi口低4位輸出1
LOOP:MOVA,Pi;口狀態(tài)輸入
SWAPA;開關(guān)狀態(tài)到高4位
ORLA,#OFH;低4位為1,為下一次輸入做準(zhǔn)備
MOVPi,A;開關(guān)狀態(tài)輸出
AJMPLOOP;循環(huán)
2.17電路如2.17題圖所示,用8031P1口的PLO、Pl.1作為變量X、W的輸入端,用
P1.2作為電
路輸出端,并用LED來顯示輸出,Pl.3端傳送狀態(tài)消息。當(dāng)檢測到P1.3為低電平時,
CPU開始運(yùn)
算D=(X0W)。(XUW),并把結(jié)果送P1.2輸出顯示,然后重新開始檢測P1.3狀
態(tài)信息,試編
寫完成上述要求的程序。
EA+5V
P1.0
PL1
8031
Pl.3
Y
Pl.2
2.17題圖
解:參考程序如卜:
ORG0000H
LJMPMAIN
ORG01OOH
MAIN:MOVPl,#08H
LOOP:MOVC,P1.3
JCLOOP
MOVPl,#03H
MOVC,P1.0
ANLC,P1.1
CPLC
MOVOOH,C
MOVC,P1.0
ORLC,P1.1
ANLC,OOH
MOVP1.2,C
SJMPMAIN
END
2.18第2.18題圖示電路中,XI、X2、X3是三個故障源,當(dāng)系統(tǒng)無故障時,XI、X2、X3均
為低電
19
平,對應(yīng)的三個顯示燈全滅;當(dāng)某部分出現(xiàn)故障時,其對應(yīng)的輸入端山低電平變?yōu)楦唠娖剑?/p>
從而引
起51單片機(jī)中斷,中斷服務(wù)程序的任務(wù)是判定故障,并點(diǎn)亮對應(yīng)的發(fā)光二極管,發(fā)光二
極管LED1?
LED3對應(yīng)三個輸入端XI?X3。試編程。
+5V
EA
P1.3
P1.4
8031
P1.5
INTO+
XI
X2
X3
LED1
LED2
LED3
P1.0
Pl.1
Pl.2
2.18題圖
解:參考程序如下:
ORG0000H
LJMPMAIN
ORG0003H
LJMPINTOSER
ORG01OOH
MAIN:MOVP1,#OFFH
SETBITO
SETBEXO
SETBEA
LOOP:AJMPLOOP
INTOSER:JNBPL0,LI
CLRP1.3
LI:JNBPl.1,L2
CLRP1.4
L2:JNBPl.2,L3
CLRP1.5
L3:RET
END
2.19設(shè)某單片機(jī)應(yīng)用系統(tǒng)的Pl口連接如第2.19題圖所示,要求根據(jù)K0的合斷情況決
定DI、DO
的點(diǎn)亮。如果K0合上,D0點(diǎn)亮,如果K0斷開,D1點(diǎn)亮。試編程實(shí)現(xiàn)之
解:
ORG0000H
LJMPMAIN
ORG0100H
MAIN:MOVPl,#OCOH
LOOP:JBPl.7,ELSE
CLRP1.0
20
AJMPLOOP
ELSE:CLRP1.1
AJMPLOOP
END
+5V
+5V
EA
KO
DO
DI
Pl.7
Pl.1
P1.0
8031
第2.19題圖
2.20設(shè)某單片機(jī)應(yīng)用系統(tǒng)的P1口連接如第2.20題圖所示,問:
+5V
+5V
EA
K0
K1
D0
D1
Pl.7
Pl.6
Pl.l
P1.0
8031
第2.20題圖
(1)執(zhí)行第一條指令后,哪些指示燈會亮?
(2)第二條指令的用處?
(3)執(zhí)行下列指令到最后,(A)=?要求寫出分析過程。
MOVPl,#OEH
ORLPl,#COH
MOVA,Pl
ANLA,#COH
解:1.DI會亮。
2.為PL7、Pl.6的輸入做準(zhǔn)備。
3.A的內(nèi)容為80Ilo
2.21MCS51
怎樣實(shí)現(xiàn)上電復(fù)位與操作復(fù)位?并請綜述各專用寄存器復(fù)位后的狀態(tài)。
解:與其他計算機(jī)一樣,MCS51
單片機(jī)系統(tǒng)有上電復(fù)位和操作復(fù)位兩種方法。所謂上電復(fù)位,是
21
指計算機(jī)上電瞬間,要在RST引腳上出現(xiàn)寬度大于10ms的正脈沖,使計算機(jī)進(jìn)入復(fù)位狀
態(tài)。操作
復(fù)位指用戶按下“復(fù)位”按鈕使計算進(jìn)入復(fù)位狀態(tài)。
復(fù)位是靠外部電路實(shí)現(xiàn)的。2.21題圖是上電復(fù)位及按鈕復(fù)位的一種實(shí)用電路。
上電時+5V電源立即對單片機(jī)芯片供電,同時經(jīng)R對C3充電。C3上電壓建立的過程就是負(fù)
脈
沖的寬度,經(jīng)倒相后,RST上出現(xiàn)正脈沖使單片機(jī)實(shí)現(xiàn)了上電復(fù)位。按鈕按下時RST上同
樣出現(xiàn)
高電平,實(shí)現(xiàn)了操作復(fù)位。在應(yīng)用系統(tǒng)中,有些外圍芯片也需要復(fù)位,如果這些芯片復(fù)位端
的復(fù)位
電平與單片機(jī)一致,則可以與單片機(jī)復(fù)位腳相連。因此,非門在這里不僅起到了倒相作用,
還增大
了驅(qū)動能力。電容Cl、C2起濾波作用,防止干擾竄入復(fù)位端產(chǎn)生誤動作。
10KW
iC2C
3C
ccV
100pF10uF10uF
2.21題圖復(fù)位電路
各專用寄存器復(fù)位后的狀態(tài)如下表所示:
22
第3章MCS51
系列單片機(jī)的指令系統(tǒng)
3.1MCS51
系列單片機(jī)的尋址方式有哪幾種?請列表分析各種尋址方式的訪問對象與尋址范圍。
解:①立即尋址、②寄存器尋址、③寄存器間接尋址、④直接尋址、⑤基址寄存器加變址寄
存器間
接尋址、⑥相對尋址、⑦位尋址。
尋址方式訪問對象尋址范圍
立即尋址立即數(shù)--------
寄存器尋址
工作寄存器R0~R7,累加器
A、寄存器B,數(shù)據(jù)指針
DPTR,位處理器C
OOH'IFH,EOH,FOH、82H、
8311
寄存器間接尋址RAM單元內(nèi)部RAM及外部擴(kuò)展的
64KRAM
直接尋址ROM和RAM內(nèi)部RAM00H7FH,
SFR
80HFFH,
R0M64KB
變址尋址ROMROMOOOOHFFFFH
相對尋址ROMROMOOOOHFFFFH
位尋址位尋址區(qū)內(nèi)RAM20H2FH
中的可尋
址位,SFR中的可尋址位
3.2要訪問片內(nèi)RAM,可有哪兒種尋址方式?
解:對于51系列,要訪問片內(nèi)RAM,有間接尋址、直接尋址、位尋址。52子系列訪問片
內(nèi)低128
個字節(jié)有直接尋址、位尋址、間接尋址,高128字節(jié)有間接尋址。
3.3要訪問片外RAM,可有哪幾種尋址方式?
解:訪問片外RAM有寄存器間接尋址方式。
3.4要訪問ROM,可有哪幾種尋址方式?
解:要訪問ROM有直接尋址、變址尋址、相對尋址
3.5試分別對51子系列和52子系列,說明MOVA,direct指令與MOVA,@Rj指令的
訪問范圍。
解:MOVA,direct指令中direct對于51子系列的訪問范圍為內(nèi)RAM中的低128B單
元,從00H
到7FH,訪問SFR的范圍是從80H到FF出52子系列的訪問范圍與51子系列的訪問范
圍相同。
MOVA,?Rj指令對于51子系列的訪問范圍為內(nèi)RAM的128B單元,從00H至!j7FH,對
于
52子系列的訪問范圍為片內(nèi)RAM從00H到FFH。
3.6傳送指令中有哪兒小類是訪問RAM的?咖幾個類是訪問ROM的,CPU訪問ROM多不
多?
什么時候需要訪問ROM?
解:訪問RAM的有:以累加器A為一方的傳送指令,不以累加器為一方的傳送指令,用
立即數(shù)置
數(shù)的指令,訪問片外RAM的傳送指令,進(jìn)棧出棧指令,交換指令。
訪問ROM的有:基址寄存器加變址寄存器間址指令
23
因?yàn)镽OM是只讀存儲器,用作程序存儲器,已事先存入各種程序,常數(shù)、表格等,CPU訪
問
ROM不多,當(dāng)執(zhí)行程序,程序轉(zhuǎn)移以及用戶訪問時需要訪問ROM,
3.7區(qū)分下列指令的不同功能:
⑴MOVA,#24H與MOVA,24H
⑵MOVA,RO與MOVA,?RO
⑶MOVA,@R0與MOVXA,@R0
解:⑴前者是將立即數(shù)24H送入A中,后者是將24H單元的內(nèi)容送入A中.
(2)前者將R0中的內(nèi)容送入A中,后者是將以R0中的內(nèi)容為地址所在單元的內(nèi)容送入A
中.
(3)前者是將片內(nèi)RAM以R0中的內(nèi)容為地址所在單元的內(nèi)容送入A中,后者是將片外
RAM
的以R0中的內(nèi)容為地址所在單元的內(nèi)容送入A中.
3.8設(shè)片內(nèi)RAM30H單元的內(nèi)容為40H,設(shè)片內(nèi)RAM40H單元的內(nèi)容為10H,片內(nèi)RAM10H
單
元的內(nèi)容為OOH,(P1)=OCAH,請寫出下列指令執(zhí)行后的結(jié)果。
MOVRO,#30H
MOVA,?RO
MOVRI,A
MOVB,@R1
MOV?RO,Pl
MOVP3,Pl
MOV10H,#20H
MOV3OH,1OH
解:MOVRO,#30H;RO-30H
MOVA,?RO;A-40H
MOVRI,A;RI-40H
MOVB,@R1;B-10H
MOV@R0,Pl;30H-OCAH
MOVP3,Pl;P3-0CAH
MOV10H,#20H;1OH=20H
MOV30H,10H;30H-20H
3.9已知:(A)=35H,(R0)=6FH,(Pl)=(90H)=FCH,(SP)=COH,試寫出下列指令的執(zhí)行結(jié)果。
(1)MOVR6,A
(2)MOV@R0,A
(3)MOVA,#90H
(4)MOVA,90H
(5)MOV80H,#81H
(6)MOVX?RO,A
(7)PUSHA
(8)SWAPA
(9)XCHA,RO
24
解:(l)MOVR6,A;(R6)=3511
(2)MOV?RO,A;(6FH)=35H
(3)MOVA,#9011;(A)=9011
(4)MOVA,90H;(A)=FCH
(5)MOV80H,#8111;(80H)=8111
(6)MOV?RO,A;(6FH)=35H
(7)PUSHA;(SP)=C1H,(C1H)=35H
(8)SWAPA;(A)=53H
(9)XCHA,RO;(A)=6FH,(R0)=35H
3.10已知:(A)=02H,(R1)=7FH,(DPTR)=2FFCH,片內(nèi)RAM(7FH)=70H,片外
RAM(2FFEH)=11H,
ROM(2FFEH)=64H,試分別寫出下列指令的執(zhí)行結(jié)果。
(1)MOVA,@R1
(2)MOVX?DPTR,A
(3)MOVCA,@A+DPTR
(4)XCHDA,@R1
解:(1)(A)=70H(2)片外RAM(2FFCH)=02H
(3)(A)=64H(4)(A)=00H片內(nèi)RAM(7FH)=72H
3.11已知:(A)=78H,(R1)=78H,(B)=04H,C=L片內(nèi)RAM(78H)=DDH,片內(nèi)RAM(80H)=6CH,
試分別寫出下列指令的執(zhí)行結(jié)果(如涉及標(biāo)志位,也要寫出)。
(1)ADDA,@R1
(2)ADDCA,78H
(3)SUBBA,#77H
(4)INCRI
(5)DEC78H
(6)MULAB
(7)DIVAB
(8)ANL78H,#78H
(9)ORLA,ttOFH
(10)XRL80H,A
解:(1)(A)=55H(PSW)=11XXX1X0
(2)(A)=56H(PSW)=11XXX1X0
(3)(A)=0011(PSW)=00XXX0X0
25
(4)(Ri)=7911
(5)(78H)=DCH
(6)(BA)=01E0H,C=1OV=1
(7)(B)=00H,(A)=1EH
(8)(78H)=5811
(9)(A)=7FH
(10)(8011)=14H
3.12請對下列各組數(shù)分別計算“與”、“或”、“異或”的結(jié)果:
(1)10011010B和00001111B
⑵11010011B和01011010B
⑶11001100B和00110011B
(4)10101010B和11111111B
解:(1)結(jié)果分別為00001010B10011111B10010101B
(2)結(jié)果分別為01010010B11011011B10001001B
(3)結(jié)果分別為OOOOOOOOB11111111B11111111B
(4)結(jié)果分別為10101010B11111111B01010101B
3.13為達(dá)到下列要求,請說明應(yīng)采用何種邏輯操作,采用什么操作數(shù),要求不得改變各未
涉及位的
內(nèi)容。
(1)使累加器的最低位置1
(2)清除累加器的高四位
(3)使A.2和A.3置1。
(4)清除A.3、A.4、A.5、A.6
解:(1)邏輯或操作操作數(shù):00000001B
(2)邏輯與操作操作數(shù):00001111B
(3)邏輯或操作操作數(shù):00001100B
(4)邏輯與操作操作數(shù):10000111B
3.14寫出下列各條指令的機(jī)器碼,并逐條寫出依次執(zhí)行每一條指令后的結(jié)果和PSW的內(nèi)
容:
(1)CLRA
(2)MOVA,#9BH
(3)MOVB,#OAFH
26
(4)ADDA,B
解:(1)機(jī)器碼E4H;(A)=0
(2)機(jī)器碼749BH;(A)=9BH
(3)機(jī)器碼75F0AFH;(A)=AFH
(4)機(jī)器碼25F0H;(A)=4AH;(PSW)=11XXX1X1B
3.15要選用工作寄存器3組,請采用三種不同的指令實(shí)現(xiàn)之。
解:(1)SETBPSW.4
SETBPSW.3
(2)ORLPSW,#18H
(3)MOVPSW,#18H
3.16列舉三種能使累加器A內(nèi)容清零的指令,并比較其優(yōu)缺、點(diǎn)。
解:(1)ANLA,#0011
(2)MOVA,#00H
(3)CLRA
3.17回答問題:
(1)算術(shù)操作類指令對標(biāo)志位的影響。
(2)邏輯操作類指令對字節(jié)內(nèi)容的修改。
解:(1)算術(shù)操作指令的執(zhí)行將影響特殊功能寄存器中狀態(tài)寄存器PSW的3個標(biāo)志位:
C:(PSW.7)進(jìn)位標(biāo)志;Ac:(PSW.6)輔助進(jìn)位標(biāo)志;OV:(PSM2)輔助進(jìn)位標(biāo)志
3個標(biāo)志除特別指出外,指令服從以下規(guī)則:
①操作結(jié)果在最高位有進(jìn)位輸出(加法時)或借位輸入(減法時),C=l;否則;C=0?
②操作結(jié)果的低4位有進(jìn)位輸出(加法時)或有向高4位的借位(減法時),Ac=l;
否則;Ac=0?
③溢出標(biāo)志0V滿足邏輯關(guān)系式OV=C6?C7;
C6為加法時,累加器A的D6位向D7產(chǎn)生的進(jìn)位,或減法時累加器A的D6位向D7產(chǎn)
生的
借位,有進(jìn)位或借位時,C6=l;
C7為加法時,累加器A的D7位向更高位產(chǎn)生的進(jìn)位,或減法時累加器A的D7位向更
高位產(chǎn)
生的借位,有進(jìn)位或借位時,C7=l;
0V標(biāo)志位常用于加減指令對帶符號數(shù)做補(bǔ)碼加、減運(yùn)算時,(0V)=1表示加、減運(yùn)算的結(jié)
果超出
了A所能表示的帶符號數(shù)的范圍(128?
127)。
(2)①若要對內(nèi)部的某幾位清零,而其它位保持不變,可以選用ANLdirect,#data指令,
在需
27
要清零的位上對應(yīng)的data的相應(yīng)位清零。
②若要對內(nèi)部的某幾位置1可以選用ORLdirect,#data指令,在需要置1的位上對應(yīng)
的data
的相應(yīng)位置1?
③若要對內(nèi)部的某幾位求反可以選用XRLdirect,#data指令,在需要求反的位上對應(yīng)的
data
的相應(yīng)位置lo若要對內(nèi)部RAM某單元求反可以選用XRLdirect,#OFFH。
3.18要將片內(nèi)RAMOFH單元的內(nèi)容傳送去專用寄存器B,對0FH單元的尋址可有三種方
法:
(1)R尋址;
(2)R間址;
(3)Direct尋址;
請分別編寫出相應(yīng)程序,比較其字節(jié)數(shù)、機(jī)器周期數(shù)和優(yōu)缺點(diǎn)。
解:⑴MOVRO,OFH
MOVB,RO
(2)MOV@R0,OFH
MOVB,?RO
(3)MOVB,OFH
(1)占四個字節(jié)數(shù),四個機(jī)器周期數(shù);(2)占四個字節(jié)數(shù),四個機(jī)器周期數(shù);(3)占三個字
節(jié)
數(shù),三個機(jī)器周期數(shù);所以第三種方法最好。
3.19設(shè)(RO)=7EH,(DPTR)=1OFEH,片內(nèi)RAM7EH單元的內(nèi)容為OFFH;7F單元的內(nèi)容為
38H,
試為下列程序的每條指令注釋其執(zhí)行結(jié)果。
INC@R0
INCRO
INC?RO
INCDPTR
INCDPTR
INCDPTR
解:INC?RO;將7EH單元的內(nèi)容加1,即7EH-00H
INCRO;R0-7FH
INC@R0;7FH-39II
INCDPTR;DPTR-1OFFH
INCDPTR;DPTR-11OOII
INCDPTR;DPTR-11O1H
28
3.20試編程:引用“與”運(yùn)算,判斷某8位二進(jìn)制數(shù)是奇數(shù)還是偶數(shù)
解:設(shè)該8位二進(jìn)制數(shù)放在累加器A中,如果是奇數(shù),將F0標(biāo)志置1,如果是偶數(shù),
將F0標(biāo)志
清0o
ORG2000H
START:MOVRO,A
ANLA,#01H
JZLOOP
MOVA,RO
SETBPSW.5
SJMPHERE
LOOP:MOVA,RO
CLRPSW.5
HERE:SJMPHERE
3.21試編程:引用“或”運(yùn)算,使任意8位二進(jìn)制數(shù)的符號位必為“1”。
解:ORG2000H
START:ORLA,#80H
3.22請思考:引用“異或”運(yùn)算,怎樣可使一帶符號數(shù)的符號位改變、數(shù)據(jù)位不變:怎樣
可使該數(shù)必
然變“0”o
解:將該數(shù)與80H相異或,就可以改變其符號位,而數(shù)值位保持不變。
將該數(shù)與其本身相異或,就可以使該數(shù)必然為0o
3.23要選擇工作寄存器組,可有幾種編程辦法?
解:可以采用如下三種辦法:
(1)SETBPSW.4
SETBPSW.3
(2)ORLPSW,#18H
(3)MOVPSW,#18H
3.24設(shè)ROM、片內(nèi)RAM、片外RAM各有關(guān)單元的內(nèi)容示如下圖,問執(zhí)行下列程序段后(A)
=?
0000AJMP030H
ORG0030H
0030MOVR0,#32H
29
MOVA,@R0
MOVRI,A
MOVXA,@R1
MOVCA,?A+DPTR
30H
33H
32H
31H
30H
31H
32H
33H
片內(nèi)RAM
3011
33H
32H
31H
32H
30H
33H
31H
片外RAM
0030H
0033H
0032H
0031H
30H
33H
31H
32H
ROM
解:(A)=30H
3.25若在片內(nèi)RAM30H單元中有二位壓縮的BCD碼95H,問執(zhí)行下列程序后,片內(nèi)
RAM30H單
元的內(nèi)容是什么?31H、32H的內(nèi)容又是什么?并寫出BCD碼十進(jìn)制調(diào)整的過程。
MOVRO,#30H
MOVA,@R0
ANLA,#OFH
MOVR3,A
MOVA,@R0
SWAPA
ANLA,#OFH
ADDA,R3
DAA
MOV@R0,A
MOVR3,A
INCRO
ANLA,#OFH
MOV@R0,A
INCRO
MOVA,R3
ANLA,#OFOH
SWAPA
MOV?RO,A
RET
解:(30H)=14H;(3111)=0411;(32H)=01H;
30
第4章MCS51
匯編語言程序設(shè)計
4.1請解釋下列名詞:
機(jī)器碼助記符操作碼操作數(shù)源程序目標(biāo)程序匯編程序匯編語言匯編語言程
序匯編指令匯編機(jī)器匯編人工匯編
解:機(jī)器碼二進(jìn)制代碼形式的指令
操作碼用指令的英文縮寫表示,便于辨識指令的功能,也便于記憶,稱為助記符。
操作數(shù)是參與該指令操作的操作數(shù)或操作數(shù)所在的地點(diǎn)(尋址方式),有時,用一個表達(dá)式
來表
示一個操作數(shù),例如#TAB十lo
源程序匯編語言程序與高級語言程序
目標(biāo)程序二進(jìn)制代碼形式的程序
匯編程序機(jī)器匯編時用到的軟件
匯編語言用縮寫的英文單詞表示操作碼,用字母、數(shù)字表示操作數(shù)的語言
匯編語言程序用匯編指令書寫的程序
匯編指令用縮寫的英文單詞表示操作碼,用字母、數(shù)字表示操作數(shù)的指令
匯編將匯編語言源程序翻譯成目標(biāo)程序的過程
機(jī)器匯編由機(jī)器完成匯編工作
人工匯編由編程人員手工完成匯編工作。
4.2經(jīng)過匯編后,下列各條語句的標(biāo)號將是什么數(shù)值?
ORG2000H
TABLE:DS10
WORD:DB15,20,25,30
FANG:EQU1000H
BEGIN:MOVA,RO
解:TABLE=2000H;W0RD=200AH;FANG=1000H;BEGIN=200EH
4.3下列程序段經(jīng)過匯編后,從2000H開始的各有關(guān)存儲單元的內(nèi)容將是什么?
ORG2000H
TAB:DS5
DB10H,10
DW2100H
ORG2050H
31
DWTAB
DB“WORK"
解:從2000H到2004H單元內(nèi)容為預(yù)留的
(2005H)=10H;(2006H)=0AH
(2007H)=00H;(2008H)=21H
(2050H)=00H;(2051H)=20H
(2052H)=57H;(2053H)=4FH
(205411)=5211;(2055H)=4BII
4.4下列程序段經(jīng)過匯編后,從1000H開始的各有關(guān)存儲單元的內(nèi)容將是什么?
ORG1000H
TABI:EQU1234H
TAB2:EQU3000H
DB“START”
DWTABI,TAB2
解:(1000H)=53H;(1001H)=54H
(100311)=5211;(1004H)=541l
(1005H)=34H;(1006H)=12H
(100711)=0011;(100811)=3011
4.5有程序如下:
CLRC
CLRRSI
CLRRSO
MOVA,#38H
MOVRO,A
MOV29H,RO
SETBRSO
MOVRI,A
MOV26H,A
MOV28H,C
要求:(1)區(qū)分哪些是位操作指令?哪些是字節(jié)操作指令
32
(2)寫出程序執(zhí)行后,片內(nèi)RAM有關(guān)單元的內(nèi)容。
(3)譯成機(jī)器碼。
(4)按匯編語言程序的標(biāo)準(zhǔn)格式書寫,要求有各條指令的存放地址和必要的注釋。
解:(1)位操作指令為CLR、SETB指令,再加上MOV28H,C
(2)(C)=0;(RS1)=O;(RSO)=1;(A)=3811;(R0)=38H;(29H)=38H;(RI)=3811;(26H)=38H;
(28H)=0
⑶、(4)略。
4.6試編程:將兩個四位二進(jìn)制數(shù)并存與一個字節(jié)。
解:設(shè)兩個四位二進(jìn)制數(shù)分別存放于R0和R1的低半字節(jié),合并后的結(jié)果存于R2中。
ORG2000H
START:MOVA,RI
SWAPA
ORLA,RO
MOVR2,A
SJMP$
4.7試編程:有兩個雙字節(jié)壓縮的BCD碼數(shù)相加,設(shè)這兩待加數(shù)分別按先低后高原則存放
在30H、
31H和40H、41H單元,和要求放回30H、31H單元。
解:ORG0050H
START:MOVRO,#30H
MOVA,@R0
ADDA,40H
DAA
MOV@R0,A
INCRO
MOVA,@R0
ADDCA,41H
DAA
MOV@R0,A
SJMP$
ENDSTART
4.8試編程:將累加器A內(nèi)容
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 軌道有公共交通服務(wù)的條款制度
- 財務(wù)信息公開制度
- 2026湖南長沙市開福區(qū)青竹湖湘一健翎學(xué)校春季教師招聘8人備考考試試題附答案解析
- 2026中國科學(xué)院力學(xué)研究所高速流動失穩(wěn)與混合科研團(tuán)隊(duì)招聘科研財務(wù)助理人員1人參考考試題庫附答案解析
- 2026河北廊坊師范學(xué)院選聘26人備考考試題庫附答案解析
- 六年級語文上冊vj語文園地 含“口語交際”十三
- 2026年度上半年伊春湯旺縣公安局公開招聘警務(wù)輔助人員20人參考考試題庫附答案解析
- 2026甘肅金昌市機(jī)關(guān)事務(wù)管理局補(bǔ)招臨聘駕駛員3人備考考試題庫附答案解析
- 2026青海果洛州瑪多縣學(xué)前教育教師招聘12人備考考試題庫附答案解析
- 2026年濟(jì)寧梁山縣事業(yè)單位公開招聘初級綜合類崗位人員(34人)備考考試試題附答案解析
- GB/T 3487-2024乘用車輪輞規(guī)格系列
- CJT 313-2009 生活垃圾采樣和分析方法
- 人工智能在塑料零件設(shè)計中的應(yīng)用
- 《劇院魅影:25周年紀(jì)念演出》完整中英文對照劇本
- 蔣詩萌小品《誰殺死了周日》臺詞完整版
- tubeless胸科手術(shù)麻醉
- 物業(yè)保潔保安培訓(xùn)課件
- 人教版初中英語七至九年級單詞匯總表(七年級至九年級全5冊)
- 起重機(jī)械的安全圍擋與隔離區(qū)域
- 水泥直塑施工方案
- 山東省安全員B證考試題庫(推薦)
評論
0/150
提交評論