版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
單片機考試復(fù)習(xí)大綱(有答案)單片機考試復(fù)習(xí)大綱(有答案)單片機考試復(fù)習(xí)大綱(有答案)xxx公司單片機考試復(fù)習(xí)大綱(有答案)文件編號:文件日期:修訂次數(shù):第1.0次更改批準(zhǔn)審核制定方案設(shè)計,管理制度填空題MCS-51的P0口作為輸出端口時,每位能夠驅(qū)動8個LSTTL負(fù)載。MCS-51有四個并行I/O口,其中p1~p3是準(zhǔn)雙向口,所以由輸出轉(zhuǎn)輸入時必須寫入1。MCS-51有四組工作寄存器,他們的地址范圍是00H~1FHMCS-51片內(nèi)20H—2FH范圍內(nèi)的數(shù)據(jù)存儲器,既可以字節(jié)尋址又可以位尋址。若用傳送指令訪問MCS-51的程序存儲器,它的指令是MOVC.若用傳送指令訪問MCS-51的片內(nèi)數(shù)據(jù)存儲器,它的指令是MOV.指令是通知計算機完成某種操作的命令匯編語言中可以使用偽指令,它不是真正的指令,只是用來對匯編過程進(jìn)行某種控制.MCS-51串行接口有四種工作方式,可以在初始化程序中用軟件填寫SCON特殊功能寄存器加以設(shè)定。MCS-51有5個中斷源,有兩個中斷優(yōu)先級,優(yōu)先級由軟件填寫特殊功能寄存器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ù)的實際地址為2080H_一個十進(jìn)制數(shù)一47用8位二進(jìn)制補碼表示為11010001B_單片機中最常用的字符信息編碼是ASCⅡ碼要串口為10位UART,工作方式應(yīng)選為方式1用串口擴并口時,串行接口的工作方式應(yīng)選為方式方式0在串行通信中.有數(shù)據(jù)傳送方向單工,_半雙工,全雙工三種方式。一個機器周期=12節(jié)拍、一個機器周期=l2個振蕩周期,一個振蕩周期=1節(jié)拍。8051在物理上有4個獨立的存儲器空間。外部中斷INT1的入口地址為0013H8051含4KB掩膜ROM,8751是EPROM型,內(nèi)含4KBEPROM,8031是無型號MCS一51中,TO中斷服務(wù)程序入口地址為000BH.執(zhí)行當(dāng)前指令后PC內(nèi)容為下一條將要讀取的指令碼首地址MOVC,20H源尋址方式為位尋址INC不影響CY位。指令LCALL37B0H,首地址在2000H,所完成的操作是2003H_入棧,37B0HPCMOVX A,@DPTR的源操作數(shù)尋址方式為寄存器間接尋址8051的中斷有_2_個優(yōu)先級。8051中斷嵌套最多2級。外中斷請求標(biāo)志位是IE0和IE1。MCS-51單片機片內(nèi)RAM的寄存器區(qū)共有個32單元,分為_4_組寄存器,每組_8_個單元,以_R7~R0_作為寄存器名稱。單片機系統(tǒng)復(fù)位后,PSW=00H,因此片內(nèi)RAM寄存區(qū)的當(dāng)前寄存器是第_0_組,8個寄存器的單元地址為_00H_----_07H_.在MCS-51中PC和DPTR都用于提供地址,但PC是為訪問程序_存儲器提供地址,而DPTR是為訪問_數(shù)據(jù)存儲器提供地址。在位操作中,能起到與字節(jié)操作中累加器作用的是CY累加器A中存放著一個其值小于或等于127的8位無符號數(shù),CY清“0”后執(zhí)行RLCA指令,則A中數(shù)變?yōu)樵瓉淼?倍。計算機的數(shù)據(jù)傳送有兩種方式,即并行方式和串行方式,其中具有成本低特點的是串行數(shù)據(jù)傳送。異步串行數(shù)據(jù)通信的幀格式由__起始_位、數(shù)據(jù)_位、_奇偶校驗位_和停止位位組成。異步串行數(shù)據(jù)通信有單工、全雙工、和半雙工共三種傳送方向形式。使用定時器T1設(shè)置串行通信的波特率時,應(yīng)把定時器TI設(shè)定為自動重裝載工作模式。假定(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中惟-一個16位寄存器,在程序中常用來作為MOVC指令訪問程序存儲器的_基址寄存器_使用。49.堆棧設(shè)在片內(nèi)數(shù)據(jù)_存儲區(qū)、程序存放在_程序_存儲區(qū),外部I/O接口設(shè)在片外數(shù)據(jù)存儲區(qū),中斷服務(wù)程序存放在程序存儲區(qū)。50.若單片機使用頻率為6MHz的晶振,那么狀態(tài)周期為1/3μs、機器周期2μs、指令周期為2μs~8μs。51.復(fù)位時A=0,PSW=0,SP=07H,P0~P3=FFH單項選擇題1.在中斷服務(wù)程序中,至少應(yīng)有一條(D)傳送指令,(B)轉(zhuǎn)移指令,(C)加法指令,(D)中斷返回指令2.當(dāng)MCS一51復(fù)位時,下面說法正確的是(A)。(A)PC=0000H,(B)SP=00H,(C)SBUF=00H(D)(30H)=00H3.要用傳送指令訪問MCS一51片外RAM,它的指令操作碼助記符應(yīng)是(B)(A)MOV,(B)MOVX,(C)MOVC(D)以上都行下面哪一種傳送方式適用于電路簡單且時序已知的外設(shè)(B)。(A)條件傳送(B)無條件傳送(C)DMA(D)中斷5.MCS一51在響應(yīng)中斷時,下列哪種操作不會發(fā)生(D)。(A)保護(hù)現(xiàn)場,(B)保護(hù)PC(C)找到中斷入口,(D)保護(hù)PC轉(zhuǎn)入中斷入口6.用MCS-51串行接口擴展并行I/O口時,串行接口工作方式應(yīng)選擇(A)。(A)方式0,(B)方式1,(C)方式2,(D)方式37.JNZe指令的尋址方式是(C)。(A)立即尋址,(B)寄存器尋址,(C)相對尋址,(D)位尋址8.執(zhí)行LCALL4000H指令時,MCS一51所完成的操作是(D)。(A)保護(hù)PC,(B)4000H-PC(C)保護(hù)現(xiàn)場(D)PC+3入棧,4000HPC9.MCS一51有中斷源(A)。(A)5個(B)2個(C)3個(D)6個10.MCS-51上電復(fù)位后,SP的內(nèi)容應(yīng)是(B)。(A)00H(B)07H(C)60H(D)70H11.下面哪一個部件不是CPU的指令部件(C)。(A)PC(B)IR(C)PSW(D)ID12.ORG0003HLJMP2000HORG000BHLJMP3000H當(dāng)CPU響應(yīng)外部中斷0后,PC的值是(B)。(A)0003H(B)2000H(C)0000BH(D)3000H13.控制串行接口工作方式的寄存器是(C)。(A)TCON(B)PCON(C)SCON(D)TMOD14.MCS一51響應(yīng)中斷時,下面哪一個條件不是必須的(D)。(A)當(dāng)前指令執(zhí)行完畢(B)中斷是開放的(C)沒有同級或高級中斷服務(wù)(D)必須有RETI指令15.使用定時器T1時,有幾種工作模式(C)。(A)l種(B)2種(C)3種(D)4種15.執(zhí)行PUSHACC指令,MCS一51完成的操作是(A)。(A)SP+1=SP,(ACC)=(SP)(B)(ACC)=(SP)SP一1=SP(C)SP一1=SP,(ACC)=(SP)(D)(ACC)=(SP)SP+1=SP16.P1口的每一位能驅(qū)動(B)。(A)2個TTL低電平負(fù)載(B)4個TTL低電平負(fù)載(C)8個TTL低電平負(fù)載(D)10個TTL低電平負(fù)載17.PC中存放的是(A)。(A)下一條指令的地址,(B)當(dāng)前正在執(zhí)行的指令(C)當(dāng)前正在執(zhí)行指令的地址(D)下一條要執(zhí)行的指令18.8031是(C)。(A)CPU(B)微處理器(C)單片微機(D)控制器19.所謂CPU是指(A)。(A)運算器與控制器(B)運算器與存儲器(C)輸入輸出設(shè)備(D)控制器與存儲器20.LCALL指令操作碼地址是2000H,執(zhí)行完相應(yīng)子程序返回指令后PC=(D)。(A)2000H(B)2001H(C)2002H(D)2003H21.MCS一51執(zhí)行完MOV A,#08H后,PSW的哪一位被置位(D)。(A)C(B)FO(C)OV(D)P22.計算機在使用中斷方式與外界交換信息時,保護(hù)現(xiàn)場的工作應(yīng)該是(C)。(A)由CPU自動完成 (B)在中斷響應(yīng)中完成(C)應(yīng)由中斷服務(wù)程序完成 (D)在主程序中完成23.要訪問MCS-51的特殊功能寄存器應(yīng)使用的尋址方式是(C)。(A)寄存器間接尋址(B)變址尋址(C)直接尋址(D)相對尋址24.下面哪條指令將MCS一51的工作寄存器置成3區(qū)(B)。(A)MOVPSW,#13H(B)MOVPSW,井18H(C)SETBPSW.4CLRPSW.3(D)SETBPSW.3CLRPSW.425若MCS-51中斷源都編程為同級,當(dāng)它們同時申請中斷時CPU首先響應(yīng)(B)(A)INTl(B)INTO(C)T1(D)T026.當(dāng)MCS-51進(jìn)行多機通信時,串行接口的工作方式應(yīng)選擇(C)。方式0。(B)方式1(C)方式2(D)方式0或方式227.MCS-51的相對轉(zhuǎn)移指令的最大負(fù)跳轉(zhuǎn)距離為(B)(A)2KB(B)128B(C)127B(D)256B28.指令寄存器的功能是(B)。(A)存放指令地址(B)存放當(dāng)前正在執(zhí)行的指令(C)存放指令與操作數(shù)(D)存放指令地址及操作數(shù)29.MOVC,#00H的尋址方式是(A)。(A)位尋址(B)直接尋址(C)立即尋址(D)寄存器尋址30.ORGOOOOHALMP0040HORG0040HMOVSP,#00H當(dāng)執(zhí)行完左邊的程序后,PC的值是(C)(A)0040H(B)0041H(C)0042H(D)0043H31.當(dāng)CPU響應(yīng)串行接口中斷時,程序應(yīng)轉(zhuǎn)移到(C)。(A)0003H(B)0013H(C)0023H(D)0033H32.當(dāng)ALE信號有效時,表示(B)。(A)從ROM中讀取數(shù)據(jù)(B)從P0口可靠地送出地址低8位(C)從PO口送出數(shù)據(jù)(D)從RAM中讀取數(shù)據(jù)33.MCS一51復(fù)位時,下述說法正確的是(D)。(A)(20H)=00H(B)SP=00H(C)SBUF=00H(D)TH0=00H34.MCS一51的中斷源全部編程為同級時,優(yōu)先級最高的是(D)。(A)INT1(B)TI(C)串行接口(D)INTO35.外部中斷1固定對應(yīng)的中斷人口地址為(C)。0003H(B)0003H(C)0013H(D)001BH36.MCS-51單片機可分為兩個中斷優(yōu)先級別。各中斷源的優(yōu)先級別設(shè)定是利用寄存器(B)。(A)IF(B)IP(C)TCON(D)SCON37.MCS一51的并行I/O口信息有兩種讀取方法:一種是讀引腳,還有一種是(A)。(A)讀鎖存器(B)讀數(shù)據(jù)(C)讀A累加器(D)讀CPU38.(C)并非單片機系統(tǒng)響應(yīng)中斷的必要條件。(A)TCON或SOON寄存器內(nèi)的有關(guān)中斷標(biāo)志位為1(B)IF中斷允許寄存器內(nèi)的有關(guān)中斷允許位置1(C)IP中斷優(yōu)先級寄存器內(nèi)的有關(guān)位置1(D)當(dāng)前一條指令執(zhí)行完39.指令A(yù)JMP的跳轉(zhuǎn)范圍是(C)。(A)256B(B)1KB(C)2KB(D)64KB40.MCS一51響應(yīng)中斷的不必要條件是(C)。(A)TCON或SCON寄存器內(nèi)的有關(guān)中斷標(biāo)志位為1(B)IE中斷允許寄存器內(nèi)的有關(guān)中斷允許位置1(C)IP中斷優(yōu)先級寄存器內(nèi)的有關(guān)位置1(D)當(dāng)前一條指令執(zhí)行完41.以下運算中對溢出標(biāo)志OV沒有影響或不受OV影響的運算是(A)。(A)邏輯運算(B)有符號數(shù)加減法運算(C)乘法運算(D)除法運算42.在算術(shù)運算中,與輔助進(jìn)位位AC有關(guān)的是(C)。(A)二進(jìn)制數(shù)(B)八進(jìn)制數(shù)(C)十進(jìn)制數(shù)(D)十六進(jìn)制數(shù)43.PC的值是(C)。(A)當(dāng)前指令前一條指令的地址(B)當(dāng)前正在執(zhí)行指令的地址(C)下一條指令的地址(D)控制器中指令寄存器的地址44.假定設(shè)置堆棧指針SP的值為37H,在進(jìn)行子程序調(diào)用時把斷點地址進(jìn)棧保護(hù)后,SP的值為(D)。(A)36H(B)37H(C)38H(D)39H45.在相對尋址方式中,“相對”兩字是指相對于(C)。(A)地址偏移量rel(B)當(dāng)前指令的首地址(C)當(dāng)前指令的末地址,(D)DPTR值46.在寄存器間接尋址方式中,指定寄存器中存放的是(B)。 (A)操作數(shù) (B)操作數(shù)地址 (C)轉(zhuǎn)移地址 (D)地址偏移量47.對程序存儲器的讀操作,只能使用(D)。(A)MOV指令(B)PUSH指令(C)MOVX指令(D)MOVC指令48.必須進(jìn)行十進(jìn)制調(diào)整的十進(jìn)制運算(C)。(A)有加法和減法(B)有乘法和除法(C)只有加法(D)只有減法49.執(zhí)行返回指令時,返回的斷點是(C)。(A)調(diào)用指令的首地址(B)調(diào)用指令的末地址(C)調(diào)用指令下一條指令的首地址(D)返回指令的末地址50.可以為訪問程序存儲器提供或構(gòu)成地址的有(C)。(A)只有程序計數(shù)器PC(B)只有PC和累加器A(C)只有PC,A和數(shù)據(jù)指針DPTR(D)PC,A,DPTR和堆棧指針SP簡答題什么是指令系統(tǒng)答:計算機所能執(zhí)行的全部指令的集合什么是指令答:是指示計算機執(zhí)行某些操作的命令什么是匯編語言答:采用助記符表示的指令什么是尋址方式答:就是找到存放操作數(shù)的地址,并把操作數(shù)提取出來的方法,即尋找操作數(shù)或者是操作數(shù)地址的方法什么是堆棧答:是一種執(zhí)行“后進(jìn)先出”算法的數(shù)據(jù)結(jié)構(gòu)什么是指令周期答:取出并執(zhí)行一條指令的時間串行數(shù)據(jù)傳送的主要優(yōu)點和用途是什么答:串行數(shù)據(jù)傳送是將數(shù)據(jù)按位進(jìn)行傳送的方式。其主要優(yōu)點是所需的傳送線根數(shù)少(單向傳送只需一根數(shù)據(jù)線、雙向僅需兩根),對于遠(yuǎn)距離數(shù)據(jù)傳送的情況,采用串行方式是比較經(jīng)擠的?!に源蟹绞街饕糜谟嬎銠C與遠(yuǎn)程終端之間的數(shù)據(jù)傳送。MCS一51指令集中有無“程序結(jié)束”指令?怎樣實現(xiàn)“程序結(jié)束”功能
答:沒有這樣的指令。但實現(xiàn)"程序結(jié)束"至少可以借助4種辦法:=1\*GB3①用原地踏步指令SJMP$死循環(huán);=2\*GB3②在最后一條指令后面設(shè)斷點,用斷點執(zhí)行方式運行程序;=3\*GB3③用單步方式執(zhí)行程序;=4\*GB3④在末條指令之后附加一條LJMP0000H,由軟件返回監(jiān)控狀態(tài)。中斷服務(wù)子程序與普通子程序有哪些異同之處答:相同點:都是讓CPU從主程序轉(zhuǎn)去執(zhí)行子程序,執(zhí)行完畢后又返回主程序。不同點:中斷服務(wù)子程序是隨機執(zhí)行的,而普通子程序是預(yù)先安排好的;中斷服務(wù)子程序以RETI結(jié)束,而一般子程序以RET結(jié)束。RETI除了將斷點彈回PC動作之外,還要清除對應(yīng)的中斷優(yōu)先標(biāo)志位(片內(nèi)不可尋址的觸發(fā)器),以便新的中斷請求能被響應(yīng)。說明DAA指令的用法答:DAA為十進(jìn)制調(diào)整指令。在進(jìn)行BCD數(shù)加法運算時,該指令要跟在加法指令后面,對A的內(nèi)容進(jìn)行十進(jìn)制調(diào)整。8051有幾種尋址方式各涉及哪些存儲器空間
答:立即尋址(程序寄存器);直接尋址(內(nèi)部RAM和特殊功能寄存器);寄存器尋址();寄存器間接尋址(內(nèi)部RAM);相對尋址(程序寄存器);變址尋址(程序、數(shù)據(jù)寄存器);位尋址(內(nèi)部RAM和特殊功能寄存器的位地址空間)8051響應(yīng)中斷的條件是什么CPU響應(yīng)中斷后,CPU要進(jìn)行哪些操作不同的中
斷源的中斷入口地址是多少答:(l)CPU響應(yīng)中斷的條件如下:=1\*GB3①首先要有中斷源發(fā)出有效的中斷申請;=2\*GB3②CPU中斷是開放的,即中斷總允許位EA=l,CPU允許所有中斷源申請中斷;=3\*GB3③申請中斷的中斷源的中斷允許位為1,即此中斷源可以向CPU申請中斷。以上是CPU響應(yīng)中斷的基本條件。如果上述條件滿足,則CPU一般會響應(yīng)中斷。但是,若有下列任何一種情況存在,則中斷響應(yīng)會被阻止。=1\*GB3①CPU正處在為一個同級或高級的中斷服務(wù)中。=2\*GB3②現(xiàn)行機器周期不是所執(zhí)行的指令的最后一個機器周期。作此限制的目的在于便當(dāng)前指令執(zhí)行完畢后,才能進(jìn)行中斷響應(yīng),以確保當(dāng)前指令的完整執(zhí)行。=3\*GB3③當(dāng)前指令是返回指令(RET、RETI)或訪問IE、IP的指令。因為按MCS-51中斷系統(tǒng)的特性規(guī)定,在執(zhí)行完這些指令之后,還應(yīng)再繼續(xù)執(zhí)行一條指令,然后才能響應(yīng)中斷。若存在上述任何一種情況,CPU將丟棄中斷查詢結(jié)果;否則,將在緊接著的下一個機器周期內(nèi)執(zhí)行中斷查詢結(jié)果,響應(yīng)中斷。(2)CPU響應(yīng)中斷后,保護(hù)斷點,硬件自動將(PC)→堆棧,尋找申斷源,中斷矢量→PC,程序轉(zhuǎn)向中斷服務(wù)程序入口地址。(3)INT0=0003H,T0=000BH,INT1=0013H,Tl=00lBH,串行接口=0023H。單片機對中斷優(yōu)先級的處理原則是什么?答:(1)低級不能打斷高級,高級能夠打斷低級;(2)一個中斷已被響應(yīng),同級的被禁止;(3)同級,按查詢順序,INT0→T0→INT1→Tl→串行接口。80C'51的外部中斷有哪兩種觸發(fā)方式它們對觸發(fā)脈沖或電平有什么要求
答:(1)有電平觸發(fā)和脈沖觸發(fā)。(2)電平方式是低電平有效。只要單片機在中斷請求引入端INT0和INT1上采樣到低電平時,就激活外部中斷。脈沖方式則是脈沖的下跳G有效。這種方式下,在兩個相鄰機器周期對中斷請求引入端進(jìn)行采樣中,如前一次為高,后一次為低,即為有效中斷請求。因此在這種中斷請求信號方式下,中斷請求信號的高電平狀態(tài)和低電平狀態(tài)都應(yīng)至少維持一個周期以確保電平變化能被單片機采樣到。單片機怎樣管理中斷怎樣開放和禁止中斷怎樣設(shè)置優(yōu)先級答:(1)由中斷源提出中斷,再由中斷控制端決定是否中斷,再按設(shè)定好的優(yōu)先級的順序響應(yīng)中斷。如同一級優(yōu)先級的中斷按:外部中斷0,定時中斷0,外部中斷1,定時中斷1,串行中斷。中斷后如果是:脈沖觸發(fā),TEl(0)被清0;電平觸發(fā),IEl(0)不被清零,要用軟件清0。(2)它由中斷允許寄存器IE控制:如開放中斷EA必須為1,再使要求中斷的申斷源的中斷允許位為1:要禁止中斷,EA=0即可。(3)由IP控制,1為高級,0為低級,PS為串行中斷優(yōu)先級,PTl(0)為定時中斷1(0)優(yōu)先級,PXl(0)外部中斷1(0)優(yōu)先級。使哪個中斷源為優(yōu)先級,就置哪個優(yōu)先設(shè)定位為1。8051單片機定時器一計數(shù)器作定時和計算用時,其計數(shù)脈沖分別由誰提供?答:作定時器時:計數(shù)脈沖來自單片機內(nèi)部,其頻率為振蕩頻率的1/12。作計數(shù)器時:計數(shù)脈沖來自單片機的外部,即P3.4(T0)和P3.5(Tl)兩個引腳的輸入脈沖。8051單片機定時器/計數(shù)器的門控信號GATE設(shè)置為1時,定時器如何啟動?答:80C51單片機定時器/計數(shù)器的門控信號GATE設(shè)置為1時,定時器的啟動受外部INT0(INTl)引腳的輸人電平控制:當(dāng)INT0(INTl)引腳為高電平時,置TR0(TRl)為1時啟動定時器/計數(shù)器0(1)工作。8051單片機片內(nèi)設(shè)有幾個定時器/計數(shù)器它們是由哪些特殊功能寄存器組成
答:80C51單片機片內(nèi)設(shè)有2個定時器/計數(shù)器:定時器/計數(shù)器0和定時器/計數(shù)器1,由TH0、TL0、THl、TLl、TMOD、TCON特殊功能寄存器組成。什么是單片機的機器周期、狀態(tài)周期、振蕩周期和指令周期.答:某條指令的執(zhí)行周期由若干個機器周期(簡稱M周期)構(gòu)成,一個機器周期包含6個狀態(tài)周期(又稱時鐘周期,簡稱S周期),而一個狀態(tài)周期又包含兩個振蕩周期(P1和P2,簡稱p周期)。也就是說,指令執(zhí)行周期有長有短,但一個機器周期恒等于6個狀態(tài)周期或12個振蕩周期,即lM=6S=l2P。請見《教材》P28圖。當(dāng)定時器T0工作于模式3時,如何使運行中的定時器T1停止下來?答:TRl為定時器Tl的運行控制位,通常將該位置1就可啟動定時器Tl使之運行起來;把TRl清0便停止定時器Tl的運行。但在定時器T0被設(shè)定為模式3運行時,就不能再用這種方法來控制定時器Tl的啟停了。因為在這種情況下,如《教材》Pl06圖6-11所示,TRl借給定時器T0作為8位定時器TH0的運行控制位了。當(dāng)定時器T0在模式3下運行時,若把定時器1設(shè)定為模式3,即將TMOD寄存器的位5(Ml)和位4(M0)寫成llB,則定時器Tl便停止運行;若此后將其從模式3中切換出來,例如,把這兩位再次寫成0lB,則定時器Tl將按模式1運行起來。波特率、比特率和數(shù)據(jù)傳送速率的含意各是什么?答:在數(shù)據(jù)通信申,描述數(shù)據(jù)傳送速度的方式有3種:=1\*GB3①波特率:每秒傳送多少個信號碼元(或每秒信號碼元變換的總個數(shù)),單位是波特(Bd)。=2\*GB3②比特率:每秒傳送多少個二進(jìn)制位(或每秒傳送二進(jìn)制碼元的個數(shù)),單位是b/s。=3\*GB3③數(shù)據(jù)傳送速率(或字符傳送速率):每秒傳送多少個字符(或單位時間內(nèi)平均數(shù)據(jù)傳移速率),單位是字符/秒。當(dāng)傳輸?shù)男盘柺嵌M(jìn)制數(shù)位時,波特率和比特率就變成了一回事,尤其是計算機通信中,信號碼元常與二進(jìn)制碼元相同,此時可以統(tǒng)一起來。例如,甲乙雙方傳送二進(jìn)制數(shù)據(jù)的速度是每秒傳送300個字符,每個字符附加了起始、停止和校驗各一位,此時描述該速度有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。開機復(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主要用于保存程序運行中的各種狀態(tài)信息。各位功能如下:CY(PSW·7)為進(jìn)位標(biāo)志。在進(jìn)行加或減運算中,表示有無進(jìn)位或借位。位操作時,又可認(rèn)為是位累加器。AC(PSW·6)為輔助進(jìn)位標(biāo)志。加或減操作中,表示低4位數(shù)向高4位有無進(jìn)位或借位,以用作BCD碼調(diào)整的判斷位。F0(PSW·5)為用戶標(biāo)志位。用戶可自行定義的一個狀態(tài)標(biāo)記。RSl、RS0(PSW·4PSW·3)為工作寄存器組指針。用以選擇CPU當(dāng)前工作寄存器組。OV(PSW·2)為溢出標(biāo)志。算術(shù)運算時,表示是否溢出。Fl(PSW·l)為用戶標(biāo)志位。同F(xiàn)0。P(PSW·0)為奇偶標(biāo)志位。表示累加器A中"1"的位數(shù)的奇偶數(shù)。該位多用作串行通信中的奇偶檢驗。位地址7CH與字節(jié)地址7CH如何區(qū)別位地址7CH具體在片內(nèi)RAM的位置
答:字節(jié)地址是片內(nèi)RAM的單元地址,而位地址是片內(nèi)RAM單元申的某一位。7CH字節(jié)地址為RAM的7CH單元,而7CH位地址是RAM2FH單元中的D4位。MCS一51單片機的時鐘周期與振蕩周期之間有什么關(guān)系一個機器周期如何劃分
答:時鐘周期為最基本的時間單位。機器周期則是完成某一個規(guī)定操作所需的時間。一個機器周期為6個時鐘周期,共12個振蕩周期,依次可表示為SlPl、SlP2、…、S6Pl、S6P2,即一個時鐘周期包含有二個振蕩周期。MCS一51單片機有幾種復(fù)位方法應(yīng)注意什么事項
答:單片機的復(fù)位有上電自動復(fù)位和按鈕手動復(fù)位兩種。使用時應(yīng)注意:上電復(fù)位的最短時間應(yīng)保證為振蕩周期建立時間加上兩個機器周期的時間。當(dāng)單片機運行程序出錯或進(jìn)入死循環(huán)時,可用按鈕復(fù)位來重新啟動。MCS一51單片機內(nèi)部包含哪些主要邏輯功能部件?答:89C51單片機主要由下列部件組成:一個8位CPU、一個片內(nèi)振蕩器及時鐘電路、4KBFlashROM程序存儲器、256B的RAM、2個16位的定時/計數(shù)器、可尋址64KB片外數(shù)據(jù)存儲器和64KB片外程序存儲器空間的控制電路、4個8位并行I/O端口及一個可編程全雙工串行接口。MCS一51單片機的存儲器從物理結(jié)構(gòu)上和邏輯上分別可劃分幾個空間?答:MCS-51系列單片機的存儲器配置從物理結(jié)構(gòu)上可分為:片內(nèi)程序存儲器、片外程序存儲器、片內(nèi)數(shù)據(jù)存儲器、片外數(shù)據(jù)存儲器。從邏輯上可分為:片內(nèi)外統(tǒng)一編址的64KB的程序存儲器、片內(nèi)256B的數(shù)據(jù)存儲器以及片外64KB的數(shù)據(jù)存儲器。存儲器中有幾個具有特殊功能的單元分別作什么用
答:MCS-51系列單片機的存儲器中有6個保留特殊功能單元,其中0000H為復(fù)位入□)0003H為外部中斷0矢量入口、000BH為T0溢出中斷人口、0013H為外部中斷1矢量入口、00lBH為Tl溢出中斷入口、0023H為串行接口中斷入口。MCS一51單片機片內(nèi)256B的數(shù)據(jù)存儲器可分為幾個區(qū)分別作什么用
答:MCS-51單片機片內(nèi)數(shù)據(jù)存儲器可分為二個區(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ū)又稱特殊功能寄存器。什么是單片機的機器周期、狀態(tài)周期、振蕩周期和指令周期它們之間是什么關(guān)系
答:某條指令的執(zhí)行周期由若干個機器周期(簡稱M周期)構(gòu)成,一個機器周期包含6個狀態(tài)周期(又稱時鐘周期,簡稱S周期),而一個狀態(tài)周期又包含兩個振蕩周期(P1和P2,簡稱p周期)。也就是說,指令執(zhí)行周期有長有短,但一個機器周期恒等于6個狀態(tài)周期或12個振蕩周期,即lM=6S=l2P。請見《教材》P28圖。MCS-51單片機的PO-P3四個I/O端口在結(jié)構(gòu)上有何異同使用時應(yīng)注意什么事項
答:MCS-51單片機的四個端口在結(jié)構(gòu)上相同之處,P0~P3都是準(zhǔn)雙向I/O口,作輸入時,必須先向相應(yīng)端口的鎖存器寫入"1"。不同之處:P0口的輸出級與Pl~P3口不相同,它無內(nèi)部上拉電阻,不能提供拉電流輸出,而Pl~P3則帶內(nèi)部上拉電阻,可以提供拉電流輸出。當(dāng)P0口作通用I/O口輸出使用時,需外接上拉電阻才可輸出高電平;但作地址/數(shù)據(jù)總線時,不需要外接上拉電阻。Pl~P3作I/O輸出時,均不需外接上拉電阻。MCS一51單片機有幾種低功耗方式如何實現(xiàn)
答:MCS-51單片機有兩種低功耗方式,分別為待機(休閑)方式和掉電方式。置PCON中的D0位即IDL為"1",單片機即迸人待機方式;置Dl位即PD為"1",則進(jìn)入掉電方式。33.試說明指令CJNE@R1,#7AH,10H的作用。若本指令地址為8100H,其轉(zhuǎn)移地址是多少?答:CJNE@Rl,#7AH,l0H指令是進(jìn)行以Rl間址單元的內(nèi)容與一個立即數(shù)進(jìn)行比較。當(dāng)((Rl))=7AH時:(PC)+3→PC,0→CY當(dāng)((Rl))>7AH時:(PC)+3+10H→PC,0→CY當(dāng)((Rl)﹤7AH時:(PC)+3+10H→PC,l→CY若本指令地址為8100H,其轉(zhuǎn)移地址為:目的地址=8100H十3十10H=8113H。如何將8051當(dāng)8031使用?答:把80C51的EA引腳接地,片外擴接EPROM芯片,就等于宣布片內(nèi)ROM作廢,完全執(zhí)行片外EPROM中的程序。這樣,80C51就可當(dāng)80C31使用。35.設(shè)(R0)=7EH,DPTR=10FEH,片內(nèi)RAM7EH和7FH兩單元的內(nèi)容分別是FFH和38H,請寫出下列程序段的每條指令的執(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編程題編一個子程序,將寄存器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單元中有一個2B的二進(jìn)制數(shù),高位在前,低位在后,請編程將其求補,存回原單元中去。4解START:CLRCMOVA,5lHCPLAADDA,#03HMOV5lH,AMOVA,50HCPLAADDCA,#00HMOV50H,ARET片內(nèi)RAM30H開始的單元中有10B的二進(jìn)制數(shù),請編程求它們之和(和<256)。5解ADDIO:MOVR0,30HMOVR7,#9MOVA,@R0LOOP:INCR0ADDA,@R0DJNZR7,LOOPMOV30H,ARETR1中存有一BCD碼,請編程將它轉(zhuǎn)換成ASCII碼,存人外RAMIO00H單元中去。6解RIB-AI:MOVA,RlORLA,#30H(也可以ADDA,#30H)MOVDPTR,#1000HMOVX@DPTR,ARET編一個程序,將累加器中的一個字符從串行接口發(fā)送出去。7解SOUT:MOVSCON,#40H;設(shè)置串行接□為工作方式1MOVTMOD,#20H;定時器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編一子程序,從串行接口接受一個字符。14解START:MOVTMOD,#2OH;定時器Tl工作于模式2MOVTHl,#0E8H;設(shè)置波特率為12OOb/sMOVTLl,#0E8HSETBTRl;啟動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解:要實現(xiàn)單字節(jié)BCD數(shù)的減法,應(yīng)當(dāng)設(shè)法將減法變?yōu)榧臃ê螅偈褂肈AA指令調(diào)整。具體操作是:先用模(99十l)H即9AH減去減數(shù),得到其補數(shù),再與被減數(shù)進(jìn)行加法操作,然后再用DAA調(diào)整。假設(shè)被減數(shù)放在片內(nèi)RAM的60H單元,減數(shù)放在61H單元,差值放入62H單元。程序如下:CLRCMOVA,#9AHSUBBA,61H;對(61H)內(nèi)的BCD碼求十進(jìn)制補數(shù)ADDA,60HDAA;對和數(shù)(其實是差值)進(jìn)行調(diào)整MOV62H,ARET例如,當(dāng)初值為(60H)=61,(61H)=23時,運行結(jié)果將是:(62H)=38.利用調(diào)子程序的方法,進(jìn)行兩個4B無符號數(shù)相加。請編主程序及子程序。18解:用R0和Rl作數(shù)據(jù)指針,R0指向第一個加數(shù),并兼作"和"的指針,Rl指向另一個加數(shù),字節(jié)數(shù)存放到R2中作計數(shù)初值。主程序:JAFA:MOVR0,#20H;指向加數(shù)最低字節(jié)MOVRl,#29H;指向另一加數(shù)最低字節(jié)MOVR2,#04H;字節(jié)數(shù)作計數(shù)值A(chǔ)CALLJASUB;調(diào)用加法子程序AJMP$RET多字節(jié)加法子程序:JASUB:CLRCJASUB1:MOVA,@R0;取出加數(shù)的一個字節(jié)(4B無符號數(shù)加法)ADDCA,@Rl;加上另一數(shù)的一個字節(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è)置計數(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;堆棧→ARET求片外RAM3000H,3001H單元數(shù)據(jù)的平均值,并傳送給3002H單元。25解MOVDPTR,#3000H;設(shè)置第一個數(shù)據(jù)地址指針MOVXA,QDPTR;取第一個數(shù)據(jù)MOVR0,A;將第一個數(shù)據(jù)送R0INCDPTR;設(shè)置第二個數(shù)據(jù)地址指針MOVXA,@DPTR;取第二個數(shù)據(jù)ADDA,R0;兩個數(shù)據(jù)相加RRCA;帶進(jìn)位C右移一位,相當(dāng)除以2INCDPTR;設(shè)置結(jié)果單元地址指針MOVX@DPTR,A;存平均值RET22.分別寫出實現(xiàn)如下功能的程序段。26(1)將片內(nèi)RAM30H的中間4位,31H的低2位,32H的高2位按序拼成一個新字節(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.編程將一個按高低字節(jié)存放在21H、20H中的雙字節(jié)數(shù)乘2后,再按高低次序?qū)⒔Y(jié)果存放到22H,21H、20H單元。32解ORG0030HMOVA,20HCLRCRLCAMOV20H,AMOVA,2lHRLCAMOV2lH,AJNCNEXTMOV22H,#01NEXT:SJMP$編程將存放在片外RAM1000H,1001H中的兩個數(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,請編程。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編寫一個軟件延時1s、和1min的子程序。設(shè)fosc=6MHz,則1個機器周期=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請編制串行通信的數(shù)據(jù)發(fā)送程序.發(fā)送片內(nèi)RAM50H-}-5FH的16B數(shù)據(jù),串行接口設(shè)定為方式2,采用偶校驗方式。設(shè)晶振頻率為6MHz48解查詢方式發(fā)送程序如下:MOVSCON,#80H;設(shè)定為方式2發(fā)送MOVPCON,#80H;波特率固定,選用fOSC/32(高達(dá)187500Bd)MOVR0,#50H;給待發(fā)送數(shù)據(jù)塊地址指針R0置初值MOVR7,#16;數(shù)據(jù)塊長度計數(shù)器R7置初值LOOP:MOVA,@R0;取一字節(jié)數(shù)據(jù)→AMOVC,PMOVTB8,C;P隨A變,P借助位累加器C傳給TB8MOVSBUF,A;啟動發(fā)送JNBTI,$;查詢發(fā)送標(biāo)志,等待一字節(jié)數(shù)據(jù)發(fā)送完CLRTI;TI標(biāo)志位清0INCR0;待發(fā)送數(shù)據(jù)塊地址指針加1DJNZR7,LOOP;數(shù)據(jù)塊長度減1,未發(fā)送完則返回繼續(xù)發(fā)送下一字節(jié)RET請編制串行通信數(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定時MOVTHl,#0F3H;置8位計數(shù)初值,同時送入高8位MOVTL1,#0F3HSETBTR1;啟動TlMOVSCON,#0D0H;設(shè)定串行接口為方式3,并允許接收MOVR0,#50H;給數(shù)據(jù)塊地址指針R0置初值MOVR7,#16;給數(shù)據(jù)塊長度計數(shù)器R7置初值CONT:JBCRI,PRI;查詢等待接收,若RI=1則結(jié)束等待,并清0RISJMPCONT;若一字節(jié)尚未收完,則繼續(xù)等待PRI:MOVA,SBUF;一字節(jié)收完,從串行接口中讀取數(shù)據(jù)JNBP,PNP;對該字節(jié)進(jìn)行查錯處理,若P=RB8無錯,否則有錯JNBRB8,PER;若P=l,RB8=0,有錯,轉(zhuǎn)出錯處理AJMPRIGHT;若P=l,RB8=1,無錯,轉(zhuǎn)保存數(shù)據(jù)PNP:JBRB8,PER;若P=0,RB8=1,有錯,轉(zhuǎn)出錯處理RIGHT:MOV@R0,A;若P=0,RB8=0,無錯,保存接收的數(shù)據(jù)INCR0;數(shù)據(jù)塊地址指針加1DJNZR7,CONT;數(shù)據(jù)塊字節(jié)數(shù)減1,16B未接收完則繼續(xù)CLRFl;正確接收完16B數(shù)據(jù),清0出錯標(biāo)志位FlSJMP$;正常結(jié)束,停止運行程序PER:SETBFl;因P≠RB8,校驗為錯,置位出錯標(biāo)志FlSJMP$;一旦發(fā)現(xiàn)有錯則立即停止執(zhí)行程序在8051片內(nèi)RAM20H-3FH單元中有32B數(shù)據(jù),若采用方式I進(jìn)行串行通信,波特率為1200、fosc=12MHz,用查詢和中斷兩種方式編寫發(fā)送接收程序50解Tl工作于方式2作為波特率發(fā)生器,取SMOD=0,Tl的計數(shù)初值計算如下:2SMODfOSC波特率(Bd)=————×——————3212×(256-x)112×106所以1200=——×——————3212(256-x)故x=230=E6H(1)查詢方式程序=1\*GB3①發(fā)送程序ORG0000HAJMPSTARTORG0030HSTART:MOVTMOD,#20H;定時器Tl工作于模式2MOVTH1,#0E6H;置定時器Tl計數(shù)初值MOVTL1,#0E6HSETBTR1;啟動TlMOVSCON,#40H;串行接口工作于方式1,不允許接收MOVR0,#20H;R0指向發(fā)送緩沖區(qū)首址MOVR7,#32;R7為發(fā)送數(shù)據(jù)塊長度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;定時器Tl工作于模式2MOVTHl,#0E6HMOVTL1,#0E6H;設(shè)置Tl計數(shù)初值SETBTR1;啟動TlMOVSCON,#50H;設(shè)定串行方式1并允許接收MOVR0,#20H;R0為接收緩沖區(qū)首址MOVR7,#32;R7為接收數(shù)據(jù)塊長度LOOP:JNBRI,$;一幀收完?末收完等待
CLRRI;收完清RIMOV@R0,SBUF;將數(shù)據(jù)讀入接收數(shù)據(jù)緩沖區(qū)INCR0;修改地址指針SJMP$(2)中斷方式程序中斷方式的初始化部分同查詢方式,以下僅寫不同部分。=1\*GB3①中斷發(fā)送程序:
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年安徽貨運從業(yè)資格證摸擬考試試題答案
- 2025年哈爾濱b2貨運資格證多少道題
- 2025年鄭州普通貨運從業(yè)資格證模擬考試
- 2025年信陽貨運從業(yè)資格證模擬考試下載題
- 2025年安陽貨運從業(yè)資格仿真考題
- 互動式教學(xué)在家校共育中的實踐探索特指特殊家庭
- 健康飲食家庭教育與實際應(yīng)用的結(jié)合
- 體育場館的室內(nèi)裝飾設(shè)計要點
- 創(chuàng)業(yè)實踐中的教育思維與創(chuàng)新策略
- 農(nóng)村住宅建筑穩(wěn)定性教育及實踐案例
- 供電線基礎(chǔ)澆筑施工作業(yè)指導(dǎo)書
- 八年級初二(上)綜合實踐教案
- VDA63 過 程 審 核
- 中班科學(xué):各種各樣的帽子
- 履行合同所必需的設(shè)備和技術(shù)能力證明材料
- 國家開放大學(xué)《理工英語3》章節(jié)測試參考答案
- 機械工程學(xué)報標(biāo)準(zhǔn)格式
- 實驗室儀器設(shè)備清單與價格
- STM8S-匯編Word版
- 機械制圖國標(biāo)
- 冷庫項目專項扶持資金申請報告(模板范本)
評論
0/150
提交評論