《單片機原理及接口技術》(第二版)余錫存著-課后習題答案_第1頁
《單片機原理及接口技術》(第二版)余錫存著-課后習題答案_第2頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

《單片機原理及接口技術》(第二版)余錫存著-課后習題答案第二章1.89C51、87C51、80C51和80C31單片機的主要區(qū)別在那里?答:相同之處是:制造工藝都為CHMOS,都有128字節(jié)片內RAM、兩個定時/計數(shù)器、4個8位I/O并行口,一個串行口和5個中斷源。主要區(qū)別:①89C51片內4K字節(jié)FLASHROM;②87C51片內4K字節(jié)EPROM;③80C51片內4K字節(jié)掩膜ROM;④80C31片內無程序存儲器。2.MCS-51單片機引腳有多少I/O線?它們和單片機對外的地址總線和數(shù)據(jù)總線有何關系?答:4個8位I/O并行口,一個串行口;其中P0口為外接程存和數(shù)存的地址低8位和數(shù)據(jù)總線的時分復用接口;其中P2口為外接程存和數(shù)存的地址高8位總線接口;其中P1口為真正的用戶口線;其中P3口有第2功能;以上4個口線在沒有專用功能時,也可以做通用I/O口線用。3.簡述8031片內RAM區(qū)地址空間的分配特點。在一個機器周期內,CPU可以完成一個獨立的操作。指令周期:它是指CPU間都是有一個或幾個機器周期組成。MCS-51系統(tǒng)中,有單周期指令、雙周期指令和四周期指令。z12μs(微秒)。第三章MCS-51如何?答:①按功能分為5類,分別是:數(shù)據(jù)傳送類、算術操作類、邏輯操作類、控制轉移類和位操作類;②具有7種尋址方式;③立即尋址,尋址范圍是程序存儲器;RAM128128R0~R7;寄存器間接尋址,尋址范圍是內部RAM的低128和外部RAM低64K可尋址空間;基址寄存器加變址寄存器間接尋址,尋址范圍是程序存儲器;-128~+127RAM寄存器中的可尋址位。設內部RAM中59H單元的內容為50H,寫出當執(zhí)行下列程序段后寄存器A,R0RAM50H、51H答:MOV A,59H ;(A)=(59H)=50HMOV R0,A ;(R0)=50HMOV A,#00 ;(A)=00V A ;(0)MOV A,#25H ;(A)=25HMOV 51H,A ;(51H)=25HMOV 52H,#70H;(52H)=70H執(zhí)行下列程序段后:(A)=25H,(R0)=50H,(50H)=00、(51H)=25HPSW中Cy與OV有何不同?下列程序段執(zhí)行后(Cy)=?(OV)=?。MOV A,#56HADD A,#74H答:MOV A,#56H ;(A)=56H=01010110BADD A,#74H ;(A)=56H+74H=0CAH=11001010B,()0()MOVC A,@A+DPTR與MOVX A,@DPTR指令有何不同?答:①MOVC A,@A+DPTR(A)R;②MOVX A,@DPTR ;尋找的操作數(shù)在外部數(shù)據(jù)存儲器中,地址是 :R。AJMP、LJMP、SJMP相同之處,都是無條件轉移指令。① AJMP addr112KB② LJMP addr16;轉移的目標地址可以在64KB程序存儲器的任何地方。③ SJMP rel ;下調指令為基準的-128B~+127B范圍內的短跳轉指令。PHMHH24H10H,執(zhí)行下列程序段后,61H,62H,30H,31H,DPTRSP中的內容將有何變化?PUSHPUSHPOPDPLPOPDPHMOV30H,#00HMOV 31H,#0FFH答:PUSH30H;(61H)=(30H)=24HPUSH31H;(62H)=(31H)=10HPOPDPL;(DPL)=(62H)=10HPOPDPH;(DPH)=(61H)=24HMOV30H,#00H;(30H)=00HMOV31H,#0FFH;(31H)=0FFH(61H)24H,(62H)=10H,(30H)=00H,(31H)=0FFH,(DPTR)=2410H00H01H8I/OCLR CMOV JC LOOP1CPL CSETB LOOP1:ORL C,ACC.0JB LOOP2:MOV P1,A答: CLR C ;(Cy)=0MOV A,#66H ;(A)=66H=01100110BJC LOOP1 ; 因此時(Cy)=0,所以不跳CPL C ; (Cy)=1SETB 01H ;(01H)=1LOOP1ORL C,ACC.0; (Cy)=(Cy)∨(ACC.01JB ACC.2,LOOP2 因(ACC.21LOOP2:MOV P1,A ; (P1)=01100110BMCS-51⑴R1的內容傳送到R0;⑵片外RAM20H單元的內容送R0;⑶片外RAM20H單元的內容送片內RAM20H單元;⑷片外RAM1000H單元的內容送片內RAM20H單元;⑸ROM2000H單元的內容送R0;⑹ROM2000H單元的內容送片內RAM20H⑺ROM2000H單元的內容送片外RAM20H答:⑴R1的內容傳送到MOV A,R1MOV R0,A⑵片外RAM20H單元的內容送MOV R1,#20HMOVX A,@R1MOV R0,A⑶片外RAM20H單元的內容送片內RAM20H單元;MOV R1,#20HMOVX MOV 20H,A⑷片外RAM1000H單元的內容送片內RAM20H單元;MOV DPTR,#20HMOVX MOV 20H,A⑸ROM2000H單元的內容送R0;MOV DPTR,#2000HCLR AMOVC MOV R0,A⑹ROM2000H單元的內容送片內RAM20H單元;MOV DPTR,#2000HCLR AMOVC MOV 20H,A⑺ROM2000H單元的內容送片外RAM20H單元。MOV DPTR,#2000HCLR AMOVC A,@A+DPTRMOV MOVX @R0,A分析以下程序每條指令執(zhí)行的結果:MOV A,#25H ;(A) =25HMOV R1,#33H ;(R1)=MOV 40H,#1AH ;(40H)=MOV R0,40H ;(R0)=1AHADD A,R1ADDC ADDC A,40H

;(A)=25H+33H=58H;(A)=58H+(1AH)+(Cy)=58H;(A)=58H+ 1AH+ (Cy)=72H10.設A=83H,R0=17H,(17H)=34H,執(zhí)行下列程序后,(A)=?ANL 0011BORL 0111BXRL CPL A

;(A)=10000011B∧00010111B=0000;(17H)=00110100B∨00000011B=0011;(A)=00000011B⊕00110111=00110100B;(A)=11001011B4BCD30H、31H40H、H(次序為千位、百位在低地址中,十位、個位在高地址中H、H、H(H,試編寫加法程序。解: ORG 00HMOV30H,#12H;MOV31H,#34H;MOV40H,#56H;MOV41H,#78H;MOVA,31H;取被加數(shù)十個位ADDA,41H;相加,(A)=(31H)+(41H)DAA;十進制調整MOV51H,A; 存十位個位運算結果MOVA,30H;取被加數(shù)千百位ADDCA,40H;相加,(A)=(30H)+(40H)DAA;十進制調整MOV50H,A; 存千位百位運算結果CLRA;清AADDCA,#0;將進位加到A中MOV52H,A;存進位SJMP$RAM20H~50H0AAH51H01H51H0。解: ORG 00HMOV 30H,#0AAH MOV R1,#31H ;MOV R0,#20H ;BIJIAO:MOV A,@R0CJNE A,#0AAH,LOOP;MOV 51H,#01HSJMP JIESHULOOP:INC R0DJNZ R1,BIJIAOMOV JIESHU:SJMP $第四章1、若有兩個符號數(shù)50H51HX*10+Y52H、53H10000 7850 20002 E6

ORG 00HMOV 3 MOV A,@R0000375F00A4MOV B,#0AH0006A45MUL AB0007086INC R00008267ADD A,@R00009088INC R0000AA6F09MOV @R0,B000C0810INC R0000DF611MOV @R0,A12 END23000HRAM14ASCII0~9的數(shù),試編寫程序將它們轉換成BCD碼,并以壓縮BCD2000HRAM1ORG 00H00009030002MOV DPTR,#3000H; 原始數(shù)據(jù)首地址000378073MOV R0,#07; 循環(huán)次數(shù)000579304MOV R1,#30H ; 轉換結果暫存區(qū)指針0007E05CH1:MOVXA,@DPTR0008550F6ANLA,#00001111B000A C4000B F5F0

7 SWAPA8 MOV B,A000DA39INCDPTR000EE010MOVXA,@DPTR000F550F11ANL A,#00001111B001145F012ORL A,B0013F713MOV @R1,A00140914INC R10015A315INC DPTR0016D8EF16DJNZR0,CH1001890200017MOV DPTR,#2000H;轉換結果存儲區(qū)001B 7A07001D 7930

18 MOV R2,#07H ;19 MOV R1,#30H

結果個數(shù)001F E7 20CH2: MOV A,@R1;3、采樣的5個值分別存放在R0、R1、R2、R3、R4中,求出它們的中間值,并存放在R2中。1ORG 00H>0000 78052MOV R0,#50002 79063MOV R1,#600047A074MOV R2,#700067B085MOV R3,#800087C096MOV R4,#9000AE47 CLR A ;000BC38CLR C ;000CE89MOV A,R0 ;000D2910 ADD A,R1;000E2A11ADD A,R2 ;000F2B12 ADD A,R300102C13 ADD A,R4001175F00514MOV B,#500148415 DIV AB0015FA16 MOV R2,A0016 17 END18 END4、以BUF1為起始地址的外部數(shù)據(jù)存儲區(qū)中存放著16個單字節(jié)的無符號數(shù),求其平均值并送入R2中。1ORG 00H2BUF1 EQU #1000H00009010003MOV DPTRBUF10003AA004MOV R2,0000578165MOV R0,#16H0007E06SUM: MOVXA,@DPTR00082A7ADD A,R20009FA8MOV R2,A000AA39INC DPTR000BD8FA10DJNZR0,SUM000D75F01011MOV B,#10H00108412DIV AB0011FA13MOV R2,A14END5、試編寫程序,將內部RAM單元中DATA1開始的20個單字節(jié)數(shù)依次與DATA2單元為起始地址的20個單字節(jié)數(shù)據(jù)進行交換。1 2

#30H#50H3LEN EQU #164ORG 0H000078305MOV R0,DATA1000279506MOV R1,DATA200047A107MOV R2,LEN0006E68EXC: MOV A,@R00007C79XCH A,@R10008F610MOV @R0,A00090811INC R0000A0912INC R1000BDAF913DJNZR2,EXC14END6、某場歌手賽,共有1010和最低分,求平均分(BCD。ORG 0HN EQU #5BLOCKEQU #30HISELSORT:MOV DEC R7MOV R1,BLOCKISST1:MOV MOV A,R7MOV R6,AMOV MOV B,AISST2:INC R1MOV CLR CSUBB A,BJCISST3MOV MOV R2,AMOV B,@R1ISST3:DJNZR6,ISST2MOV A,BXCH A,@R1MOV B,R2MOV @R1,BMOV @R1,ADJNZR7,ISST1MOV MOV @R0,#0 ;去掉最低MOV A,BLOCKADD A,#9MOV R0,AMOV @R0,#0 ;去掉最高AD: MOV R0,BLOCKINC ROMOV CLR ACLR CMOV ADL: ADD A,@R0DAAMOVR2,AADDCA,#0MOVB,AMOVA,R2DJNZR1,ADLMOVR5,0MOVR4,BMOVR3,AMOVR2,#0MOVR1,#8R5R4R3/R2R1 MOV R1,#00H

R4R3MOV R2,#0FHMOV MOV MOV LCALL_DIVAJMP$_DIV: ;{CLRCMOV30H,#0MOV31H,#0MOV32H,#0_DIV_LOOP:CLRCMOVA,R3SUBBA,R1MOVR3,AMOVA,R4SUBBA,R2MOVR4,AMOVA,R5SUBBA,#0MOVR5,AJC_DIV_END_INC_SHANG:CLR CMOVA,30HADDCA,#1MOV30H,AMOVA,31HADDCA,#0MOV31H,AMOVA,32HADDCA,#0MOV32H,ALJMP_DIV_LOOP_DIV_END:CLR CMOVA,R1ADDCA,R3MOVA,R2ADDCA,R4MOVR3,30HMOVR4,31HEND7、編寫將一個十六進制數(shù)轉換為十進制數(shù)的子程序。>000078FE2MOVR0,#FEH000279303MOVR1,#30H0004E84HEXBCD:MOVA,R0000575F0645MOV B,#1000008846DIV AB0009F77MOV @R1,A000A740A8MOV A,#10000CC5F09XCH A,B000E8410DIV AB000F0911INC R10010F712MOV @R1,A00110913INC R10012A7F014MOV @R1,B15 RET8RAMBLOCKLEN。MAXMCS511ORG 0H2LEN EQU #10 ;數(shù)據(jù)塊長度3MAX EQU #40H000078304MOV R0,#30H ; BLOCK0002790A5MOV R1,LEN0004196DEC R1; 循環(huán)次數(shù)0005C37CLR C0006 E6 8LOOP:MOV A,@R00007089INCR000089610SUBBA,@R00009 4002 000B 8002

JCEXCHANG12 SJMPNEXT000D 86F0000F C3

13EXCHANG:14NEXT:CLR

MOV C0010D9F415DJNZR1,LOOP001285F04016MOV40H,B; MAX17END9RAM41H~43H450H。題意不清。10RAMBLOCKLEN,試編程統(tǒng)計其中的正數(shù)、負數(shù)和零的個數(shù)分別存入內部RAM的Pcount、McounZcountMCS511ORG 0H1ORG 0H2LEN EQU #10 ;數(shù)據(jù)塊長度3PCOUNT EQU #30H4MCOUNTEQU #31H5ZCOUNT EQU #32H6 BLOCKEQU #40H0000 7840 7

MOV R0,BLOCK

BLOCK首地址0002790A8MOVR1,LEN0004E69LOOP:MOV A,@R00005C310 CLR C0006B4000411 CJNE A,#0H,SULT10009053212 INC 32H000B800913 SJMPSULT2000D3314SULT1:RLC A; 移出符號位以判斷正負!000E400415 JCNEG0010053016 INC 30H0012800217 SJMPSULT20014053118NEG: INC 31H00160819SULT2:INC R00017D9EB20 DJNZR1,LOOP11、試編寫一查表求平方的子程序SQR(設X在累加器A中,A小于15,平方數(shù)存入工作寄存器R7中)。0000 900008 2 MOV DPTR,#TAB0003 7830 0005 E60006 930007 FF

MOV R0,#30HMOV A,@R0MOVCA,@A+DPTRMOV R7,A0008 01010409 7TAB: DB1,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225000C 101924310010 405164790014 90A9C4E18 END12、試編寫一程序,將外部數(shù)據(jù)區(qū)DATA1單元開始的50個單節(jié)數(shù)逐一依次移動到內部RAM中DATA2單元開始的數(shù)據(jù)區(qū)中。MCS511ORG0H2#1000H3#30H4LEN EQU #10H00009010005MOV DPTR,DATA1000378306MOV R0,DATA2000579107MOV R1,LEN0007E08LOOP:MOVXA,@DPTR0008F69MOV @R0,A0009A310INC DPTR000A0811INC R0000BD9FA12DJNZR1,LOOP13END13、14,略第五章1、簡述中斷、中斷源、中斷源優(yōu)先級及中斷嵌套的含義。CPU中斷的意義在于資源共享和應急處理。CPU三、故障檢測;四、實現(xiàn)人機交流引起中斷的原因,或者能夠發(fā)出中斷請求信號的來源統(tǒng)稱為中斷源。通常中斷源有以下幾種:(1)外部設備請求中斷。一般的外部設備(A/D等)在完成自身的操作后,向CPU發(fā)出中斷請求,要求CPU為他服務。由計算機硬件異常或故障引起的中斷,也稱為內部異常中斷。(2)故障強迫中斷。計算機在一些關鍵部位都設有故障自動檢測裝置。如運算溢出、存儲器讀出出錯、外部設備故障、電源掉電以及其他報警信號等,這些裝置的報警信號都能使CPU中斷,進行相應的中斷處理。(3)實時時鐘請求中斷。在控制中遇到定時檢測和控制,為此常采用一個外部時鐘電路(可編程)控制其時間間隔。需要定時時,CPU發(fā)出命令使時鐘電CPU測和控制工作。(4)數(shù)據(jù)通道中斷。數(shù)據(jù)通道中斷也稱直接存儲器存?。ǎ模停粒┎僮髦袛啵绱疟P、磁帶機或CRT等直接與存儲器交換數(shù)據(jù)所要求的中斷。重要性和緊迫程度,硬件將中斷源分為若干個級別,稱作中斷優(yōu)先級。中斷系統(tǒng)正在執(zhí)行一個中斷服務時,有另一個優(yōu)先級更高的中斷提出中斷請求,這時會暫時終止當前正在執(zhí)行的級別較低的中斷源的服務程序,去處理級別更高的中斷源,待處理完畢,再返回到被中斷了的中斷服務程序繼續(xù)執(zhí)行,這個過程稱為是中斷嵌套。2、MCS-51單片機提供了幾個中斷源?幾個中斷優(yōu)先級?MCS-51單片機的中斷源共有三類,分別是外部中斷、定時計數(shù)器中斷和串行通信口中斷,第一類有IE0和IE1,第二類有TF0和TF1,第三類的RI、TI合二為一。MCS-51單片機分兩個優(yōu)先級,每個中斷源的優(yōu)先級都可以通過中斷優(yōu)先級寄存器IP中的相應位進行設定。在同級優(yōu)先級中,五個中斷源的優(yōu)先級次序由高到低分別是:IE0、TF0、IE1、TF1、RI或TI。3、簡述TCON、SCON、IE、IP四個特殊功能寄存器各位的定義及功能。TCON(TimerControlRegister)定時器/計數(shù)器控制寄存器TCON在特殊功能寄存器中,字節(jié)地址為88H,位地址(由低位到高位為88H一8FH,由于有位地址,所以可以于進行位操作。 TCON的作用是控制定時器的啟、停,標志定時器溢出和中斷情況。其中,TFl,TRl,TF0和TR0位用于定時器/計數(shù)器;IEl,ITl,IE0和IT0位用于中斷系統(tǒng)。 如圖所示:TF1TF1TR1TF0TR0IE1IT1IE0IT0其中,TF1:定時器1溢出標志位。當定時器 1計滿溢出時,由硬件使1置“1,并且申請中斷。進入中斷服務程序后,由硬件自動清“ 0,在查詢方式下用軟件清“0。 1:定時器1運行控制位。由軟件清“0關閉定時器1。當GATE=1,且INT1為高電平時,TR1置“1”啟動定時器當“1”啟動定時器1。 定時器0溢出標志。其功能及操作情況同TF1。 TR0:定時器0運行控制位。其功能及操作情況同TR1。 IE1:外部中斷1請求標志位。 IT1:外部中斷1觸發(fā)方式選擇位。當IT1=0,為低電平觸發(fā)方式;當IT1=1,為下降沿觸發(fā)方式。 IE0:外部中斷0請求標志位。 IT0:外部中斷0觸發(fā)方式選擇位。當IT0=0,為低電平觸發(fā)方式;當IT0=1,為下降沿觸發(fā)方式。SCON(SerialPortControlRegister)串行口控制寄存器98H9FH~98H。TCON中低4位與中斷有關。由于TCON清溢出或啟動定時器工作,可以用位操作命令。例如:執(zhí)行“CLRTF0則清定時器SCON(SerialPortControlRegister)串行口控制寄存器98H9FH~98H。位地址9F9E9D9C9B9A9998位符號SM0SM1SM2RENTB8RB8TIRISM0、SM1:串行口工作方式選擇位SM0、SM1:串行口工作方式選擇位SM2:多機通信控制位REN:允許/禁止串行口接收的控制位TB8REN:允許/禁止串行口接收的控制位TB823911RB8:239(TB8);在方1RB80TI——串行口發(fā)送中斷請求標志位當發(fā)送完一幀串行數(shù)據(jù)后,由硬件置1;在轉向中斷服務程序后,用軟件當發(fā)送完一幀串行數(shù)據(jù)后,由硬件置1;在轉向中斷服務程序后,用軟件清0。清0。RI——串行口接收中斷請求標志位RI——串行口接收中斷請求標志位當接收完一幀串行數(shù)據(jù)后,由硬件置1;在轉向中斷服務程序后,用軟件清0。此處的“軟件清零”,意指需要用戶用指令清零。IE(interruptEnableRegister):中斷允許控制寄存器寄存器地址A8H,位尋址AFH~A8H。位地址AFAEADACABAAA9A8位符號EA/ET2ESET1EX1ET0EX0EA:中斷允許總控制位當EA=0時,中斷總禁止。當EA=1時,中斷總允許后中斷的禁止與允許由各中斷源的中斷允許控制位進行設置。EX0(EX1):外部中斷允許控制位EX0(EX1)=0禁止外中斷EX0(EX1)=1允許外中斷ET0(EX1):定時/計數(shù)中斷允許控制位當ET0(ET1)=0禁止定時(或計數(shù))中斷當ET0(ET1)=1允許定時(或計數(shù))中斷ET2:定時器2中斷允許控制位,在AT89S52、AT89C52中ES:串行中斷允許控制位當ES=0禁止串行中斷當ES=1允許串行中斷IP(InterruptPriority Register):中斷優(yōu)先級控制寄存器B8HBFH~B8H。位地址BFBEBDBCBBBAB9B8位符號//PT2PSPT1PX1PT0PX0PX0——外部中斷0優(yōu)先級設定位;PT0——定時中斷0優(yōu)先級設定位;PX1112(8052)。4、簡述MCS-51單片機的中斷響應過程。MCS-51單片機的中斷響應過程可簡單歸納為5步:CPU處于開中斷狀態(tài)下,則響應中斷。保護現(xiàn)場:在保護現(xiàn)場前,CPU自動將當前PC壓入堆棧。此時,的寄存器推入堆棧。中斷服務:即為相應的中斷源服務。前要關中斷,以防止現(xiàn)場被破壞。在恢復現(xiàn)場后應及時開中斷。返回:CPU將推入到堆棧的斷點地址彈回到程序計數(shù)器,從而使CPU5、說明MCS-51單片機響應中斷后,中斷服務程序的入口地址。MCS-51單片機響應中斷后,其中斷矢量是由硬件自動生成的。各中斷源的中斷服務程序的入口地址如下表。6、指出哪幾個中斷申請標志在CPU響應中斷響應后能被硬件自動清零。除了串行通信中斷申請標志在CPU響應中斷后需要用戶用軟件指CPU硬件自動清零的。它們分別是:外部中斷0申請標志(0、外部中斷11、定時計數(shù)器00)和定時計數(shù)器1。7MCS-51連接,用軟件查詢的方式進行控制如圖。如果個中斷源之間有優(yōu)先級的區(qū)別,固定優(yōu)先級時用“菊花鏈”電路,不定優(yōu)先級時用8259.8、外部中斷INT0、INT1的兩種觸發(fā)方式在原理上有何區(qū)別?如何用軟件設置?ITx為外部中斷觸發(fā)方式選擇。當ITx為0時為低電平觸發(fā)方式,CPU在每個機器周期的S5P2采樣ITx,當Itx輸入低電平的時,就置位IEx,采用這種觸發(fā)方式時,外部中斷源的低電平必須保持到CPU響應為止。ITx1S5P2置位IEx,因此,采用邊沿觸發(fā)時,高電平和低電平的保持時間需在12拍以上。設置外部中斷信號觸發(fā)方式,可通過對 TCON寄存器(字節(jié)地88H,位地址88H~8FH)中的ITx位置一或置零進行。9、在一個應用系統(tǒng)中,晶振頻率為 12MHz,一個外部中斷請求信號的寬度是300ns的負脈沖,該采用哪種觸發(fā)方式?如何實現(xiàn)?晶振頻率為12MHz時,機器周期為1微秒,采用邊沿觸發(fā)時,請求信號至少應該保持1微秒,所以只能對原信號進行展寬,常用的方法是連接一個單穩(wěn)態(tài)電路,其時常數(shù)不在1-1.5微秒之間即可。10、MCS-51的中斷服務程序能否放在65KB程序存儲器的任意區(qū)域?如何實現(xiàn)?MCS-51的中斷服務程序可以放在65KB程序存儲器的任意區(qū)域,只要在對應IE13400H0013H單元內填寫LCALL3400H。第六章18051/計數(shù)器?它們有幾種工作方式?如何選擇和設定?作為定時器或計數(shù)器,它們的波特率各為多少?8051單片機內設有兩個鈞為16位的可編程的定時/計數(shù)器,共有4種工作方式,即:方式0—13位定時/計數(shù)器、方式1—16位定時/計數(shù)器、方式2—自動重載初值得8位定時/計數(shù)器和方式3—T0為兩個獨立的8位定時/計數(shù)器,在方式3下,T1停止工作。8051/TMODM0M1TMOD89H,所以M0M1M0、M1當用定時/計數(shù)器作為波特率發(fā)生器時,根據(jù)串口的工作模式,有三種情形:方式0的波特率為主振頻率fosc的十二分之一;2rate寄存器中的波特率倍增位。

2SMOD64

osc

,其中,SMOD為PCON方式1和方式3的波特率計算依照下列關系求的TH1即可:Baudrate2SMOD

fosc32 12(2562、定時/計數(shù)器作定時器用時,其定時時間有哪些因素有關?做計數(shù)器用時,對外部計數(shù)頻率有何限制?8051的定時/12128051的定時/計數(shù)器工作在計數(shù)器狀態(tài)時,需要兩個機器周期才能識別一個從“1”到“0”的跳變,故最高計數(shù)頻率不大于晶振頻率的二十四分之一。380516MHz,T0500選擇方式0或方式1,計數(shù)器初值為8192-250,或65536-250。.此處給一個C語言寫的程序段,定時信號由P1.0輸出:ORG 0000HLJMPMAINORG LJMPTO_INTERRUPTMAIN:SETBEAMOVTH0,(65536-250)/256MOVTL0,(65536-250)%256SETBTR0SETBET0SJMP$T0_INTERRUPT:CLRTR0MOVTH0,(65536-125)/256MOVTL0,(65536-125)%256P1^0=~P1^0SETBTR0RETI4、某8051系統(tǒng)晶振頻率為6MHz,先欲從P1.7引腳輸出一個連續(xù)5Hz的方波信號,請編寫程序。5Hz2001006MHz,2N=100ms/2μs=50000采用方式1進行計數(shù),則X=M-N=65536-50000=15536H=0C350H程序編寫如下:MOVTMOD,#05H;設置T0工作方式,定時,方式1MOVTH0,#0C3H;寫入計數(shù)器初值MOVTL0,#050H;SETBTR0;啟動T0LOOPJBC TF0,$;查詢定時器溢出標志MOV TH0,#0C3H;MOV TL0,#050HCPL P1.7SJMPLOOP;END也可以用C語言編寫:用定時/計數(shù)器T0從P1.7輸出周期為5s的方波,晶振頻率為6MHz。用定時/計數(shù)器T0從P1.7輸出周期為5s的方波,晶振頻率為6MHz。#include<reg52.h>#include<reg52.h>#defineucharunsignedchar#defineucharunsignedcharsbitD1=P1^0;#defineuintunsignedintsbitD1=P1^0;#defineuintunsignedintuchara;uchara;voidinit()voidinit()//初始化{{TMOD=0x01;TMOD=0x01;//016TH0=(65535-50000)%256;//賦初值,定時100msTH0=(65535-50000)%256;//賦初值,定時100msTL0=(65535-50000)/256;TL0=(65535-50000)/256;EA=1;EA=1;//中斷控制允許ET0=1;ET0=1;a=0;a=0;TR0=1;TR0=1;//啟動定時器0}}voidtime0()interrupt1//定時器0中斷函數(shù)voidtime0()interrupt1//定時器0中斷函數(shù){{TH0=(65535-50000)%256;//賦初值,定時100msTL0=(65535-50000)/256;a++;TR0=1;}voidmain(){init();while(1)init();while(1){while(a==25)//半個周期(2500ms)時,P1.7上的電平跳變一次。{a=0;P1.7=~P1.7;//取反}}}5、某單片機系統(tǒng),時鐘頻率為12MHz,定時/計數(shù)器T0用于20ms定時,T1用于100次計數(shù),兩者要求重復工作,問:、外部計數(shù)脈沖從何引腳輸入?、編寫達到上述要求的程序。、利用定時/T0、T12S(1)15(2)T0用作20ms定時,故N0=20ms/1μs=20000X0=M-N=65536-20000=45535=B1E0HT1的計數(shù)值為100,所以X=65536-100=65436=FF9CH為使倆部件同時工作,將T0設為查詢方式,T0設為中斷方式。MOVTMOD,#15H;T01;T11MOVTH0,#0B1H;寫入T0定時器初值MOVTL0,#0E0H;MOVTH1,#0FFH;寫入T1計數(shù)器初值MOVTL1,#09CH;MOV#60H;設置堆棧ORG001BHAJMPT1INTSETBTR0;啟動T0SETBTR1;啟動T1LOOP:JBCTF0,$;查詢定時器溢出標志MOVTH0,#0B1H;MOVTL0,#0E0HCLRP1.0;設定時輸出為P10SETBENDP1.0T1INT:MOVMOVRETITH1,#0FFH;TL1,#09CH;寫入T1計數(shù)器初值(3)、延時2s,可以將T0設置成方式1,輸出周期為200毫秒的等寬脈沖,設該信號由P1.0輸出。再由T1進行計數(shù),將P1.0輸出連接道T1輸入。則T1的計數(shù)值為100,工作方式選方式1;TO高低電平各持續(xù)100毫秒,若晶振頻率為6MHz,則機器周期為2微秒,故其計數(shù)值應為:N=100ms/2μs=50000TO采用方式1進行計數(shù),則X=M-N=65536-50000=15536=0C350HT1采用方式1進行計數(shù),則X=M-N=65536-100=65436=0FF9CH方式字:GATE1=0,C/T1=1,M11=0,M10=1,GATE0=0,C/T0=0,M01=0,M00=1故為:051H程序編寫如下:MOV TMOD,MOV TH0,#0C3H;MOV TL0,#050H;MOV TL1,#09CH;

設置T0工作方式,定時,方式1寫入T0計數(shù)器初值寫入T1計數(shù)值MOVTH1,#0FFHSETBTR0;啟動T0LOOP:JBCTF0,$;查詢定時器溢出標志MOVTH0,#0C3H;MOVTL0,#050HCPLP1.0SJMPLOOP;JBCCPL

TF1,$P1,1; 2SMOV TL0,#050H;MOV SJMPLOOPEND

寫入T1計數(shù)值6、為什么T12T12,用作6Mhz,求可能產生的波特率的變化范圍。答:串行通信通常是持續(xù)的,即很少進行但幀通信,這就要求通信時鐘(波特率發(fā)生器2波特率=2SMOD×fosc/64所以其波特率最高為:187500,最低為:93750。7、怎樣選擇串行口的工作模式?RENTIRI1時清零?RENSCON可由用戶使用指令進行賦值,REN=1時,允許串行口接收數(shù)據(jù),否則不能。SCONREN(初始化)1。8、試設計一個8051單片機雙機通信系統(tǒng),編程將A機片內RAM中60H—6FHBRAM60H—6FH甲機發(fā)送(采用查詢方式):MOV SCON, #80H ;設置工作方式2MOVPCON, #00;置SMOD=0,波特率不加MOVR0, #60H;數(shù)據(jù)區(qū)地址指針MOVR2, #10H;數(shù)據(jù)長LOOP:MOV A, @R0 ;取發(fā)送數(shù)據(jù)MOV CP ;奇偶位送MOVTB8CMOVSBUF,A;送串口并開始發(fā)送數(shù)據(jù)WAIT: JBCTI, NEXT ;檢測是否發(fā)送結束并清TISJMP WAITNEXTINC R0;修改發(fā)送數(shù)據(jù)地址指針DJNZR2, RET乙機接收(查詢方式):MOVSCON,#90H;模作模式2,并允許接收MOVPCON,#00H;置SMOD=0MOVRO, #60H;置數(shù)據(jù)區(qū)地址指針MOVR2, #10H;等待接收數(shù)據(jù)長度LOOPJBC RI, READ ;等待接收數(shù)據(jù)并清SJMPLOOPREAD:MOV A,SBUF ;讀一幀數(shù)MOV C,PJNC LP0 ;C不為 1轉LP0JNB RB8,ERR;RB8=0,即RB8不為P轉ERRAJMPLP1LP0: JB RB8,ERR;RB8=1,即RB8不為P轉ERRLP1: MOV@R0,A;接收一幀數(shù)據(jù)INCR0DJNZR2,LOOPRETERR: … ;出錯處理程序…9、試述MSC-51單片機的多機通信原理。答:多機通信系統(tǒng)如下圖所示可見是一個主從結構。多機通信基于如下機制:SM2=1&TB8=1 可以接受數(shù)SM2=1&TB8=0 不能接受數(shù)SM2=0 TB8231SM=0,地址碼不符的其他從SM21;從第二幀開始主機開始發(fā)送數(shù)據(jù)幀,其特征是TB8=0,由于地址不符的從機的2仍為10,接受到數(shù)據(jù)幀后其RI自動置一,允許CPU讀取接受到的信息。108051I/O16答:將8051的串行口擴充為I/O口,最常用的方式是外接移位寄存器74164,原理圖如下:對應的程序可寫成:MOV R0,DBUF; 顯示緩沖區(qū)指針MOV SETB P0.1

初始化,設置串口工作方式CLR P0.1; 移位寄存器清MOV A,@R0; 讀數(shù)據(jù)MOVXABUF,A;顯示JBC TI,$; 等待傳輸完畢CLR

TI;

清除發(fā)送中斷標志INC R0; 移動顯示區(qū)指針MOV A,R0;MOVX

讀下一位J

溫馨提示

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

評論

0/150

提交評論