MCS單片機內(nèi)功能模塊并行口定時器串行口_第1頁
MCS單片機內(nèi)功能模塊并行口定時器串行口_第2頁
MCS單片機內(nèi)功能模塊并行口定時器串行口_第3頁
MCS單片機內(nèi)功能模塊并行口定時器串行口_第4頁
MCS單片機內(nèi)功能模塊并行口定時器串行口_第5頁
已閱讀5頁,還剩59頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

MCS單片機內(nèi)功能模塊并行口定時器串行口并行口結(jié)構(gòu)框圖P0.XPINDQCLQ內(nèi)部總線讀鎖存器寫鎖存器讀引腳VCC多路開關(guān)T1T2地址/數(shù)據(jù)控制DQCLQ內(nèi)部總線讀鎖存器寫鎖存器讀引腳VCC內(nèi)部提升P1.XPINTDQCLQ內(nèi)部總線讀鎖存器寫鎖存器讀引腳VCC內(nèi)部提升P3.XPINT第二輸出功能第二輸入功能P2.XPINDQCLQ內(nèi)部總線讀鎖存器寫鎖存器讀引腳VCC多路開關(guān)T地址控制內(nèi)部提升工作原理: P0~P3的口鎖存器結(jié)構(gòu)都是一樣的,P0~P3口的每一位口鎖存器都是一個D觸發(fā)器,復(fù)位以后的初態(tài)為1。但輸入緩沖器和輸出驅(qū)動器的結(jié)構(gòu)有差別。CPU通過內(nèi)部總線把數(shù)據(jù)寫入口鎖存器。 CPU對口的讀操作有兩種:一種是讀-修改-寫指令(例如ANLP1,#0FEH),讀口鎖存器的狀態(tài),此時口鎖存器的狀態(tài)由Q端通過上面的三態(tài)輸入緩沖器送到內(nèi)部總線。另一種是讀指令(例如MOVA,P1),CPU讀取口引腳上的外部輸入信息,這時引腳狀態(tài)通過下面的三態(tài)輸入緩沖器傳送到內(nèi)部總線。

P1、P2和P3口內(nèi)部有拉高電路,稱為準(zhǔn)雙向口。

P0口內(nèi)部沒有拉高電路,是三態(tài)雙向I/O口。

P1、P2、P3口可以驅(qū)動四個LSTTL電路,P0口可以驅(qū)動八個LSTTL電路。5.1.1P1口

一、P1口特性P1口為準(zhǔn)雙向口,只能作為通用I/O口使用,用來傳送數(shù)據(jù)。它的每一位可以分別定義為輸入線或輸出線,即用戶可以把P1口的某些位作為輸出線使用,另外的一些位作為輸入線使用。 P1口的某一位作為輸入線時,該位的口鎖存器必須保持“1”,使輸出場效應(yīng)管T截止,這時該位引腳由內(nèi)部拉高電路拉成高電平,也可以由外部的電路拉成低電平,CPU讀P1引腳狀態(tài)時實際上就是讀出外部電路的輸入信息。P1口作為輸入時,可以被任何TTL電路和MOS電路所驅(qū)動,由于內(nèi)部具有提升電路,也可以被集電極開路或漏極開路的電路所驅(qū)動。P1口的某一位作為輸出線時,將“1”寫入該位口鎖存器,則Q端上的輸出場效應(yīng)管T截止,該位的輸出引腳由內(nèi)部的拉高電路拉成高電平,輸出“1”;將“0”寫入口鎖存器,輸出場效應(yīng)管T導(dǎo)通,引腳輸出低電平,即輸出“0”。DQCLQ內(nèi)部總線讀鎖存器寫鎖存器讀引腳VCC內(nèi)部提升P1.XPIN二、P1口的操作P1口的字節(jié)地址為90H,位地址為90H~97H。對P1口的操作,可以采用字節(jié)操作,也可以采用位操作。復(fù)位以后,口鎖存器為1。 例:在圖5-2中,P1.0~P1.3作為輸出線,接指示燈L0~L3。P1.4~P1.7作為輸入線接四個開關(guān)K0~K3。P1.0P1.1P1.2P1.3P1.4P1.6P1.5K0K1K3K2P1.78051-+-+-+-++5vL0L1L2L3例1的子程序采用字節(jié)操作指令將開關(guān)狀態(tài)送指示燈顯示,Ki閉合,Li亮。

例1 KLA: MOV A,P1 SWAP A ORL A,#0F0H;保持P1.4~P1.7口鎖存器為1 MOV P1,A RET例2用位操作指令實現(xiàn)同樣的功能。 例2 KLB: MOV C,P1.4;位傳送不影響P1.4~P1.7口鎖存器

MOV P1.0,C MOV C,P1.5 MOV P1.1,C MOV C,P1.6 MOV P1.2,C MOV C,P1.7 MOV P1.3,C RET5.1.2P3口

一、P3口特性

P3口為多功能口,它的第一功能為準(zhǔn)雙向口,可以作為通用I/O口使用,其特性和P1口相似。但在實際應(yīng)用中它的第二功能信號更多。P3口的每一位可以分別定義為第一功能輸入/輸出線或第二功能輸入/輸出線。P3口的某一位作為第一功能輸入/輸出線時,第二功能輸出線總是為高電平,該位引腳輸出電平僅取決于口鎖存器的狀態(tài),為“1”時輸出高電平,為“0”時輸出低電平。P3口的某一位作為輸入線時,該位口鎖存器應(yīng)保持“1”,使輸出場效應(yīng)管T截止,引腳狀態(tài)由外部輸入電平所確定。P3口的某一位作為第二功能輸入/輸出線時,該位的口鎖存器也必須保持“1”,使輸出場效應(yīng)管的狀態(tài)由第二功能輸出確定。DQCLQ內(nèi)部總線讀鎖存器寫鎖存器讀引腳VCC內(nèi)部提升P3.XPINT第二輸出功能第二輸入功能

P3口的口鎖存器Q端接與非門驅(qū)動輸出場效應(yīng)管T,該與非門的另一個控制端為第二功能輸出線。P3口的引腳狀態(tài)通過輸入緩沖器輸入到內(nèi)部總線和第二功能輸入線。表5-1P3口的第二功能定義T0(定時器T0外部計數(shù)脈沖輸入線)T1(定時器T1外部計數(shù)脈沖輸入線)WR(外部數(shù)據(jù)存貯器寫脈沖輸出線)RD(外部數(shù)據(jù)存貯器讀脈沖輸出線)第二功能RXD(串行口輸入線)TXD(串行口輸出線)INT0(外部中斷0輸入線)INT1(外部中斷1輸入線)第二功能P3.4P3.5P3.6P3.7P3.0P3.1P3.2P3.3口引腳口引腳二、P3口的操作

P3口的字節(jié)地址為0B0H,位地址為0B0H~0B7H。對P3口的操作,可以采用字節(jié)操作,也可以采用位操作。

例3 ANLP3,#0DFH ;0P3.5 CLRP3.5 ;0P3.5

ORLP3,#20H

;1

P3.5 SETBP3.5 ;1

P3.5 XRLP3,#20H ;P3.5取反

CPLP3.5 ;P3.5取反5.1.3P2口

一、P2口特性

P2口也有兩種功能,對于內(nèi)部有程序存貯器的單片機(如定制的8051),P2口可以作為輸入口或輸出口使用,直接連接輸入/輸出設(shè)備;也可以作為系統(tǒng)擴展的地址總線口,輸出高8位地址A8~A15。對于內(nèi)部沒有程序存貯器的單片機,必須外接程序存貯器,一般情況下P2口只能作為系統(tǒng)擴展的高8位地址總線口,而不能作為外部設(shè)備的輸入/輸出口。P2.XPINDQCLQ內(nèi)部總線讀鎖存器寫鎖存器讀引腳VCC多路開關(guān)T地址控制內(nèi)部提升 1、P2口的輸出驅(qū)動器上有一個多路電子開關(guān)(見圖5-1(c)),當(dāng)輸出驅(qū)動器轉(zhuǎn)接至P2口鎖存器的Q端時,P2口作為第一功能輸入/輸出線,這時P2口的結(jié)構(gòu)和P1口相似,其功能和使用方法也和P1口相同。

2、當(dāng)輸出驅(qū)動器轉(zhuǎn)接至地址時,P2口作為地址總線口,引腳狀態(tài)由所輸出的地址確定。

3、CPU訪問外部的程序存貯器時,P2口輸出程序存貯器的高8位地址A8~A15,該地址來源于內(nèi)部的程序計數(shù)器PC的高8位;

4、當(dāng)CPU以16位地址指針DPTR訪問外部RAM/IO的時候,P2口輸出的地址來源于DPH。二、P2口操作1、對于內(nèi)部有程序存貯器的單片機所構(gòu)成的基本系統(tǒng)(如8751或定制的8051),既不擴展程序存貯器,也不擴展RAMI/O口,這時P2口作為通用I/O口使用。

例4 XRLP2,#1;P2.0取反

CPLP2.0;P2.0取反2、對于只擴展少量外部RAMI/O口,其地址范圍在0~255之間,P2口也可以作為I/O口使用。對外部RAMI/O口操作,只能使用R0或R1作地址指針,不能用DPTR作址址指針。

例5

將33H寫入外部RAM的50H單元,CPU執(zhí)行下面的程序段不影響P2口輸出狀態(tài),因而是正確的:

MOV R0,#50H MOV A,#33H MOVX @R0,ACPU執(zhí)行下面的程序段將影響P2口的輸出狀態(tài),因而是錯誤的;

MOV DPTR,#50H MOV A,#33H MOVX @DTPR,A例6將33H寫入外部RAM的8200H,下面的程序段都是正確的:

(1) MOV P2,#82H MOV R0,#0 MOV A,#33H MOVX @R0,A (2) MOV P2,#82H MOV R1,#0 MOV A,#33H MOVX @R1,A (3) MOV DPTR,#8200H MOV A,#33H MOVX @DPTR,A3、對于既擴展程序存貯器,又?jǐn)U展外部RAM/IO口的系統(tǒng),P2口不能作為I/O口使用,對外部RAM/IO口操作則可以做DPTR、P2R0、P2R1三個16位地址指針的高8位。5.1.4P0口

一、P0口特性P0口為三態(tài)雙向I/O口。對于內(nèi)部有程序存貯器的單片機基本系統(tǒng)(如定制的8051),P0口可以作為輸入/輸出口使用,直接連外部的輸入/輸出設(shè)備;也可以作為系統(tǒng)擴展的地址/數(shù)據(jù)總線口。對于內(nèi)部沒有程序存貯器的單片機(如8031),P0口只能作為地址/數(shù)據(jù)總線口使用。P0.XPINDQCLQ內(nèi)部總線讀鎖存器寫鎖存器讀引腳VCC多路開關(guān)T1T2地址/數(shù)據(jù)控制1、P0口的輸出驅(qū)動器中也有一個多路電子開關(guān)。輸出驅(qū)動器轉(zhuǎn)接至口鎖動器的Q端時,P0口作為雙向I/O口使用。

這時,CPU發(fā)來的控制信號為低電平,使輸出驅(qū)動電路的上拉場效應(yīng)管T1截止。P0口的鎖存器為“1”時,輸出驅(qū)動器中的兩個場效應(yīng)管均截止,引腳浮空;由于P0口輸出電路是漏極開路的電路,必須外接10kΩ拉高電阻才能有高電平輸出。而寫入“0”時,下管導(dǎo)通輸出低電平。

2、當(dāng)輸出驅(qū)動器轉(zhuǎn)接至地扯/數(shù)據(jù)時,P0口作為地址/數(shù)據(jù)總線口使用,分時輸出外部存貯器的低8位地址A0~A7和傳送數(shù)據(jù)D0~D7。低8位地址先由地址允許鎖存信號ALE鎖存到外部的地址鎖存器中,接著P0口便輸入/輸出數(shù)據(jù)信息。P0口輸出的低8位地址來源于PCL、DPL、R0、R1等。二、P0口使用方法 P0口為三態(tài)雙向I/O口,當(dāng)用作輸入口時,一般接10kΩ左右的拉高電阻。圖5-3所示的8751基本系統(tǒng)中,將一個開關(guān)K0接至P1.0和P0.0的電路有所差別,其原因是P1口內(nèi)部具有拉高電阻,P0.0必須外接拉高電阻,才能使開關(guān)K0閉合時讀P0.0引腳為0,K0斷開時讀P0.0引腳為1。P1.0K08751P1.0K0+5v10k8751MCS-51的并行擴展總線

MCS-51的P0口和P2口可以作為并行擴展總線,可以擴展64K字節(jié)程序存貯器和64K字節(jié)RAMI/O口P2口輸出高8位地址A8~A15,P0口為復(fù)用口,先輸出低8位地址A0~A7,用ALE信號的負(fù)跳變將A0~A7送入地址鎖存器鎖存,P2口和地址鎖存器輸出作為地址總線,輸出地址A0~A15。在ALE將A0~A7送入地址鎖存器鎖存以后,接著P0口作為數(shù)據(jù)總線使用來傳送數(shù)據(jù)。在擴展系統(tǒng)中,P3.6、P3.7作為外部RAM/IO口的讀/寫選通信號WR、RD,PSEN作為外部程序存貯器的讀選通信號。正是由于外部程序存貯器和RAM/IO口使用不同的讀選通信號,才使CPU通過16位地址總線訪問64K字節(jié)程序存貯器和64K字節(jié)RAM/IO口。P2ALEP0WRRDPSEN地址鎖存器A8~A15A0~A7D0~D7(控制總線)(數(shù)據(jù)總線)(地址總線)MCS-51MCS-51并行口電路小結(jié)

1.P0、P1、P2、P3都是并行I/O口,都可用于數(shù)據(jù)的輸入/輸出傳送,但P0、P2口可作為并行擴展總線。P0口可作為地址/數(shù)據(jù)復(fù)用線使用,輸送系統(tǒng)的低8位地址和8位數(shù)據(jù),因此多路開關(guān)的一個輸入端為“地址/數(shù)據(jù)”信號。而P2口僅作為高位地址線使用,不涉及數(shù)據(jù),所以多路開關(guān)的一個輸入信號為“地址”。2.P3口的口線具有第二功能,為系統(tǒng)提供一些控制信號。因此在P3口電路中增加了第二功能控制邏輯。這是P3口與其它各不同之處。5.2定時器各種型號的單片機,不管其功能強弱都有定時器,因為定時器對于面向控制型應(yīng)用領(lǐng)域的單片機特別有用,定時器可以實現(xiàn)下列功能:(1)定時操作:產(chǎn)生定時中斷,實現(xiàn)定時采樣輸入信號,定時掃描鍵盤、顯示器等定時操作;(2)測量外部輸入信號:對輸入信號累加統(tǒng)計或測量輸入信號的周期等參數(shù);(3)定時輸出:定時觸發(fā)輸出引腳的電平,使輸出脈沖的寬度、占空比、周期達到預(yù)定值,其精度不受程序狀態(tài)影響; (4)監(jiān)視系統(tǒng)正常工作:一旦系統(tǒng)工作異常時自動復(fù)位,重新啟動系統(tǒng)正常工作。(監(jiān)視定時器watchdog);5.2.2定時器/計數(shù)器T0和T1

MCS-51系列的單片機內(nèi),共有兩個16位可編程的定時器/計數(shù)器,分別稱為定時器/計數(shù)器T0和定時器/計數(shù)器T1。與定時器/計數(shù)器有關(guān)的特殊功能寄存器有以下幾個:1、TH0、TL0為T0的16位計數(shù)器的高8位和低8位。2、TH1、TL1為T1的16位計數(shù)器的高8位和低8位。3、TMOD為T0、T1的方式寄存器。4、TCON為T0、T1的狀態(tài)和控制寄存器,存放T0、T1的運行控制位和溢出中斷標(biāo)志位。5、中斷控制寄存器IE、IP。 通過對TH0、TL0和TH1、TL1的初始化編程來設(shè)置T0、T1計數(shù)器初值,通過對TCON和TMOD的編程來選擇T0、T1的工作方式和控制T0、T1的運行。

一、方式寄存器TMOD(89H)特殊功能寄存器TMOD為T0、T1的工作方式寄存器,其格式如下:

D7D6D5D4D3D2D1D0GATEC/TM1M0GATEC/TM1M0TMOD的低4位為T0的方式字段,高4位為T1的方式字段,它們的含義是完全相同的。工作方式選擇位M1、M0(方式0~3)定時方式和外部事件計數(shù)方式選擇位C/TC/T=1為外部事件計數(shù)方式。門控位GATE

GATE為1時,定時器的計數(shù)受外部引腳輸入電平的控制(INT0控制T0的運行,INT1控制T1的運行);GATE為0時定時器計數(shù)不受外部引腳輸入電平的控制。二、控制寄存器TCON(88H)

特殊功能寄存器TCON的高4位為定時器的運行控制位和溢出標(biāo)志位,低4位為外部中斷的觸發(fā)方式控制位和鎖存外部中斷請求源(見中斷一節(jié))。TCON格式如下:

D7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT01.定時器T0運行控制位TR0TR0由軟件置位和清“0”。門控位GATE為0時,T0的計數(shù)僅由TR0控制,TR0為1時允許T0計數(shù),TR0為0時禁止T0計數(shù);門控位GATE為1時,僅當(dāng)TR0等于1且INT0(P3.2)輸入為高電平時T0才計數(shù),TR0為0或INT0輸入低電平時都禁止T0計數(shù)。2.定時器T0溢出標(biāo)志位TF0

當(dāng)T0被允許計數(shù)以后,T0從初值開始加“1”計數(shù),最高位產(chǎn)生溢出時置“1”TF0。TF0可以由程序查詢和清“0”。TF0也是中斷請求源,當(dāng)CPU響應(yīng)T0中斷時由硬件清“0”TF0。3.定時器T1運行控制位TR1 TR1由軟件置位和清“0”。門控位GATE為0時,T1的計數(shù)僅由TR1控制,TR1為“1”時允許T1計數(shù),TR1為“0”時禁止T1計數(shù);門控位GATE為1時,僅當(dāng)TR1為1且INT1(P3.3)輸入為高電平時T1才計數(shù),TR1為0或INT1輸入低電平時都將禁止T1計數(shù)。4.定時器T1溢出標(biāo)志位TF1

當(dāng)T1被允許計數(shù)以后,T1從初值開始加“1”計數(shù),最高位產(chǎn)生溢出時置“1”TF1。TF1可以由程序查詢和清“0”,TF1也是中斷請求源,當(dāng)CPU響應(yīng)T1中斷時由硬件清“0”TF1。三、T0、T1的工作方式和計數(shù)器結(jié)構(gòu)

MCS-51的定時器T0有四種工作方式:方式0、方式1、方式2、方式3;定時器T1有三種工作方式:方式0、方式1、方式2。1.方式0

當(dāng)M1M0為00時定時器工作于方式0。定時器T0方式0的結(jié)構(gòu)框圖如下圖所示。方式0為13位的計數(shù)器,由TL0的低5位和TH0的8位組成,TL0低5位計數(shù)溢出時向TH0進位,TH0計數(shù)溢出時置“1”溢出標(biāo)志TF0。定時時間設(shè)定:fosc÷12TL0(5位)TH0(8位)TF0中斷控制C/T=0C/T=1T0腳(P3.4)INT0腳GATETR0例7

已知晶振頻率fOSC=6MHz,若使用T0方式0產(chǎn)生10ms定時中斷,試對T0進行初始化編程。a=00BTH0TL0INIT0:MOVTH0,#63H MOVTL0,#18H MOVTMOD,#00H ;置T0為方式0下的定時方式

SETBTR0 ;允許T0計數(shù)

MOVIE,#82H ;EA=1,CPU開放中斷

RET ;ET0=1,允許T0中斷2.方式1

方式1和方式0的差別僅僅在于計數(shù)器的位數(shù)不同,方式1為16位的定時器/計數(shù)器。定時器T0工作于方式1的結(jié)構(gòu)框圖如下圖所示。T0工作于方式1時,由TH0作為高8位,TL0作為低8位,構(gòu)成一個16位計數(shù)器。若T0工作于方式1定時,計數(shù)初值為a,fosc=12MHz,則T0從計數(shù)初值加1計數(shù)到溢出的定時時間為:

fosc÷12TL0(8位)TH0(8位)TF0中斷控制C/T=0C/T=1T0腳(P3.4)INT0腳GATETR0與定時器有關(guān)的寄存器TCON狀態(tài)和控制寄存器中斷允許寄存器IED7D6D5D4D3D2D1D0EA--ESET1EX1ET0EX0中斷優(yōu)先級控制器IPD7D6D5D4D3D2D1D0---PSPT1PX1PT0PX0D7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0D7D6D5D4D3D2D1D0GATEC/TM1M0GATEC/TM1M0TMOD方式控制寄存器應(yīng)用舉例:例8設(shè)fosc=12MHz,T0工作于方式1,產(chǎn)生50ms定時中斷,TF0為高級中斷源。試編寫主程序中的初始化程序和中斷服務(wù)程序,使P1.0產(chǎn)生周期為1秒的方波。MAIN:MOVSP,#6FH ;棧指針初始化

MOVTH0,#3CH;T0初始化

MOVTL0,#0B0H MOVTMOD,#1;T0工作于方式1,定時

MOVIP,#2 ;PT0=1,T0中斷定義為高 ;優(yōu)先級中斷

MOVIE,#82H;中斷初始化(EA=1,ET0=1)

SETBTR0 ;允許T0中斷

MOV30H,#0AH;工作單元初始化每10次 ;中斷(0.5秒)P1.0求反, ;用30H作中斷次數(shù)計數(shù)器單元。 AJMP$ a=3CB0HT0中斷服務(wù)程序:

PTF0:ORL TL0,#0B0H ;恢復(fù)T0初值

MOVTH0,#3CH DJNE30H,PTF0R ;判斷中斷次數(shù)=10否? MOV30H,#0AH ;恢復(fù)中斷次數(shù)存貯單元值

CPL P1.0 ;P1.0求反

PTF0R:RETI說明:定時器T0中斷入口地址(55頁)為:000BH000B:LJMPPTF0R3.方式2

T0工作于方式0和方式1時的最大特點是計數(shù)溢出后,計數(shù)器全為“0”。因此循環(huán)定時或循環(huán)計數(shù)應(yīng)用時就存在反復(fù)設(shè)置計數(shù)初值的問題。初值a通常是由中斷服務(wù)程序恢復(fù)的,而CPU響應(yīng)T0溢出中斷的時間隨程序狀態(tài)不同而不同(CPU所執(zhí)行指令不同或者在執(zhí)行其它中斷程序都影響CPU響應(yīng)中斷的時間),CPU響應(yīng)T0溢出中斷之前T0從0開始繼續(xù)計數(shù),CPU響應(yīng)T0溢出中斷時又從初值開始計數(shù),這樣使定時產(chǎn)生誤差。M1M0=10時,T0工作于方式2,方式2為自動恢復(fù)初值的8位計數(shù)器,TL0作為作為8位計數(shù)器,TH0作為計數(shù)初值寄存器,當(dāng)TL0計數(shù)溢出時,一方面置“1”溢出標(biāo)志TF0,向CPU請求中斷,同時將TH0內(nèi)容送到TL0,使TL0從初值開始重新加1計數(shù)。因此,T0工作于方式2定時,定時精度比較高,但定時時間小。T=定時時間設(shè)定:工作原理:fosc÷12TL0(8位)TH0(8位)TF0中斷控制C/T=0C/T=1T0腳(P3.4)INT0腳GATETR04.方式31)工作方式3下的定時器/計數(shù)器T0

方式3只適用于T0,若T1被設(shè)置為工作方式3時,則使T1停止工作。T0被分為兩個獨立的8位計數(shù)器TL0和TH0。TL0使用T0的所有狀態(tài)控制位GATE、TR0、INT0(P3.2)、T0(P3.4)、TF0等,TL0即可以作為8位定時器使用,又可以作為外部事件計數(shù)器使用。TL0計數(shù)溢出時置“1”溢出標(biāo)志TF0,TL0計數(shù)初值必須由軟件每次設(shè)定。其功能和操作與方式0或方式1完全相同,而且邏輯結(jié)構(gòu)也極其類似。TH0只能作為一個8位定時器使用。而且由于T0的所有狀態(tài)控制位已被TL0獨占,因此TH0只好借用T1的狀態(tài)控制位TR1、TF1。即當(dāng)TR1為1時,允許TH0定時計數(shù),當(dāng)TH0計數(shù)溢出時置“1”溢出標(biāo)志TF1。

由于TL0既能作定時器使用也能作計數(shù)器使用,而TH0只能作為定時器使用卻不能作為計數(shù)器使用,因此在工作方式3下,T0可以構(gòu)成兩個定時器或一個定時器一個計數(shù)器??刂芓H0(8位)TF1中斷TR11/12fOSCTL0(8位)TF0中斷控制C/T=0C/T=1T0腳(P3.4)INT0腳GATETR01/12fOSCT=定時時間設(shè)定:工作原理:2)工作方式3下的定時器/計數(shù)器T1

如果T0已工作在方式3,則T1只能工作在方式0、方式1或方式2下,因為它的運行控制位TR1及計數(shù)溢出標(biāo)志位TF1已被T0借用。 在這種情況下,T1通常是作為串行口的波特率發(fā)生器使用,以確定串行通信的速率。因為已沒有計數(shù)溢出標(biāo)志位TF1可供使用,因此只能把計數(shù)溢出直接送給串行口。 如要停止T1工作,只需送入一個把T1設(shè)置為方式3的方式控制字就可以了。因為T1不能在方式3下使用,如果硬把它設(shè)置為方式3,就停止工作。5.3串行接口

中央處理器CPU和外界的信息交換(或數(shù)據(jù)傳送)稱為通信,通常有并行和串行兩種通信方式,數(shù)據(jù)的各位同時傳送的稱為并行通信,數(shù)據(jù)一位一位串行地順序傳送的稱為串行通信。并行通信的特點是:各數(shù)據(jù)位同時傳送,傳送速度快、效率高。但并行數(shù)據(jù)傳送有多少數(shù)據(jù)位就需多少根數(shù)據(jù)線,因此傳送成本高。并行數(shù)據(jù)傳送的距離通常小于30米,在計算機內(nèi)部的數(shù)據(jù)傳送都是并行的。 并行通信是通過并行接口來實現(xiàn)的,串行通信的特點是:數(shù)據(jù)傳送按位順序進行,最少只需一根傳輸線即可完成,成本低但速度慢。計算機與外界的數(shù)據(jù)傳送大多數(shù)是串行的,其傳送的距離可以從幾米到幾千公里。 串行通信是通過串行口來實現(xiàn)的,MCS-51有一個全雙工(數(shù)據(jù)的傳送是雙向的,可以同時發(fā)送和接收)的異步串行通信接口可以實現(xiàn)串行數(shù)據(jù)通信。

串行通信有兩種基本方式:異步通信和同步通信方式。

一、異步通信方式是以字符(或字節(jié))為單位組成字符幀傳送的。字符幀由發(fā)送端一幀一幀地發(fā)送,通過傳輸線被接收設(shè)備一幀一幀地接收。

典型的異步通信數(shù)據(jù)格式如下: 停 起 止 始8位數(shù)據(jù) 位 位D0D1D2D3D4D5D6D70/1字符的前面有一個起始位(0),后面有一個停止位(1),這是一種起止式的通信方式,字符之間沒有固定的間隔長度。優(yōu)點:數(shù)據(jù)傳送可靠性高缺點:通信效率低奇偶校驗

對異步通信數(shù)據(jù)格式作如下說明:

1.字符幀:字符幀也叫數(shù)據(jù)幀,由起始位、數(shù)據(jù)位、奇偶校驗位和停止位等四部分組成。如上圖。2.起始位:位于字符幀開頭,只占一位,始終為邏輯“0”,用于向接收設(shè)備表示發(fā)送端開始發(fā)送一幀數(shù)據(jù)。3.數(shù)據(jù)位:緊跟起始位之后,用戶根據(jù)情況可取5位、6位、7位或8位,低位在前高位在后。若所傳數(shù)據(jù)為ASCⅡ字符,則常取7位。4.奇偶校驗位:位于數(shù)據(jù)位之后,僅占一位。用于對字符傳送作正確性檢查,因此,奇偶校驗位是可選擇的,采用奇校驗還是偶校驗,由用戶根據(jù)需要決定。5.停止位:位于字符幀末尾,為邏輯“1”高電平,通常可取1位、1.5位或2位,用于向接收端表示一幀字符信息已發(fā)送完畢,也為下一幀字符作準(zhǔn)備。在串行通信中,發(fā)送端一幀一幀發(fā)送信息,接收端一幀一幀接收信息。兩相鄰字符幀之間可以無空閑位,也可以有若干空閑位,這由用戶根據(jù)需要決定。這種方式的優(yōu)點是數(shù)據(jù)傳送的可靠性較高,能及時發(fā)現(xiàn)錯誤,缺點是通信效率較低。二、同步通信說明:1、是按數(shù)據(jù)塊傳送的,把傳送的字符順序地連接起來,組成數(shù)據(jù)塊在數(shù)據(jù)塊前面加上特殊的同步字符(有1—2個),作為數(shù)據(jù)塊的起始符號,在數(shù)據(jù)塊的后面加上校驗字符,用于檢驗通信中的錯誤。2、接收端不斷對傳輸線采樣,并把采樣到的字符和雙方約定的同步字符比較,只有比較成功后才會把后面接收到的字符加以存儲3、在同步通信中字符之間沒有間隔,通信效率高。 串行通信中,每秒傳送的數(shù)據(jù)位數(shù)稱為波特率。同步字符1同步字符2n個數(shù)據(jù)字節(jié)校驗字節(jié)1校驗字節(jié)2典型的同步通信數(shù)據(jù)格式5.3.1串行接口的組成和特性MCS-51的串行口是一個全雙工的異步串行通信接口,可以同時發(fā)送和接收數(shù)據(jù)。串行口的內(nèi)部有數(shù)據(jù)接收緩沖器和數(shù)據(jù)發(fā)送緩沖器。數(shù)據(jù)接收緩沖器只能讀出不能寫入,數(shù)據(jù)發(fā)送緩沖器只能寫入不能讀出,這兩個數(shù)據(jù)緩沖器都用符號SBUF來表示。

CPU對特殊功能寄存器SBUF執(zhí)行寫操作,就是將數(shù)據(jù)寫入數(shù)據(jù)發(fā)送緩沖器;對SBUF執(zhí)行讀操作,就是讀出數(shù)據(jù)接收緩沖器的內(nèi)容。與串行通信有關(guān)的特殊功能寄存器共有4個:1、特殊功能寄存器SCON:存放串行口的控制和狀態(tài)信息。2、特殊功能寄存器PCON:最高位SMOD為串行口波特率的倍率控制位。3、中斷允許寄存器IE:D4位(ES)為串行口中斷允許位。4、中斷優(yōu)先級控制寄存器IP:D4位(PS)為串行口優(yōu)先級控制位。

一、串行口控制寄存器SCON

串行口控制寄存器SCON是一個特殊功能寄存器,地址為98H,具有位尋址功能。SCON的格式如下:D7D6D5D4D3D2D1D0SM0SM1SM2RENTB8RB8TIRI各位功能說明如下:1.SM0、SM1:串行口的工作方式選擇位。2.SM2:多機通信控制位。對于于方式2和方式3,如SM2置為1,則只有接收到的第9位數(shù)據(jù)(RB8)為“1”,才激活接收中斷標(biāo)志位RI;而當(dāng)SM2置為0時,則不論第9位數(shù)據(jù)為“0”還是為“1”,都將前8位數(shù)據(jù)裝入SBUF中,并置位RI產(chǎn)生中斷請求。對于方式1,如SM2=1,則只有接收到有效的停止位才會激活RI。對于方式0,SM2應(yīng)該為0。3.REN:允許串行接收位。

REN位用于對串行數(shù)據(jù)的接收進行控制。由軟件置位1以允許接收。由軟件清“0”來禁止接收。4.TB8:發(fā)送的第9個數(shù)據(jù)位 對于方式2和方式3,TB8的內(nèi)容是要發(fā)送的第9位數(shù)據(jù),需要時其值由用戶通過軟件置位或復(fù)位。

5.RB8:接收第9個數(shù)據(jù)位 對于方式2和方式3,RB8存放接收到的第9位數(shù)據(jù)。對于方式1,如SM2=0,RB8是接收到的停止位。對于方式0,不使用RB8。

6.TI:發(fā)送中斷標(biāo)志。 在方式0下,串行發(fā)送完第8位數(shù)據(jù)后,該位由硬件置位。在其它方式下,串行發(fā)送停止位的開始時,由硬件置位。TI必須由軟件清“0”。 這就是說:TI在發(fā)送前必須由軟件復(fù)位,發(fā)送完一幀數(shù)據(jù)后由硬件置位。TI=1,表示幀發(fā)送結(jié)束,其狀態(tài)既可供軟件查詢使用,也可請求中斷。

7.RI:接收中斷標(biāo)志。 在方式0下,接收完第8位數(shù)據(jù)后,該位由硬件置位。在其它方式接收到停止位中間時置位,必須由軟件清“0” 二、特殊功能寄存器PCON

PCON的最高位SMOD是串行口波特率系數(shù)控制位,當(dāng)SMOD為1時使波特率加倍。PCON的其它位為掉電方式控制位(僅對CHMOS型單片機80C51等有效,) SMODD7D6D05.3.2串行接口的工作方式 MCS-51串行接口具有四種工作方式,它們是由SCON中的SM0,SM1這兩位定義的。下面我們從應(yīng)用的角度,重點討論各種工作方式的功能特性和工作原理。一、方式0

方式0是擴展移位寄存器的工作方式,以串行擴展I/O接口。輸出時:將發(fā)送數(shù)據(jù)緩沖器中的內(nèi)容串行地移到外部的移位寄存器。輸入時:將外部移位寄存器的內(nèi)容串行地移入內(nèi)部的輸入移位寄存器,然后寫入內(nèi)部的接收數(shù)據(jù)緩沖器。在以方式0工作時,數(shù)據(jù)由RXD端串行地輸入/輸出,TXD端輸出移位脈沖,使外部的移位寄存器移位。波特率固定為振蕩器頻率的十二分之一。1.方式0輸出

方式0輸出時,串行口上外接74LS164(串行輸入并行輸出移位寄存器)的接口邏輯如圖所示。在TXD端輸出的移位脈沖控制下,RXD端輸出的數(shù)據(jù)將被逐位移入74LS164。(經(jīng)過8個機器周期)88031D1D2CLK74LS164345610111213D7……D0+5VRXDTXD80518751121497例圖5-25中,串行口外接兩個74LS164,74LS164的輸出接指示燈L0~L15,欲使L0~L3、L8、L10、L12、L14燈亮,其余燈暗。LSUBO:MOV SBUF,#0FHJNB TI,$

CLR TIMOV SBUF,#055H JNB TI,$

CLR TIRET+5VRXDTXD12CLK74LS164345610111213CRVccVss12CLK74LS164345610111213CRVccVssL7L6L5L4L3L2L1L0L15L9L80000SCONIE11IP12.方式0輸入

方式0輸入時,RXD作為串行數(shù)據(jù)輸入線,TXD作為移位脈沖輸出線,串行口與外接的并行輸入串行輸出的移位寄存器74LS166的接口邏輯如下在REN=1,RI=0時啟動串行口接收,TXD端輸出的移位脈沖頻率為fosc/12,若fosc=12MHz,移位速率為1μs/位,經(jīng)過8次移位,外部移位寄存器內(nèi)容移入內(nèi)部移位寄存器,并寫入SBUF,置位RI,停止移位,完成一個字節(jié)的輸入,CPU讀SBUF的內(nèi)容便得到輸入結(jié)果。當(dāng)檢測到外部移位寄存器內(nèi)容再次有效時(設(shè)備將數(shù)據(jù)打入外部移位寄存器,打入信號向CPU請求中斷),清“0”RI,啟動串行口接收下一個數(shù)據(jù)。803174LS166345610111213RXDTXD80518751INT0137156外部數(shù)據(jù)打入信號二、方式1

串行口定義為方式1時,它是一個8位異步串行通信口,TXD為數(shù)據(jù)輸出線,RXD為數(shù)據(jù)輸入線。傳送一幀信息的數(shù)據(jù)格式如下所示。一幀為10位:1位起始位,8位數(shù)據(jù)位(先低位后高位),1位停止位。D0D1D2D3D4D5D6D7起始位停止位1.方式1輸出

CPU向串行口數(shù)據(jù)發(fā)送緩沖器SBUF寫入一個數(shù)據(jù),然后發(fā)送電路就自動在8位發(fā)送字符前后分別添加1位起始位“0”和1位停止位“1”,啟動串行口發(fā)送,在串行口內(nèi)部一個十六分頻計數(shù)器的同步移位脈沖控制下,在TXD端輸出一幀信息,先發(fā)送起始位0,接著從低位開始依次輸出8位數(shù)據(jù),最后輸出停止位1,并使發(fā)送中斷標(biāo)志TI置“1”,串行口輸出完一個字符后停止工作。CPU執(zhí)行程序判斷TI=1后,必須由程序清“0”TI,再向SBUF寫入數(shù)據(jù),啟動串行口發(fā)送下一個字符。2.方式1輸入

REN置“1”以后,就允許接收器接收。接收器以所選波特率的16倍的速率采樣RXD端的電平。當(dāng)檢測到RXD端輸入電平發(fā)生負(fù)跳變(從“1”到“0”)時,復(fù)位內(nèi)部的十六分頻計數(shù)器。如果在第1位時間接收到的值(起始位)不是0,則起始位無效,復(fù)位接收電路,重新搜索RXD端上的負(fù)跳變。如果起始位有效,則開始接收本幀其余部分的信息。接收到停止位為1時,將接收到的8位數(shù)據(jù)裝入接收數(shù)據(jù)緩沖器SBUF,并把停止位送入RB8中,置位RI,表示串行口接收到有效的一幀信息,向CPU請求中斷。(若程序清RI位后)接著串行口輸入控制電路重新搜索RXD端上負(fù)跳變,接收下一個數(shù)據(jù)。三、方式2和方式3

串行口定義為方式2或方式3時,它是一個9位異步串行通信接口,TXD為數(shù)據(jù)發(fā)送端,RXD為數(shù)據(jù)接收端。方式2和方式3的通信過程完全相同,所不同的僅在于波特率。方式2的波特率固定為振蕩器頻率的1/64或1/32,而方式3的波特率由定時器T1或T2(8052)的溢出率所確定,故方式3的波特率是可調(diào)的。 在方式2和方式3中,一幀信息為11位:1位起始,8位數(shù)據(jù)位(先低位后高位),1位附加的第9位數(shù)據(jù)(發(fā)送時為SCON中的TB8,接收時第9位數(shù)據(jù)為SCON中的RB8),1位停止位,數(shù)據(jù)的格式如下圖。D0D1D2D3D4D5D6D7D8

起始位停止位

1.方式2和方式3輸出

方式2和方式3的發(fā)送過程類似于方式1輸出,所不同的是:方式2和方式3有9位有效數(shù)據(jù)位。發(fā)送時,CPU除要把發(fā)送字符寫入數(shù)據(jù)發(fā)送緩沖器“SBUF”外,還要把第9數(shù)據(jù)位預(yù)先寫入SCON的TB8中。第9數(shù)據(jù)位可由用戶安排,可以是奇偶校驗位,也可以是其他控制位。第9數(shù)據(jù)位的寫入可以用如下指令中的一條來完成:

SETBTB8 CLRTB8

第9數(shù)據(jù)位的值寫入TB8后,CPU向數(shù)據(jù)發(fā)送緩沖器“SBUF”寫入發(fā)送數(shù)據(jù)就啟動串行口發(fā)送。先發(fā)送起始位0,接著從低位開始依次發(fā)送SBUF中的8位數(shù)據(jù),再發(fā)送SCON中TB8,最后發(fā)送停止位,置“1”發(fā)送中斷標(biāo)志TI,CPU判斷TI=1以后若由程序清“0”TI,可以再向TB8和SBUF寫入新的數(shù)據(jù),再次啟動串行口發(fā)送。方式2和方式3輸入

方式2和方式3的接收過程也和方式1輸入類似,所不同的是:方式1時RB8中存放的是停止位,方式2或方式3時RB8中存放的是第9數(shù)據(jù)位。 當(dāng)REN置“1”以后,接收器就以所選波特率的16倍的速率采樣RXD端的輸入電平。當(dāng)檢測到RXD上輸入電平發(fā)生負(fù)跳變時,復(fù)位內(nèi)部的十六分頻計數(shù)器。(計數(shù)器的16個狀態(tài)把一位數(shù)據(jù)的時間分成16等分,在一位中心,即7、8、9這三個計數(shù)狀態(tài),位檢測器采樣RXD的輸入電平,接收的值是三次采樣中至少是兩次相同的值。)如果在第1位時間接收到的值不是0,則起始位無效,復(fù)位接收電路,重新搜索RXD上的負(fù)跳變。如果起始位有效,則開始接收本幀其余位信息。REN置“1”以后,就允許接收器接收。在此前提下,串行口采樣RXD端,當(dāng)采樣到從“1”向“0”的狀態(tài)跳變時,就認(rèn)定是接收到起始位。隨后在移位脈沖的控制下,先從低位開始接收8位數(shù)據(jù),再接收第9位數(shù)據(jù),在RI=0、SM2=0

或RI=0、SM2=1、接收到的第9位數(shù)據(jù)為1時,接收的數(shù)據(jù)裝入SBUF和RB8,置位RI;如果條件不滿足,把數(shù)據(jù)丟失,并不置位RI。一位時間以后,又開始搜索RXD上的負(fù)跳變,接收下一個數(shù)據(jù)。串行口工作方式總結(jié):SM0SM1方式功能說明001101010123擴展移位寄存器方式(用于I/O口擴展),移位速率為fosc/128位UART,波特率可變(T1溢率/n)9位UART,波特率為fosc/64或fosc/329位UART,波特率可變(T1溢率/n)5.3.3波特率一、方式0波特率串行口方式0的波特率由振蕩器的頻率所確定: 方式0波特率=振蕩器頻率/12二、方式2波特率串行口方式2的波特率由振蕩器的頻率和SMOD(PCON.7)所確定: 方式2波特率=2SMOD×振蕩器頻率/64SMOD為0時,波特率等于振蕩器頻率的六十四分之一;

SMOD為1時,波特率等于振蕩器頻率的三十二分之一。三、方式1和方式3的波特率串行口方式1和方式3的波特率由定時器T1或T2(8052等單片機)的溢出率和SMOD所確定。T1和T2是可編程的,可以選擇的波特率范圍比較大,因此串行口方式1和方式3是最常用的工作方式。

用定時器T1產(chǎn)生波特率

當(dāng)定時器T1作為串行口的波特率發(fā)生器時,串行口方式1和方式3的波特率由下式確定: 方式1和方式3波特率=2SMOD×(T1溢出率)/32SMOD為0時,波特率等于T1溢出率的三十二分之一;SMOD為1時,波特率等于T1溢出率的十六分之一。說明:

定時器T1作波特率發(fā)生器時,應(yīng)禁止T1中斷。通常T1工作于定時方式(C/T=0),計數(shù)脈沖為振蕩器的十二分頻信號。T1的溢出率又和它的工作方式有關(guān),一般選方式2定時,此時串行口方式1和方式3波特率的計算公式為:

2SMOD×振蕩器頻率/[32×12(256-(TH1))]

2SMOD×表5-7列出了最常用的波特率以及相應(yīng)的振蕩器頻率、T1工作方式和計數(shù)初值。

表5-7 常用波特率波特率Fosc(MHZ)SMOD定時器C/T方式重新裝入值方式0最大:1M12XXXX方式2最大:375K121XXX方式1、3:62.5K12102FFH19.2K11.0592102FDH9.6K11.0592002FDH4.8K11.0592002FAH2.4K11.0592002F4H1.2K11.0592002E8H137.611.9860021DH110600272H11012001FEEBH5.3.4多機通信原理

多機通信是指兩臺以上計算機之間的數(shù)據(jù)傳輸,主從式多機通信是多機通信系統(tǒng)中最簡單的一種,應(yīng)用也最為廣泛?,F(xiàn)以它為例加以討論。工作原理:串行口控制寄存器SCON中的SM2為多機通信控制位。串行口以方式2或方式3接收時,若SM2為1,則僅當(dāng)接收到的第9位數(shù)據(jù)RB8為1時,數(shù)據(jù)才裝入SBUF,置位RI,請求CPU對數(shù)據(jù)進行處理;如果接收到的第9位數(shù)據(jù)RB8為0,則不產(chǎn)生中斷標(biāo)志RI,信息丟失,CPU不作任何處理。當(dāng)SM2為0時,則接收到一個數(shù)據(jù)后,不管第9位數(shù)據(jù)RB8是1還是0,都將數(shù)據(jù)裝入接收緩沖器SBUF,置位中斷標(biāo)志RI,請求CPU處理,應(yīng)用這個特性,便可以實現(xiàn)MCS-51的主從式多機通信。工作原理:(1)主機的SM2=0;所有從機的SM2=1,以便接收主機發(fā)來的地址。(2)主機給從機發(fā)送地址時,第9數(shù)據(jù)位上發(fā)送1,以指示從機接收這個地址。(3)所有從機在SM2=1、RB8=1和RI=0時,接收主機發(fā)來的從機地址,進入相應(yīng)中斷服務(wù)程序,并和本機地址比較以確定是否為被尋址從機。(4)未被尋址從機保持SM2=1,并退出各自中斷服務(wù)程序。被尋址從機通過指令清零SM2,以正常接收主機隨之而來發(fā)送的數(shù)據(jù)或命令(每帖數(shù)據(jù)第9位均為0),并作相應(yīng)處理。同時向主機發(fā)回接收到的從機地址,供主機核對。

(5)完成主機和被尋址從機之間的數(shù)據(jù)通信,被尋址從機在通信完成后重新使SM2=1,并退出中斷服務(wù)程序,等待下一次通信。TXDRXD80310#從機TXDRXD80310#從機TXDRXD8031主機80310#從機TXDRXDMCS-51多機通信系統(tǒng)結(jié)構(gòu)框圖5.3.5串行口的應(yīng)用和編程一、串行口的應(yīng)用

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論