版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
填空題MCS-51的P0口作為輸出端口時(shí),每位能夠驅(qū)動(dòng)8個(gè)LSTTL負(fù)載。MCS-51有四個(gè)并行I/O口,其中p1~p3是準(zhǔn)雙向口,所以由輸出轉(zhuǎn)輸入時(shí)必須寫入1。MCS-51有四組工作寄存器,他們的地址范圍是00H~1FHMCS-51片內(nèi)20H—2FH范圍內(nèi)的數(shù)據(jù)存儲(chǔ)器,既可以字節(jié)尋址又可以位尋址。若用傳送指令訪問MCS-51的程序存儲(chǔ)器,它的指令是MOVC.若用傳送指令訪問MCS-51的片內(nèi)數(shù)據(jù)存儲(chǔ)器,它的指令是MOV.指令是通知計(jì)算機(jī)完成某種操作的命令匯編語言中可以使用偽指令,它不是真正的指令,只是用來對(duì)匯編過程進(jìn)行某種控制.MCS-51串行接口有四種工作方式,可以在初始化程序中用軟件填寫SCON特殊功能寄存器加以設(shè)定。MCS-51有5個(gè)中斷源,有兩個(gè)中斷優(yōu)先級(jí),優(yōu)先級(jí)由軟件填寫特殊功能寄存器IP加以設(shè)定。累加器A=80H,執(zhí)行完指令A(yù)DDA,#83后,進(jìn)位位C=1_.執(zhí)行完指令A(yù)NLA,#0FH后,累加器的高四位=0000.累加器A=7EH,(20H)=#04H,執(zhí)行完ADDA,20H后PSW.0=_0.ORLA,#0F0H是將A的高四位置1,而低四位不變.設(shè)DPTR=2000H,(A)=80H,則MOVCA,@A+DPTR的操作數(shù)的實(shí)際地址為2080H_一個(gè)十進(jìn)制數(shù)一47用8位二進(jìn)制補(bǔ)碼表示為11010001B_單片機(jī)中最常用的字符信息編碼是ASCⅡ碼要串口為10位UART,工作方式應(yīng)選為方式1用串口擴(kuò)并口時(shí),串行接口的工作方式應(yīng)選為方式方式0在串行通信中.有數(shù)據(jù)傳送方向單工,_半雙工,全雙工三種方式。一個(gè)機(jī)器周期=12節(jié)拍、一個(gè)機(jī)器周期=l2個(gè)振蕩周期,一個(gè)振蕩周期=1節(jié)拍。8051在物理上有4個(gè)獨(dú)立的存儲(chǔ)器空間。外部中斷INT1的入口地址為0013H8051含4KB掩膜ROM,8751是EPROM型,內(nèi)含4KBEPROM,8031是無型號(hào)MCS一51中,TO中斷服務(wù)程序入口地址為000BH.執(zhí)行當(dāng)前指令后PC內(nèi)容為下一條將要讀取的指令碼首地址MOVC,20H源尋址方式為位尋址INC不影響CY位。指令LCALL37B0H,首地址在2000H,所完成的操作是2003H_入棧,37B0HPCMOVX A,@DPTR的源操作數(shù)尋址方式為寄存器間接尋址8051的中斷有_2_個(gè)優(yōu)先級(jí)。8051中斷嵌套最多2級(jí)。外中斷請(qǐng)求標(biāo)志位是IE0和IE1。MCS-51單片機(jī)片內(nèi)RAM的寄存器區(qū)共有個(gè)32單元,分為_4_組寄存器,每組_8_個(gè)單元,以_R7~R0_作為寄存器名稱。單片機(jī)系統(tǒng)復(fù)位后,PSW=00H,因此片內(nèi)RAM寄存區(qū)的當(dāng)前寄存器是第_0_組,8個(gè)寄存器的單元地址為_00H_----_07H_.在MCS-51中PC和DPTR都用于提供地址,但PC是為訪問程序_存儲(chǔ)器提供地址,而DPTR是為訪問_數(shù)據(jù)存儲(chǔ)器提供地址。在位操作中,能起到與字節(jié)操作中累加器作用的是CY累加器A中存放著一個(gè)其值小于或等于127的8位無符號(hào)數(shù),CY清“0”后執(zhí)行RLCA指令,則A中數(shù)變?yōu)樵瓉淼?倍。計(jì)算機(jī)的數(shù)據(jù)傳送有兩種方式,即并行方式和串行方式,其中具有成本低特點(diǎn)的是串行數(shù)據(jù)傳送。異步串行數(shù)據(jù)通信的幀格式由__起始_位、數(shù)據(jù)_位、_奇偶校驗(yàn)位_和停止位位組成。異步串行數(shù)據(jù)通信有單工、全雙工、和半雙工共三種傳送方向形式。使用定時(shí)器T1設(shè)置串行通信的波特率時(shí),應(yīng)把定時(shí)器TI設(shè)定為自動(dòng)重裝載工作模式。假定(A)=56,(R5)=67。執(zhí)行指令:ADDA,R5DAA后,累加器A的內(nèi)容為00100011B,CY的內(nèi)容為144.假定(A)=0FH,(R7)=19H,(30H)=00H.(R1)=40H,(40H)=0FFH。執(zhí)行指令:DECADECR7 DEC30H EEC@R1后,累加器A的內(nèi)容為0EH_,R7的內(nèi)容為18H_30H的內(nèi)容為0FFH,40H的內(nèi)容為0FEH45.假定(A)=50H,(B)=0A0H。執(zhí)行指令:MUL AB后,寄存器B的內(nèi)容為32H,累加器A00H的內(nèi)容為,CY的內(nèi)容為0,OV的內(nèi)容為_146.假定(A)=0FBH,(B)=12H。執(zhí)行指令:DIVAB后.累加器A的內(nèi)容為0DH,寄存器B的內(nèi)容為11H,CY的內(nèi)容為0,OV的內(nèi)容為047.假定(A)=0C5H。執(zhí)行指令:SWAP A后.累加器A的內(nèi)容為5CH48.DI'TR是MCS-51中惟-一個(gè)16位寄存器,在程序中常用來作為MOVC指令訪問程序存儲(chǔ)器的_基址寄存器_使用。49.堆棧設(shè)在片內(nèi)數(shù)據(jù)_存儲(chǔ)區(qū)、程序存放在_程序_存儲(chǔ)區(qū),外部I/O接口設(shè)在片外數(shù)據(jù)存儲(chǔ)區(qū),中斷服務(wù)程序存放在程序存儲(chǔ)區(qū)。50.若單片機(jī)使用頻率為6MHz的晶振,那么狀態(tài)周期為1/3μs、機(jī)器周期2μs、指令周期為2μs~8μs。51.復(fù)位時(shí)A=0,PSW=0,SP=07H,P0~P3=FFH單項(xiàng)選擇題1.在中斷服務(wù)程序中,至少應(yīng)有一條(D)傳送指令,(B)轉(zhuǎn)移指令,(C)加法指令,(D)中斷返回指令2.當(dāng)MCS一51復(fù)位時(shí),下面說法正確的是(A)。(A)PC=0000H,(B)SP=00H,(C)SBUF=00H(D)(30H)=00H50.可以為訪問程序存儲(chǔ)器提供或構(gòu)成地址的有(C)。(A)只有程序計(jì)數(shù)器PC(B)只有PC和累加器A(C)只有PC,A和數(shù)據(jù)指針DPTR(D)PC,A,DPTR和堆棧指針SP簡(jiǎn)答題什么是指令系統(tǒng)?答:計(jì)算機(jī)所能執(zhí)行的全部指令的集合什么是指令?答:是指示計(jì)算機(jī)執(zhí)行某些操作的命令什么是匯編語言?答:采用助記符表示的指令什么是尋址方式?答:就是找到存放操作數(shù)的地址,并把操作數(shù)提取出來的方法,即尋找操作數(shù)或者是操作數(shù)地址的方法什么是堆棧?答:是一種執(zhí)行“后進(jìn)先出”算法的數(shù)據(jù)結(jié)構(gòu)什么是指令周期?答:取出并執(zhí)行一條指令的時(shí)間串行數(shù)據(jù)傳送的主要優(yōu)點(diǎn)和用途是什么?答:串行數(shù)據(jù)傳送是將數(shù)據(jù)按位進(jìn)行傳送的方式。其主要優(yōu)點(diǎn)是所需的傳送線根數(shù)少(單向傳送只需一根數(shù)據(jù)線、雙向僅需兩根),對(duì)于遠(yuǎn)距離數(shù)據(jù)傳送的情況,采用串行方式是比較經(jīng)擠的?!に源蟹绞街饕糜谟?jì)算機(jī)與遠(yuǎn)程終端之間的數(shù)據(jù)傳送。MCS一51指令集中有無“程序結(jié)束”指令?怎樣實(shí)現(xiàn)“程序結(jié)束”功能?答:沒有這樣的指令。但實(shí)現(xiàn)"程序結(jié)束"至少可以借助4種辦法:=1\*GB3①用原地踏步指令SJMP$死循環(huán);=2\*GB3②在最后一條指令后面設(shè)斷點(diǎn),用斷點(diǎn)執(zhí)行方式運(yùn)行程序;=3\*GB3③用單步方式執(zhí)行程序;=4\*GB3④在末條指令之后附加一條LJMP0000H,由軟件返回監(jiān)控狀態(tài)。中斷服務(wù)子程序與普通子程序有哪些異同之處?答:相同點(diǎn):都是讓CPU從主程序轉(zhuǎn)去執(zhí)行子程序,執(zhí)行完畢后又返回主程序。不同點(diǎn):中斷服務(wù)子程序是隨機(jī)執(zhí)行的,而普通子程序是預(yù)先安排好的;中斷服務(wù)子程序以RETI結(jié)束,而一般子程序以RET結(jié)束。RETI除了將斷點(diǎn)彈回PC動(dòng)作之外,還要清除對(duì)應(yīng)的中斷優(yōu)先標(biāo)志位(片內(nèi)不可尋址的觸發(fā)器),以便新的中斷請(qǐng)求能被響應(yīng)。說明DAA指令的用法答:DAA為十進(jìn)制調(diào)整指令。在進(jìn)行BCD數(shù)加法運(yùn)算時(shí),該指令要跟在加法指令后面,對(duì)A的內(nèi)容進(jìn)行十進(jìn)制調(diào)整。8051有幾種尋址方式?各涉及哪些存儲(chǔ)器空間?答:立即尋址(程序寄存器);直接尋址(內(nèi)部RAM和特殊功能寄存器);寄存器尋址();寄存器間接尋址(內(nèi)部RAM);相對(duì)尋址(程序寄存器);變址尋址(程序、數(shù)據(jù)寄存器);位尋址(內(nèi)部RAM和特殊功能寄存器的位地址空間)8051響應(yīng)中斷的條件是什么?CPU響應(yīng)中斷后,CPU要進(jìn)行哪些操作?不同的中斷源的中斷入口地址是多少?答:(l)CPU響應(yīng)中斷的條件如下:=1\*GB3①首先要有中斷源發(fā)出有效的中斷申請(qǐng);=2\*GB3②CPU中斷是開放的,即中斷總允許位EA=l,CPU允許所有中斷源申請(qǐng)中斷;=3\*GB3③申請(qǐng)中斷的中斷源的中斷允許位為1,即此中斷源可以向CPU申請(qǐng)中斷。以上是CPU響應(yīng)中斷的基本條件。如果上述條件滿足,則CPU一般會(huì)響應(yīng)中斷。但是,若有下列任何一種情況存在,則中斷響應(yīng)會(huì)被阻止。=1\*GB3①CPU正處在為一個(gè)同級(jí)或高級(jí)的中斷服務(wù)中。=2\*GB3②現(xiàn)行機(jī)器周期不是所執(zhí)行的指令的最后一個(gè)機(jī)器周期。作此限制的目的在于便當(dāng)前指令執(zhí)行完畢后,才能進(jìn)行中斷響應(yīng),以確保當(dāng)前指令的完整執(zhí)行。=3\*GB3③當(dāng)前指令是返回指令(RET、RETI)或訪問IE、IP的指令。因?yàn)榘碝CS-51中斷系統(tǒng)的特性規(guī)定,在執(zhí)行完這些指令之后,還應(yīng)再繼續(xù)執(zhí)行一條指令,然后才能響應(yīng)中斷。若存在上述任何一種情況,CPU將丟棄中斷查詢結(jié)果;否則,將在緊接著的下一個(gè)機(jī)器周期內(nèi)執(zhí)行中斷查詢結(jié)果,響應(yīng)中斷。(2)CPU響應(yīng)中斷后,保護(hù)斷點(diǎn),硬件自動(dòng)將(PC)→堆棧,尋找申斷源,中斷矢量→PC,程序轉(zhuǎn)向中斷服務(wù)程序入口地址。(3)INT0=0003H,T0=000BH,INT1=0013H,Tl=00lBH,串行接口=0023H。單片機(jī)對(duì)中斷優(yōu)先級(jí)的處理原則是什么?答:(1)低級(jí)不能打斷高級(jí),高級(jí)能夠打斷低級(jí);(2)一個(gè)中斷已被響應(yīng),同級(jí)的被禁止;(3)同級(jí),按查詢順序,INT0→T0→INT1→Tl→串行接口。80C'51的外部中斷有哪兩種觸發(fā)方式?它們對(duì)觸發(fā)脈沖或電平有什么要求?答:(1)有電平觸發(fā)和脈沖觸發(fā)。(2)電平方式是低電平有效。只要單片機(jī)在中斷請(qǐng)求引入端INT0和INT1上采樣到低電平時(shí),就激活外部中斷。脈沖方式則是脈沖的下跳G有效。這種方式下,在兩個(gè)相鄰機(jī)器周期對(duì)中斷請(qǐng)求引入端進(jìn)行采樣中,如前一次為高,后一次為低,即為有效中斷請(qǐng)求。因此在這種中斷請(qǐng)求信號(hào)方式下,中斷請(qǐng)求信號(hào)的高電平狀態(tài)和低電平狀態(tài)都應(yīng)至少維持一個(gè)周期以確保電平變化能被單片機(jī)采樣到。單片機(jī)怎樣管理中斷?怎樣開放和禁止中斷?怎樣設(shè)置優(yōu)先級(jí)?答:(1)由中斷源提出中斷,再由中斷控制端決定是否中斷,再按設(shè)定好的優(yōu)先級(jí)的順序響應(yīng)中斷。如同一級(jí)優(yōu)先級(jí)的中斷按:外部中斷0,定時(shí)中斷0,外部中斷1,定時(shí)中斷1,串行中斷。中斷后如果是:脈沖觸發(fā),TEl(0)被清0;電平觸發(fā),IEl(0)不被清零,要用軟件清0。(2)它由中斷允許寄存器IE控制:如開放中斷EA必須為1,再使要求中斷的申斷源的中斷允許位為1:要禁止中斷,EA=0即可。(3)由IP控制,1為高級(jí),0為低級(jí),PS為串行中斷優(yōu)先級(jí),PTl(0)為定時(shí)中斷1(0)優(yōu)先級(jí),PXl(0)外部中斷1(0)優(yōu)先級(jí)。使哪個(gè)中斷源為優(yōu)先級(jí),就置哪個(gè)優(yōu)先設(shè)定位為1。8051單片機(jī)定時(shí)器一計(jì)數(shù)器作定時(shí)和計(jì)算用時(shí),其計(jì)數(shù)脈沖分別由誰提供?答:作定時(shí)器時(shí):計(jì)數(shù)脈沖來自單片機(jī)內(nèi)部,其頻率為振蕩頻率的1/12。作計(jì)數(shù)器時(shí):計(jì)數(shù)脈沖來自單片機(jī)的外部,即P3.4(T0)和P3.5(Tl)兩個(gè)引腳的輸入脈沖。8051單片機(jī)定時(shí)器/計(jì)數(shù)器的門控信號(hào)GATE設(shè)置為1時(shí),定時(shí)器如何啟動(dòng)?答:80C51單片機(jī)定時(shí)器/計(jì)數(shù)器的門控信號(hào)GATE設(shè)置為1時(shí),定時(shí)器的啟動(dòng)受外部INT0(INTl)引腳的輸人電平控制:當(dāng)INT0(INTl)引腳為高電平時(shí),置TR0(TRl)為1時(shí)啟動(dòng)定時(shí)器/計(jì)數(shù)器0(1)工作。8051單片機(jī)片內(nèi)設(shè)有幾個(gè)定時(shí)器/計(jì)數(shù)器?它們是由哪些特殊功能寄存器組成?答:80C51單片機(jī)片內(nèi)設(shè)有2個(gè)定時(shí)器/計(jì)數(shù)器:定時(shí)器/計(jì)數(shù)器0和定時(shí)器/計(jì)數(shù)器1,由TH0、TL0、THl、TLl、TMOD、TCON特殊功能寄存器組成。什么是單片機(jī)的機(jī)器周期、狀態(tài)周期、振蕩周期和指令周期.答:某條指令的執(zhí)行周期由若干個(gè)機(jī)器周期(簡(jiǎn)稱M周期)構(gòu)成,一個(gè)機(jī)器周期包含6個(gè)狀態(tài)周期(又稱時(shí)鐘周期,簡(jiǎn)稱S周期),而一個(gè)狀態(tài)周期又包含兩個(gè)振蕩周期(P1和P2,簡(jiǎn)稱p周期)。也就是說,指令執(zhí)行周期有長(zhǎng)有短,但一個(gè)機(jī)器周期恒等于6個(gè)狀態(tài)周期或12個(gè)振蕩周期,即lM=6S=l2P。請(qǐng)見《教材》P28圖。當(dāng)定時(shí)器T0工作于模式3時(shí),如何使運(yùn)行中的定時(shí)器T1停止下來?答:TRl為定時(shí)器Tl的運(yùn)行控制位,通常將該位置1就可啟動(dòng)定時(shí)器Tl使之運(yùn)行起來;把TRl清0便停止定時(shí)器Tl的運(yùn)行。但在定時(shí)器T0被設(shè)定為模式3運(yùn)行時(shí),就不能再用這種方法來控制定時(shí)器Tl的啟停了。因?yàn)樵谶@種情況下,如《教材》Pl06圖6-11所示,TRl借給定時(shí)器T0作為8位定時(shí)器TH0的運(yùn)行控制位了。當(dāng)定時(shí)器T0在模式3下運(yùn)行時(shí),若把定時(shí)器1設(shè)定為模式3,即將TMOD寄存器的位5(Ml)和位4(M0)寫成llB,則定時(shí)器Tl便停止運(yùn)行;若此后將其從模式3中切換出來,例如,把這兩位再次寫成0lB,則定時(shí)器Tl將按模式1運(yùn)行起來。波特率、比特率和數(shù)據(jù)傳送速率的含意各是什么?答:在數(shù)據(jù)通信申,描述數(shù)據(jù)傳送速度的方式有3種:=1\*GB3①波特率:每秒傳送多少個(gè)信號(hào)碼元(或每秒信號(hào)碼元變換的總個(gè)數(shù)),單位是波特(Bd)。=2\*GB3②比特率:每秒傳送多少個(gè)二進(jìn)制位(或每秒傳送二進(jìn)制碼元的個(gè)數(shù)),單位是b/s。=3\*GB3③數(shù)據(jù)傳送速率(或字符傳送速率):每秒傳送多少個(gè)字符(或單位時(shí)間內(nèi)平均數(shù)據(jù)傳移速率),單位是字符/秒。當(dāng)傳輸?shù)男盘?hào)是二進(jìn)制數(shù)位時(shí),波特率和比特率就變成了一回事,尤其是計(jì)算機(jī)通信中,信號(hào)碼元常與二進(jìn)制碼元相同,此時(shí)可以統(tǒng)一起來。例如,甲乙雙方傳送二進(jìn)制數(shù)據(jù)的速度是每秒傳送300個(gè)字符,每個(gè)字符附加了起始、停止和校驗(yàn)各一位,此時(shí)描述該速度有3種方式:=1\*GB3①數(shù)據(jù)字符傳送速率是300字符/秒。=2\*GB3②忍比特率300×(8+1+1+l)b/s=300×llb/s=3300b/s。=3\*GB3③波特率與比特率相同,亦為300×llRd=3300Bd。開機(jī)復(fù)位后,CPU使用的是哪組工作寄存器?它們的地址是什么?CPU如何確定和改變改變當(dāng)前工作寄存器組?答:系統(tǒng)復(fù)位后,CPU選用第0組工作寄存器即地址分別為00H~07H。如需改變當(dāng)前工作寄存器,可設(shè)置PSW狀態(tài)字中的RSl、RS0。如RSl、RS0為00則指向第0組;為01則指向第1組;為10則指向第2組;為ll則指向第3組。程序狀態(tài)寄存器PSW的作用是什么?常用狀態(tài)有哪些位?作用是什么?答:程序狀態(tài)字寄存器PSW主要用于保存程序運(yùn)行中的各種狀態(tài)信息。各位功能如下:CY(PSW·7)為進(jìn)位標(biāo)志。在進(jìn)行加或減運(yùn)算中,表示有無進(jìn)位或借位。位操作時(shí),又可認(rèn)為是位累加器。AC(PSW·6)為輔助進(jìn)位標(biāo)志。加或減操作中,表示低4位數(shù)向高4位有無進(jìn)位或借位,以用作BCD碼調(diào)整的判斷位。F0(PSW·5)為用戶標(biāo)志位。用戶可自行定義的一個(gè)狀態(tài)標(biāo)記。RSl、RS0(PSW·4PSW·3)為工作寄存器組指針。用以選擇CPU當(dāng)前工作寄存器組。OV(PSW·2)為溢出標(biāo)志。算術(shù)運(yùn)算時(shí),表示是否溢出。Fl(PSW·l)為用戶標(biāo)志位。同F(xiàn)0。P(PSW·0)為奇偶標(biāo)志位。表示累加器A中"1"的位數(shù)的奇偶數(shù)。該位多用作串行通信中的奇偶檢驗(yàn)。位地址7CH與字節(jié)地址7CH如何區(qū)別?位地址7CH具體在片內(nèi)RAM的位置?答:字節(jié)地址是片內(nèi)RAM的單元地址,而位地址是片內(nèi)RAM單元申的某一位。7CH字節(jié)地址為RAM的7CH單元,而7CH位地址是RAM2FH單元中的D4位。MCS一51單片機(jī)的時(shí)鐘周期與振蕩周期之間有什么關(guān)系?一個(gè)機(jī)器周期如何劃分?答:時(shí)鐘周期為最基本的時(shí)間單位。機(jī)器周期則是完成某一個(gè)規(guī)定操作所需的時(shí)間。一個(gè)機(jī)器周期為6個(gè)時(shí)鐘周期,共12個(gè)振蕩周期,依次可表示為SlPl、SlP2、…、S6Pl、S6P2,即一個(gè)時(shí)鐘周期包含有二個(gè)振蕩周期。MCS一51單片機(jī)有幾種復(fù)位方法?應(yīng)注意什么事項(xiàng)?答:?jiǎn)纹瑱C(jī)的復(fù)位有上電自動(dòng)復(fù)位和按鈕手動(dòng)復(fù)位兩種。使用時(shí)應(yīng)注意:上電復(fù)位的最短時(shí)間應(yīng)保證為振蕩周期建立時(shí)間加上兩個(gè)機(jī)器周期的時(shí)間。當(dāng)單片機(jī)運(yùn)行程序出錯(cuò)或進(jìn)入死循環(huán)時(shí),可用按鈕復(fù)位來重新啟動(dòng)。MCS一51單片機(jī)內(nèi)部包含哪些主要邏輯功能部件?答:89C51單片機(jī)主要由下列部件組成:一個(gè)8位CPU、一個(gè)片內(nèi)振蕩器及時(shí)鐘電路、4KBFlashROM程序存儲(chǔ)器、256B的RAM、2個(gè)16位的定時(shí)/計(jì)數(shù)器、可尋址64KB片外數(shù)據(jù)存儲(chǔ)器和64KB片外程序存儲(chǔ)器空間的控制電路、4個(gè)8位并行I/O端口及一個(gè)可編程全雙工串行接口。MCS一51單片機(jī)的存儲(chǔ)器從物理結(jié)構(gòu)上和邏輯上分別可劃分幾個(gè)空間?答:MCS-51系列單片機(jī)的存儲(chǔ)器配置從物理結(jié)構(gòu)上可分為:片內(nèi)程序存儲(chǔ)器、片外程序存儲(chǔ)器、片內(nèi)數(shù)據(jù)存儲(chǔ)器、片外數(shù)據(jù)存儲(chǔ)器。從邏輯上可分為:片內(nèi)外統(tǒng)一編址的64KB的程序存儲(chǔ)器、片內(nèi)256B的數(shù)據(jù)存儲(chǔ)器以及片外64KB的數(shù)據(jù)存儲(chǔ)器。存儲(chǔ)器中有幾個(gè)具有特殊功能的單元?分別作什么用?答:MCS-51系列單片機(jī)的存儲(chǔ)器中有6個(gè)保留特殊功能單元,其中0000H為復(fù)位入□)0003H為外部中斷0矢量入口、000BH為T0溢出中斷人口、0013H為外部中斷1矢量入口、00lBH為Tl溢出中斷入口、0023H為串行接口中斷入口。MCS一51單片機(jī)片內(nèi)256B的數(shù)據(jù)存儲(chǔ)器可分為幾個(gè)區(qū)?分別作什么用?答:MCS-51單片機(jī)片內(nèi)數(shù)據(jù)存儲(chǔ)器可分為二個(gè)區(qū):00H~7FH單元組成的低128B的片內(nèi)RAM區(qū)、80H~FFH單元組成的高128B的專用寄存器區(qū)。其中低128B的RAM區(qū)又分為:00H~lFH單元為工作寄存器區(qū)、20H~2FH單元為位尋址區(qū)以及30H~7FH單元為用戶RAM區(qū)。工作寄存器區(qū)可作通用寄存器用,用戶RAM區(qū)可作堆棧和數(shù)據(jù)緩沖用。專用寄存器區(qū)又稱特殊功能寄存器。什么是單片機(jī)的機(jī)器周期、狀態(tài)周期、振蕩周期和指令周期?它們之間是什么關(guān)系?答:某條指令的執(zhí)行周期由若干個(gè)機(jī)器周期(簡(jiǎn)稱M周期)構(gòu)成,一個(gè)機(jī)器周期包含6個(gè)狀態(tài)周期(又稱時(shí)鐘周期,簡(jiǎn)稱S周期),而一個(gè)狀態(tài)周期又包含兩個(gè)振蕩周期(P1和P2,簡(jiǎn)稱p周期)。也就是說,指令執(zhí)行周期有長(zhǎng)有短,但一個(gè)機(jī)器周期恒等于6個(gè)狀態(tài)周期或12個(gè)振蕩周期,即lM=6S=l2P。請(qǐng)見《教材》P28圖。MCS-51單片機(jī)的PO-P3四個(gè)I/O端口在結(jié)構(gòu)上有何異同?使用時(shí)應(yīng)注意什么事項(xiàng)?答:MCS-51單片機(jī)的四個(gè)端口在結(jié)構(gòu)上相同之處,P0~P3都是準(zhǔn)雙向I/O口,作輸入時(shí),必須先向相應(yīng)端口的鎖存器寫入"1"。不同之處:P0口的輸出級(jí)與Pl~P3口不相同,它無內(nèi)部上拉電阻,不能提供拉電流輸出,而Pl~P3則帶內(nèi)部上拉電阻,可以提供拉電流輸出。當(dāng)P0口作通用I/O口輸出使用時(shí),需外接上拉電阻才可輸出高電平;但作地址/數(shù)據(jù)總線時(shí),不需要外接上拉電阻。Pl~P3作I/O輸出時(shí),均不需外接上拉電阻。MCS一51單片機(jī)有幾種低功耗方式?如何實(shí)現(xiàn)?答:MCS-51單片機(jī)有兩種低功耗方式,分別為待機(jī)(休閑)方式和掉電方式。置PCON中的D0位即IDL為"1",單片機(jī)即迸人待機(jī)方式;置Dl位即PD為"1",則進(jìn)入掉電方式。33.試說明指令CJNE@R1,#7AH,10H的作用。若本指令地址為8100H,其轉(zhuǎn)移地址是多少?答:CJNE@Rl,#7AH,l0H指令是進(jìn)行以Rl間址單元的內(nèi)容與一個(gè)立即數(shù)進(jìn)行比較。當(dāng)((Rl))=7AH時(shí):(PC)+3→PC,0→CY當(dāng)((Rl))>7AH時(shí):(PC)+3+10H→PC,0→CY當(dāng)((Rl)﹤7AH時(shí):(PC)+3+10H→PC,l→CY若本指令地址為8100H,其轉(zhuǎn)移地址為:目的地址=8100H十3十10H=8113H。如何將8051當(dāng)8031使用?答:把80C51的EA引腳接地,片外擴(kuò)接EPROM芯片,就等于宣布片內(nèi)ROM作廢,完全執(zhí)行片外EPROM中的程序。這樣,80C51就可當(dāng)80C31使用。35.設(shè)(R0)=7EH,DPTR=10FEH,片內(nèi)RAM7EH和7FH兩單元的內(nèi)容分別是FFH和38H,請(qǐng)寫出下列程序段的每條指令的執(zhí)行結(jié)果。INC @RoINC ROINC @ROINC DPTRINC DPTRINC DPTR答:(1)(7EH)=00H(2)R0=7FH(3)(7FH)=39H(4)DPTR=10FFH(5)DPTR=l100H(6)DPTR=l10lH36.設(shè)片內(nèi)RAM中(59H)=-50H,執(zhí)行下列程序段。MOV A,59HMOV R0,AMOV A, #0HMOV @R0,AMOV A,#25HMOV 51H,AMOV 52H,#70H問A=25H,(50H)=0,(51H)=25H,(52H)=70H編程題編一個(gè)子程序,將寄存器R0中的內(nèi)容乘10(積<256)。1解STRAT:MOVA,R0MOVB,#10MULABMOVR0,ARET2.編程將片內(nèi)RAM30H單元開始的15B的數(shù)據(jù)傳送到片外RAM3000H開始的單元中去。2解STRAT:MOVR0,#30HMOVR7,#0FHMOVDPTR,#3000HLOOP:MOVA,@R0MOVX@DPTR,AINCR0INCDPTRDJNZR7,LRET用查表法編一子程序,將40H單元中的BCD碼轉(zhuǎn)換成ASCII碼。3START:MOVA,40HMOVDPTR,#TARMOVCA,@A十DPTRMOV40H.ARETTABDB30H,31H,32H,33H,34HDB35H,36H,37H,38H,39H4.片內(nèi)RAM50H,51H單元中有一個(gè)2B的二進(jìn)制數(shù),高位在前,低位在后,請(qǐng)編程將其求補(bǔ),存回原單元中去。4解START:CLRCMOVA,5lHCPLAADDA,#03HMOV5lH,AMOVA,50HCPLAADDCA,#00HMOV50H,ARET片內(nèi)RAM30H開始的單元中有10B的二進(jìn)制數(shù),請(qǐng)編程求它們之和(和<256)。5解ADDIO:MOVR0,30HMOVR7,#9MOVA,@R0LOOP:INCR0ADDA,@R0DJNZR7,LOOPMOV30H,ARETR1中存有一BCD碼,請(qǐng)編程將它轉(zhuǎn)換成ASCII碼,存人外RAMIO00H單元中去。6解RIB-AI:MOVA,RlORLA,#30H(也可以ADDA,#30H)MOVDPTR,#1000HMOVX@DPTR,ARET編一個(gè)程序,將累加器中的一個(gè)字符從串行接口發(fā)送出去。7解SOUT:MOVSCON,#40H;設(shè)置串行接□為工作方式1MOVTMOD,#20H;定時(shí)器Tl工作于模式2MOVTLl,#0E8H;設(shè)置波特率為1200b/sMOVTHl,#0E8HSETBTRlMOVSBUF,ANBTI,$CLRTIRET片外RAM2000H開始的單元中有5B的數(shù)據(jù),編程將它們傳送到片內(nèi)RAM20H開始的單元中去。8解CARY:MOVDPTR,#2000HMOVR0,#20HMOVR3,#05HNEXT:MOVXA,@DPTRMOV@R0,AINCDPTRINCR0DJNZR3,NEXTRET用查表法編一子程序,將R3中的BCD碼轉(zhuǎn)換成ASCII碼。9解MAIN:MOVA,R3;待轉(zhuǎn)換的數(shù)送AMOVDPTR,#TAB;表首地址送DPTRMOVCA,@A+DPTR;查ASCII碼表MOVR3,A;查表結(jié)果送R3RETTABDB30H,31H,32H,33H,34HDB35H,36H,37H,38H,39H片內(nèi)RAM40H開始的單元內(nèi)有10B二進(jìn)制數(shù),編程找出其中最大值并存于50H單元中。10解START:MOVR0,#40H;數(shù)據(jù)塊首地址送R0MOVR7,#09H;比較次數(shù)送R7MOVA,@R0;取數(shù)送ALOOP:INCR0MOV30H,@R0;取數(shù)送30HCJNEA,30H,NEXT;(A)與(30H)相比NEXT:JNCBIEl;(A)≥(30H)轉(zhuǎn)BIElMOVA,30H;(A)﹤(30H),大數(shù)送ABIE1:DJNZR7,LOOP;比較次數(shù)減1,不為0,繼續(xù)比較MOV50H,A;比較結(jié)束,大數(shù)送50HRET編程將片外RAM3000H開始的20B的數(shù)據(jù)傳送到片內(nèi)RAM30H開始的單元中去。11解START:MOVDPTR,#3000HMOVR7,#20MOVR0,#30HLOOP:MOVXA,@DPTRMOV@R0,AINCDPTRINCR0DJNZR7,LOOPRET編程將R1,R2中的16位二進(jìn)制數(shù)增1后送回原單元(高位在R1中)。12解START:MOVA,R2ADDA,#0lHMOVR2,AMOVA,RlADDCA,#00HMOVRl,ARET編程將片內(nèi)RAM40H開始的單元存放的10B的二進(jìn)制數(shù)傳送到片外RAM4000H開始的單元中去。13解START:MOVR0,#40HMOVR7,#0AHMOVDPTR,#4000HLOOP:MOVA,@R0MOVX@DPTR,AINCR0INCDPTRDJNZR7,LOOPRET編一子程序,從串行接口接受一個(gè)字符。14解START:MOVTMOD,#2OH;定時(shí)器Tl工作于模式2MOVTHl,#0E8H;設(shè)置波特率為12OOb/sMOVTLl,#0E8HSETBTRl;啟動(dòng)TlMOVSCON,#50H;串行接口工作于方式1,允許接收Ll:JNBRI,Ll;等待接收數(shù)據(jù),未接收到數(shù)據(jù),繼續(xù)等待CLRRI;接收到數(shù)據(jù),清RIMOVA,SBUF;接收到的數(shù)據(jù)送ARET編寫將30H和31H單元中2B二進(jìn)制數(shù)乘2的子程序(積<65536)。15解START:CLRCMOVA,31HRLCAMOV3lH,AMOVA,30HRLCAMOV30H,ARET16片外RAM2000H單元中有一BCD碼,編程將其轉(zhuǎn)換成ASCII碼。16解START:MOVDPTR,#2000HMOVXA,@DPTRADDA,#30HMOVX@DPTR,ARET試編制單字節(jié)BCD碼數(shù)的減法程序。17解:要實(shí)現(xiàn)單字節(jié)BCD數(shù)的減法,應(yīng)當(dāng)設(shè)法將減法變?yōu)榧臃ê?,再使用DAA指令調(diào)整。具體操作是:先用模(99十l)H即9AH減去減數(shù),得到其補(bǔ)數(shù),再與被減數(shù)進(jìn)行加法操作,然后再用DAA調(diào)整。假設(shè)被減數(shù)放在片內(nèi)RAM的60H單元,減數(shù)放在61H單元,差值放入62H單元。程序如下:CLRCMOVA,#9AHSUBBA,61H;對(duì)(61H)內(nèi)的BCD碼求十進(jìn)制補(bǔ)數(shù)ADDA,60HDAA;對(duì)和數(shù)(其實(shí)是差值)進(jìn)行調(diào)整MOV62H,ARET例如,當(dāng)初值為(60H)=61,(61H)=23時(shí),運(yùn)行結(jié)果將是:(62H)=38.利用調(diào)子程序的方法,進(jìn)行兩個(gè)4B無符號(hào)數(shù)相加。請(qǐng)編主程序及子程序。18解:用R0和Rl作數(shù)據(jù)指針,R0指向第一個(gè)加數(shù),并兼作"和"的指針,Rl指向另一個(gè)加數(shù),字節(jié)數(shù)存放到R2中作計(jì)數(shù)初值。主程序:JAFA:MOVR0,#20H;指向加數(shù)最低字節(jié)MOVRl,#29H;指向另一加數(shù)最低字節(jié)MOVR2,#04H;字節(jié)數(shù)作計(jì)數(shù)值A(chǔ)CALLJASUB;調(diào)用加法子程序AJMP$RET多字節(jié)加法子程序:JASUB:CLRCJASUB1:MOVA,@R0;取出加數(shù)的一個(gè)字節(jié)(4B無符號(hào)數(shù)加法)ADDCA,@Rl;加上另一數(shù)的一個(gè)字節(jié)MOV@R0,A;保存和數(shù)INCR0;指向加數(shù)的高位INCR1;指向另一加數(shù)的高位DJNZR2,JASUBl;全部加完了嗎?RET將片外RAM空間2000H-200AH中的數(shù)據(jù)的高4位變零,低4位不變,原址存放。23解ORG1000HSTART:MOVDPTR,#2000H;設(shè)置數(shù)據(jù)指針MOV10H,#0BH;設(shè)置計(jì)數(shù)單元設(shè)置初值LOOP:MOVXA,@DPTR;讀數(shù)據(jù)ANLA,#0FH;屏蔽高4位,低4位不變MOVX@DPTR,A;回傳至原單元循環(huán)體INCDPTR;指針加1DJNZ10H,LOOP;沒處理完,轉(zhuǎn)移(修改控制變量,循環(huán)終止控制)將累加器A和狀態(tài)寄存器內(nèi)容壓入堆棧保護(hù),然后再恢復(fù)A和狀態(tài)寄存器內(nèi)容。24解ORG1000HSTART:PUSHA;A+→堆棧PUSHPSW;PSW→堆棧;POPPSW;堆?!鶳SWPOPA;堆?!鶤RET求片外RAM3000H,3001H單元數(shù)據(jù)的平均值,并傳送給3002H單元。25解MOVDPTR,#3000H;設(shè)置第一個(gè)數(shù)據(jù)地址指針MOVXA,QDPTR;取第一個(gè)數(shù)據(jù)MOVR0,A;將第一個(gè)數(shù)據(jù)送R0INCDPTR;設(shè)置第二個(gè)數(shù)據(jù)地址指針MOVXA,@DPTR;取第二個(gè)數(shù)據(jù)ADDA,R0;兩個(gè)數(shù)據(jù)相加RRCA;帶進(jìn)位C右移一位,相當(dāng)除以2INCDPTR;設(shè)置結(jié)果單元地址指針MOVX@DPTR,A;存平均值RET22.分別寫出實(shí)現(xiàn)如下功能的程序段。26(1)將片內(nèi)RAM30H的中間4位,31H的低2位,32H的高2位按序拼成一個(gè)新字節(jié),存人33H單元。(2)將DPTR中間8位取反,其余位不變。解(l)MOVA,30HANLA,#3CH;30H的中間4位送ARLA;將中間4位移至高4位RLAMOV33H,AANL3lH,#3;取31H的低2位,高6位為0ANL32H,#0C0H;取32H的高2位,低6位為0MOVA,31H;31H的低2位送AORLA,32H;32H的高2位放人A的高2位,A的申間4位為0RLA;將31H的低2位、32H的高2位移至A的低4位RLAORL33H,A;將31H的低2位、32H的高2位拼入33H中(2)XRLDPH,#0FHXRLDPL,#0F0H23.寫出達(dá)到下列要求的指令(不能改變各未涉及位的內(nèi)容)。27(1)使A的最低位置1。(2)清除A的高4位。(3)使ACC.2和ACC.3置1。清除A的中間4位。解;(l)SETBACC.0或ORLA,#1(2)ANLA,#0FH(3)ORLA,#0CH(4)ANLA,#0C3H24.編程將一個(gè)按高低字節(jié)存放在21H、20H中的雙字節(jié)數(shù)乘2后,再按高低次序?qū)⒔Y(jié)果存放到22H,21H、20H單元。32解ORG0030HMOVA,20HCLRCRLCAMOV20H,AMOVA,2lHRLCAMOV2lH,AJNCNEXTMOV22H,#01NEXT:SJMP$編程將存放在片外RAM1000H,1001H中的兩個(gè)數(shù),按大小次序存放到片內(nèi)RAM的30H、31H單元。33解ORG0030HMOVDPTR,l000HMOVXA,@DPTRMOVB,AINCDPTRMOVXA,@DPTRCJNEA,B,00HJNCNEXTlMOV30H,BMOV3lH,ASJMPNEXT2NEXTl.:MOV30H,AMOV3lH,BNEXT2:SJMPNEXT2將片內(nèi)RAM30H——3FH中的數(shù)據(jù)按順序傳送到片外RAM2000H——200FH,請(qǐng)編程。38解MOVR0,#30HMOVDPTR,#2000HMOVRl,#l0HLOOP:MOVA,@R0MOVX@DPTR,AINCR0INCDPTRDJNZRl,LOOPRET列舉4條能使累加器A清0的指令。39解:(l)MOVA,#00H(2)XRLA,ACC(3)ANLA,#00H(4)CLRA編程將片外RAM1000—1010H內(nèi)容傳人片內(nèi)RAM30H開始的單元。41解ORG0800HMOVDPTR,#1000HMOVR0,#30HMOVR7,#llHLOOP:MOVXA,@DPTRMOV@R0,AINCR0INCDPTRDJNZR7,LOOPRET編寫一個(gè)軟件延時(shí)1s、和1min的子程序。設(shè)fosc=6MHz,則1個(gè)機(jī)器周期=2us。45解(1)ls=2us×5×1055×105=500000=250×2000=250×200×l0所以:要編寫三重循環(huán)。ORG1000HTIME:MOVR7,#10T3:MOVR6,#200T2:MOVR5,#250Tl:DJNZR5,T1DJNZR6,T2DJNZR7,T3RET(2)lmin=60s,調(diào)用上面1s子程序60次。ORG0030HMOVR0,#60LOOP:LCALLTIMEDJNZR0,LOOPRET請(qǐng)編制串行通信的數(shù)據(jù)發(fā)送程序.發(fā)送片內(nèi)RAM50H-}-5FH的16B數(shù)據(jù),串行接口設(shè)定為方式2,采用偶校驗(yàn)方式。設(shè)晶振頻率為6MHz48解查詢方式發(fā)送程序如下:MOVSCON,#80H;設(shè)定為方式2發(fā)送MOVPCON,#80H;波特率固定,選用fOSC/32(高達(dá)187500Bd)MOVR0,#50H;給待發(fā)送數(shù)據(jù)塊地址指針R0置初值MOVR7,#16;數(shù)據(jù)塊長(zhǎng)度計(jì)數(shù)器R7置初值LOOP:MOVA,@R0;取一字節(jié)數(shù)據(jù)→AMOVC,PMOVTB8,C;P隨A變,P借助位累加器C傳給TB8MOVSBUF,A;啟動(dòng)發(fā)送JNBTI,$;查詢發(fā)送標(biāo)志,等待一字節(jié)數(shù)據(jù)發(fā)送完CLRTI;TI標(biāo)志位清0INCR0;待發(fā)送數(shù)據(jù)塊地址指針加1DJNZR7,LOOP;數(shù)據(jù)塊長(zhǎng)度減1,未發(fā)送完則返回繼續(xù)發(fā)送下一字節(jié)RET請(qǐng)編制串行通信數(shù)據(jù)接收程序,將接收的16B數(shù)據(jù)送入片內(nèi)RAM58H-5FH單元中,串行接口設(shè)定為工作方式3,波特率為1200,fosc=6MHZ.49解2SMOD2SMODfOSC波特率(Bd)=———×Tl(溢出率)=—————×——————323212×(256-x)2SMOD×fOSC6×106初值x=256-———————=256-————————=256-13.02≈243=F3H32×12×波特率32×12×1200查詢接收程序如下:MOVTMOD,#20H;設(shè)定Tl為模式2定時(shí)MOVTHl,#0F3H;置8位計(jì)數(shù)初值,同時(shí)送入高8位MOVTL1,#0F3HSETBTR1;啟動(dòng)TlMOVSCON,#0D0H;設(shè)定串行接口為方式3,并允許接收MOVR0,#50H;給數(shù)據(jù)塊地址指針R0置初值MOVR7,#16;給數(shù)據(jù)塊長(zhǎng)度計(jì)數(shù)器R7置初值CONT:JBCRI,PRI;查詢等待接收,若RI=1則結(jié)束等待,并清0RISJMPCONT;若一字節(jié)尚未收完,則繼續(xù)等待PRI:MOVA,SBUF;一字節(jié)收完,從串行接口中讀取數(shù)據(jù)JNBP,PNP;對(duì)該字節(jié)進(jìn)行查錯(cuò)處理,若P=RB8無錯(cuò),否則有錯(cuò)JNBRB8,PER;若P=l,RB8=0,有錯(cuò),轉(zhuǎn)出錯(cuò)處理AJMPRIGHT;若P=l,RB8=1,無錯(cuò),轉(zhuǎn)保存數(shù)據(jù)PNP:JBRB8,PER;若P=0,RB8=1,有錯(cuò),轉(zhuǎn)出錯(cuò)處理RIGHT:MOV@R0,A;若P=0,RB8=0,無錯(cuò),保存接收的數(shù)據(jù)INCR0;數(shù)據(jù)塊地址指針加1DJNZR7,CONT;數(shù)據(jù)塊字節(jié)數(shù)減1,16B未接收完則繼續(xù)CLRFl;正確接收完16B數(shù)據(jù),清0出錯(cuò)標(biāo)志位FlSJMP$;正常結(jié)束,停止運(yùn)行程序PER:SETBFl;因P≠RB8,校驗(yàn)為錯(cuò),置位出錯(cuò)標(biāo)志FlSJMP$;一旦發(fā)現(xiàn)有錯(cuò)則立即停止執(zhí)行程序在8051片內(nèi)RAM20H-3FH單元中有32B數(shù)據(jù),若采用方式I進(jìn)行串行通信,波特率為1200、fosc=12MHz,用查詢和中斷兩種方式編寫發(fā)送接收程序50解Tl工作于方式2作為波特率發(fā)生器,取SMOD=0,Tl的計(jì)數(shù)初值計(jì)算如下:2SMODfOSC波特率(Bd)=————×——————3212×(256-x)112×106所以1200=——×——————3212(256-x)故x=230=E6H(1)查詢方式程序=1\*GB3①發(fā)送程序ORG0000HAJMPSTARTORG0030HSTART:MOVTMOD,#20H;定時(shí)器Tl工作于模式2MOVTH1,#0E6H;置定時(shí)器Tl計(jì)數(shù)初值MOVTL1,#0E6HSETBTR1;啟動(dòng)TlMOVSCON,#40H;串行接口工作于方式1,不允許接收MOVR0,#20H;R0指向發(fā)送緩沖區(qū)首址MOVR7,#32;R7為發(fā)送數(shù)據(jù)塊長(zhǎng)度LOOP:MOVSBUF,@R0;發(fā)送數(shù)據(jù)JNBTI,$;一幀末發(fā)完,繼續(xù)查詢CLRTI;一幀發(fā)完清TIINCR0DJNZR7,LOOP;數(shù)據(jù)塊未發(fā)完轉(zhuǎn)LOOP繼續(xù)發(fā)送SJMP$;發(fā)送完,結(jié)束=2\*GB3②接收程序ORG0000HAJMPSTARTORG0030HSTART:MOVTMOD,#20H;定時(shí)器Tl工作于模式2MOVTHl,#0E6HMOVTL1,#0E6H;設(shè)置Tl計(jì)數(shù)初值SETBTR1;啟動(dòng)TlMOVSCON,#50H;設(shè)定串行方式1并允許接收MOVR0,#20H;R0為接收緩沖區(qū)首址MOVR7,#32;R7為接收數(shù)據(jù)塊長(zhǎng)度LOOP:JNBRI,$;一幀收完?末收完等待CLRRI;收完清RIMOV@R0,SBUF;將數(shù)據(jù)讀入接收數(shù)據(jù)緩沖區(qū)INCR0;修改地址指針SJMP$(2)中斷方式程序中斷方式的初始化部分同查詢方式,以下僅寫不同部分。=1\*GB3①中斷發(fā)送程序:;SETBEA;開中斷SETBES;允許串行接口中斷MOVSBUF,@R0;發(fā)送LOOP:SJMP$;等待中斷AGA:DJNZR7,LOOP;數(shù)據(jù)塊未發(fā)完繼續(xù)CLREA;發(fā)送完關(guān)中斷SJMP$;結(jié)束ORG0023H;中斷服務(wù)IOIP:CLRTl;清TIPOPDPHPOPDPL;彈出原斷點(diǎn)MOVDPTR,#AGA;修改中斷返回點(diǎn)為AGAPUSHDPLPUSHDPH;新返回點(diǎn)AGA壓入堆棧INCR0MOVSBUF,@R0;發(fā)送下一個(gè)RETI;返回到AGA=2\*GB3②中斷接收程序:;SETBEA;開中斷SETBES;允許串行接口中斷LOOP:SJMP$;等待中斷AGA:DJNZR7,LOOP;數(shù)據(jù)塊未發(fā)完繼續(xù)CLREA;發(fā)送完關(guān)中斷SJMP$;結(jié)束ORG0023H;中斷服務(wù)IOIP:CLRRI;清RIPOPDPH;彈出原斷點(diǎn)POPDPLMOVDPTR,#AGA;修改中斷返回點(diǎn)為AGAPUSHDPLPUSHDPH;新返回點(diǎn)AGA壓入堆棧INCR0RETI;返回到AGA已知當(dāng)前PC值為2000H.請(qǐng)將程序存儲(chǔ)器20F0H中的常數(shù)送人累加器A中。51解方法一:以PC作為基址寄存器。MOVA,#0F0H;偏移量送AMOVCA,@A+PC;(20F0H)→A方法二:以DPTR作為基址寄存器。MOVDPTR,#20F0HMOVA,#00HMOVCA,@A+DPTR請(qǐng)用兩種方法實(shí)現(xiàn)累加器A與寄存器R3的內(nèi)容交換52解方法一:利用交換指令。XCHA,R3方法二:利用堆棧交換指令。PUSHAPUSHR3POPAPOPR3編程將片內(nèi)20H單元開始的30個(gè)數(shù)傳送到片外RAM3000H開始的單元中。54解將片內(nèi)數(shù)據(jù)傳送到片外RAM可用MOVX@DPTR,A或MOVX@Ri,A指令MOVR7,#30;傳送字節(jié)數(shù)→R7MOVR0,#20H;R0指向片內(nèi)20H單元MOVDPTR,#3000H;DPTR指向片外3000H單元LOOP:MOVA,@R0;取數(shù)MOVX@DPTR,A;將數(shù)據(jù)轉(zhuǎn)存入片外RAMINCR0;R0指向片內(nèi)下一單元INCDPTR;DPTR指向片外下一單元DJNZR7,LOO
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年鋼筋大宗采購商務(wù)協(xié)議
- 2024年庭院圍墻護(hù)欄供應(yīng)及施工協(xié)議
- 文書模板-《車輛剮蹭修補(bǔ)合同》
- 2024年專利技術(shù)交易協(xié)議樣本
- 2024年度國內(nèi)專線物流運(yùn)輸服務(wù)協(xié)議
- 2024年擔(dān)保協(xié)議責(zé)任分配指南
- 2024屆安徽亳州闞疃金石中學(xué)高三第五次適應(yīng)性訓(xùn)練數(shù)學(xué)試題
- 2023-2024學(xué)年浙江省溫州市求知中學(xué)高三下學(xué)期半期聯(lián)合考試數(shù)學(xué)試題
- 2024預(yù)包裝食品批量采購協(xié)議范本
- 地產(chǎn)開發(fā)項(xiàng)目2024土方工程施工協(xié)議
- 處理不同類型客戶的技巧與策略
- 《凸透鏡成像的規(guī)律》課件
- 倉庫管理中的客戶服務(wù)和溝通技巧
- 2024年給藥錯(cuò)誤護(hù)理不良事件分析持續(xù)改進(jìn)
- 電力行業(yè)網(wǎng)絡(luò)安全
- 《北京大學(xué)介紹》課件
- 提升員工營銷能力的企業(yè)教育培訓(xùn)
- 學(xué)院(部)國際交流與合作工作考核指標(biāo)體系與評(píng)分標(biāo)準(zhǔn)
- 大學(xué)生社團(tuán)對(duì)大學(xué)生的影響的社會(huì)調(diào)查報(bào)告
- 胱氨酸純度的測(cè)定(最終版)
- 表-D完整版本.0.2-作業(yè)架施工驗(yàn)收記錄表
評(píng)論
0/150
提交評(píng)論