單片機(jī)應(yīng)用與實(shí)踐---練習(xí)題_第1頁(yè)
單片機(jī)應(yīng)用與實(shí)踐---練習(xí)題_第2頁(yè)
單片機(jī)應(yīng)用與實(shí)踐---練習(xí)題_第3頁(yè)
單片機(jī)應(yīng)用與實(shí)踐---練習(xí)題_第4頁(yè)
單片機(jī)應(yīng)用與實(shí)踐---練習(xí)題_第5頁(yè)
已閱讀5頁(yè),還剩31頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、練習(xí)題,答案僅供參考。題號(hào)有的不對(duì)的,自己再調(diào)整下。編程序時(shí),標(biāo)號(hào)對(duì)齊、程序行對(duì)齊,具體見程序。考試時(shí),不對(duì)齊扣到本題0分為止。編程題,另外加上第4章課件上的例子。* 請(qǐng)認(rèn)真看書,做題,做好復(fù)習(xí)!* 單片機(jī)應(yīng)用與實(shí)踐9執(zhí)行以下程序段MOV R0,# dataMOV A,R0RL AMOV R1,ARL ARL AADD A,R1MOV R0,A后,實(shí)現(xiàn)的功能是_把data單元的內(nèi)容乘以10_.*一 填空題(每空1分,共24分)1假定外部數(shù)據(jù)存儲(chǔ)器2000H單元的內(nèi)容為80H,0000H單元的內(nèi)容為90H,執(zhí)行下列指令后,累加器A中的內(nèi)容為_.。MOV P2,#20HMOV R0,#00HMOV

2、X A, R02假定(SP)=60H,(ACC)=30H,(B)=70H,執(zhí)行下列指令:PUSH ACCPUSH B后,SP的內(nèi)容為_.,61H單元的內(nèi)容為_.,62H單元的內(nèi)容為_.。3設(shè)A=01××××××B,×表示隨機(jī)狀態(tài),為1或0,執(zhí)行指令ORL A,#03H后A( 01××××11B )4假定(A)=0FFH,(R3)=0FH,(30H)=0F0H,(R0)=40H,(40H)=00H。執(zhí)行指令:INC AINC R3INC 30HINC R0后,累加器A的內(nèi)容為_., 40

3、H的內(nèi)容為_.。5在MCS51中PC和DPTR都用于提供地址,但PC是為訪問_存儲(chǔ)器提供地址,而DPTR是為訪問_存儲(chǔ)器提供地址。6MCS-51可提供和兩種存儲(chǔ)器、最大存儲(chǔ)空間_可達(dá)的兩個(gè)并行存儲(chǔ)器擴(kuò)展系統(tǒng)。7擴(kuò)展存儲(chǔ)器而構(gòu)造系統(tǒng)總線,應(yīng)以P0口的8位口線作為_線,以P2口的口線作為_線。8、設(shè)A=58H,執(zhí)行指令A(yù)DD A,#99H 后,A=_,C=_,再執(zhí)行指令DA A后A=_,C=_。參考答案1(80H)2(62H)(30H )( 70H )。3 (01××××11B )4(00H)( 01H )。5(程序)(數(shù)據(jù))6 (程序)和(數(shù)據(jù)) 、( 6

4、4K )7(低位地址/數(shù)據(jù)),(高位地址)8( 0F1H ), (0 ), (57H ),C=(1 )。1. 8031單片機(jī)復(fù)位后,R4所對(duì)應(yīng)的存儲(chǔ)單元的地址為_H。因上電時(shí)PSW=_H,這時(shí)當(dāng)前的工作寄存器區(qū)是第_組工作寄存器區(qū)。2. 在MCS-51中,PC和DPTR都用于提供地址指針,但PC是為了訪問_存儲(chǔ)器提供地址指針,而DPTR是為訪問_存儲(chǔ)器提供地址指針。3. 計(jì)算機(jī)三總線分別為:_總線;_總線;_總線。4. 在串行通訊中,幀格式為1個(gè)起始位,8個(gè)數(shù)據(jù)位和1個(gè)停止位的異步串行通信方式是方式_。5. 51單片機(jī)有兩個(gè)物理上獨(dú)立的接收、發(fā)送緩沖器SBUF;通過串行口發(fā)送數(shù)據(jù)時(shí),在程序中應(yīng)

5、使用:_指令;在接收數(shù)據(jù)時(shí),在程序中應(yīng)使用:_指令。6. 單片機(jī)與普通計(jì)算機(jī)的不同之處在于其將_、_和_三部分集成于一塊芯片上。7. 下列指令中有錯(cuò)誤的是_。(2分)A、MOV A,R4 B、MOV 20H,R4 C 、MOV R4,R3 D、MOV R4,R3 8. 8031復(fù)位后,PC與SP的值為_、_。9. 8051內(nèi)部有_個(gè)并行端口,P0口直接作為I/O端口使用時(shí),必須外接_;并行端口作輸入端口時(shí),必須先執(zhí)行_指令,然后執(zhí)行輸入指令,才能正確的讀入端口的狀態(tài)。10. 當(dāng)單片機(jī)接到外設(shè)的中斷申請(qǐng)時(shí),單片機(jī)響應(yīng)中斷,單片機(jī)將暫停_的執(zhí)行,轉(zhuǎn)去執(zhí)行_程序,執(zhí)行完_,再執(zhí)行_程序。11定時(shí)器/

6、計(jì)數(shù)器的工作方式3是指將_拆成兩個(gè)獨(dú)立的8位計(jì)數(shù)器。而另一個(gè)定時(shí)器/計(jì)數(shù)器此時(shí)通常只可作為_使用。12. 串行口每一次傳送_A_字符。A. 1位 B. 1串 C. 1幀 D. 1波特參考答案1. 04H 00 02. 程序數(shù)據(jù)3. 數(shù)據(jù)總線地址總線控制總線。4. 方式( 1 )。5. MOV SBUF , A MOV A,SBUF6. CPU MEMORY I/O7. C D 8. 00H, 07H9. 4 上拉電阻輸出高電平10. 當(dāng)前主程序中斷服務(wù)子程序中斷服務(wù)子程序中斷前執(zhí)行的主程序11T0 波特率發(fā)生器12. A*1、MCS-51單片機(jī)的存儲(chǔ)空間包括和,它們的可尋址范圍分別為_和_。2

7、、若PSW的內(nèi)容是10H,那么R3的地址是_。3、指令MOV A,R0中,R0中的內(nèi)容是指_。4、已知SP25H,PC=2345H,標(biāo)號(hào)Label的地址為3456H,問執(zhí)行LCALL Label指令后,堆棧指針SP=_,(26H)_,(27H)_,PC=_。5、當(dāng)晶振頻率為12MHZ時(shí),下面這個(gè)子程序延時(shí)時(shí)間為_。DL:MOVR6,#100DL1:MOVR7,#4DL2:MULABMULABDJNZR7,DL2DJNZR6,DL1RET6、決定程序執(zhí)行的順序是寄存器,該寄存器復(fù)位時(shí)的值為_。7、當(dāng)定時(shí)/計(jì)數(shù)器選定為定時(shí)器方式時(shí),是_對(duì)進(jìn)行計(jì)數(shù),選定為計(jì)數(shù)器方式時(shí),是對(duì)_進(jìn)行計(jì)數(shù)。8、51單片機(jī)

8、的中斷系統(tǒng)最多可以有_個(gè)嵌套。9、MCS-51的外部中斷的觸發(fā)方式有兩種,分別為_和_。10、串行通信根據(jù)通信的數(shù)據(jù)格式分有兩種方式,分別是_和_。參考答案1、程序存儲(chǔ)器,數(shù)據(jù)存儲(chǔ)器,64KB,64KB2、13H3、操作數(shù)的地址4、27H,48H,23H,3456H5、4.3ms6、PC,0000H7、片內(nèi)機(jī)器周期脈沖數(shù),片外脈沖8、29、電平觸發(fā),邊沿觸發(fā)10、同步方式,異步方式*1、在MCS51單片機(jī)中,如果采用24MHz晶振,1個(gè)機(jī)器周期為_。2、若A中的內(nèi)容為0E6H,那么,P標(biāo)志位的值為_。3、MCS51單片機(jī)程序存儲(chǔ)器的尋址范圍是由程序計(jì)數(shù)器PC的位數(shù)所決定的,因?yàn)镸CS51的PC

9、是16位的,因此其尋址的范圍為_KB。4、指令格式是由_和_所組成,也可能僅由_組成。7、假定A=55H,R3=0ABH,在執(zhí)行指令A(yù)NL A,R3后,A=_,R3=_。8、假定,SP=60H,A=30H,B=70H,執(zhí)行下列指令:PUSH BPUSH A后,SP的內(nèi)容為_,61H單元的內(nèi)容為_,62H單元的內(nèi)容為_。9、假定A=83H,(R0)=17H,(17H)=0B5H,執(zhí)行以下指令:ANL A,#17HORL 17H,AXRL A,R0CPL A后,A的內(nèi)容為_。10、12根地址線可選_個(gè)存儲(chǔ)單元,8KB存儲(chǔ)單元需要_根地址線。參考答案1、0.5us。2、若A中的內(nèi)容為0E6H,那么,

10、P標(biāo)志位的值為(1)。3、64。4、操作碼、操作數(shù)、操作碼。7、A=(01H ),R3=(0ABH)。8、SP的內(nèi)容為(62H),61H單元的內(nèi)容為(70H),62H單元的內(nèi)容為(30H)。9、A的內(nèi)容為(4BH )。10、4KB、13。*一、填空題(30分)(每空1分)1)8051系列單片機(jī)中,片內(nèi)數(shù)據(jù)存儲(chǔ)區(qū)一共分為3個(gè)區(qū),這3個(gè)區(qū)分別為:_;_;_。2)8K8位的存儲(chǔ)器共有_根地址線。3)3-8譯碼器74LS138在全譯碼尋址方式中,譯碼器的輸出端通常與單片機(jī)接口芯片的_端連接。4)當(dāng)單片機(jī)接到外設(shè)的中斷申請(qǐng)時(shí),單片機(jī)響應(yīng)中斷,單片機(jī)將暫停的執(zhí)行,轉(zhuǎn)去執(zhí)行程序,執(zhí)行完,再執(zhí)行程序。5)80

11、51單片機(jī)的中斷源有:,。6) 單片機(jī)P0口為_總線和_總線的復(fù)用端口,74LS373與P0口連接,其輸出線作為系統(tǒng)的_,74LS373的G端與單片機(jī)_連接。7) 當(dāng)單片機(jī)接到外設(shè)的中斷申請(qǐng)時(shí),單片機(jī)響應(yīng)中斷,單片機(jī)將暫停執(zhí)行,轉(zhuǎn)去執(zhí)行_程序,執(zhí)行完_,再執(zhí)行_程序。8) 已知程序執(zhí)行前有A=01H,SP=52H,(51H)=FFH,(52H)=FFH。下述程序執(zhí)行后:POP DPHPOP DPLMOV DPTR,#3000HRL AMOV B,AMOVC A,A+DPTRPUSH AMOV A,BINC AMOVC A,A+DPTRPUSH ARETORG 3000HDB 10H,80H,3

12、0H,80H,50H,80H請(qǐng)問:A=_,SP=_,(51H)=_,(52H)=_,PC=_。9) 如果DPTR=507BH,SP=32H,(30H)=50H,(31H)=5FH,(32H)=3CH,則執(zhí)行下列指令后:POP DPHPOP DPLPOP SP則:DPH=_,DPL=_,SP=_10) 假定A=83H,(R0)=17H,(17H)=34H,執(zhí)行以下指令:ANL A,#17HORL 17H,AXRL A,R0CPL A后,A的內(nèi)容為_。參考答案1、寄存器區(qū)、位尋址區(qū)、數(shù)據(jù)緩沖區(qū)2、133、片選端4、中斷服務(wù)程序,中斷服務(wù)程序,主程序4、外部0中斷,定時(shí)器T0中斷,外部1中斷,定時(shí)器

13、T1中斷,串行口通訊中斷5、數(shù)據(jù),地址,地址,ALE6、中斷服務(wù),中斷服務(wù),主7、30H,50H,80H,30H,3080H8、3CH,5FH,4FH9、0CBH1、MCS-51的復(fù)位條件是_。復(fù)位后,CPU從_單元開始執(zhí)行程序,PC=_,SP=_,PSW=_。2、在下列情況引腳應(yīng)接何種電平?(1)只有片內(nèi)ROM,=_;(2)只有片外ROM,=_;(3)有片內(nèi)、片外ROM,=_;(4)有片內(nèi)ROM但不用,而用片外ROM,=_。3、若PSW的內(nèi)容為18H,則工作寄存器R0的地址是_H。4、10根地址線可選個(gè)_存儲(chǔ)單元,32KB存儲(chǔ)單元需要_根地址線。5、若8031單片機(jī)的晶振頻率fosc12MH

14、z,則時(shí)鐘周期為_,狀態(tài)周期為_,機(jī)器周期為_,執(zhí)行MUL AB指令需要時(shí)間為_。6、8031單片機(jī)指令MOV是訪問_,最大范圍為_,MOVX是訪問_,最大范圍為_,MOVC是訪問_,最大范圍為_。7、指令POP B的源操作數(shù)是_,是_尋址方式,目的操作數(shù)是_,是_尋址方式。8、已知SP=25H,PC=4345H,(24H)=12H,(25H)=34H,(26H)56H,當(dāng)執(zhí)行RET指令后,SP=_,PC=_。9、當(dāng)定時(shí)/計(jì)數(shù)器選定為定時(shí)器方式時(shí),是對(duì)_進(jìn)行計(jì)數(shù),選定為計(jì)數(shù)器方式時(shí),是對(duì)_進(jìn)行計(jì)數(shù)。10、MCS-51單片機(jī)的串行口有種工作方式,其中方式0是_方式,它的波特率為_,用_引腳傳送數(shù)

15、據(jù),用_引腳輸出同步時(shí)鐘信號(hào)。參考答案1、在RST端保持至少2個(gè)機(jī)器周期的高電平,0000H,0000H,07H,00H2、1,0,1,03、18H4、1024,155、1/12us,1/6us,1us,4us6、內(nèi)RAM及FSR,256B,外RAM,64KB,ROM,64KB7、SP,寄存器間接尋址,B,寄存器8、23H,3412H9、片內(nèi)機(jī)器周期脈沖,片外脈沖10、4,同步移位輸入輸出,fosc/12,RXD,TXD*89C51的中斷分為_和_共兩個(gè)優(yōu)先級(jí)。位處理器也稱為_,它以狀態(tài)寄存器中的_為累加位。80C51內(nèi)部共有256個(gè)數(shù)據(jù)存儲(chǔ)單元,按其功能分為兩部分:_單元和_單元。MCS-5

16、1時(shí)序的定時(shí)單位共有四個(gè),從小到大依次是_、_、_和_。參考答案1. 高級(jí)、低級(jí)。2. 布爾處理器、進(jìn)位標(biāo)志位C。3. 低128、高128。4. 拍節(jié)、狀態(tài)、機(jī)器周期、指令周期。1MCS51單片機(jī)的P0P3口均是IO口,其中的P0口和P2口除了可以進(jìn)行_數(shù)據(jù)的輸入、輸出外,通常還用來構(gòu)建系統(tǒng)的_和_,在P0P3口中,_為真正的雙向口,_為準(zhǔn)雙向口。2MCS5l單片機(jī)的堆棧區(qū)只可設(shè)置在_。3MCS51單片機(jī)外部中斷請(qǐng)求信號(hào)有電平方式和_,在電平方式下,當(dāng)采集到INT0、INT1的有效信號(hào)為_時(shí),激活外部中斷。4定時(shí)器計(jì)數(shù)器的工作方式3是指_將拆成兩個(gè)獨(dú)立的8位計(jì)數(shù)器。而另一個(gè)定時(shí)器計(jì)數(shù)器此時(shí)通常

17、只可作為_使用。參考答案1并行 數(shù)據(jù)總線 地址總線 P0 P1P3 2片內(nèi)數(shù)據(jù)存儲(chǔ)區(qū)(器) 3脈沖方式低電平4定時(shí)器計(jì)數(shù)器0 串行口的波特率發(fā)生器1、單片機(jī)與普通計(jì)算機(jī)的不同之處在于其將_、_和_三部分集成于一塊芯片上。2、使用雙緩沖方式的D/A轉(zhuǎn)換器,可實(shí)現(xiàn)多路模擬信號(hào)_的輸出。3、通過堆棧操作實(shí)現(xiàn)子程序調(diào)用,首先就要把_的內(nèi)容入棧,以進(jìn)行斷點(diǎn)保護(hù)。調(diào)用返回時(shí),再進(jìn)行出棧保護(hù),把保護(hù)的斷點(diǎn)送回到_。4、在基址加變址尋址方式中,以作變址寄存器,以或作基址寄存器。5、假定累加器A中的內(nèi)容為40H,執(zhí)行指令1000H:MOVC A,A+PC后,把程序存儲(chǔ)器_單元的內(nèi)容送入累加器A中。6、在寄存器間

18、接尋址方式中,其“間接”體現(xiàn)在指令中寄存器的內(nèi)容不是操作數(shù),而是操作數(shù)的。7、假定A=83H,(R0)=17H,(17H)=0B5H,執(zhí)行以下指令:ANL A,#17HORL 17H,AXRL A,R0CPL A后,A的內(nèi)容為。8、已知程序執(zhí)行前有A=01H,SP=42H,(41H)=FFH,(42H)=FFH。下述程序執(zhí)行后:POP DPHPOP DPLMOV DPTR,#3000HRL AMOV B,AMOVC A,A+DPTRPUSH AMOV A,BINC AMOVC A,A+DPTRPUSH ARETORG 3000HDB 10H,80H,30H,80H,50H,80H請(qǐng)問:A=_,

19、SP=_,(41H)=_,(42H)=_。9、在存儲(chǔ)器擴(kuò)展中,無(wú)論是線選法還是譯碼法,最終都是為了擴(kuò)展芯片的_端提供信號(hào)。11、16KB RAM存儲(chǔ)器的首地址若為3000H,則末地址為_H。參考答案1、答:CPU、存儲(chǔ)器、I/O口2、答:同步3、答:PC、PC4、答:累加器A,DPTR、PC5、答:1041H6、答:地址7、答:A的內(nèi)容為 4BH 。8、答:A= 80H ,SP= 42H ,(41H)= 30H ,(42H)= 80H ,PC= 8030H 。9、答:片選。11、答: 6FFF H。二 編程題 (每小題8分,共16分)1. 設(shè)在內(nèi)RAM 40H開始的存儲(chǔ)區(qū)有若干個(gè)字符和數(shù)字,已

20、知最后一個(gè)為字符“$“(并且只有一個(gè),試統(tǒng)計(jì)這些字符數(shù)字的個(gè)數(shù),結(jié)果存入30H單元中。參考程序:ORG 0000HSTART:MOV R1,#40H;R1作為地址指針CLR A;A作為計(jì)數(shù)器LOOP:CJNE R1,#24H,NEXT;與“$”號(hào)比較,不等轉(zhuǎn)移SJMP NEXT1;找到“$“結(jié)束循環(huán)NEXT:INC A;計(jì)數(shù)器加1INC R1;指針加1SJMP LOOP;循環(huán)NEXT1:INC A;再加入”$”這個(gè)字符MOV 30H,A;存結(jié)果END2. 試編一程序,分別統(tǒng)計(jì)在內(nèi)部RAM的30H50H單元的數(shù)據(jù)區(qū)中奇數(shù)和偶數(shù)的個(gè)數(shù),并將奇數(shù)和偶數(shù)的個(gè)數(shù)分別存放在51H和52H單元中。參考程序:

21、ORG 0000HMOV 51H ,#0HMOV 52# ,#0HMOV R1 ,#30HMOV R0 ,#20HMOV A,R1INC R1ANL A , #01HJZ LOOP1INC 51HSJMP LOOP2LOOP1:INC 52HLOOP2:DJNZ R0 , LOOP3RET3用8XX51的P1口接8個(gè)LED發(fā)光二極管,由INT0接一消抖按鍵開關(guān),開始P1.0的LED亮,以后由INT0按鍵每中斷一次,下一個(gè)LED亮,順序下移,且每次只一個(gè)LED亮,周而復(fù)始。請(qǐng)編制程序。參考程序:ORG 0000H AJMP MAINORG 0003HRL A ;中斷服務(wù)MOV P1,ARETIM

22、AIN:MOV A,#0FFHMOV P1,A ;第一燈亮SETB EASETB EX0 ;允許INT0外部中斷SETB IT0 ;中斷觸發(fā)方式為下降沿觸發(fā)SJMP $ ;等待中斷4.設(shè)有100個(gè)有符號(hào)數(shù),連續(xù)存放在以2000H為首地址的存儲(chǔ)區(qū)中,試編程統(tǒng)計(jì)其中正數(shù)、負(fù)數(shù)、零的個(gè)數(shù)并分別存放在30H、31H、32H單元中。MOV 30H,#0MOV 31H,#0MOV 32H,#0MOV DPTR ,#2000HMOV R1,#100L4:MOVX A,DPTRINC DPTRCJNE A,#0,L1INC 32HSJMP L2L2:JC L3INC 30HSJMP L2L3:INC 31HL

23、2:DJNZ R1,L4SJMP $5.編程將內(nèi)部數(shù)據(jù)存儲(chǔ)器20H24H單元壓縮的BCD碼轉(zhuǎn)換成ASC存放在于25H開始的單元。參考程序:注意壓縮的BCD碼為一個(gè)字節(jié)占兩位BCD碼。ORG 0000HMOV R7,#05H ;R7為轉(zhuǎn)換字節(jié)數(shù)MOV R0,#20H ;R0為源操作數(shù)地址MOV R1,#25H ;R1為目的操作數(shù)地址NE:MOV A,R0ANL A,#0FH ;先取低位BCD碼ADD A,#30H ;將BCD碼轉(zhuǎn)換成ASC碼MOV R1,AINC R1MOV A,R0ANL A,#0F0H ;取高位BCD碼SWAP A ;半字節(jié)交換ADD A,#30H ;將高位BCD碼轉(zhuǎn)換成AS

24、C碼MOV R1,AINC R0 INC R1DJNZ R7,NESJMP $END編程題,另外加上第4章課件上的例子。三、程序解釋(每小題5分,共10分)1ORG 0200HMOV DPTR,#1000H MOV R0,#20H LOOP:MOVX A,DPTRMOV R0,AINC DPTRINC R0CJNE R0,#71H,LOOP SJMP $程序功能:把片外數(shù)據(jù)存儲(chǔ)器1000H1050H中的內(nèi)容傳送到片內(nèi)數(shù)據(jù)存儲(chǔ)器 20H70H中。2ORG 0200HMOV A,R0ANL A,#0FHMOV DPTR,#TABMOVC A,A+DPTRMOV R0,ASJMP $TAB:DB 3

25、0H,31H,32H,33H,34H,35H,36H,37H,38H,39H; 09的ASC碼DB 41H,42H,43H,44H,45H,46H ;AF的ASC碼程序功能:利用查表的方法實(shí)現(xiàn)RO中的十六進(jìn)制數(shù)轉(zhuǎn)換為ASC碼對(duì)每小題程序中劃線的指令含義(或指令作用)進(jìn)行解釋,并說明程序的作用。*1. 程序解釋 ORG 100HMOV A,R0 ;R0的內(nèi)容送A ANL A,#0FHMOV R1,A MOV A,R0SWAP A ;A的內(nèi)容高低4位交換 ANL A,#0FHMOV R2,A SJMP $ ;等待 END該程序的作用是:將原R0中數(shù)據(jù)按照高低4位分成兩個(gè)字節(jié),低位字節(jié)保存在R1中,

26、高位字節(jié)保存到R2中。2. 程序解釋 ORG 30HMOV R0,#data1 ; data1送R0 MOV R1,#data2MOVR2,#2CLR CLOOP: MOVA,R0SUBB A,R1 ;(A)-(C)-(R1)A MOV R0,AINC R0INC R1DJNZR2,LOOP ;(R2)-1不等于零,跳LOOP處SJMP $END該程序的作用是:將data1中的雙字節(jié)數(shù)據(jù)減去data2中的雙字節(jié)數(shù)據(jù),結(jié)果保存到data1中3. 程序解釋 ORG 30HVARDATA 30HFUNCDATA 31HMOV A,VAR ;30單元的內(nèi)容送AJZ DONE ;A為零轉(zhuǎn)移JNB ACC

27、.7,POSI ;A的最高位為0(正數(shù))轉(zhuǎn)移MOV A,#0FFH ;提示:0FFH表示-1SJMP DONEPOSI:MOV A, #01HDONE:MOV FUNC,ASJMP $END該程序的作用是:判斷30H單元中的內(nèi)容,結(jié)果放在31H單元中。大于0放1,小于0放-1,等于零放0。 4. 程序解釋 ORG 100HMOV A, R3 RL A ;A左循環(huán)一位(即乘2)MOV DPTR,#BRTAB ;絕對(duì)轉(zhuǎn)移地址表起始地址送DPTR JMP A+DPTR ;(PC)=(A)+(DPTR) BRTAB:AJMPROUT000AJMPROUT001AJMPROUT002AJMPROUT12

28、7END該程序的作用是:本程序完成128分支轉(zhuǎn)移操作,根據(jù)R3中的數(shù)值轉(zhuǎn)移到相應(yīng)的128個(gè)分支程序中。5. 程序解釋 ORG 0030H MOV R0, #22H ; 立即數(shù)22H送R0 MOV R0, #00H INC R0 ; R0中的內(nèi)容加1 MOV R0, #01H INC R0MOV R0, #02H ; 02H送24H單元 SJMP $END該程序的作用是:向單片機(jī)內(nèi)部RAM的22H,23H,24H單元分別送數(shù)據(jù)00,01,02。 6. 程序解釋 ORG 0030H MOV A, 20H MOV B, 21H DIV AB ; A除以B MOV 31H, A ; 商送30H單元 I

29、MOV 31H,B ; 余數(shù)送31H單元SJMP$END該程序的作用是:將20H單元中有一個(gè)二進(jìn)制數(shù)除以21H單元中二進(jìn)制數(shù),商保存到30H單元,余數(shù)保存到31H。7. 程序解釋CHENGJIDATA 1000HGRADADATA20HGRADB DATA 21H MOVGRADA,#00HMOV GRADB,#00H MOVR2,#100 MOVDPTR,#CHENGJI ;1000H送DPTR LOOP:MOVXA,DPTRCJNEA,#60,LOOP1 LOOP1: JNC NEXT1INC GRADB ;21H單元的內(nèi)容加1 SJMP NEXTNEXT1: INC GRADANEXT:

30、 INC DPTRDJNZ R2,LOOP ;(R2)-1R2 不為零,轉(zhuǎn)移 SJMP $END該程序的作用是 本程序完成對(duì)100個(gè)數(shù)(如100個(gè)學(xué)生成績(jī))的過濾統(tǒng)計(jì),成績(jī)?cè)?0以上的學(xué)生統(tǒng)計(jì)到GRADA,<60的學(xué)生統(tǒng)計(jì)到GRADB。8. 程序解釋LEN DATA 20HSUM DATA 21H BLOCK DATA 22HCLRA ;A清0 MOV R2,LEN MOV R1,#BLOCK LOOP:ADDA,R1 ;(A)+(R1)A INC R1CHECK:DJNZ R2,LOOP ;LEN個(gè)單元未加完,繼續(xù) MOV SUM,A SJMP $ END該程序的作用是:完成BLOCK

31、單元開始的LEN單元中數(shù)據(jù)個(gè)數(shù)的累加,累加結(jié)果保存到SUM單元中。 9. 程序解釋XXDATA 40HYY DATA41HMOVA,XX JZ DONE MOVR0,#0FFH ;提示:0FFH表示-1 JNB ACC.7,NEG ;若A< 0,則轉(zhuǎn)向NEGMOVR0,#01H ; 01送R0 NEG:MOV A, R0DONE:MOV YY,A ;(A)送41H單元 SJMP$ END該程序的作用是:判斷40H單元中的內(nèi)容,結(jié)果放在41H單元中。大于0放1,小于0放-1,等于0放0。 10. 程序解釋ONEDATA 30HTWO DATA 31H;TWO地址定義為31HMAXDATA

32、32HCLRC;C清零MOV A,ONESUBB A,TWO;(A)-(31H)結(jié)果送AJNC XMAXYMAX:MOVA,TWOSJMPDONEXMAX:MOVA,ONEDONE:MOVMAX,A該程序的作用是:本程序完成ONE和TWO的兩個(gè)單元中的數(shù)的比較,大數(shù)存入MAX單元中。 11. 程序解釋BLOCK1 DATA 20HBLOCK2 DATA 40H MOV R0,#BLOCK1 MOV R1,#BLOCK2 MOV R2,#03 CLR CLOOP: MOV A,R0 ;被加數(shù)送A ADDC A,R1 ;帶進(jìn)位加法 MOV R0,A ;和送(R0) INC R0 INC R1 DJ

33、NZ R2,LOOP1 SJMP $ END該程序的作用是:內(nèi)部RAM中BLOCK1(20H)開始的三字節(jié)數(shù)與BLOCK2(40H)開始的兩個(gè)三字節(jié)數(shù)相加,和數(shù)存放到BLOCK1開始的單元。 12. 程序解釋SHIFT:MOV DPTR,#TABJMOV A,R2RL A ;A乘2ADD A,R2JMP A+DPTR;跳轉(zhuǎn)到(A)+(DPTR)PCTABJ:LJMP PRG0;跳轉(zhuǎn)到PRG0 LJMP PRG1LJMP PRGN該程序的作用是:根據(jù)內(nèi)部RAM中R2數(shù)據(jù)轉(zhuǎn)向不同的子程序,R2=0轉(zhuǎn)PRG0,R2=1轉(zhuǎn)PRG1, R2=N轉(zhuǎn)PRGN 13. 程序解釋START:CLR AMOV R

34、2,#10 MOV R1,#21H ;21H送R1 NEXT: ADD A,R1 ;(A)+(R1)A INC R1 DJNZ R2,NEXT ;未加完,跳轉(zhuǎn) MOV22H,A SJMP $ END該程序的作用是:完成21H單元開始的10個(gè)數(shù)據(jù)塊的累加,結(jié)果保存到22H單元。14. 程序解釋LEN DATA 20HMAX DATA 21H ADDR DATA 30H MOV MAX,#00H MOV R0,#ADDR LOOP: MOV A,R0 CJNE A,MAX,NEXT1 ;(A)與(MAX)比較,不等去NEXTNEXT1: JC NEXT ;C=1 去NEXT MOV MAX,ANE

35、XT: INC R0 ;R0內(nèi)容加1 DJNZ LEN,LOOP SJMP $ END該程序的作用是:內(nèi)部RAM中ADDR(30H)開始的x個(gè)數(shù)據(jù)的比較,將最大的數(shù)字送MAX單元。x由LEN(20H)單元給出。 15. 程序解釋 MOV A,R0ANL A,#0FH ;0FH與A相與,結(jié)果送A MOV DPTR,#ASCTABMOVC A,A+DPTR ;查表 MOV R0,A ; 查表結(jié)果存入R0 SJMP $ASCTAB:DB 0, 1, 2, 3, 4 DB5, 6, 7, 8, 9 DB A, B, C, D, E , F END該程序的作用是:將R0中低4位的0F的十六進(jìn)制數(shù)據(jù)轉(zhuǎn)換成

36、ASCTAB中的編碼存放到R0中。16. 程序解釋 ORG 100HMERG:MOVX A,R0 ; 讀片外RAM第一字節(jié)ANL A,#0FHSWAP A ;高低4位相互交換 MOV B,A INC R0MOVX A,R0 ANL A,#0FHORL A,B ;A或B, 結(jié)果送A DEC R0 MOVX R0,A SJMP $ END該程序的作用是:將R0指向的兩個(gè)字節(jié)的低4位和并為一個(gè)字節(jié),保存到原R0指向的存儲(chǔ)單元。 17. 程序解釋START:MOV DPTR,#DTATABMOVA,R4 ;(R4)A ADD A,DPL ;(DPL)+(A)A MOVDPL,ACLR A ;清AADD

37、CA,DPHMOVDPH,A CLR A MOVCA,A+DPTR MOVR5,A RETDTATAB: DB ;元素表格,高字節(jié)在前 DB END該程序的作用是:根據(jù)R4中的內(nèi)容(元素序號(hào))在DTATAB表格中查表,將查表得到的數(shù)據(jù)存入R5中。18. 程序解釋START:MOV A, R0ACALL SQR ;調(diào)用子程SQR MOV R2,AMOV A, R1 ACALL SQRADD A,R2 ;(R2)+(A)A MOV R2,A SJMP $SQR: ADD A,#01HMOVC A,A+PC ;查平方表 RETSQRTAB:DB 0,1,4,9,16 ;平方表 DB 25,36,49

38、,64,81 END該程序的作用是:將R0和R1中的兩個(gè)個(gè)位數(shù)進(jìn)行平方元算,然后相加,和存入R2中。19. 程序解釋MOV R2,#0AHMOV R0,#50HCLR ALOOP: MOV R0,A ;(A)(R0) INC R0DJNZ R2,LOOP ;(R2)-1不等于0,跳轉(zhuǎn) RET ;子程序返回 END 該程序的作用是: 將50H59H單元置0 20. 程序解釋CONT:MOV R0, #10 ;10送R0 MOV 31H,#00HMOV R1,#01HCLOP:MOV A,R1CLR CRLC A ;乘2 ADD A,31H ;(A)+(31H)結(jié)果送A MOV 31H,A INC

39、 R1 DJNZ R0,CLOPRETEND該程序的作用是: 將110十個(gè)數(shù)乘2后再累加,結(jié)果送31H單元。 21. 程序解釋DLAY:MOV R7,#02H ;02H送R7 DL:MOVR6,#0FFHDL1:DJNZ R6,DL1 ;(R6)-1不為零轉(zhuǎn)移。DJNZ R7,DL RETEND ;程序結(jié)束偽指令 該程序的作用是:利用R6,R7實(shí)現(xiàn)雙循環(huán)延時(shí)子程序22. 程序解釋MATH DATA 1000H PASS DATA 20HNOPASS DATA 21H MOV PASS,#00HMOV NOPASS,#00H MOV R2,#0C8HMOV DPTR,#MATHLOOP:MOVX A, DPTR ;片外單元(DPTR)ACJNE A,#60,LOOP1 ;

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論