《《單片機原理及應用》答案(7~8章)new》由會員分享,可在線閱讀,更多相關《《單片機原理及應用》答案(7~8章)new(10頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、張毅剛主編高等教育出版社《單片機原理及應用》答案
第七章 MCS-51的串行口
1.串行數(shù)據(jù)傳送的主要優(yōu)點和用途是什么?
答:串行數(shù)據(jù)傳送的主要優(yōu)點是硬件接口簡單,接口端口少(2個)。主要用于多個單片機系統(tǒng)之間的數(shù)據(jù)通信。
2.簡述串行口接收和發(fā)送數(shù)據(jù)的過程。
答:以方式一為例。發(fā)送:數(shù)據(jù)位由TXT端輸出,發(fā)送1幀信息為10為,當CPU執(zhí)行1條數(shù)據(jù)寫發(fā)送緩沖器SBUF的指令,就啟動發(fā)送。發(fā)送開始時,內(nèi)部發(fā)送控制信號/SEND變?yōu)橛行?,將起始位想TXD輸出,此后,每經(jīng)過1個TX時鐘周期,便產(chǎn)生1個移位脈沖,并由TXD輸出1個數(shù)據(jù)位。8位數(shù)據(jù)位全部完畢后,置1中斷標志位TI,然后/SEN
2、D信號失效。接收:當檢測到起始位的負跳變時,則開始接收。接受時,定時控制信號有2種,一種是位檢測器采樣脈沖,它的頻率是RX時鐘的16倍。也就是在1位數(shù)據(jù)期間,有16個采樣脈沖,以波特率的16倍的速率采樣RXD引腳狀態(tài),當采樣到RXD端從1到0的跳變時就啟動檢測器,接收的值是3次連續(xù)采樣,取其中2次相同的值,以確認是否是真正的起始位的開始,這樣能較好地消除干擾引起的影響,以保證可靠無誤的開始接受數(shù)據(jù)。
3.幀格式為1個起始位,8個數(shù)據(jù)位和1個停止位的異步串行通信方式是方式( 1 )。
4.串行口有幾種工作方式?有幾種幀格式?各種工作方式的波特率如何確定?
答:串行口有3種工作方式:方式0、
3、方式1、方式2、方式3;有3種幀格式,方式2和3具有相同的幀格式;方式0的發(fā)送和接收都以fosc/12為固定波特率,
方式1的波特率=2SMOD/32定時器T1的溢出率
方式2的波特率=2SMOD/64fosc
方式3的波特率=2SMOD/32定時器T1的溢出率
5.假定串行口串行發(fā)送的字符格式為1個起始位,8個數(shù)據(jù)位,1個奇校驗位,1個停止位,請畫出傳送字符“A”的幀格式。
起始位0 1 0 0 0 0 0 0 校驗位停止位
6.判斷下列說法是否正確:
(1)串行口通信的第9數(shù)據(jù)位的功能可由用戶定
4、義。(對)
(2)發(fā)送數(shù)據(jù)的第9數(shù)據(jù)位的內(nèi)容在SCON寄存器的TB8位預先準備好的。(對)
(3)串行通訊發(fā)送時,指令把TB8位的狀態(tài)送入發(fā)送SBUF。(錯)
(4)串行通訊接收到的第9位數(shù)據(jù)送SCON寄存器的RB8中保存。(對)
(5)串行口方式1的波特率是可變的,通過定時器/計數(shù)器T1的溢出設定。(對)
7.通過串行口發(fā)送或接收數(shù)據(jù)時,在程序中應使用:(選(3))
(1)MOVC指令 (2)MOVX指令 (3)MOV指令 (4)XCHD指令
8.為什么定時器/計數(shù)器T1用做串行口波特率發(fā)生器時,采用方式2?若已知時鐘頻率、通訊波特率,如何計算其初值?
解答:因為定時器
5、/計數(shù)器在方式2下,初值可以自動重裝,這樣在做串口波特率發(fā)生器設置時,就避免了重裝參數(shù)的操作。
已知時鐘頻率、通訊波特率,根據(jù)公式:,計算出初值。
9.串行口工作方式1的波特率是:( 3 )
(1)固定的,為。
(2)固定的,為。
(3)可變的,通過定時器/計數(shù)器T1的溢出率設定。
(4)固定的,為。
10.在串行通訊中,收發(fā)雙方對波特率的設定應該是( 相等 )的。
11.若晶體振蕩器為11.0592MHz,串行口工作于方式1,波特率為4800b/s,寫出用T1作為波特率發(fā)生器的方式控制字和計數(shù)初值。
解答:初值計算:查閱P148表7-2可得,F(xiàn)AH
控制字:ANL T
6、MOD,#0F0H
ORL TMOD,#20H
MOV TH1,#0FAH
MOV TL1,#0FAH
MOV SCON,#40H
12.簡述利用串行口進行多機通訊的原理。
解答:參考P146頁。
13.使用8031的串行口按工作方式1進行串行數(shù)據(jù)通訊,假定波特率為2400b/s,以中斷方式傳送數(shù)據(jù),請編寫全雙工通訊程序。
解答:略
14.使用8031的串行口按工作方式3進行串行數(shù)據(jù)通訊,假定波特率為1200b/s,第9數(shù)據(jù)位作奇偶校驗位,以中斷方式傳送數(shù)據(jù),請編寫通訊程序。
解答:略
15.某8031串行口,傳送數(shù)據(jù)的幀格式為1個起始位(0),7個數(shù)據(jù)位
7、,1個偶校驗位和1個停止位(1)組成。當該串行口每分鐘傳送1800個字符時,試計算出波特率。
解答:串口每秒鐘傳送的字符為:1800/60=30個字符/秒
所以波特率為:30個字符/秒10位/個字符=300b/s
16.為什么MCS-51串行口的方式0幀格式?jīng)]有起始位(0)和停止位(1)?
解答:串行口的方式0為同步移位寄存器輸入輸出方式,常用于外接移位寄存器,以擴展并行I/O口,一般不用于兩個MCS-51之間的串行通信。該方式以fosc/12的固定波特率從低為位到高位發(fā)送或接受數(shù)據(jù)。
第八章習題解答
1.單片機存儲器的主要功能是存儲(程序)和(數(shù)據(jù))。
2.試編寫一
8、個程序(例如將05H和06H拼為56H),設原始數(shù)據(jù)放在片外數(shù)據(jù)區(qū)2001H單元和2002H單元中,按順序拼裝后的單字節(jié)數(shù)放入2002H。
解:本題主要考察了對外部存儲器的讀、寫操作,同學們只要記住正確使用MOVX指令就可以了。編程思路:首先讀取2001H的值,保存在寄存器A中,將寄存器A的高四位和低四位互換,再屏蔽掉低四位然后將寄存器A的值保存到30H中,然后再讀取2002H的值,保存在寄存器A中,屏蔽掉高四位,然后將寄存器A的值與30H進行或運算,將運算后的結(jié)果保存在2002H中。
ORG 0000H
MAIN: MOV DPTR,#2001H ;設置數(shù)據(jù)指針的初值
MOVX A,
9、@DPTR ;讀取2001H的值
SWAP A
ANL A,#0F0H ;屏蔽掉低四位
MOV 30H,A ;保存A
INC DPTR ;指針指向下一個
MOVX A,@DPTR ;讀取2002H的值
ANL A,#0FH ;屏蔽掉高四位
ORL A,30H ;進行拼裝
MOVX @DPTR,A ;保存到2002H
END
3.假設外部數(shù)據(jù)存儲器2000H單元的內(nèi)容為80H,執(zhí)行下列指令后:
MOV P2,#20H
MOV R0,#00H
MOVX A,@R0
累加器A中的內(nèi)容為(80H)。
4.編寫程序,將外部數(shù)據(jù)存儲器中的4000H—40FFH單元全部清零。
10、
解:本題主要考察了對外部數(shù)據(jù)塊的寫操作;編程時只要注意循環(huán)次數(shù)和MOVX指令的使用就可以了。
ORG 0000H
MAIN: MOV A,#0 ;送預置數(shù)給A
MOV R0,#0FFH ;設置循環(huán)次數(shù)
MOV DPTR,#4000H ;設置數(shù)據(jù)指針的初值
LOOP: MOVX @DPTR,A ;當前單元清零
INC DPTR ;指向下一個單元
DJNZ R0,LOOP ;是否結(jié)束
END
5.在MCS-51單片機系統(tǒng)中,外接程序存儲器和數(shù)據(jù)存儲器共16位地址線和8位數(shù)據(jù)線,為何不會發(fā)生沖突?
解:因為控制信號線的不同:
外擴的RAM芯片既能讀出又能寫入,所以通常都有讀寫
11、控制引腳,記為OE和WE。外擴RAM的讀、寫控制引腳分別與MCS-51的RD和WR引腳相連。
外擴的EPROM在正常使用中只能讀出,不能寫入,故EPROM芯片沒有寫入控制引腳,只有讀出引腳,記為OE,該引腳與MCS-51單片機的PSEN相連。
6.區(qū)分MCS-51單片機片外程序存儲器和片外數(shù)據(jù)存儲器的最可靠的方法是:
(1)看其位于地址范圍的低端還是高段
(2)看其離MCS-51芯片的遠近
(3)看其芯片的型號是ROM還是RAM
(4)看其是與RD信號連接還是與PSEN信號連接
解:本題的答案是3,4。
7.在存儲器擴展中,無論是線選法還是譯碼法,最終都是為了擴展芯片的(片選)
12、端提供信號。
8.請寫出圖8-18中4片程序存儲器27128各自所占的地址空間。
解:圖中采用了譯碼法。4片地址分別為0000H-3FFFH、4000H-7FFFH、8000H-BFFFH、C000H-FFFFH。
9.起止范圍為0000H-3FFFH的存儲器的容量是(16)KB。
解:本題屬于常識題,在第十一題時將有解答。
10.在MCS-51中,PC和DPTR都用于提供地址,但PC是為了訪問(程序)存儲器提供地址,而DPTR是為訪問(數(shù)據(jù))存儲器提供地址。
11.11根地址線可選(2KB)個存儲單元,16KB存儲單元需要(14)根地址線。
解:通過總結(jié)所學知識,我們得到以下幾
13、個信息:2KB的存儲器需要11根地址線,地址為0000H-07FFH;4KB的存儲器需要12根地址線,地址為0000H-0FFFH;
8KB的存儲器需要13根地址線,地址為0000H-1FFFH;16KB的存儲器需要14根地址線,地址為0000H-3FFFH;32KB的存儲器需要15根地址線,地址為0000H-7FFFH;64KB的存儲器需要16根地址線,地址為0000H-FFFFH(以上存儲器的首地址均默認為0000H)。
12.32KB RAM存儲器的首地址若為2000H,則末地址為(9FFF)H。
解:由上題總結(jié)得出,32KB RAM存儲器的大小為0000H-7FFFH,所以只要在
14、后面加上2000H即得到正確答案。
13.現(xiàn)有8031單片機、74LS373鎖存器、1片2764EPROM和2片6116RAM,請使用他們組成一個單片機系統(tǒng),要求:
(1)畫出硬件電路連線圖,并標注主要引腳;
(2)指出該應用系統(tǒng)程序存儲器空間和數(shù)據(jù)存儲器空間各自的地址范圍。
解:(1)電路圖如下所示:
(2)2764的地址為C000H-DFFFH;
第一個6116的地址為A000H-A7FFH;
第二個6116的地址為6000H-67FFH;
事實上,由于采用的是線選法,導致了地址不連續(xù),地址空間利用不充分。建議在實際工作中要具體情況具體分析。在兩種地址分配中選一種較好的來應用。
14.使用89C51芯片外擴一片E2PROM2864,要求2864兼作程序存儲器和數(shù)據(jù)存儲器,且首地址為8000H。要求:
(1)確定2864芯片的末地址;
(2)畫出2864片選端的地址譯碼電路;
(3)畫出該應用系統(tǒng)的硬件連接圖。
解:(1)2864為8KB的存儲器,如果首地址為8000H,則其末地址為9FFFH,理由參考第12題;
(2)電路圖如下所示:
(3)電路圖如下所示: