第6章MCS-51系列單片機(jī)的內(nèi)部功能模塊及其應(yīng)用(徐進(jìn)老師制作)_第1頁
第6章MCS-51系列單片機(jī)的內(nèi)部功能模塊及其應(yīng)用(徐進(jìn)老師制作)_第2頁
第6章MCS-51系列單片機(jī)的內(nèi)部功能模塊及其應(yīng)用(徐進(jìn)老師制作)_第3頁
第6章MCS-51系列單片機(jī)的內(nèi)部功能模塊及其應(yīng)用(徐進(jìn)老師制作)_第4頁
第6章MCS-51系列單片機(jī)的內(nèi)部功能模塊及其應(yīng)用(徐進(jìn)老師制作)_第5頁
已閱讀5頁,還剩136頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第6章 MCS-51系列單片機(jī)的內(nèi)部功能模塊及其應(yīng)用 MCS-51系列單片機(jī)的典型產(chǎn)品的內(nèi)部功能模塊包括P0、Pl、P2、P3四個(gè)雙向8位并行口,T0、T1二個(gè)16位定時(shí)/計(jì)數(shù)器(52子系列還有第3個(gè)定時(shí)/計(jì)數(shù)器T2)和一個(gè)串行口。MCS-51系列所有的產(chǎn)品一般都具有這些I/O部件除此以外,一些增強(qiáng)功能的新型5l系列的單片機(jī)還有多功能定時(shí)器、A/D轉(zhuǎn)換器、實(shí)時(shí)時(shí)鐘、I2C 串行BUS口、watchdog等一些功能模塊。 6.1 MCS-51單片機(jī)內(nèi)部的并行口MCS-51系列單片機(jī)中稱為P0、Pl、P2、P3的并行接口,每個(gè)接口主要由4部分構(gòu)成:數(shù)據(jù)鎖存器、輸入緩沖器、輸出驅(qū)動(dòng)器和接口引腳,每一

2、條I/O都能獨(dú)立的用作輸入或輸出,作輸入時(shí),數(shù)據(jù)可以鎖存;作輸出時(shí),數(shù)據(jù)可以緩沖。4個(gè)接口的功能不完全相同,其內(nèi)部結(jié)構(gòu)也略有不同,但在作I/O操作方式時(shí),其特性基本相同。如圖(a)(d)分別給出了P0、P1、P2、P3口的l位的結(jié)構(gòu)框圖。 P0、P1、P2、P3口的l位的結(jié)構(gòu)框圖在第2章已詳細(xì)地介紹了MCS-51單片機(jī)的并行I/O端口,下面舉個(gè)并行接口應(yīng)用的例子,以加深對(duì)并行接口使用的理解。【例例6-1】對(duì)例6-1的電路圖,單片機(jī)的P1.4P1.7接4個(gè)發(fā)光二極管,P1.0P1.3接4個(gè)開關(guān),要求每按鍵中斷一次,發(fā)光二極管顯示開關(guān)狀態(tài)。圖 6-1 例6-1的電路圖 要求對(duì)應(yīng)的發(fā)光二極管亮或滅,

3、只需把P1端口的內(nèi)容讀入,高、低4位互換,通過P1端口輸出即可。匯編語言參考程序?yàn)椋?ORG 0000H LJMP START ORG 0003H LJMP EXT0 ORG 0030H START: SETB EA ;開中斷總開關(guān) SETB EX0 ;允許中斷 SETB IT0 ;下降沿產(chǎn)生中斷 MOV P1,#0FH ;設(shè)定P1端口低4位為輸入狀態(tài) SJMP $ ORG 0100H EXT0: MOV A,P1 SWAP A MOV P1,A RETI C語言參考程序?yàn)椋?#include INT0 () interrupt 0 /* 中斷函數(shù) */ P1=0 x0f; /*設(shè)定P1端口低

4、4位為輸入狀態(tài),輸入端先置1,燈滅 */ P=4; /*讀入開關(guān)狀態(tài),并左移4位,使開關(guān)反映在發(fā)光二極管上*/ main() EA=1; /*開中斷總開關(guān)*/ EX0=1; /*允許中斷*/ IT0=1; /*下降沿產(chǎn)生中斷*/ while(1); /*等待中斷*/ 6.2 MCS-51單片機(jī)內(nèi)部的定時(shí)器/計(jì)數(shù)器 通常實(shí)現(xiàn)定時(shí)/計(jì)數(shù)有3種主要方法:(1)軟件定時(shí):軟件定時(shí)不占用硬件資源,但占用了CPU時(shí)間,降低了CPU的利用率。 (2)時(shí)基電路硬件定時(shí):用小規(guī)模集成電路器件構(gòu)成的硬件定時(shí)電路,電路簡(jiǎn)單,但要改變定時(shí)范圍,必須改變電阻和電容,修改不方便,即不可編程。 。 (3)可編程定時(shí)/計(jì)數(shù)器

5、定時(shí):它是為方便微機(jī)系統(tǒng)的設(shè)計(jì)和應(yīng)用而研制的一種芯片,它采用硬件定時(shí),且很容易通過軟件來確定和修改定時(shí)值,通過初始化編程,能夠滿足各種不同的定時(shí)和計(jì)數(shù)要求,在單片機(jī)、嵌入式系統(tǒng)的設(shè)計(jì)和應(yīng)用中得到廣泛的應(yīng)用。 6.2.1 實(shí)現(xiàn)定時(shí)/計(jì)數(shù)器的辦法單片機(jī)內(nèi)部的定時(shí)/計(jì)數(shù)器也屬于上面的第3種采用可編程定時(shí)/計(jì)數(shù)器實(shí)現(xiàn)定時(shí),只不過這種可編程定時(shí)/計(jì)數(shù)器的硬件模塊被集成到單片機(jī)內(nèi)部而已。6.2.2 MCS-51單片機(jī)內(nèi)部的定時(shí)/計(jì)數(shù)器定時(shí)/計(jì)數(shù)器是MCS-51系列單片機(jī)的重要部件,其工作方式靈活,編程簡(jiǎn)單,它的使用大大減輕了CPU的負(fù)擔(dān)并且簡(jiǎn)化了外圍電路。在MCS-51系列單片機(jī)中,51子系列單片機(jī)有2個(gè)

6、定時(shí)/計(jì)數(shù)器T0和T1,52子系列單片機(jī)除了有上述兩個(gè)定時(shí)/計(jì)數(shù)器以外,還有一個(gè)定時(shí)/計(jì)數(shù)器T2,后者的功能比前兩者強(qiáng)。圖6-2是MCS-51系列單片機(jī)內(nèi)部定時(shí)/計(jì)數(shù)器結(jié)構(gòu)框圖。圖6-2 MCS-51系列單片機(jī)內(nèi)部定時(shí)/計(jì)數(shù)器結(jié)構(gòu)框圖 定時(shí)/計(jì)數(shù)器主要由特殊功能寄存器TH0、TL0、TH1、TL1以及TMOD、TCON組成。 定時(shí)/計(jì)數(shù)器的實(shí)質(zhì)是加1計(jì)數(shù)器(16位),由高8位和低8位兩個(gè)寄存器組成。其中: TH0(高8位)、TL0(低8位)構(gòu)成16位加1計(jì)數(shù)器T0,用來存放T0的計(jì)數(shù)初值; TH1(高8位)、TL1(低8位)構(gòu)成加116位計(jì)數(shù)器T1,用來存放T1的計(jì)數(shù)初值; 這兩個(gè)16位計(jì)數(shù)器

7、都是16位的加1計(jì)數(shù)器。 TMOD用來控制兩個(gè)定時(shí)/計(jì)數(shù)器的工作方式,TCON用作中斷溢出標(biāo)志并控制定時(shí)器的啟停。 加1計(jì)數(shù)器輸入的計(jì)數(shù)脈沖有兩個(gè)來源。 (1)是由系統(tǒng)的時(shí)鐘振蕩器輸出脈沖經(jīng)12分頻后送來; (2)是T0或T1引腳輸入的外部脈沖源。每來一個(gè)脈沖計(jì)數(shù)器加1,當(dāng)加到計(jì)數(shù)器為全1時(shí),再輸入一個(gè)脈沖就使計(jì)數(shù)器回零,且計(jì)數(shù)器的溢出使TCON中TF0或TF1置1,向CPU發(fā)出中斷請(qǐng)求(定時(shí)/計(jì)數(shù)器中斷允許時(shí))。 如果定時(shí)/計(jì)數(shù)器工作于定時(shí)模式,則表示定時(shí)時(shí)間已到;如果工作于計(jì)數(shù)模式,則表示計(jì)數(shù)值已滿。因此,由溢出時(shí)計(jì)數(shù)器的值減去計(jì)數(shù)初值才是加1計(jì)數(shù)器的計(jì)數(shù)值。1)定時(shí)/計(jì)數(shù)器設(shè)置為定時(shí)器模

8、式時(shí),加1計(jì)數(shù)器是對(duì)內(nèi)部機(jī)器周期計(jì)數(shù)(1個(gè)機(jī)器周期等于12個(gè)振蕩周期,即計(jì)數(shù)頻率為晶振頻率的1/12)。計(jì)數(shù)值N乘以機(jī)器周期Tcy就是定時(shí)時(shí)間t 。2)定時(shí)/計(jì)數(shù)器設(shè)置為計(jì)數(shù)器模式時(shí),外部事件計(jì)數(shù)脈沖由T0或T1引腳輸入到計(jì)數(shù)器。在每個(gè)機(jī)器周期采樣T0或T1引腳電平。當(dāng)某周期采樣到一高電平輸入,而下一周期又采樣到一低電平時(shí),則計(jì)數(shù)器加1,更新的計(jì)數(shù)值在下一個(gè)機(jī)器周期期間裝入計(jì)數(shù)器。由于檢測(cè)一個(gè)從1到0的下降沿需要2個(gè)機(jī)器周期,因此要求被采樣的電平至少要維持一個(gè)機(jī)器周期。當(dāng)晶振頻率為12MHz時(shí),最高計(jì)數(shù)頻率不超過1/2MHz,即計(jì)數(shù)脈沖的周期要大于2 s。 6.2.2.1 定時(shí)器/計(jì)數(shù)器的控制

9、寄存器單片機(jī)定時(shí)/計(jì)數(shù)器T0、T1 的工作主要由TMOD、TCON、IE 3個(gè)特殊功能寄存器控制。其中:TMOD用來設(shè)置各個(gè)定時(shí)/計(jì)數(shù)器的工作方式、選擇定時(shí)或計(jì)數(shù)功能;TCON用于控制啟動(dòng)運(yùn)行以及作為運(yùn)行狀態(tài)的標(biāo)志等;IE用于對(duì)定時(shí)/計(jì)數(shù)器中斷允許進(jìn)行控制。1工作方式控制寄存器TMODTMOD寄存器是一個(gè)用于設(shè)定定時(shí)/計(jì)數(shù)器工作方式的特殊功能寄存器,其低4位用于控制T0,而高4位用于控制T1。字節(jié)地址為89H,不能位尋址,設(shè)置TMOD須用字節(jié)操作指令。復(fù)位時(shí)TMOD為00H。它的各位定義見圖6-3圖6-3 TMOD各位定義(1)M1、M0:工作方式選擇位表6-1 定時(shí)/計(jì)數(shù)器的方式選擇M1、M

10、0用來選擇工作方式,對(duì)應(yīng)關(guān)系如表6-1所示。(2)C/ :定時(shí)/計(jì)數(shù)功能選擇位TC/ =0為定時(shí)方式。在定時(shí)方式中,以振蕩輸出時(shí)鐘脈沖fosc的12分頻信號(hào)作為計(jì)數(shù)信號(hào),如果單片機(jī)采用12MHz晶體,則計(jì)數(shù)頻率為1 MHz,計(jì)數(shù)脈沖周期為1s,即每1 s計(jì)數(shù)器加1一次。C/ =1為計(jì)數(shù)方式。在計(jì)數(shù)方式中,單片機(jī)在每個(gè)機(jī)器周期對(duì)外部計(jì)數(shù)脈沖進(jìn)行采樣。如果前一個(gè)機(jī)器周期采樣為高電平,后一個(gè)機(jī)器周期采樣為低電平,即為一個(gè)有效的計(jì)數(shù)脈沖。在下一機(jī)器周期進(jìn)行計(jì)數(shù)。因此,外部事件計(jì)數(shù)時(shí)最高計(jì)數(shù)頻率是單片機(jī)晶振頻率的1/24。如果單片機(jī)采用12MHz晶體,則外部事件計(jì)數(shù)脈沖最短周期為2s,即最快可以做到每2

11、s計(jì)數(shù)器加1。TT(3)GATE:門控位GATE=1,定時(shí)/計(jì)數(shù)器的運(yùn)行受外部引腳輸入電平的控制,即 控制T0運(yùn)行, 控制T1運(yùn)行。GATE=0,定時(shí)/計(jì)數(shù)器的運(yùn)行不受外部輸入引腳的控制。INT0INT12定時(shí)器控制寄存器TCONTCON寄存器是一個(gè)用于控制啟動(dòng)運(yùn)行以及作為運(yùn)行狀態(tài)的標(biāo)志的特殊功能寄存器。TCON寄存器既參與定時(shí)控制又參與中斷控制,其高4位用于控制T0、T1,而低4位用于控制外部中斷 、 。TCON的字節(jié)地址為88H,它可位尋址。復(fù)位時(shí)TCON為00H。它的各位定義見圖6-4 INT1INT0圖6-4 TCON各位定義TCON低4位與外中斷 、 有關(guān),高4位功能定時(shí)控制有關(guān)。I

12、NT0INT1(1)TF0和TF1:計(jì)數(shù)溢出標(biāo)志位 當(dāng)計(jì)數(shù)器計(jì)數(shù)溢出(計(jì)滿)時(shí),該位置1。使用查詢方式時(shí),此位作狀態(tài)位供查詢,但應(yīng)注意查詢有效后應(yīng)用軟件方法及時(shí)將該位清0;使用中斷方式時(shí),此位作中斷標(biāo)志位,在轉(zhuǎn)向中斷服務(wù)程序時(shí)由硬件自動(dòng)清0。(2)TR0和R1:定時(shí)器運(yùn)行控制位 TR0(TR1)=0,停止定時(shí)/計(jì)數(shù)器工作;TR0(TR1)=1,啟動(dòng)定時(shí)/計(jì)數(shù)器工作。該位根據(jù)需要靠軟件來置1或清0,以控制定時(shí)器的啟動(dòng)或停止。3中斷允許控制寄存器IEIE寄存器與定時(shí)/計(jì)數(shù)器有關(guān)的位為ET0和ET1,它們分別是定時(shí)/計(jì)數(shù)器0、1的中斷允許控制位。當(dāng)ET0(或ET1)=0時(shí),禁止定時(shí)/計(jì)數(shù)器0(或1)

13、中斷;而當(dāng)ET0(或ET1)=1時(shí),允許定時(shí)/計(jì)數(shù)器0(或1)中斷。6.2.2.2 定時(shí)器/計(jì)數(shù)器的工作方式 1方式013位計(jì)數(shù)結(jié)構(gòu)的工作方式,定時(shí)/計(jì)數(shù)器T0、T1都可以設(shè)置工作方式0,T0(或T1)的計(jì)數(shù)器由TH0(或TH1)高8位和TL0(或TL1)的低5位構(gòu)成,TL0(或TL1)的高3位未用。圖6-5、圖6-6分別為工作方式0的邏輯電路結(jié)構(gòu)、工作原理框圖。當(dāng)TL0的低5位溢出時(shí)向TH0進(jìn)位,TH0溢出時(shí),置位TCON中的TF0標(biāo)志,向CPU發(fā)出中斷請(qǐng)求。 圖6-5 工作方式0的邏輯電路結(jié)構(gòu) 圖6-6 工作方式0的工作原理框圖 當(dāng)C/ =0時(shí),多路開關(guān)接通振蕩脈沖的12分頻輸出,13位計(jì)

14、數(shù)器以此進(jìn)行計(jì)數(shù),這就是定時(shí)方式。當(dāng)C/ =1時(shí),多路開關(guān)接通計(jì)數(shù)引腳P3.4(T0),外部計(jì)數(shù)脈沖由引腳P3.4輸入。當(dāng)計(jì)數(shù)脈沖發(fā)生負(fù)跳變時(shí),計(jì)數(shù)器加1,這就是計(jì)數(shù)方式。不管是定時(shí)方式還是計(jì)數(shù)方式,當(dāng)TL0的低5位計(jì)數(shù)溢出時(shí),向TH0進(jìn)位,而全部13位計(jì)數(shù)溢出時(shí),則向計(jì)數(shù)溢出標(biāo)志位TF0進(jìn)位。在滿足中斷條件時(shí),向CPU申請(qǐng)中斷,若需繼續(xù)進(jìn)行定時(shí)或計(jì)數(shù),則應(yīng)用指令對(duì)TL0、TH0重新置數(shù),否則,下一次計(jì)數(shù)將會(huì)從0開始,造成計(jì)數(shù)或定時(shí)時(shí)間不準(zhǔn)確。這里要說明的是:T0能否啟動(dòng),取決于TR0、GATE和引腳 的狀態(tài)。當(dāng)GATE=0時(shí),GATE信號(hào)封鎖了或門,使引腳 信號(hào)無效。而或門輸出端的高電平狀態(tài)

15、卻打開了與門。這時(shí)如果TR0=1,則與門輸出為1,模擬開關(guān)接通,定時(shí)/計(jì)數(shù)器0工作。如果TR0=0,則斷開模擬開關(guān),定時(shí)/計(jì)數(shù)器0不能工作。當(dāng)GATE=1,同時(shí)TR0=1時(shí),模擬開關(guān)是否接通由 控制。當(dāng) =1時(shí),與門輸出高電平,模擬開關(guān)接通,定時(shí)/計(jì)數(shù)器0工作;當(dāng) =0時(shí),與門輸出低電平,模擬開關(guān)斷開,定時(shí)/計(jì)數(shù)器0停止工作。這種情況可用于測(cè)量外信號(hào) 的脈沖寬度。INT0TTINT0INT0INT0INT0INT0方式0是13位的定時(shí)/計(jì)數(shù)方式,因而最大計(jì)數(shù)值(滿值)為M=213=8192。若計(jì)數(shù)值為N,則置入的初值X為:X=8192-N例如,定時(shí)/計(jì)數(shù)器T0的計(jì)數(shù)值為1000,則初值為719

16、2,轉(zhuǎn)換成二進(jìn)制數(shù)為1110000011000B,則TH0=11100000B=E0H,TL0=xxx11000B=18H(把xxx當(dāng)作000時(shí) 2方式116位計(jì)數(shù)結(jié)構(gòu)的工作方式,定時(shí)/計(jì)數(shù)器T0、T1都可以設(shè)置工作方式1,T0(或T1)的計(jì)數(shù)器由TH0(或TH1)高8位和TL0(或TL1)的低8位構(gòu)成,其邏輯電路和工作情況與工作方式0基本相同。所不同的只是組成計(jì)數(shù)器的位數(shù),它比工作方式0有更寬的計(jì)數(shù)范圍,因此,在實(shí)際應(yīng)用中,工作方式1可以代替工作方式0。圖6-7、圖6-8分別為工作方式0的邏輯電路結(jié)構(gòu)、工作原理框圖。圖6-7 工作方式l的邏輯電路結(jié)構(gòu)圖6-8 工作方式1的工作原理框圖 由于是

17、16位的定時(shí)/計(jì)數(shù)方式,因而最大計(jì)數(shù)值(滿值)為M=216=65536。若計(jì)數(shù)值為N,則置入的初值X為: X=65536-N例如,定時(shí)/計(jì)數(shù)器T0的計(jì)數(shù)值為1000,則初值為65536-1000=64536,轉(zhuǎn)換成二進(jìn)制數(shù)為1111110000011000B,則TH0=11111100B=FCH,TL0 = 00011000B =18 H。3方式2具有自動(dòng)重裝初值的、8位計(jì)數(shù)結(jié)構(gòu)的工作方式,定時(shí)/計(jì)數(shù)器T0、T1都可以設(shè)置工作方式2。在方式2下,16位計(jì)數(shù)器被分為兩部分,即以TL0(或TL1)作計(jì)數(shù)器,而以TH0(或TH1)作預(yù)置寄存器(即保存計(jì)數(shù)初值),初始化時(shí)把8位的計(jì)數(shù)初值分別裝人TL0

18、(或TL1)和TH0(或TH1)中。當(dāng)TL0(或TL1)計(jì)數(shù)溢出后,不是像前兩種工作方式那樣通過軟件方法,而是由預(yù)置寄存器TH0(或TH1)以硬件方法自動(dòng)給計(jì)數(shù)器TL0(或TL1)重新加載。圖6-9、圖6-10分別為工作方式2的邏輯電路結(jié)構(gòu)、工作原理框圖。 圖6-9 工作方式2的邏輯電路結(jié)構(gòu) 圖6-10 工作方式2的工作原理框圖由于是8位的定時(shí)/計(jì)數(shù)方式,因而最大計(jì)數(shù)值(滿值)為M=28=256。若計(jì)數(shù)值為N,則置入的初值X為:X=256-N例如,定時(shí)/計(jì)數(shù)器T0的計(jì)數(shù)值為100,則初值為256-100=156,轉(zhuǎn)換成二進(jìn)制數(shù)為10011100B,則TH0=TL0=10011100B。注意:由

19、于方式2計(jì)滿后,溢出信號(hào)會(huì)觸發(fā)三態(tài)門自動(dòng)地把TH0(或TH1)的值裝入TL0(或TL1)中,因而如果要重新實(shí)現(xiàn)N個(gè)單位的計(jì)數(shù),不用重新置入初值。 4工作方式3工作方式3只適用于定時(shí)器T0。如果企圖將定時(shí)器T1置為方式3,則它將停止計(jì)數(shù),其效果與置TR1=0相同,即關(guān)閉定時(shí)器T1。 當(dāng)T0工作在方式3時(shí),它被拆成兩個(gè)獨(dú)立的8位計(jì)數(shù)器TL0和TH0。圖6-11、圖6-12分別為工作方式3的邏輯電路結(jié)構(gòu)、工作原理框圖。 圖6-11 工作方式3的邏輯電路結(jié)構(gòu)圖6-12 工作方式3的工作原理框圖 圖6-11中,上方的8位計(jì)數(shù)器TL0使用原定時(shí)器T0的控制位C/ 、GATE、TR0和,TL0既可以計(jì)數(shù)使用

20、,又可以定時(shí)使用,其功能和操作與前面介紹的工作方式0或工作方式l完全相同。下方的TH0只能作為簡(jiǎn)單的定時(shí)器使用。而且由于定時(shí)/計(jì)數(shù)器0的控制位巳被TL0獨(dú)占,因此只好借用定時(shí)/計(jì)數(shù)器l的控制位TR1和TF1。即以計(jì)數(shù)溢出去置位TF1,而定時(shí)的啟動(dòng)和停止則受TR1的狀態(tài)控制。TINT0由于TL0既能作定時(shí)器使用也能作計(jì)數(shù)器使用,而TH0只能作定時(shí)器使用卻不能作計(jì)數(shù)器使用,因此在工作方式3下,定時(shí)/計(jì)數(shù)器0可以構(gòu)成兩個(gè)定時(shí)器或一個(gè)定時(shí)器和一個(gè)計(jì)數(shù)器。注意:在方式3下,T0和T1的工作有很大的不同。其差別如下:1)若把T1置于方式3,則Tl停止計(jì)數(shù),其效果與置TR1=0相同,即關(guān)閉定時(shí)器T1。此進(jìn),

21、定時(shí)器T1保持其內(nèi)容不變。因此,一般不會(huì)把T1置于方式3。2)若把T0置于方式3,則16位計(jì)數(shù)器拆開為兩個(gè)獨(dú)立工作的8位計(jì)數(shù)器TL0和 TH0。但這兩個(gè)8位計(jì)數(shù)器的工作是有差別的。首先,它們的工作方式不同: 對(duì)TL0來說它既可以按計(jì)數(shù)方式工作,也可以按定時(shí)方式工作; 而TH0則只能按定時(shí)方式工作。另外,它們的控制方式也不同。 3)當(dāng)T0處于方式3時(shí),此時(shí)T1可工作為方式0、1、2,但由于此時(shí)T1已沒有控制通斷TR1和溢出中斷TF1的功能,T1只能作為串行口的波特率發(fā)生器使用,或不需要中斷的場(chǎng)合。6.2.2.3 定時(shí)器/計(jì)數(shù)器的計(jì)數(shù)初值計(jì)算MCS-51的定時(shí)器/計(jì)數(shù)器采用增量計(jì)數(shù)。根據(jù)定時(shí)/計(jì)數(shù)

22、器的計(jì)數(shù)結(jié)構(gòu),其最大計(jì)數(shù)為2m,其中m為計(jì)數(shù)器的位數(shù),對(duì)于工作方式0,m=13,其最大計(jì)數(shù)為213=8192;對(duì)于工作方式1,m=16,其最大計(jì)數(shù)為216=65536;對(duì)于工作方式2和工作方式3,m=8,其最大計(jì)數(shù)為28=256。在實(shí)際應(yīng)用中,經(jīng)常會(huì)有少于2m個(gè)計(jì)數(shù)值的要求,例如,要求計(jì)數(shù)到1000就產(chǎn)生溢出,這時(shí)可在計(jì)數(shù)時(shí),不從0開始,而是從一個(gè)固定值開始,這個(gè)固定值的大小,取決于被計(jì)數(shù)的大小。如要計(jì)數(shù)1000,預(yù)先在計(jì)數(shù)器里放進(jìn)(2m 1000)的數(shù),再來1000個(gè)脈沖,就到了2m,就會(huì)產(chǎn)生溢出,置位TF0。這個(gè)(2m 1000)的數(shù)稱作計(jì)數(shù)初值,也稱作預(yù)置值。定時(shí)也有同樣的問題,并且也可

23、采用同樣的方法來解決。當(dāng)定時(shí)/計(jì)數(shù)器為工作方式0,并假設(shè)單片機(jī)的晶振是12MHz,那么每個(gè)計(jì)時(shí)脈沖是1s,計(jì)滿213=8192個(gè)脈沖需要8.192ms,如果只需定時(shí)1ms,可以作這樣的處理:1ms即l000s,也就是計(jì)數(shù)1000時(shí)滿。因此,計(jì)數(shù)之前預(yù)先在計(jì)數(shù)器里放進(jìn)2131000=81921000=7192,開始計(jì)數(shù)后,計(jì)滿1000個(gè)脈沖到8192即產(chǎn)生溢出。如果計(jì)數(shù)初值為X,則計(jì)算定時(shí)時(shí)間 t 為:t =(2NX)Tcy=(2NX)12/fosc式中:Tcy為機(jī)器周期,fosc為晶振周期。例如,如果定時(shí)/計(jì)數(shù)器為工作方式0,需要定時(shí)3ms(3000s),fOSC為12MHz。設(shè)計(jì)數(shù)初值為X,

24、則根據(jù)上述公式可得:3000=(2mX)12fOSC=(213X)12/12由此可得,X =5192需要說明的是,單片機(jī)中的定時(shí)器通常要求不斷重復(fù)定時(shí),一次定時(shí)時(shí)間到之后,緊接著進(jìn)行第二次的定時(shí)操作。一旦產(chǎn)生溢出,計(jì)數(shù)器中的值就回到0,下一次計(jì)數(shù)從0開始,定時(shí)時(shí)間將不正確,為使下一次的定時(shí)時(shí)間不變,需要在定時(shí)溢出后馬上把計(jì)數(shù)初值送到計(jì)數(shù)器。6.2.2.4 定時(shí)/計(jì)數(shù)器的初始化編程及應(yīng)用定時(shí)器/計(jì)數(shù)器的功能是由軟件編程確定的,在使用定時(shí)器,計(jì)數(shù)器前都要對(duì)其進(jìn)行初始化。MCS-51單片機(jī)定時(shí)/計(jì)數(shù)器的初始化編程步驟為:(1)根據(jù)要求選擇方式,確定方式控制字,寫入方式控制寄存器TMOD。(2)根據(jù)定

25、時(shí)時(shí)間要求或計(jì)數(shù)要求,計(jì)算定時(shí)/計(jì)數(shù)器的計(jì)數(shù)值,再由計(jì)數(shù)值求得初值,送計(jì)數(shù)初值的高8位和低8位到TH0(或TH1)和TL0(或TL1)寄存器中。定時(shí)/計(jì)數(shù)器的初值因工作方式的不同而不同。設(shè)最大計(jì)數(shù)值為M,則各種工作方式下的M值為:方式0 時(shí)M=213=8192;方式1 時(shí)M=216=65536;方式2 時(shí)M=28=256;方式3時(shí),T0分成兩個(gè)8位計(jì)數(shù)器,所以兩個(gè)定時(shí)器的M值均為M=256。由于定時(shí)器計(jì)數(shù)器工作的實(shí)質(zhì)是做“加1計(jì)數(shù),所以,當(dāng)最大計(jì)數(shù)值M 值為已知且計(jì)數(shù)值為N 時(shí),初值X 可計(jì)算為:X=MN(3)如果工作于中斷方式,則根據(jù)需要開放定時(shí)/計(jì)數(shù)器的中斷,即對(duì)IE寄存器賦值(后面還需編

26、寫中斷服務(wù)程序)。(4)設(shè)置定時(shí)/計(jì)數(shù)器控制寄存器TCON的值(即將其TR0或TR1置位),啟動(dòng)定時(shí)/計(jì)數(shù)器開始工作。(5)等待定時(shí)/計(jì)數(shù)時(shí)間到,定時(shí)/計(jì)數(shù)到則執(zhí)行中斷服務(wù)程序;若用查詢處理,則需編寫查詢程序判斷溢出標(biāo)志,溢出標(biāo)志等于1,則進(jìn)行相應(yīng)處理?!纠?-2】 T0運(yùn)行于定時(shí)器狀態(tài),時(shí)鐘振蕩周期為12MHz,要求定時(shí)100s。試求不同工作方式時(shí)的定時(shí)初值X。當(dāng)fosc =12MHz,時(shí),Tcy=1s,N=100s/1s=100= 64H方式0(13位方式):X=21364H=1F9CH方式1(16位方式):X=21664H=FF9CH方式2、3(8位方式):X=2864H=9CH注意:

27、工作方式0的初值裝入方法:1F9CH= 1 1111 100 1 1100 B TH0的8位 TL0的低5位可見,TH0=0FCH,TL0=1CH MOV TH0,#0FCH MOV TL0,#1CH6.2.2.5 定時(shí)器/計(jì)數(shù)器的應(yīng)用舉例【例例6-3】設(shè)系統(tǒng)時(shí)鐘頻率為12MHz,利用定時(shí)器/計(jì)數(shù)器T0編程實(shí)現(xiàn)從P1.0輸出周期為20ms的方波。從P1.0輸出周期為20ms的方波,只需P1.0每隔10ms取反一次。當(dāng)系統(tǒng)時(shí)鐘為12MHz,定時(shí)器/計(jì)數(shù)器T0工作于方式1時(shí),最大的定時(shí)時(shí)間為65536us,滿足10ms的定時(shí)要求。系統(tǒng)時(shí)鐘為12MHz,計(jì)數(shù)值為10000,初值X=65536-100

28、00=D8F0H,則TH0=D8H、TL0=F0H。 如果定時(shí)時(shí)間大于65536s,這時(shí)用一個(gè)定時(shí)/計(jì)數(shù)器直接處理不能實(shí)現(xiàn),這時(shí)可用:1個(gè)定時(shí)/計(jì)數(shù)器配合軟件計(jì)數(shù)方式處理,2個(gè)定時(shí)/計(jì)數(shù)器共同處理。 1采用查詢方式編程匯編語言參考程序?yàn)椋?ORG 0000H AJMP MAIN ORG 0300H MAIN: MOV TMOD,#01H ;定時(shí)器,計(jì)數(shù)囂T0工作于方式1 HH1: MOV TH0,#0D8H MOV TL0,#0F0H SETB TR0 LOOP: JBC TF0,NEXT ;查詢計(jì)數(shù)溢出 SJMP LOOP NEXT: CPL P1.0 SJMP HH1 SJMP $C語言參

29、考程序?yàn)椋?# include sbit P_1=P0; void main()char i; TMOD=0 x01; TR0=1; For(; ;) TH0=0 xD8; TL0=0 xF0; do while (!TF0) P1_0=!P1_0; TF0=0; /查詢計(jì)數(shù)溢出 2采用中斷方式編程 匯編語言參考程序?yàn)椋?ORG 0000H LJMP MAIN ORG 000BH ;中斷處理程序 CPL P1.0 MOV TH0,#0D8H MOV TL0,#0F0H RETI ORG 0200H ;主程序 MAIN: MOV TMOD,#01H MOV TH0,#0D8H MOV TL0,#

30、0F0H SETB EA SETB ET0 SETB TR0 SJMP $C語言參考程序?yàn)椋? include /包含特殊功能寄存囂庫sbit P1_0=P10;void main ( ) TMOD=0 x01; TH0=0 xD8; TL0=0 xF0; EA=1; ET0=1; TR0=1; while (1); void time0_int (void) interrupt 1 /中斷服務(wù)程序 P1_0=!P1_0; TH0=0 xD8; TL0=0 xF0; 【例例6-4】如圖6-13所示,在P1.7端接一個(gè)發(fā)光二極管LED,要求利用定時(shí)控制使LED亮1s滅1s周而復(fù)始地閃爍,設(shè)時(shí)鐘頻

31、率fosc=6MHZ。 圖6-13 例6-8的電路圖當(dāng) fosc=6MHz時(shí),工作方式0、1、2均不能滿足定時(shí)1s的要求。如,16位定時(shí)最大為216 2s=131.072ms,顯然不能滿足要求,可用以下兩種方法解決。 方法1:采用T0產(chǎn)生周期為200ms脈沖,即P1.0每100ms取反一次作為T1的計(jì)數(shù)脈沖,T1對(duì)下降沿計(jì)數(shù),因此T1計(jì)5個(gè)脈沖正好1s。通過P1.7反相,改變LED的狀態(tài)。T0采用方式1,定時(shí)100ms。計(jì)數(shù)初值為:X= 216100103/2 =3CB0H。T1采用方式2,計(jì)5個(gè)脈沖,計(jì)數(shù)初值:X = 285=FBH均采用查詢方式,其流程圖如圖6-14所示。圖6-14 例6-

32、4的流程圖匯編參考程序?yàn)椋?ORG 0000H MAIN: CLR P1.7 SETB P1.0 MOV TMOD,#61H MOV TH1,#0FBH MOV TL1,#0FBH SETB TR1 LOOP1: CPL P1.7 LOOP2: MOV TH0,#3CH MOV TL0,#0B0H SETB TR0 LOOP3: JBC TF0,LOOP4 SJMP LOOP3 LOOP4: CPL P1.0 JBC TF1,LOOP1 AJMP LOOP2 END 方法2:T0每隔100ms中斷一次,利用軟件對(duì)T0的中斷次數(shù)進(jìn)行計(jì)數(shù),中斷10次即實(shí)現(xiàn)了1s的定時(shí)。匯編參考程序?yàn)椋?ORG 0

33、000H AJMP MAIN ORG 000BH ;T0中斷服務(wù)程序入口 AJMP IP0 ORG 0030H ;主程序開始 MAIN:CLR P1.7 MOV TMOD,#01H ;T0定時(shí)100ms MOV TH0,#3CH MOV TL0,#0B0H SETB ET0 SETB EA MOV R4,#0AH ;中斷10次計(jì)數(shù) SETB TR0 SJMP $ ;等待中斷 IP0:DJNZ R4,RET0 ;未到10次轉(zhuǎn)重新定時(shí) MOV R4,#0AH ;到10次 CPL P1.7 ;P1.7的燈變反 RET0:MOV TH0,#3CH ;重新定時(shí)100ms MOV TL0,#0B0H SE

34、TB TR0 RETIC語言參考程序?yàn)椋?includesbit P1_0=P10;sbit P1_7=P17;timer0 interrupt 1 using 1 /*T0中斷服務(wù)程序*/ P1_0=! P1_0; /*10ms定時(shí)時(shí)間到, P1.0反相*/ TH0=(65536-50000)/256; /*計(jì)數(shù)初值重裝載*/ TL0=(65536-50000)%256;timer1 interrupt 3 using 2 /*T1中斷服務(wù)程序入口*/ P1_7=! P1_7; /*1s定時(shí)時(shí)間到, 燈改變狀態(tài)*/main( ) P1_7=0; /*置燈初始滅*/P1_0=1; /*保證第1

35、次反相便開始計(jì)數(shù)*/TMOD=0 x61; /* T0工作在方式1定時(shí),T1工作在方式2計(jì)數(shù) */TH0=(65536-50000)/256; /*預(yù)置計(jì)數(shù)初值*/TL0=(65536-50000)%256;TH1=256-5;TL1=256-5;IP=0 x08; /*置優(yōu)先級(jí)寄存器*/EA=1; /*CPU開中斷*/ET0=1; /*開T0中斷*/ET1=1; /*開T1中斷*/TR0=1; /*啟動(dòng)T0*/TR1=1; /*啟動(dòng)T1*for (;)【例例6-10】利用定時(shí)器T0測(cè)量某正脈沖信號(hào)寬度,脈沖從P3.2(即 )輸入。已知此脈沖寬度小于10ms,系統(tǒng)時(shí)鐘頻率為12MHz。要求測(cè)量

36、此脈沖寬度,并把結(jié)果順序存放在以片內(nèi) 30H 單元為首地址的數(shù)據(jù)存儲(chǔ)單元中。利用門控位的功能,當(dāng)GATE為1時(shí),只有 =1且軟件使TRx置1,才能啟動(dòng)定時(shí)器。 利用這個(gè)特性,便可測(cè)量輸入脈沖的寬度(系統(tǒng)時(shí)鐘周期數(shù))。INT0INTx匯編參考程序?yàn)椋?ORG 0000H AJMP MAIN ORG 0300HMAIN: MOV TMOD,#09H ;定時(shí)器,計(jì)數(shù)器T0工作于計(jì)數(shù)方式,GATE=1 MOV TH0,#00H ;裝入計(jì)數(shù)初值 MOV TL0,#00H LP: JB P3.2,LP ;等待變低 SETB TR0 ;開始計(jì)數(shù)LOOP: JNB P3.2,LOOP ;等待變高,即脈沖上升沿

37、HERE: JB P3.2,HERE ;等待變低,即脈沖下降沿 CLR TR0 ;停止計(jì)數(shù) MOV 30H,TL0 MOV 31H,TH0 SJMP $C語言參考程序?yàn)椋?#include sbit P3_2=p32;void main ( ) unsigned char *P;P=0 x30; /指針指向片內(nèi)30H單元TMOD=0 x09; /GATE=1,工作方式為計(jì)數(shù)器TL0=0 x00;TH0=0 x00; /裝入初位do while (P3_2=1); /等待變低 TR0=1; while (P3_2=0); /等待變高,即脈沖上升沿 while P3_2=1); /等待變低,即脈沖

38、下降沿 TR0=0; /停止計(jì)數(shù) *P=TL0; /讀入TL0值(十六進(jìn)制),存放在30H單元 P+ *P=TH0; /讀入TH0值(十六進(jìn)制),存放在31H單元6.3 MCS-51單片機(jī)內(nèi)部的串行接口6.3.1 計(jì)算機(jī)串行通信基礎(chǔ)計(jì)算機(jī)通信是將計(jì)算機(jī)技術(shù)和通信技術(shù)的相結(jié)合,完成計(jì)算機(jī)與外部設(shè)備或計(jì)算機(jī)與計(jì)算機(jī)之間的信息交換。1通信的基本方式計(jì)算機(jī)與外界的通信有并行通信和串行通信兩種基本方式。其中:并行通信通常是將數(shù)據(jù)字節(jié)的各位用多條數(shù)據(jù)線同時(shí)進(jìn)行傳送;串行通信是將數(shù)據(jù)字節(jié)分成一位一位的形式在一條傳輸線上逐個(gè)地傳送。圖6-15為計(jì)算機(jī)與外界的通信方式。 并行通信的傳送控制簡(jiǎn)單、傳輸速度快,但由

39、于傳輸線較多,長距離傳送時(shí)成本高,且接收方的各位同時(shí)接收存在困難。串行通信的傳輸線少,長距離傳送時(shí)成本低,且可以利用電話網(wǎng)等現(xiàn)成的設(shè)備,但數(shù)據(jù)的傳送控制比并行通信復(fù)雜、傳輸速度慢。它們的特點(diǎn)可歸納為表6-2。(a) 并行通信 (b) 串行通信 圖6-15 計(jì)算機(jī)與外界的通信方式表6-2 兩種通信方式的特點(diǎn)2串行通信的方式串行通信按信息的格式又可分為異步通信和同步通信兩種方式。(1)異步通信異步通信是指通信的發(fā)送與接收設(shè)備使用各自的時(shí)鐘控制數(shù)據(jù)的發(fā)送和接收過程。為使雙方的收發(fā)協(xié)調(diào),要求發(fā)送和接收設(shè)備的時(shí)鐘盡可能一致。 此方式的數(shù)據(jù)在線路上傳送時(shí)是以一個(gè)字符(字節(jié))為單位,未傳送時(shí)線路處于空閑狀態(tài)

40、,空閑線路約定為高電平“1”。見圖6-16。 異步通信是以字符為單位進(jìn)行傳輸,傳送一個(gè)字符又稱為一幀信息,字符與字符之間的間隙(時(shí)間間隔)是任意的,但每個(gè)字符中的各位是以固定的時(shí)間傳送的,即字符之間是異步的(字符之間不一定有“位間隔”的整數(shù)倍的關(guān)系),但同一字符內(nèi)的各位是同步的(各位之間的距離均為“位間隔”的整數(shù)倍)。傳送時(shí)每一個(gè)字符前加一個(gè)低電平的起始位,然后是數(shù)據(jù)位,數(shù)據(jù)位可以是58位,低位在前,高位在后,數(shù)據(jù)位后可以帶一個(gè)奇偶校驗(yàn)位,最后是停止位,停止位用高電平表示,它可以是1位、1位半或2位。異步通信的數(shù)據(jù)格式如圖6-17所示。 圖6-16 異步通信的示意圖 圖6-17 異步通信數(shù)據(jù)格

41、式 異步通信的特點(diǎn):不要求收發(fā)雙方時(shí)鐘的嚴(yán)格一致,對(duì)發(fā)送時(shí)鐘和接收時(shí)鐘的要求相對(duì)不高,實(shí)現(xiàn)容易,設(shè)備開銷較?。坏捎谝淮沃粋魉鸵粋€(gè)字符,因而一次傳送的位數(shù)比較少,每個(gè)字符還要附加23位用于起止位,各幀之間還有間隔,因此傳輸效率不高。(2)同步通信同步通信時(shí)要建立發(fā)送方時(shí)鐘對(duì)接收方時(shí)鐘的直接控制,使雙方達(dá)到完全同步。此時(shí),傳輸數(shù)據(jù)的位之間的距離均為“位間隔”的整數(shù)倍,同時(shí)傳送的字符間不留間隙,即保持位同步關(guān)系,也保持字符同步關(guān)系。發(fā)送方對(duì)接收方的同步可以通過外同步法、自同步法兩種方法實(shí)現(xiàn)。其中:外同步法是發(fā)送端發(fā)送數(shù)據(jù)之前先發(fā)送同步時(shí)鐘信號(hào),接收方用這一同步信號(hào)來鎖定自己的時(shí)鐘脈沖頻率,以此來達(dá)

42、到收發(fā)雙方位同步的目的;而自同步法是接收方利用包含有同步信號(hào)的特殊編碼(如曼徹斯特編碼)從信號(hào)自身提取同步信號(hào)來鎖定自己的時(shí)鐘脈沖頻率,達(dá)到同步目的。圖6-18為兩種同步方法的示意圖。 同步通信是以數(shù)據(jù)塊為傳輸單位,每個(gè)數(shù)據(jù)塊的頭部和尾部都要附加一個(gè)特殊的字符或比特序列,標(biāo)記一個(gè)數(shù)據(jù)塊的開始和結(jié)束,一般還要附加一個(gè)校驗(yàn)序列,以便對(duì)數(shù)據(jù)塊進(jìn)行差錯(cuò)控制。其格式如圖6-19所示。 (a) 外同步 (b) 自同步 圖6-18 兩種同步方法的示意圖圖6-19 同步通信數(shù)據(jù)格式根據(jù)同步通信規(guī)程,同步傳輸又分為面向字符的同步傳輸和面向位流的同步傳輸。1) 面向字符的同步傳輸 面向字符的同步格式圖6-20所示

43、。傳送的數(shù)據(jù)和控制信息都必須由規(guī)定的字符集(如ASCII碼)中的字符所組成。圖中幀頭為1個(gè)或2個(gè)同步字符SYN(ASCII碼為16H)。SOH為序始字符(ASCII碼為01H),表示標(biāo)題的開始,標(biāo)題中包含源地址、目標(biāo)地址和路由指示等信息。STX為文始字符(ASCII碼為02H),表示傳送的數(shù)據(jù)塊開始。數(shù)據(jù)塊是傳送的正文內(nèi)容,由多個(gè)字符組成。數(shù)據(jù)塊后面是組終字符ETB(ASCII碼為17H)或文終字符ETX(ASCII碼為03H)。然后是校驗(yàn)碼。典型的面向字符的同步規(guī)程如IBM的二進(jìn)制同步規(guī)程BISYNC(BSC)。2) 面向位流的同步傳輸 面向位流的同步格式圖6-21所示。此時(shí),將數(shù)據(jù)塊看作數(shù)

44、據(jù)位流,而不是作為字符流來處理,并用一個(gè)特殊的比特序列01111110來標(biāo)記數(shù)據(jù)塊的開始和結(jié)束。為了避免在數(shù)據(jù)流中出現(xiàn)序列01111110時(shí)引起的混亂,發(fā)送方總是在其發(fā)送的數(shù)據(jù)流中每出現(xiàn)5個(gè)連續(xù)的1就插入一個(gè)附加的0;接收方則每檢測(cè)到5個(gè)連續(xù)的1并且其后有一個(gè)0時(shí),就刪除該0。典型的面向位的同步協(xié)議如ISO的高級(jí)數(shù)據(jù)鏈路控制規(guī)程HDLC和IBM的同步數(shù)據(jù)鏈路控制規(guī)程SDLC。圖6-20 面向字符的同步格式 圖6-21 面向位的同步格式同步通信的特點(diǎn)是一次連續(xù)傳送任意多個(gè)字符或數(shù)據(jù)位,傳輸?shù)男矢?;但?duì)發(fā)送時(shí)鐘和接收時(shí)鐘要求較高,往往用同一個(gè)時(shí)鐘源控制,控制線路復(fù)雜。3串行通信的傳輸方向按照數(shù)據(jù)

45、傳送的方向,串行通信可分為單工、半雙工和全雙工3種制式,如圖6-22所示。圖6-22 串行通信制式(a) 單工 (b) 半雙工 (c) 全雙工 1)單工 單工是指甲乙雙方通信時(shí)只能單一方向的傳送數(shù)據(jù),不能實(shí)現(xiàn)反向傳輸,發(fā)送方和接收方固定。 2)半雙工 半雙工是指通信雙方都具有發(fā)送器和接收器,既可發(fā)送也可接收,但不能同時(shí)接收和發(fā)送,需要分時(shí)進(jìn)行,即發(fā)送時(shí)不能接收,接收時(shí)不能發(fā)送。3)全雙工 全雙工是指通信雙方均設(shè)有發(fā)送器和接收器,并且信道劃分為發(fā)送信道和接收信道,因此全雙工制式可實(shí)現(xiàn)甲乙雙方同時(shí)發(fā)送和接收數(shù)據(jù),發(fā)送時(shí)能接收,接收時(shí)也能發(fā)送。4串行信號(hào)的調(diào)制與解調(diào)計(jì)算機(jī)的信號(hào)是數(shù)字信號(hào),不便于遠(yuǎn)距

46、離通訊,若遠(yuǎn)距離直接傳輸數(shù)字信號(hào),信號(hào)會(huì)發(fā)生畸變。因此,在遠(yuǎn)距離通訊中,一般需要利用電話線(或光纜、專用通信電纜)連接兩臺(tái)計(jì)算機(jī)。由于計(jì)算機(jī)內(nèi)的信息是由“0”和“1”組成數(shù)字信號(hào),而在電話線上傳遞的卻只能是模擬電信號(hào)。于是,當(dāng)兩臺(tái)計(jì)算機(jī)要通過電話線進(jìn)行數(shù)據(jù)傳輸時(shí),就需要一個(gè)設(shè)備負(fù)責(zé)數(shù)模的轉(zhuǎn)換,這個(gè)包括調(diào)制器和解調(diào)器的數(shù)模轉(zhuǎn)換器就是調(diào)制解調(diào)器(Modem,簡(jiǎn)稱“貓”)。計(jì)算機(jī)在發(fā)送數(shù)據(jù)時(shí),先由Modem把數(shù)字信號(hào)轉(zhuǎn)換為相應(yīng)的模擬信號(hào),這個(gè)過程稱為“調(diào)制”,其調(diào)制方法主要有頻率調(diào)制法、幅度調(diào)制法和相位調(diào)制法;經(jīng)過調(diào)制的信號(hào)通過電話線載波傳送到另一臺(tái)計(jì)算機(jī)之前,也要經(jīng)由接收方的Modem負(fù)責(zé)把模擬信

47、號(hào)還原為計(jì)算機(jī)能識(shí)別的數(shù)字信號(hào),這個(gè)過程稱為“解調(diào)”。正是通過這樣一個(gè)“調(diào)制”與“解調(diào)”的數(shù)模轉(zhuǎn)換過程,從而實(shí)現(xiàn)了兩臺(tái)計(jì)算機(jī)之間的遠(yuǎn)程通訊。圖6-23為Modem的工作原理圖。 圖6-23 Modem工作原理 5串行通信的錯(cuò)誤校驗(yàn)(1)奇偶校驗(yàn) 在發(fā)送數(shù)據(jù)時(shí),數(shù)據(jù)位尾隨的1位為奇偶校驗(yàn)位(1或0)。奇校驗(yàn)時(shí),數(shù)據(jù)中“1”的個(gè)數(shù)與校驗(yàn)位“1”的個(gè)數(shù)之和應(yīng)為奇數(shù);偶校驗(yàn)時(shí),數(shù)據(jù)中“1”的個(gè)數(shù)與校驗(yàn)位“1”的個(gè)數(shù)之和應(yīng)為偶數(shù)。接收字符時(shí),對(duì)“1”的個(gè)數(shù)進(jìn)行校驗(yàn),若發(fā)現(xiàn)不一致,則說明傳輸數(shù)據(jù)過程中出現(xiàn)了差錯(cuò)。這種校驗(yàn)方法比較簡(jiǎn)單,目前廣泛應(yīng)用于異步通信中,但它只能檢測(cè)出數(shù)據(jù)中奇數(shù)個(gè)位數(shù)出錯(cuò),不能檢查出

48、偶數(shù)個(gè)位數(shù)出錯(cuò)。(2)代碼和校驗(yàn)(也稱累加和校驗(yàn)) 代碼和校驗(yàn)是發(fā)送方將所發(fā)數(shù)據(jù)塊求和(或各字節(jié)異或),產(chǎn)生一個(gè)字節(jié)的校驗(yàn)字符(校驗(yàn)和)附加到數(shù)據(jù)塊末尾。接收方接收數(shù)據(jù)同時(shí)對(duì)數(shù)據(jù)塊(除校驗(yàn)字節(jié)外)求和(或各字節(jié)異或),將所得的結(jié)果與發(fā)送方的“校驗(yàn)和”進(jìn)行比較,相符則無差錯(cuò),否則即認(rèn)為傳送過程中出現(xiàn)了差錯(cuò)。這種校驗(yàn)方法無法檢驗(yàn)出字節(jié)位序(或1、0位序不同)的錯(cuò)誤。 (3)循環(huán)冗余校驗(yàn) 循環(huán)冗余碼校驗(yàn)的基本原理是將一個(gè)數(shù)據(jù)塊看成一個(gè)位數(shù)很長的二進(jìn)制數(shù),然后用一個(gè)特定的數(shù)去除它,將余數(shù)作校驗(yàn)碼附在數(shù)據(jù)塊后一起發(fā)送。接收端收到該數(shù)據(jù)塊和校驗(yàn)碼后,進(jìn)行同樣的運(yùn)算來校驗(yàn)傳送是否出錯(cuò)。這種校驗(yàn)方法糾錯(cuò)能力強(qiáng)

49、,目前CRC已廣泛用于數(shù)據(jù)存儲(chǔ)和同步數(shù)據(jù)通信中,并在國際上形成規(guī)范,已有不少現(xiàn)成的CRC軟件算法。6串行的傳輸速率與傳輸距離(1)傳輸速率 比特率是每秒鐘傳輸二進(jìn)制代碼的位數(shù),單位是:位秒(bps)。如每秒鐘傳送240個(gè)字符,而每個(gè)字符格式包含10位(1個(gè)起始位、1個(gè)停止位、8個(gè)數(shù)據(jù)位),這時(shí)的比特率為:10位240個(gè)/秒 = 2400 bps。 波特率表示每秒鐘調(diào)制信號(hào)變化的次數(shù),單位是:波特(Baud)。 在異步通信中,傳輸速度往往又可用每秒傳送多少個(gè)字節(jié)來表示(Bps)。它與波特率的關(guān)系為: 波特率(Baud)=1個(gè)字符的二進(jìn)制位數(shù)字符/秒(bps) 例如:每秒傳送200個(gè)字符,每個(gè)字符

50、1位起始位、8個(gè)數(shù)據(jù)位、1個(gè)校驗(yàn)位和1個(gè)停止位。則波特率為2200bps。 波特率和比特率不總是相同的,對(duì)于將數(shù)字信號(hào)1或0直接用兩種不同電壓表示的所謂基帶傳輸,比特率和波特率是相同的。所以,我們也經(jīng)常用波特率表示數(shù)據(jù)的傳輸速率。(2)傳輸距離與傳輸速率的關(guān)系 串行接口或終端直接傳送串行信息位流的最大距離與傳輸速率及傳輸線的電氣特性有關(guān)。當(dāng)傳輸線使用每0.3m(約1英尺)有50PF電容的非平衡屏蔽雙絞線時(shí),傳輸距離隨傳輸速率的增加而減小。當(dāng)比特率超過1000 bps 時(shí),最大傳輸距離迅速下降,如9600 bps 時(shí)最大距離下降到只有76m(約250英尺)。7串行接口的基本任務(wù)(1)實(shí)現(xiàn)數(shù)據(jù)格式

51、化 因?yàn)镃PU發(fā)出的數(shù)據(jù)是并行數(shù)據(jù),接口電路應(yīng)實(shí)現(xiàn)不同串行通信方式下的數(shù)據(jù)格式化任務(wù), 如自動(dòng)生成起止方式的幀數(shù)據(jù)格式(異步方式)或在待傳送的數(shù)據(jù)塊前加上同步字符等。(2)進(jìn)行串、并轉(zhuǎn)換 在發(fā)送端,接口將CPU送來的并行信號(hào)轉(zhuǎn)換成串行數(shù)據(jù)進(jìn)行傳送;而在接收端,接口要將接 收到串行數(shù)據(jù)變成并行數(shù)據(jù)送往CPU,由CPU進(jìn)行處理。(3)控制數(shù)據(jù)的傳輸速率 接口應(yīng)具備對(duì)數(shù)據(jù)傳輸率波特率的控制選擇能力,即具有波特率發(fā)生器。(4)進(jìn)行傳送錯(cuò)誤檢測(cè) 在發(fā)送時(shí),對(duì)傳送的數(shù)據(jù)自動(dòng)生成校驗(yàn)位或校驗(yàn)碼,在接收端能檢查校驗(yàn)位或校驗(yàn) 碼,以確定傳送中是否有誤碼。 MCS-51系列單片機(jī)內(nèi)有一個(gè)全雙工的異步通信接口,通過

52、對(duì)串行接口寫控制字可以選擇其數(shù)據(jù)格 式,同時(shí)內(nèi)部有波特率發(fā)生器,提供可選的波特率,可完成雙機(jī)通信或多機(jī)通信。 8串行通信總線的接口標(biāo)準(zhǔn)及其接口在串行傳輸中,通信的雙方都按通信協(xié)議進(jìn)行,所謂通信協(xié)議就是通信雙方必須共同遵守的 一種約定,約定包括數(shù)據(jù)的格式、同步的方式、傳送的步驟、檢糾錯(cuò)方式及控制字符的定義等。串行接口通常分為兩種類型:串行通信接口和串行擴(kuò)展接口。其中:串行通信接口是指設(shè)備之間的互連接口,它們互相之間距離比較長,根據(jù)通信距離和抗干擾性要求,可選擇TTL電平傳輸、RS-232C/RS-422A/RS-485等串行通信總線接口標(biāo)準(zhǔn)進(jìn)行串行數(shù)據(jù)傳輸;串行擴(kuò)展接口是設(shè)備內(nèi)部器件之間的互連接

53、口。常用的串行擴(kuò)展總線接口標(biāo)準(zhǔn)有SPI、I2C等,串行接口擴(kuò)展的芯片很多,可以根據(jù)需要選擇。(1)TTL電平通信接口 微機(jī)串行口的輸入、輸出一般均為TTL電平。如果兩個(gè)微機(jī)相距在1.5m之內(nèi),它們的串行口可直接交叉相連,即甲機(jī)的接收端RXD與乙機(jī)發(fā)送端TXD相連,而乙機(jī)接收端RXD與甲機(jī)發(fā)送端TXD端相連。 TTL電平傳輸?shù)目垢蓴_性差、傳輸距離短、傳輸速率低。為提高串行通信的可靠性,增大串行通信的距離和提高傳輸速率,通常都采用RS-232、RS-422A、RS-485等標(biāo)準(zhǔn)串行接口進(jìn)行串行數(shù)據(jù)傳輸。(2)RS-232C串行接口標(biāo)準(zhǔn) RS-232C是美國電子工業(yè)協(xié)會(huì)(EIA)1969年修定的一種

54、國際通用的串行接口標(biāo)準(zhǔn)。它最初是為遠(yuǎn)程通信連接數(shù)據(jù)終端設(shè)備(DTE)和數(shù)據(jù)通信設(shè)備(DCE)制定的標(biāo)準(zhǔn),目前已廣泛用做計(jì)算機(jī)與終端或外部設(shè)備的串行通信接口標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)規(guī)定了通信設(shè)備之間信號(hào)傳送的機(jī)械特性、信號(hào)功能、電氣特性及連接方式等。1) 機(jī)械特性。RS-232C接口規(guī)定使用25針和9針連接器,連接器的尺寸及每個(gè)插針的排列位置都有明確的定義,如圖6-24所示。 (a) DB25插座/插頭 (b) DB9插座/插頭 圖6-24 DB25和DB9插座/插頭2) 電氣特性。因通信時(shí)(有干擾)信號(hào)要衰減,因此RS232采用電平負(fù)邏輯,拉開“0”和“1”的電壓檔次,以免信息出錯(cuò)。RS232負(fù)邏輯(EI

55、A電平):“0”為+3V+25V(典型值+5V+15V);“1”為 -3V -25V(典型值-5V -15V)。其最大傳輸信息的長度為15m。而TTL電平采用正邏輯:“0”為0 -2.4V;“1”為3.6V-5V;高阻為2.4V-3.6V。TTL電平的直接傳輸距離一般不超過1.5m。3)功能特性。表6-3列出了RS-232C信號(hào)線名稱、符號(hào)以及對(duì)應(yīng)在DB-25和DB-9上的針腳號(hào)。4) RS-232C電平與TTL電平轉(zhuǎn)換驅(qū)動(dòng)電路。由于RS-232C總線上傳輸?shù)男盘?hào)的邏輯電平與TTL邏輯電平差異很大,所以就存在這兩種電平的轉(zhuǎn)換問題,常用的RS232電平轉(zhuǎn)換器芯片有MC1488/ 1489、MAX

56、232等。這些專用接口芯片稱為收發(fā)器。圖6-25 為采用MC1488/ MC1489芯片實(shí)現(xiàn)RS-232C與TTL之間電平轉(zhuǎn)換電路。 MAX232只需單一的+5V供電,由內(nèi)部電壓變換器產(chǎn)生士10V。芯片內(nèi)有2個(gè)發(fā)送器(TTL電平轉(zhuǎn)換成RS232電平),2個(gè)接收器(RS232電平轉(zhuǎn)換為TTL電平)。MAX232的內(nèi)部結(jié)構(gòu)及引腳信號(hào)如圖6-26所示。表6-3 RS-232C標(biāo)準(zhǔn)接口的主要引腳定義(a) RS-232C電平與TTL電平轉(zhuǎn)換芯片 (b) RS-232C-TTL電平轉(zhuǎn)換芯片之間連接關(guān)系圖6-25 RS-232C與TTL之間電平轉(zhuǎn)換芯片MC1488/ MC1489 圖6-26 MAX232

57、的內(nèi)部結(jié)構(gòu)及引腳信號(hào) 5) 過程特性 過程特性規(guī)定了信號(hào)之間的時(shí)序關(guān)系,以便正確地接收和發(fā)送數(shù)據(jù)。如果通信距離在1.515m之間時(shí),可采用RS-232C標(biāo)準(zhǔn)接口直接把它們連接起來;如果通信距離超過15m,還需把信號(hào)通過MODEN和電話線后再把它們連接起來。圖6-27為RS-232C的兩種連接形式。6) 采用RS-232C接口存在的問題a 傳輸距離短、傳輸速率低 RS-232C總線標(biāo)準(zhǔn)受電容允許值的約束,使用時(shí)傳輸距離一般不要超過15m。最高傳送速率為20 Kbps。b 有電平偏移 RS-232C總線標(biāo)準(zhǔn)要求收發(fā)雙方共地。通信距離較大時(shí),收發(fā)雙方的地電位差別較大,在信號(hào)地上將有比較大的地電流并產(chǎn)

58、生壓降。c 抗干擾能力差 RS-232C在電平轉(zhuǎn)換時(shí)采用單端驅(qū)動(dòng)、單端接收方式進(jìn)行數(shù)據(jù)的輸入輸出,在傳輸過程中當(dāng)干擾和噪聲混在正常的信號(hào)中。為了提高信噪比,RS-232C總線標(biāo)準(zhǔn)不得不采用比較大的電壓擺幅。(a) 近程通信連接 (b) 遠(yuǎn)程通信連接 圖6-27 RS-232C的兩種連接形式(3)RS-422A串行接口標(biāo)準(zhǔn) RS-232C有明顯缺點(diǎn):傳輸速率低、通信距離短、接口處信號(hào)容易產(chǎn)生串?dāng)_等。國際上又推出了RS-422A標(biāo)準(zhǔn)。與RS-232C的主要區(qū)別是,收發(fā)雙方的信號(hào)地不再共地,RS-422A采用了雙端平衡驅(qū)動(dòng)和差分接收的方法。用于數(shù)據(jù)傳輸?shù)氖莾蓷l平衡導(dǎo)線,這相當(dāng)于兩個(gè)單端驅(qū)動(dòng)器。兩條線

59、上傳輸?shù)男盘?hào)電平,當(dāng)一個(gè)表示邏輯“1”時(shí),另一條一定為邏輯“0”。若傳輸中信號(hào)中混入干擾和噪聲(共模形式),由于差分接收器的作用,就能識(shí)別有用信號(hào)并正確接收傳輸?shù)男畔?,并使干擾和噪聲相互抵消。 RS-422的干擾抑制性極好,又因?yàn)樗淖杩沟停瑹o接地問題,所以RS-422A能在長距離、高速率下傳輸數(shù)據(jù)。它的最大傳輸率為10 Mbps,電纜允許長度為12m,如果采用較低傳輸速率時(shí),最大傳輸距離可達(dá)1219m。 圖6-28為RS-422典型的4線接口電路。圖中的SN75174、SN75175是TTL電平到RS-422A電平與RS-422A電平到TTL電平的電平轉(zhuǎn)換芯片。 圖6-28 RS-422A典

60、型的4線接口電路 (4)RS-485串行接口標(biāo)準(zhǔn) RS-422A雙機(jī)通信需4芯傳輸線,這對(duì)長距離通信很不經(jīng)濟(jì),故在工業(yè)現(xiàn)場(chǎng),通常采用雙絞線傳輸?shù)腞S-485串行通信接口,實(shí)現(xiàn)半雙工的多機(jī)通信。 RS-485是RS-422A的變型,它與RS-422A 的區(qū)別:RS-422A 為全雙工,采用兩對(duì)平衡差分信號(hào)線;RS-485為半雙工,采用一對(duì)平衡差分信號(hào)線。RS-485對(duì)于多站互連是十分方便的,很容易實(shí)現(xiàn)多機(jī)通信。RS-485允許最多并聯(lián)32臺(tái)驅(qū)動(dòng)器和 32 臺(tái)接收器。 如果在一個(gè)網(wǎng)絡(luò)中連接的設(shè)備超過 32 個(gè),還可以使用中繼器。與RS-422A一樣,最大傳輸距離約為1219m,最大傳輸速率為10M

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論