版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第二章單片機結構及原理
LMCS-51單片機內(nèi)部包含哪些主要功能部件?它們的作用是什么?
答(1)一個8bitCPU是微處理器的核心,是運算和邏輯計算的中心.
(2)片內(nèi)震蕩器及時鐘電路:提供標準時鐘信號,所有動作都依據(jù)此進行。
(3)4KROM程序存貯器:存貯程序及常用表格。
(4)128BRAM數(shù)據(jù)存貯器:存貯-?些中間變量和常數(shù)等.
(5)兩個16bit定時器/計數(shù)器:完全硬件定時器
(6)32根可編程I/O口線:標準8位雙向(4個)I/O接口,每一條I/O線都能獨立地作輸入或輸出.
(7)一個可編程全雙工串行口.
(8)五個中斷源。
2、什么是指令?什么是程序?
答:指令是規(guī)定計算機執(zhí)行某種操作的命令.
程序是根據(jù)任務要求有序編排指令的集合.
3、如何認識89s51/52存儲器空間在物理結構上可以劃分為4個空間,而在邏輯上又可以劃分為3個空間?
答:89s51/52存儲器空間在物理結構上設有4個存儲器空間:片內(nèi)程序存儲器、片外程序存儲器、片內(nèi)數(shù)據(jù)存
儲器、片外數(shù)據(jù)存儲器.在邏輯上有3個存儲器地址空間:片內(nèi)、片外統(tǒng)一的64KB程序存儲器地址空間,片內(nèi)256
B數(shù)據(jù)存儲器地址空間,片外64KB的數(shù)據(jù)存儲器地址空間.
4、開機復位后,CPU使用的是哪組工作寄存器?他們的地址是多少?CPU如何確定和改變當前工作寄存器組?
答:開機復位后,CPU使用的是第0組工作寄存器,地址為00H~07H,CPU通過改變狀態(tài)字寄存器PSW中的RSO和
RS1來確定工作寄存器組.
5、什么是堆棧?堆棧有何作用?在程序設計時,有時為什么要對堆棧指針SP重新賦值?如果CPU在操作中要使用
兩組工作寄存器,SP應該多大?
答:堆棧是一個特殊的存儲區(qū),主要功能是暫時存放數(shù)據(jù)和地址,通常用來保護斷點和現(xiàn)場.堆棧指針SP復位后
指向07"單元,OOH~1FH為工作寄存器區(qū),20H~2FH為位尋址區(qū),這些單元有其他功能,因此在程序設計時,需
要對SP重新賦值.如果CPU在操作中要使用兩組工作寄存器,SP應該至少設置為0FH。
6、89S51/52的時鐘周期、機器周期、指令周期是如何分配的?當振蕩頻率為8MHz時,一個單片機周期為多少微
秒?
答:時鐘周期為時鐘脈沖頻率的倒數(shù),他是單片機中最基本的、最小的時間單位.機器周期是指完成一個基本操作
所需要的時間,一個機器周期由12個時鐘周期組成.指令周期是執(zhí)行一條指令所需要的時間,由若干個機器周期
組成。
若fosc=8MHz,則一個機器周期=1/8*12us=l.5us
7、89s51/52擴展系統(tǒng)中,片外程序存儲器和片外數(shù)據(jù)存儲器共處同一地址空間為什么不會發(fā)生總線沖突?
答:訪問片外程序存儲器和訪問數(shù)據(jù)存儲器使用不同的指令用來區(qū)分同一地址空間.
8、程序狀態(tài)字寄存器PSW的作用是什么?常用狀態(tài)標志有哪些位?作用是什么?
答:程序狀態(tài)字PSW是8位寄存器,用于存放程序運行的狀態(tài)信息,PSW中各位狀態(tài)通常是在指令執(zhí)行的過程中自
動形成的,但也可以由用戶根據(jù)需要采用傳送指令加以改變.各個標志位的意義如下:
PSW.7(C,):進位標志位.
PSW.6(AC):輔助進位標志位,又稱為半進位標志位.
PSW.5(F0):用戶標志位。
PSW.4、PSW.3(RS1和RS0):寄存器組選擇位。
PSW.2(0V):溢出標志位.
PSW.1(空缺位):此位未定義.
PSW.0(P):奇偶校臉位.
9、位地址7cH和字節(jié)地址7cH有何區(qū)別?位地址7cH具體在內(nèi)存中什么位置?
答:字節(jié)地址7cH是片內(nèi)數(shù)據(jù)存儲器中的一個地址單元,該地址單元中可以存放8位二進制數(shù),位地址7cH是內(nèi)部
數(shù)據(jù)存儲器中位尋址區(qū)中的一位,該地址單元中可以存放1位二進制數(shù)。位地址7cH具體在片內(nèi)數(shù)據(jù)存儲器字節(jié)地
址為2FH中的第4位(2FH.4).
10、89s51/52中4個I/O端口的作用是什么?89s51/52的片外三總線是如何分配的?
答:I/O端口是單片機與外界聯(lián)系的重要通道,實現(xiàn)與外部設備的信息的傳輸。總線分配:片外數(shù)據(jù)總線(8根)
通過P0口輸出,片外地址總線(16根)通過P0口(低8位)和P2口(高8位)輸出,片外控制總線(PSEN,ALE,
RD,WR,EA)主要通過P3口。
11、89s51/52中4個I/O端口在結構上有何異同?
89s51/52單片機的4個I/O口在結構上是基本相同的,但又各具特點。這四個端口都是8位雙向口,每個端口
都包括一個鎖存器、一個輸出驅動器和輸入緩沖器.在無片外擴展存儲器的系統(tǒng)中,這四個端口的每一位都可以作
為雙向通用I/O端口使用.在作為一般的通用I/O輸入時,都必須先向鎖存器寫入“1”,使輸出驅動場效應管FET
截止,以免誤讀數(shù)據(jù)。各自特點如下:
(1)POo為雙向8位三態(tài)1/0□,它既可作為通用I/O口,又可作為外部擴展時的數(shù)據(jù)總線及低8位地址總
線的分時復用口.作為通用I/O口時,輸出數(shù)據(jù)可以得到鎖存,不需外接專用鎖存器;輸入數(shù)據(jù)可以得到緩沖,增
加了數(shù)據(jù)輸入的可靠性。每個引腳可驅動8個TTL負載.
(2)P1口為8位準雙向I/O0,內(nèi)部具有上拉電阻,一般作通用I/O口使用,它的每一位都可以分別定義為
輸入線或輸出線,作為輸入時,鎖存器必須置1,每個引腳可驅動4個TTL負載.
(3)P2口為8位準雙向1/0□,內(nèi)部具有上拉電阻,可直接連接外部I/O設備。它與地址總線高8位復用,
可驅動4個TTL負載。一般作為外部擴展時的高8位地址總線使用。
(4)P3口為8位準雙向I/O口,內(nèi)部具有上拉電阻,它是雙功能復用口,每個引腳可驅動4個TTL負載.作為通
用I/O口時,功能與Pier相同,常用第二功能。
12、復位的作用是什么?有幾種復位方法?復位后單片機的狀態(tài)如何?
答:復位是單片機的初始化操作。單片機在RST引腳產(chǎn)生兩個機器周期(即24個時鐘周期)以上的高電平即可實
現(xiàn)復位.主要的復位方法有上電自動復位和按鍵手動復位兩種.按鍵手動復位又分:按鍵電平復位和按鍵脈沖復位.
第三章指令系統(tǒng)
1、簡述下列名詞術語的基本概念:指令、指令系統(tǒng)、程序、匯編語言指令
答:指令:規(guī)定單片機進行某種操作的命令稱為指令.
指令系統(tǒng):單片機能夠執(zhí)行的各種指令的集合.
程序:一系列指令的有序集合稱為程序.
匯編語言指令:用助記符形式來表示機器指令。
2、80c51單片機有哪幾種尋址方式?這幾種尋址方式是如何尋址的?
答:共7種尋址方式,分別為:寄存器尋址,直接尋址,寄存器間接尋址,立即尋址,變址尋址,位尋址和相對尋
址.
寄存器尋址方式:由指令指出某一寄存器的內(nèi)容做為操作數(shù)。
直接尋址方式:指令中操作數(shù)直接以單元地址的形式給出.
寄存器間接尋址方式:寄存器間接尋址方式,寄存器中存放的則是操作數(shù)的地址,即操作數(shù)是通過寄存器間
接得到的.
立即尋址方式:操作數(shù)在指令中直接給出.
變址尋址方式:變址尋址是為了訪問程序存儲器中的數(shù)據(jù)和表格。MCS-51的變址尋址是以DPTR或PC作基址
寄存器,以累加器A作變址寄存器,并以兩者內(nèi)容相加形成的16位地址做為操作數(shù)地址,以達到訪問數(shù)據(jù)和表格
的目的。
位尋址方式:指對片內(nèi)RAM的位尋址區(qū)和某些可尋址的特殊功能寄存器進行位操作的尋址方式.
相對尋址方式:相對尋址方式是為解決程序轉移而專門設置的,為轉移指令所采用.
3、要訪問特殊功能寄存器和片外數(shù)據(jù)寄存器,應采用哪些尋址方式?
答:訪問特殊功能寄存器可以采用直接尋址、立即尋址、寄存器尋址和位尋址(針對可以進行位尋址的特殊功能寄
存器)方式.訪問片外數(shù)據(jù)存儲器可采用寄存器間接尋址方式.
4.80c51單片機的指令系統(tǒng)可以分為哪幾類?說明各指令的功能.
答:51單片機指令系統(tǒng)按功能可分為5類:
(1)數(shù)據(jù)傳送指令主要進行數(shù)據(jù)的傳送、交換等;
(2)算術運算指令主要進行基本的加減乘除運算;
(3)邏輯運算指令主要實現(xiàn)邏輯運算與移位運算;
(4)控制轉移指令主要是實現(xiàn)對程序流程的控制;
(5)位操作指令
5、外部數(shù)據(jù)傳送指令有哪幾條?有和區(qū)別?
答:外部數(shù)據(jù)傳送指令有讀指令和寫指令兩類,每類指令的尋址范圍不同,分別為:
讀外部存儲器指令:MOVXA,3Ri;尋址范圍為256字節(jié)
MOVXA,fflDPTR;尋址范圍為64K字節(jié)
寫外部存儲器指令:MOVXfflRi,A;尋址范圍為256字節(jié)
MOVXMPTR,A;尋址范圍為64K字節(jié)
6、在89S51片內(nèi)RAM中,已知(30H)-38H,(38H)-40H,(40H)-48H,(48H)-90H,請分別分析下段程序按序執(zhí)
行后的結果。
MOVA,40H;A=48H
MOVRO,A;R0=48H
MOVPl,#OFFH;P1=FFH
MOV4R0,30H;(48H)=38H
MOVDPTR,#1246H;DPTR=1246H
MOV4OH,38H;(4OH)=4OH
MOVRO,30H;R0=38H
MOV9OH,RO;(90H)=
MOV48H,#30H;(48H)=30H
MOVA,QRO;A=40H
MOVP2,Pl;P2=38H
7、略
8、DAA指令的作用是什么?怎樣使用?
答:對十進制BCD數(shù)作加法時進行調整,當結果的低4位A0~A3>9,或半進位AC=1,則A0~A3+6,否則不加;當
結果的高4位A4~A7>9,或進位CY=1,則A4-A7+6,否則不加;這條指令是在進行BCD碼加法運算時,跟在“ADD”
和“ADDC”指令之后,用來對BCD碼的加法運算結果自動進行修正,使其仍為BCD碼表示形式.
9、試編程將片外數(shù)據(jù)存儲器60H中的內(nèi)容傳送到片內(nèi)RAM54H單元中.
答:MOVRO,#60H
MOVXA,BRO
MOV54H,A
10、試編程將寄存器R7的內(nèi)容傳送到R1中去.
答:MOVA,R7
MOVRI,A
11、已知當前PC值為210H,請用兩種方法將程序存儲器2F0H中的常數(shù)送入累加器A中.
答:(1)以程序計數(shù)器PC作為基址寄存器
MOVA,#OEOH
MOVCA,fflA+PC
(2)以數(shù)據(jù)指針DPTR作為基址寄存器
MOVDPTR,#02F0H
MOVA,#00H
MOVCA,QA+DPTR
12、試說明下段程序中每條指令的作用,并分析當指令執(zhí)行完后,R0中的內(nèi)容是什么?
MOVRO,#0A7H;R0=A7H,立即數(shù)送寄存器RO
XCHA,RO;A=A7H,累加器A中的數(shù)據(jù)與R0中的數(shù)據(jù)進行交換
SWAPA;A=7AH,累加器A中的高低四位進行交換
XCHA,RO;R0=7AH,數(shù)據(jù)交換回R0
13、請用兩種方法實現(xiàn)累加器A與寄存器B的內(nèi)容交換。
答:(1)MOVRO,A
MOVA,B
MOVB,RO
(2)MOVRO,B
XCHA,RO
14、試編程將片外RAM中40H單元的內(nèi)容與RI的內(nèi)容交換。
答:MOVRO,#40H
MOVXA,QRO
XCHA,RI
MOVX向RO,A
15、已知:A=0C9H,B=8DH,CY-1.
執(zhí)行指令ADDCA,B結果如何?A=57H,CY=1,OV=1,AC=1,P=1
執(zhí)行指令SUBBA,B結果如何?A=3BH,CY=0,AC=1,OV=1
16、試編程將片外RAM中30H和31H單元中的內(nèi)容相乘,結果存放在32H(低位)和33H(高位)單元中。
答:MOVRO,#30H
MOVXA,QRO
MOVB,
INCRO
MOVXA,BO
MULAB
INCRO
MOVX?RO,A
MOVA,
INCRO
MOVX?R0,A
17、試用3種方法將累加器A中的無符號數(shù)乘2.
答:(1)MOVRO,A
ADDA,RO
(2)MOVB,#2
MULAB
(3)RLA
18、分析依次執(zhí)行下列指令的結果:
MOV30H,#0A4H;(30H)=A4H
MOVA,#0D6H;A=D6H
MOVRO,#30H;R0=30H
MOVR2,#47H;R2=47II
ANLA,R2;A=46H
ORLA,砒0;A=E6H
SWAPA;A=6EH
CPLA;A=91H
XRLA,#OFFH;A=6EH
ORL30H,A;(30H)=EEH
19、求下列指令執(zhí)行后,累加器A及PSW中進位CY、奇偶位P和溢出位0V的值。
(1)當A=5BH時;ADDA,#8CH
(2)當A=5BH時;ANLA,#7AH
(3)當A=5BH時;XRLA,#7FH
(4)當A=5BH,CY=1時;SUBBA,#0E8H
答:(1)A=E7H,CY=1,P=0,ov=o
(2)A=5AH,P=0
(3)A=24H,P=0
(4)A=72H,CY=1,P=0,OV=0
20、把累加器A中的低4位數(shù)據(jù)送到外部數(shù)據(jù)存儲器的2000H單元.
答:ANLA,#OFH
MOVDPTR,#2000H
MOVXo)DPTR,A
21、試說明指令CJNBBl,#7AH,10H的作用,若本指令地址為25OH,其轉移地址是多少?
答:指令作用:如果以R1內(nèi)容為地址的單元中的數(shù)據(jù)等于7AH,則程序順序執(zhí)行,否則轉移后繼續(xù)執(zhí)行。若本指令
地址為250H,則轉移地址為250H+03H+10H=263H。
22、將累加器A中的數(shù)據(jù)由0遞增,加到50,結果在累加器A中。
答:CLRA
MOVRO,#50
LI:INCA
DJNZRO,LI
23、試說明壓棧指令和彈棧指令的作用及執(zhí)行過程。
答:壓棧(入?;蜻M棧)指令的作用是將數(shù)據(jù)存入堆棧中,其執(zhí)行過程是先將堆棧指針SP的內(nèi)容加1,然后將直接
地址單元中的數(shù)據(jù)壓入SP指向的單元中。若數(shù)據(jù)已推入堆棧,則SP指向最后推入數(shù)據(jù)所在的存儲單元(即指向棧
頂)。
彈棧(出棧)指令的作用是將數(shù)據(jù)從堆棧中取出,其執(zhí)行過程為先將堆棧指針SP所指出單元的內(nèi)容送入直接
尋址單元中,然后將SP的內(nèi)容減1,此時SP指向新的棧頂。
24、下述程序執(zhí)行后,SP=?,A=?,B=?0
ORG2000H
MOVSP,#40H
MOVA,#3OH
LCALL250H;下條指令地址2008H送41H、42H,SP=42H
ADDA,#10H
MOVB,A;地址為200AH
LI:SJMPL1
ORG250H
MOVDPTR,#200AH
PUSHDPL;SP+1=43H,DPL-*(43H)
PUSHDPH;SP+1=44H,DP1I-*(44H)
RET;200AH->PC
答:上述程序執(zhí)行后,SP=42H,A=30H,B=30Ho
25、發(fā)光二極管點亮規(guī)律:先是第1和第8個亮,延時一段時間后,第2和第7個亮,延時后,再是第3和第6個
亮,延時后,最后是第4和第5個點亮,延時后循環(huán)。
26、若系統(tǒng)晶振頻率為6MHz,求子程序DELAY的延時時間,若想加長或縮短時間,應該怎樣修改?
答:DELAY:MOVR2,#0FAH
L1:MOVR3,#0FAH
L2:DJNZR3,L2
DJNZR2,LI
RET
總時間計算:T=4ps+(250x4ps+4ps)x250+4ps=251.008ms
估算:T=250x4psx250=250ms
若想加長延時時間,可以增加循環(huán)次數(shù)或再加一重循環(huán);
若想減小延時時間,可以減少循環(huán)次數(shù)或較少一重循環(huán)。
27、P1口連接8個共陽極連接的發(fā)光二極管,是編制燈亮移位程序。
答:MOVA,#OFEH
LI:MOVPl,A
RLA
LCALLDELAY;DELAY子程序同上題
SJMPLI
28、試編一程序,將外部數(shù)據(jù)存儲器2100H單元中的高4位置“1”,其余位清“0”。
答:MOVDPTR,#2100H
MOVXA,aJDPTR
ORLA,#OFOH
ANLA,#0F0H
MOVX0DPTR,A
29、試編程將片內(nèi)數(shù)據(jù)存儲器40H單元的第0為和第7位置1,其余取反.
答:MOVA,40H
CPLA
SETBACC.0
SETBACC.7
MOV40H,A
30、將A.5與80H位相與的結果,通過Pl.4輸出.
MOVC,80H
ANLC,ACC.5
MOVPL4,C
31、請用位操作指令,求下列邏輯方程。
(1)PI.7=ACC.0X(B.0+P2.1)+P32
MOVc,B.0
ORLC,P2.1
ANLC,ACC.0
ORLC,/P3.2
MOVPl.7,C
(2)PSW.5=P1.3xACC.2+B.5xPl.1
MOVC,Pl.3
ANLC,ACC.2
MOV20H,C
MOVC,B.5
ANLC,/Pl.1
ORLC,2OH
MOVPSW.5,C
(3)P2.3=Pl.5xBA+ACC.lxPl.0
MOVC,B.4
ANLC,/Pl.5
MOV20H,C
MOVC,Pl.0
ANLC,/ACC.7
ORLC,20H(今下一行)MOVP2.3,C
第四章匯編語言程序設計
1、編程將片內(nèi)40H~60H單元中的內(nèi)容送到以3000H為首的存儲區(qū)內(nèi)。
答:MOVRI,#40H
MOVR2,#21H
MOVDPTR,#3000H
LI:MOVA,0R1
MOVXolDPTR,A
INCRI
INCDPTR
DJNZR2,LI
2、編程計算下列算式的程序
(1)23H+45H+ABH+03H=
MOVA,#23H
ADDA,#45H
ADDA,#OABH
XCIIA,B;溢出處理
ADDCA,#0011
XCHA,B
ADDA,#03H;A中為結果低位,B中為高位
(2)CDH+15H-38H-46H=
MOVA,#OCDH
ADDA,#15H
SUBBA,#38H
SUBBA,#46H
(3)1234H+8347H=
MOVA,#34H
ADDA,#47H
MOV30H,A
MOVA,#12H
ADDCA,#83H
MOV31,A;30H存結果低位,31H存結果高位
(4)AB123H-43ADCH=
CLRC
MOVA,#23H
SUBBA,DCH
MOV30H,A
MOVA,#OB1H
SUBBA,#3AH
MOV31H,A
MOVA,#0AH
SUBBA,,#04H
MOV32H,A;30H為低位,32H為高位
3、設有兩個4位BCD碼,分別存放在23H、22H單元和33H、32H單元中,求他們的和,并送入43H、42H單元中(低
位在低字節(jié),高位在高字節(jié))。
答:MOVA,22H
ADDA,32H
MOV42H,A
MOVA,23H
ADDCA,33H
MOV43H,A
4、略
5、編程計算片內(nèi)RAM區(qū)50H~59H單元中數(shù)的平均值,結果存放在5AH中。
答:MOVRO,#8
MOVRI,#50H
MOVA,#00H
LI:ADDA,0R1
INCRI
DJNZRO,LI
MOVB,#8
DIVAB
MOV5AH,A
6、編寫計算下式的程序。設乘積和平方結果均小于255.a、b值分別存在片外3001H和3002H單元中,結果存于
片外3000H單元中。
25,a=b
(i)y=<axb<b
a+b,a>b
MOVDPTR,#300111
MOVXA,QDPTR
MOV30H,A;a暫存30H單元
INCDPL
MOVXA,tODPTR
CJNEA,30H,LI;是否a=b
MOVA,#25
SJMPSAVE
LI:JNCL2
MOVB,30H
MULAB
SJMPSAVE
L2:MOVB,A
MOVA,30H
DIVAB
SAVE:MOVDPTR,#3000H
MOVXtiJDPRT,A
(o+/?)2+10,(a+b)2<10
(2)y=,(a+6)2,(a+&)2=10
(?+Z?)2-10,(a+b)2>10
MOVDPTR,#3001H
MOVXA,0DPTR
MOV30H,A
INCDPTR
MOVXA,tiJDPTR
ADDA,30H
MOVB,A
MULAB;(a+b)
MOV31H,A
CJNEA,#10,LI
SJMPSAVE
LI:JCL2
CLRC
SUBBA,#10
SJMPSAVE
L2:ADDA,#10
SAVE:MOVDPTR,#3000H
MOVCoJDPTR,A
7、設有兩個長度均為15的數(shù)組,分別存放在以200H和210H為首地址的存儲區(qū)中,試編程求其對應項之和,結果
存放到以220H為首地址的存儲區(qū)中。
答:MOVDPH,#02H
MOVRI,#15
MOVR2,#00H;數(shù)組1首地址低位
MOVR3,#10H;數(shù)組2首地址低位
MOVR4,#20H;和首地址低位
MOVDPL,R2
MOVXA,④DPTR
MOVRI,A
MOVDPL,R3
MOVXA,QDPTR
ADDA,RI
MOVDPL,R4
MOVX0DTPR,A
INCR2
INCR3
INCR4
DJNZRI,LI
SJMP$
8、設有100個無符號數(shù),連續(xù)存放在以2000H為首地址的存儲區(qū)中,試編程統(tǒng)計正數(shù)、負數(shù)和零的個數(shù)。
答:MOV3OH,#00H;正數(shù)計數(shù)器
MOV31H,#00H;負數(shù)計數(shù)器
MOV32H,#00H;零計數(shù)器
MOVDPTR,#2000H
MOVRI,#100
L4:MOVXA,WPTR
INCDPTR
CJNEA,#0,LI
INC32H
SJMPL2
LI:JCL3
INC3OH
SJMPL2
L3:INC31H
L2:DJNZRI,L4
SJMP$
9、將片外數(shù)據(jù)存儲器地址為1000H~1030H的數(shù)據(jù)塊,全部搬遷到片內(nèi)RAM30H~60H中,并將原數(shù)據(jù)塊區(qū)域全部
清零.
答:M0VR0,#30H
MOVR2,#31H
MOVDPTR,#1000H
LP:MOVXA,向DPTR
MOV?RO,A
ANDA,#00H
MOVXQDPTR,A
INCR0
INCDPTR
DJNZR2,LP
SJMP$
10、試編寫一子程序,是RI、R0指向的兩個片外RAM連續(xù)單元中的高4位二進制數(shù),合并成一個字節(jié),裝入累加
器A中。已知R0指向低地址,并要求該單元高四位放在A中高四位.
答:MOVXA,0R1
ANLA,#OFOH
SWAPA
MOVR2,A
MOVXA,QRO
ANLA,#OFOH
ORLA,R2
11、試編程把以2040H為首地址的連續(xù)50個單元的無符號數(shù)按降序排列,存放到以3000H為首地址的存儲區(qū)中.
答:MOVR2,#50
MOVR3,#20H
MOVR4,#40H;源地址
MOVR5,#30H
MOVR6,#00H;目的地址
SEND:MOVDPH,R3;SEND將2040H數(shù)據(jù)塊移入3000H存儲區(qū)
MOVDPL,R4
MOVXA,5)DPTR
INCDPTR
MOVR3,DPH
MOVR4,DPL
MOVDPH,R5
MOVDPL,R6
MOVX0DPTR,A
INCDPTR
MOVR5,DPH
MOVR6,DPL
DJNZR2,SEND
MOVR2,#49;重復次數(shù)
CMP1:MOVDPTR,#3000H
MOVR3,#49;比較次數(shù)
CMP2:MOVXA,aJDPTR
MOVB,A
INCDPTR
MOVXA,WPTR
CJNEA,B,LI
LI:JCNOMOVE
MOV30H,A
CLRC
MOVA,DPL
SUBBA,#0111
MOVDPL,A
MOVA,30H
MOVXQDPTR,A
INCDPTR
MOVA,B
MOVXoJDPTR,A
NOMOVE:DJNZR3,CMP2;50個數(shù)重復一遍?
DJNZR2,CMP1;排序結束?
LJMP$
12、試編一查表程序,從首地址為2000H,長度為100的數(shù)據(jù)塊中找出ASCII碼為A,將其地址送到20A0H和20A1H
單元中.
答:MOVDPTR,#200011
MOVR2,#100
GO-ON:MOVXA,WDPTR
CJNEA,#41H,IFEND
MOVA,DPH
MOVB,DPL
MOVDPTR,#20A0H
MOVXoJDPTR,A
INCDPTR
XCHA,B
MOVXQDPTR,A
SJMPOVER
IFEND:INCDPTR
DJNZR2,GO-ON
OVER:SJMPOVER
13、設在200H~204H單元中,存放5個壓縮BCD碼,編程將他們轉換成ASCII碼,存放到以205H單元為首地址的
存儲區(qū).
答:MOVR2,#05H
MOVR3,#02H
MOVR4,#00H
MOVR5,#02H
MOVR6,#05H
CHLP:MOVDPH,R3
MOVDPL,R4
MOVXA,aJDPTR
INCDPTR
MOVR3,DPH
MOVR4,DPL
MOVB,A
SWAPA
ANLA,#0FH
ORLA,#30H
MOVDPH,R5
MOVDPL,R6
MOVX?DPTR,A
INCDPTR
MOVA,B
ANLA,#0FH
ORLA,#3OH
MOVXoJDPTR,A
MOVR5,DPH
MOVR6,DPL
DJNZR2,CHLP
14、有一無符號數(shù)據(jù)塊長度在30H單元中,其首地址為31H單元,求出數(shù)據(jù)塊中最大值,并存入40H中.
答:MOVRO,#31H
MOVRI,3OH
MOV40H,#00H
LOOP:MOVA,砒0
CJNEA,40H,LI
SJMPAGAIN
L1:JNCL2
SJMPAGAIN
L2:MOV40H,A
AGAIN:INCRO
DJNZRI,LOOP
SJMP$
15、略
16、在以2000H為首地址的存儲區(qū)內(nèi),存放20個用ASCII碼表示的0~9之間的數(shù),試編程,將它們轉換成BCD碼,
并以壓縮BCD碼的形式存在3000H~3009H單元中。
答:MOVR2,#10
MOVR3,#20H
MOVR4,#00H
MOVR5,#30H
MOVR6,#00H
LP:MOVDPH,R3
MOVDPL,R4
MOVXA,WDPTR
ANLA,#OFH
SWAPA
XCHA,B
INCDPTR
MOVXA,tODPTR
ANLA,#OFH
ORLA,B
INCDPTR
MOVR3,DPH
MOVR4,DPL
MOVDPH,R5
MOVDPL,R6
MOVX0DPTR,A
INCDPTR
MOVR5,DPH
MOVR6,DPL
DJNZR2,LP
SJMP$
17、試編程實現(xiàn)下列邏輯表達式功能。設PL7~PL0為8個變量的輸入端,而其中PL7又作為變量的輸出端。
;輸入端定義
XOEQUPl.0
XIEQUPl.1
X2EQUPl.2
X3EQUPl.3
X4EQUPl.4
X5EQUP1.5
X6EQUP1.6
X7EQUP1.7
(1)y=x0X]元+月+X4X5X6+X;
MOVC,XO
ANLC,XI
ANLC,/X2
ORLC,X3
MOVOOH,C
MOVC,X4
ANLC,X5
ANLC,X6
ORLC,/X7
ORLC,OOH
MOVPl.7,C
(2)r=+x2x3x4+x5x6x7
MOVC,XO
ANLC,XI
CPLC
MOVOOH,C
MOVC,X2
ANLC,X3
ANLC,X4
CPLC
MOV01H,C
MOVC,X5
ANLC,X6
ANLC,X7
CPLC
ORLC,01H
CPLC
ORLC,OOH
MOVPl.7,C
18、略
19、略
20、試編寫延時Is、lmin、lh子程序。
;單片機時鐘fosc=12MHz,計算為近似值
;1s延時子程序
DLY-1S:MOVRO,#10
L3:MOVRI,#200
L2:MOVR2,#250
LI:DJNZR2,LI
DJNZRI,L2
DJNZRO,L3
RET
;延時Imin
DLY-1M:MOVR3,#60
L4:LCALLDLY_1S
DJNZR3,L4
RET
;延時lh
DLY-1H:MOVR4,#60
L5:LCALLDLY_1M
DJNZR4,L5
RET
21、用程序實現(xiàn)c=a2+b2.設a、b均小于10,a存在31H單元中,b存在32H單元中,c存33H單元。
答:ORG1000H
SR:MOVA,31H
ACALLSQR
MOVRI,A
MOVA,32H
ACALLSQR
ADDA,RI
MOV33H,A
SJMP$
;求平方子程序如下(采用查平方表的方法)
SQR:INCA
MOVCA,3A+PC
RET
TABLE:DB0,1,4,9,16
DB25,36,49,64,81
END
22、如何實現(xiàn)將內(nèi)存單元40H-60H的數(shù)逐個對應傳到片外2540H~2560H單元中?
答:MOVR0,#4011
MOVDPTR,#254011
MOVR2,#21H
LI:MOVA,M0
MOVXQDPTR,A
INCR0
INCDPTR
DJNZR2,LI
SJMP$
23、參考21題24、參考21題25、參考實驗程序26、參考實驗程序
第五章定時/計數(shù)器
1、89s51單片機內(nèi)部有幾個定時/計數(shù)器,他們有哪些專用寄存器組成?
答:89s51單片機內(nèi)部有兩個16位定時/計數(shù)器,為定時器0(T0)和定時器1(T1)。在定時器/計數(shù)器的16位的
計數(shù)器是由兩個8位的專用寄存器THO、TLO,THETL1組成。
2、89s51單片機的定時/計數(shù)器有哪幾種工作方式,各有什么特點?
答:定時器/計數(shù)器有四種工作方式:方式0,方式1,方式2,方式3.其中,方式3只適用于T0。
以TO為例:①方式0,16位寄存器只用了13位,TLO的高三位未用。由THO的8位和TLO的低5位組成一個
13位計數(shù)器;②方式1,和方式0的工作相同,唯一的差別是THO和TLO組成一個16位計數(shù)器;③方式2,把TLO
配置成一個可以自動恢復初值的8位計數(shù)器,THO作為常數(shù)緩沖器.THO由軟件預置值.當TLO產(chǎn)生溢出時,一方
面使溢出標志TFO置1,同時把THO中的8位數(shù)據(jù)重新裝入TLO中;④方式3,將使TLO和THO成為兩個相互獨立
的8位計數(shù)器,TLO利用T0本身的一些控制,它的操作與方式0和方式1類似。而TII0被規(guī)定為只用作定時器功能,
對機器周期計數(shù),并借用了T1的控制位TR1和TF1。在這種情況下THO控制了T1的中斷。這時T1還可以設置為方
式0~2,用于任何不需要中斷控制的場合,或者用作串行口的波特率發(fā)生器-
3、定時/計數(shù)器用作定時方式時,其定時時間與哪些因素有關?作為計數(shù)時,對外界計數(shù)頻率有何限制?
答:定時/計數(shù)器作定時時,其計數(shù)脈沖由系統(tǒng)振蕩器產(chǎn)生的內(nèi)部時鐘信號12分頻后提供.定時時間與時鐘頻率和
定時初值有關。
定時/計數(shù)器作計數(shù)時,由于確認1次負跳變要花2個機器周期,即24個振蕩周期,因此外部輸入的計數(shù)脈沖
的最高頻率為系統(tǒng)振蕩器頻率的1/24。
4、當定時器T0用作方式3時,由
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 防用電課件教學課件
- 2024「銷售代理」合同標的與代理商責任義務
- 2024年度租賃合同標的及租賃期限的詳細約定
- 2024年度供應鏈管理服務合同協(xié)同操作與風險控制
- 2024年建筑工程項目安全協(xié)議
- 2024年度石油化工企業(yè)BIM模型設計與安全評估合同
- 2024年度園林綠化工程施工合同范例
- 2024標準勞務合同書3
- 2024年土地暫時使用協(xié)議
- 2024年度技術開發(fā)成果共享協(xié)議
- 市場主體遷移申請書
- 2023科室醫(yī)療質量、安全管理持續(xù)改進記錄本
- (完整word)大學西門子plcs7-1200考試復習習題
- 中考數(shù)學復習微專題:有理數(shù)運算中的錯解及對策
- DB11-972-2013保險營業(yè)場所風險等級與安全防范要求
- 高中政治部編版教材高考雙向細目表
- 輪扣式模板支撐架安全專項施工方案
- 酒店裝飾裝修工程驗收表
- 中國行業(yè)分類代碼表
- 社會組織協(xié)會換屆選舉會議主持詞
- 呼吸科(呼吸與危重癥醫(yī)學科)出科理論試題及答案
評論
0/150
提交評論