l第7章89C51串行口及串行通信技術(shù)_第1頁(yè)
l第7章89C51串行口及串行通信技術(shù)_第2頁(yè)
l第7章89C51串行口及串行通信技術(shù)_第3頁(yè)
l第7章89C51串行口及串行通信技術(shù)_第4頁(yè)
l第7章89C51串行口及串行通信技術(shù)_第5頁(yè)
已閱讀5頁(yè),還剩201頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 串行通信只用一位數(shù)據(jù)線傳送數(shù)據(jù)的位信號(hào),即使加上幾串行通信只用一位數(shù)據(jù)線傳送數(shù)據(jù)的位信號(hào),即使加上幾條通信聯(lián)絡(luò)控制線,也用不了很多電纜線。因此,串行通條通信聯(lián)絡(luò)控制線,也用不了很多電纜線。因此,串行通信適合遠(yuǎn)距離數(shù)據(jù)傳送,如大型主機(jī)與其遠(yuǎn)程終端之間、信適合遠(yuǎn)距離數(shù)據(jù)傳送,如大型主機(jī)與其遠(yuǎn)程終端之間、處于兩地的計(jì)算機(jī)之間采用串行通信就非常經(jīng)濟(jì)。當(dāng)然,處于兩地的計(jì)算機(jī)之間采用串行通信就非常經(jīng)濟(jì)。當(dāng)然,串行通信要求有轉(zhuǎn)換數(shù)據(jù)格式、時(shí)間控制等邏輯電路,這串行通信要求有轉(zhuǎn)換數(shù)據(jù)格式、時(shí)間控制等邏輯電路,這些電路目前已被集成在大規(guī)模集成電路中(稱為可編程串些電路目前已被集成在大規(guī)模集成電路中(稱為可編程

2、串行通信控制器),使用很方便。行通信控制器),使用很方便。 本章將介紹本章將介紹89C51串行口的結(jié)構(gòu)及應(yīng)用,串行口的結(jié)構(gòu)及應(yīng)用,PC機(jī)與機(jī)與89C51間的雙機(jī)通信,一臺(tái)間的雙機(jī)通信,一臺(tái)PC機(jī)控制多臺(tái)機(jī)控制多臺(tái)89C51前沿機(jī)的分布前沿機(jī)的分布式系統(tǒng),以及通信接口電路和軟件設(shè)計(jì),并給出設(shè)計(jì)實(shí)例,式系統(tǒng),以及通信接口電路和軟件設(shè)計(jì),并給出設(shè)計(jì)實(shí)例,包括接口電路、程序框圖、主程序和接收包括接口電路、程序框圖、主程序和接收/發(fā)送子程序。發(fā)送子程序。7.1 串行通信基本知識(shí)串行通信基本知識(shí)7.2 串行口及應(yīng)用串行口及應(yīng)用7.3 RS-232C標(biāo)準(zhǔn)接口總線及串行通信硬件設(shè)計(jì)標(biāo)準(zhǔn)接口總線及串行通信硬件設(shè)

3、計(jì)7.4 89C51與與89C51點(diǎn)對(duì)點(diǎn)異步通信點(diǎn)對(duì)點(diǎn)異步通信7.5 89C51與與PC機(jī)間通信軟件的設(shè)計(jì)機(jī)間通信軟件的設(shè)計(jì)7.6 PC機(jī)與多個(gè)單片機(jī)間的通信機(jī)與多個(gè)單片機(jī)間的通信7.7 思考題與習(xí)題思考題與習(xí)題返回7.1.1 數(shù)據(jù)通信數(shù)據(jù)通信7.1.2 串行通信的傳輸方式串行通信的傳輸方式7.1.3 異步通信和同步通信異步通信和同步通信7.1.4 串行通信的過(guò)程及通信協(xié)議串行通信的過(guò)程及通信協(xié)議返回 在實(shí)際工作中,計(jì)算機(jī)的在實(shí)際工作中,計(jì)算機(jī)的CPU與外部設(shè)備之間常常要進(jìn)與外部設(shè)備之間常常要進(jìn)行信息交換,一臺(tái)計(jì)算機(jī)與其他計(jì)算機(jī)之間也往往要交行信息交換,一臺(tái)計(jì)算機(jī)與其他計(jì)算機(jī)之間也往往要交換信

4、息,所有這些信息交換均可稱為通信。換信息,所有這些信息交換均可稱為通信。 通信方式有兩種,即并行通信和串行通信。通信方式有兩種,即并行通信和串行通信。 通常根據(jù)信息傳送的距離決定采用哪種通信方式。通常根據(jù)信息傳送的距離決定采用哪種通信方式。 例如,在例如,在IBM-PC機(jī)與外部設(shè)備(如打印機(jī)等)通信時(shí),機(jī)與外部設(shè)備(如打印機(jī)等)通信時(shí),如果距離小于如果距離小于30m,可采用并行通信方式;當(dāng)距離大于,可采用并行通信方式;當(dāng)距離大于30m時(shí),則要采用串行通信方式。時(shí),則要采用串行通信方式。89C51單片機(jī)具有并單片機(jī)具有并行和串行二種基本通信方式。行和串行二種基本通信方式。返回 并行通信是指數(shù)據(jù)的

5、各位同時(shí)進(jìn)行傳送(發(fā)送或接收)的并行通信是指數(shù)據(jù)的各位同時(shí)進(jìn)行傳送(發(fā)送或接收)的通信方式。通信方式。 其優(yōu)點(diǎn)是傳送速度快;其優(yōu)點(diǎn)是傳送速度快; 缺點(diǎn)是數(shù)據(jù)有多少位,就需要多少根傳送線。缺點(diǎn)是數(shù)據(jù)有多少位,就需要多少根傳送線。 例如,例如,89C51單片機(jī)與打印機(jī)之間的數(shù)據(jù)傳送就屬于并行單片機(jī)與打印機(jī)之間的數(shù)據(jù)傳送就屬于并行通信。通信。 圖圖7-1(a)所示為)所示為89C51與外設(shè)間與外設(shè)間8位數(shù)據(jù)并行通信的連位數(shù)據(jù)并行通信的連接方法。并行通信在位數(shù)多、傳送距離又遠(yuǎn)時(shí)就不太合適接方法。并行通信在位數(shù)多、傳送距離又遠(yuǎn)時(shí)就不太合適了。了。返回 串行通信指數(shù)據(jù)是一位一位按順序傳送的通信方式。串行通

6、信指數(shù)據(jù)是一位一位按順序傳送的通信方式。 它的突出優(yōu)點(diǎn)是只需一對(duì)傳輸線(利用電話線就可作為傳它的突出優(yōu)點(diǎn)是只需一對(duì)傳輸線(利用電話線就可作為傳輸線),這樣就大大降低了傳送成本,特別適用于遠(yuǎn)距離輸線),這樣就大大降低了傳送成本,特別適用于遠(yuǎn)距離通信;通信; 其缺點(diǎn)是傳送速度較低。假設(shè)并行傳送其缺點(diǎn)是傳送速度較低。假設(shè)并行傳送N位數(shù)據(jù)所需時(shí)間位數(shù)據(jù)所需時(shí)間位位T,那么串行傳送的時(shí)間至少為,那么串行傳送的時(shí)間至少為NT,實(shí)際上總是大于實(shí)際上總是大于NT的。的。 圖圖7-1(b)所示為串行通信方式的連接方法。)所示為串行通信方式的連接方法。返回返回串行通信的傳送方向通常有三種:串行通信的傳送方向通常有

7、三種:p 單向(或單工)配置,只允許數(shù)據(jù)向一個(gè)方向傳送;單向(或單工)配置,只允許數(shù)據(jù)向一個(gè)方向傳送;p 半雙向(或半雙工)配置,允許數(shù)據(jù)向兩個(gè)方向中的半雙向(或半雙工)配置,允許數(shù)據(jù)向兩個(gè)方向中的任一方向傳送,但每次只能有一個(gè)站點(diǎn)發(fā)送;任一方向傳送,但每次只能有一個(gè)站點(diǎn)發(fā)送;p 全雙向(全雙工)配置,允許同時(shí)雙向傳送數(shù)據(jù),因全雙向(全雙工)配置,允許同時(shí)雙向傳送數(shù)據(jù),因此,全雙工配置是一對(duì)單向配置,它要求兩端的通信此,全雙工配置是一對(duì)單向配置,它要求兩端的通信設(shè)備都具有完整和獨(dú)立的發(fā)送和接受能力。設(shè)備都具有完整和獨(dú)立的發(fā)送和接受能力。1.圖圖7-2所示為串行通信中的數(shù)據(jù)傳送方式。所示為串行通

8、信中的數(shù)據(jù)傳送方式。返回返回 串行通信有兩種基本通信方式,即異步通信和同步通信。串行通信有兩種基本通信方式,即異步通信和同步通信。1、異步通信、異步通信 返回返回 甲 機(jī) 乙 機(jī) 甲機(jī)時(shí)鐘 乙機(jī)時(shí)鐘 串行異步方式 1、異步通信、異步通信 在異步通信中,數(shù)據(jù)是一幀一幀(包括一個(gè)字符代碼或在異步通信中,數(shù)據(jù)是一幀一幀(包括一個(gè)字符代碼或一字節(jié)數(shù)據(jù))傳送的,每一幀的數(shù)據(jù)格式如圖一字節(jié)數(shù)據(jù))傳送的,每一幀的數(shù)據(jù)格式如圖7-3所示所示返回返回 在幀格式中,一個(gè)字符由四個(gè)部分組成:起始位、數(shù)據(jù)位、在幀格式中,一個(gè)字符由四個(gè)部分組成:起始位、數(shù)據(jù)位、奇偶校驗(yàn)位和停止位。首先是一個(gè)起始為(奇偶校驗(yàn)位和停止位。

9、首先是一個(gè)起始為(0),然后是),然后是5位位-8位數(shù)據(jù)(規(guī)定低位在前,高位在后),接下來(lái)是奇位數(shù)據(jù)(規(guī)定低位在前,高位在后),接下來(lái)是奇偶校驗(yàn)位(可省略),最后是停止位(偶校驗(yàn)位(可省略),最后是停止位(1)。)。返回圖圖7-3(a)表示一個(gè)字符緊接一個(gè)字符傳送的情況,上一個(gè)字符的停止位和)表示一個(gè)字符緊接一個(gè)字符傳送的情況,上一個(gè)字符的停止位和下一個(gè)字符的起始位是緊鄰的;下一個(gè)字符的起始位是緊鄰的;圖圖7-3(b)則是兩個(gè)字符間有空閑位的情況,空閑位為)則是兩個(gè)字符間有空閑位的情況,空閑位為1,線路處于等待狀態(tài)。,線路處于等待狀態(tài)。存在空閑位正是異步通信的特征之一。存在空閑位正是異步通信的

10、特征之一。 例如,規(guī)定用例如,規(guī)定用ASCII編碼,字符為七位,加一個(gè)奇偶校驗(yàn)位、一個(gè)起始位、編碼,字符為七位,加一個(gè)奇偶校驗(yàn)位、一個(gè)起始位、一個(gè)停止位,則一幀共十位。一個(gè)停止位,則一幀共十位。返回 同步通信中,由時(shí)鐘來(lái)實(shí)現(xiàn)發(fā)送端和接收同步通信中,由時(shí)鐘來(lái)實(shí)現(xiàn)發(fā)送端和接收端同步,。端同步,。 同步傳送時(shí),字符與字符之間沒(méi)有間隙,同步傳送時(shí),字符與字符之間沒(méi)有間隙,也不用起始位和停止位,僅在數(shù)據(jù)塊開始也不用起始位和停止位,僅在數(shù)據(jù)塊開始時(shí)用同步字符時(shí)用同步字符SYNC來(lái)指示,其數(shù)據(jù)格式如來(lái)指示,其數(shù)據(jù)格式如圖圖7-4所示。所示。返回返回 波特率,即數(shù)據(jù)傳送速率,表示波特率,即數(shù)據(jù)傳送速率,表示每

11、秒鐘傳送二進(jìn)制代碼的每秒鐘傳送二進(jìn)制代碼的位數(shù)位數(shù),它的單位是,它的單位是b/s。 波特率對(duì)于波特率對(duì)于CPU與外界的通信是很重要的。與外界的通信是很重要的。 假設(shè)數(shù)據(jù)傳送速率是假設(shè)數(shù)據(jù)傳送速率是120字符字符/s,而每個(gè)字符格式包含,而每個(gè)字符格式包含10個(gè)代碼位(個(gè)代碼位(1個(gè)起始位、個(gè)起始位、1個(gè)終止位、個(gè)終止位、8個(gè)數(shù)據(jù)位)。這時(shí),個(gè)數(shù)據(jù)位)。這時(shí),傳送的波特率為:傳送的波特率為: 10b字符字符120字符字符s1200bs返回 每一位代碼的傳送時(shí)間每一位代碼的傳送時(shí)間Td為波特率的倒數(shù)。為波特率的倒數(shù)。 Td1b(1200b/s)0.833ms 異步通信的傳送速率在異步通信的傳送速率

12、在50b/s-19200b/s之間,常用于計(jì)之間,常用于計(jì)算機(jī)到終端機(jī)和打印機(jī)之間的通信、直通電報(bào)以及無(wú)線電算機(jī)到終端機(jī)和打印機(jī)之間的通信、直通電報(bào)以及無(wú)線電通信的數(shù)據(jù)發(fā)送等。通信的數(shù)據(jù)發(fā)送等。返回1、串、串并轉(zhuǎn)換與設(shè)備同步并轉(zhuǎn)換與設(shè)備同步 兩個(gè)通信設(shè)備在串行線路上成功地實(shí)現(xiàn)通兩個(gè)通信設(shè)備在串行線路上成功地實(shí)現(xiàn)通信必須解決兩個(gè)問(wèn)題:信必須解決兩個(gè)問(wèn)題: 一是串一是串并轉(zhuǎn)換,即如何把要發(fā)送的并行數(shù)并轉(zhuǎn)換,即如何把要發(fā)送的并行數(shù)據(jù)串行化,把接收的串行數(shù)據(jù)并行化;據(jù)串行化,把接收的串行數(shù)據(jù)并行化; 二是設(shè)備同步,即同步發(fā)送設(shè)備與接收設(shè)備的二是設(shè)備同步,即同步發(fā)送設(shè)備與接收設(shè)備的工作節(jié)拍,以確保發(fā)送數(shù)

13、據(jù)在接收端被正確讀工作節(jié)拍,以確保發(fā)送數(shù)據(jù)在接收端被正確讀出。出。返回(1)串)串并轉(zhuǎn)換并轉(zhuǎn)換 串行通信是將計(jì)算機(jī)內(nèi)部的并行數(shù)據(jù)轉(zhuǎn)換串行通信是將計(jì)算機(jī)內(nèi)部的并行數(shù)據(jù)轉(zhuǎn)換成串行數(shù)據(jù),將其通過(guò)一根通信線傳送;成串行數(shù)據(jù),將其通過(guò)一根通信線傳送;并將接收的串行數(shù)據(jù)再轉(zhuǎn)換成并行數(shù)據(jù)送并將接收的串行數(shù)據(jù)再轉(zhuǎn)換成并行數(shù)據(jù)送到計(jì)算機(jī)中。到計(jì)算機(jī)中。返回 在計(jì)算機(jī)串行在計(jì)算機(jī)串行發(fā)送發(fā)送數(shù)據(jù)之前,計(jì)算機(jī)內(nèi)部的并行數(shù)據(jù)之前,計(jì)算機(jī)內(nèi)部的并行數(shù)據(jù)被送入移位寄存器并一位一位地輸出,將數(shù)據(jù)被送入移位寄存器并一位一位地輸出,將并并行數(shù)據(jù)轉(zhuǎn)換成串行數(shù)據(jù)行數(shù)據(jù)轉(zhuǎn)換成串行數(shù)據(jù)。如圖。如圖7-5所示。所示。 在在接收接收數(shù)據(jù)時(shí)

14、,來(lái)自通信線路的數(shù)據(jù)時(shí),來(lái)自通信線路的串行數(shù)據(jù)串行數(shù)據(jù)被壓入被壓入移位寄存器,滿移位寄存器,滿8位后位后并行并行送到計(jì)算機(jī)內(nèi)部。送到計(jì)算機(jī)內(nèi)部。 如如圖圖7-6所示。所示。 在串行通信控制電路中,串在串行通信控制電路中,串-并、并并、并-串轉(zhuǎn)換邏輯串轉(zhuǎn)換邏輯被集成在串行異步通信控制器芯片中。被集成在串行異步通信控制器芯片中。89C51單單片機(jī)的串行口和片機(jī)的串行口和PC中的中的8250都可實(shí)現(xiàn)這一功都可實(shí)現(xiàn)這一功能。能。返回返回返回 進(jìn)行串行通信的兩臺(tái)設(shè)備必須同步工作才進(jìn)行串行通信的兩臺(tái)設(shè)備必須同步工作才能有效地檢測(cè)通信線路上的信號(hào)變化,從能有效地檢測(cè)通信線路上的信號(hào)變化,從而采樣傳送數(shù)據(jù)脈沖

15、。而采樣傳送數(shù)據(jù)脈沖。 設(shè)備同步對(duì)通信雙方有兩個(gè)共同要求:設(shè)備同步對(duì)通信雙方有兩個(gè)共同要求:一是通信雙方必須采用統(tǒng)一的編碼方法;一是通信雙方必須采用統(tǒng)一的編碼方法;二是通信雙方必須能產(chǎn)生相同的傳送速率。二是通信雙方必須能產(chǎn)生相同的傳送速率。返回 采用統(tǒng)一的編碼方法確定了一個(gè)字符二進(jìn)制表示采用統(tǒng)一的編碼方法確定了一個(gè)字符二進(jìn)制表示值的位發(fā)送順序和位串長(zhǎng)度,當(dāng)然還包括統(tǒng)一的值的位發(fā)送順序和位串長(zhǎng)度,當(dāng)然還包括統(tǒng)一的邏輯電平規(guī)定,即電平信號(hào)高低與邏輯邏輯電平規(guī)定,即電平信號(hào)高低與邏輯1和邏輯和邏輯0的固定對(duì)應(yīng)關(guān)系。的固定對(duì)應(yīng)關(guān)系。 通信雙方只有產(chǎn)生相同的傳送速率,才能確保通信雙方只有產(chǎn)生相同的傳送速

16、率,才能確保設(shè)備同步,這就要求發(fā)送設(shè)備和接收設(shè)備采用相設(shè)備同步,這就要求發(fā)送設(shè)備和接收設(shè)備采用相同頻率的時(shí)鐘。發(fā)送設(shè)備在統(tǒng)一的時(shí)鐘脈沖上發(fā)同頻率的時(shí)鐘。發(fā)送設(shè)備在統(tǒng)一的時(shí)鐘脈沖上發(fā)出數(shù)據(jù),接收設(shè)備才能正確檢測(cè)出與時(shí)鐘脈沖同出數(shù)據(jù),接收設(shè)備才能正確檢測(cè)出與時(shí)鐘脈沖同步的數(shù)據(jù)信息。步的數(shù)據(jù)信息。返回 通信協(xié)議是對(duì)數(shù)據(jù)傳送方式的規(guī)定,包括數(shù)據(jù)格通信協(xié)議是對(duì)數(shù)據(jù)傳送方式的規(guī)定,包括數(shù)據(jù)格式定義和數(shù)據(jù)位定義等。式定義和數(shù)據(jù)位定義等。 通信雙方必須遵守統(tǒng)一的通信協(xié)議。串行通信協(xié)通信雙方必須遵守統(tǒng)一的通信協(xié)議。串行通信協(xié)議包括同步協(xié)議和異步協(xié)議兩種。議包括同步協(xié)議和異步協(xié)議兩種。 在此在此只討論異步串行通信

17、協(xié)議和異步串性協(xié)議規(guī)只討論異步串行通信協(xié)議和異步串性協(xié)議規(guī)定的字符數(shù)據(jù)的傳送格式定的字符數(shù)據(jù)的傳送格式。返回(1)起始位)起始位 通信線上沒(méi)有數(shù)據(jù)被傳送時(shí)處于邏輯通信線上沒(méi)有數(shù)據(jù)被傳送時(shí)處于邏輯1狀態(tài)。狀態(tài)。 當(dāng)發(fā)送設(shè)備要發(fā)送一個(gè)字符數(shù)據(jù)時(shí),首先發(fā)出一個(gè)邏輯當(dāng)發(fā)送設(shè)備要發(fā)送一個(gè)字符數(shù)據(jù)時(shí),首先發(fā)出一個(gè)邏輯0信號(hào),這個(gè)邏輯低電平就是起始位。信號(hào),這個(gè)邏輯低電平就是起始位。 起始位通過(guò)通信線傳向接收設(shè)備,接收設(shè)備檢測(cè)到這個(gè)起始位通過(guò)通信線傳向接收設(shè)備,接收設(shè)備檢測(cè)到這個(gè)邏輯低電平后,就開始準(zhǔn)備接收數(shù)據(jù)位信號(hào)。邏輯低電平后,就開始準(zhǔn)備接收數(shù)據(jù)位信號(hào)。 起始位所起的作用就是設(shè)備同步,通信雙方必須在傳送

18、起始位所起的作用就是設(shè)備同步,通信雙方必須在傳送數(shù)據(jù)位前協(xié)調(diào)同步。數(shù)據(jù)位前協(xié)調(diào)同步。返回(2)數(shù)據(jù)位)數(shù)據(jù)位 當(dāng)接收設(shè)備收到起始位后,緊接著就會(huì)收到數(shù)據(jù)位。數(shù)當(dāng)接收設(shè)備收到起始位后,緊接著就會(huì)收到數(shù)據(jù)位。數(shù)據(jù)位的個(gè)數(shù)可以是據(jù)位的個(gè)數(shù)可以是5、6、7或或8。IBM-PC中經(jīng)常采用中經(jīng)常采用7位位或或8位數(shù)據(jù)傳送,位數(shù)據(jù)傳送,89C51串行口采用串行口采用8位或位或9位數(shù)據(jù)傳送位數(shù)據(jù)傳送。這些數(shù)據(jù)位被接收到移位寄存器中,構(gòu)成傳送數(shù)據(jù)字符。這些數(shù)據(jù)位被接收到移位寄存器中,構(gòu)成傳送數(shù)據(jù)字符。在字符數(shù)據(jù)傳送過(guò)程中,在字符數(shù)據(jù)傳送過(guò)程中,數(shù)據(jù)位從最低有效位開始發(fā)送數(shù)據(jù)位從最低有效位開始發(fā)送,依次順序在接收

19、設(shè)備中被轉(zhuǎn)換為并行數(shù)據(jù)。依次順序在接收設(shè)備中被轉(zhuǎn)換為并行數(shù)據(jù)。返回(3)奇偶校驗(yàn)位)奇偶校驗(yàn)位 數(shù)據(jù)位發(fā)送完之后,可以發(fā)送奇偶校驗(yàn)位。奇偶校驗(yàn)用數(shù)據(jù)位發(fā)送完之后,可以發(fā)送奇偶校驗(yàn)位。奇偶校驗(yàn)用于有限差錯(cuò)檢測(cè),通信雙方需約定已知的奇偶校驗(yàn)方式。于有限差錯(cuò)檢測(cè),通信雙方需約定已知的奇偶校驗(yàn)方式。如果選擇偶校驗(yàn),那么組成數(shù)據(jù)位和奇偶位的邏輯如果選擇偶校驗(yàn),那么組成數(shù)據(jù)位和奇偶位的邏輯1的個(gè)的個(gè)數(shù)必須是偶數(shù);如果選擇奇校驗(yàn),那么邏輯數(shù)必須是偶數(shù);如果選擇奇校驗(yàn),那么邏輯1的個(gè)數(shù)必須的個(gè)數(shù)必須是奇數(shù)。是奇數(shù)。返回(4)停止位約定)停止位約定 在奇偶位或數(shù)據(jù)位(當(dāng)無(wú)奇偶校驗(yàn)時(shí))之后發(fā)送的是停在奇偶位或數(shù)據(jù)

20、位(當(dāng)無(wú)奇偶校驗(yàn)時(shí))之后發(fā)送的是停止位。停止位是一個(gè)字符數(shù)據(jù)的結(jié)束標(biāo)志,可以是止位。停止位是一個(gè)字符數(shù)據(jù)的結(jié)束標(biāo)志,可以是1位,位,1.5位或位或2位的高電平。接收設(shè)備收到停止位之后,通信線位的高電平。接收設(shè)備收到停止位之后,通信線路上便又恢復(fù)邏輯路上便又恢復(fù)邏輯1狀態(tài),直至下一個(gè)字符數(shù)據(jù)的起始位狀態(tài),直至下一個(gè)字符數(shù)據(jù)的起始位到來(lái)。到來(lái)。返回(5)波特率設(shè)置)波特率設(shè)置 通信線上傳送的所有位信號(hào)都保持一致的信號(hào)持續(xù)時(shí)間,通信線上傳送的所有位信號(hào)都保持一致的信號(hào)持續(xù)時(shí)間,每一位的信號(hào)持續(xù)時(shí)間都由數(shù)據(jù)傳送速度確定,而傳送速每一位的信號(hào)持續(xù)時(shí)間都由數(shù)據(jù)傳送速度確定,而傳送速度是以每秒多少個(gè)二進(jìn)制位

21、來(lái)衡量的,這個(gè)速度叫波特率。度是以每秒多少個(gè)二進(jìn)制位來(lái)衡量的,這個(gè)速度叫波特率。如果數(shù)據(jù)以如果數(shù)據(jù)以300個(gè)二進(jìn)制位每秒在通信線上傳送,那么傳個(gè)二進(jìn)制位每秒在通信線上傳送,那么傳送速度為送速度為300波特,通常記為波特,通常記為300b/s。返回(6)掛鉤(握手)信號(hào)約定)掛鉤(握手)信號(hào)約定 (見(jiàn)本章(見(jiàn)本章7.4節(jié)實(shí)例)節(jié)實(shí)例)返回 89C51單片機(jī)除具有單片機(jī)除具有4個(gè)個(gè)8位并行口外,還具有串行接口。位并行口外,還具有串行接口。此串行接口是一個(gè)此串行接口是一個(gè)全雙工串行通信接口全雙工串行通信接口,即能同時(shí)進(jìn)行串行發(fā)送和接,即能同時(shí)進(jìn)行串行發(fā)送和接收數(shù)據(jù)。收數(shù)據(jù)。它可以作它可以作UART(

22、通用異步接收和發(fā)送器)(通用異步接收和發(fā)送器)用,也可以作用,也可以作同步移位寄存同步移位寄存器器用。用。使用串行接口可以實(shí)現(xiàn)使用串行接口可以實(shí)現(xiàn)89C51單片機(jī)系統(tǒng)之間單片機(jī)系統(tǒng)之間點(diǎn)對(duì)點(diǎn)的單機(jī)通信點(diǎn)對(duì)點(diǎn)的單機(jī)通信和和89C51與系統(tǒng)機(jī)(如與系統(tǒng)機(jī)(如IBM-PC機(jī)等)的機(jī)等)的單機(jī)或多機(jī)通信單機(jī)或多機(jī)通信。返回 7.2.1 89C51串行口串行口 7.2.2 89C51串行口的工作方式及應(yīng)用串行口的工作方式及應(yīng)用返回1、結(jié)、結(jié) 構(gòu)構(gòu)2、串行口控制字及控制寄存器、串行口控制字及控制寄存器3、串行通信工作方式、串行通信工作方式4、波特率設(shè)計(jì)、波特率設(shè)計(jì)返回 89C5189C51通過(guò)引腳通過(guò)引腳

23、RXDRXD(P3.0P3.0,串行數(shù)據(jù)接收端)和引腳,串行數(shù)據(jù)接收端)和引腳TXDTXD(P3.1P3.1,串行數(shù)據(jù)發(fā)送端)與外界進(jìn)行通信。其內(nèi)部結(jié)構(gòu)簡(jiǎn)化示意圖如圖串行數(shù)據(jù)發(fā)送端)與外界進(jìn)行通信。其內(nèi)部結(jié)構(gòu)簡(jiǎn)化示意圖如圖7-77-7所示。圖中所示。圖中有兩個(gè)物理有兩個(gè)物理獨(dú)立獨(dú)立的接收、發(fā)送緩沖器的接收、發(fā)送緩沖器SBUFSBUF,它們占用同,它們占用同一地址一地址99H99H,可同時(shí)發(fā)送、接收數(shù)據(jù),可同時(shí)發(fā)送、接收數(shù)據(jù)。發(fā)送緩沖器只能寫入,不能讀。發(fā)送緩沖器只能寫入,不能讀出;接收緩沖器只能讀出,不能寫入。出;接收緩沖器只能讀出,不能寫入。串行發(fā)送與接收的速率與移位時(shí)鐘同步。串行發(fā)送與接收

24、的速率與移位時(shí)鐘同步。89C5189C51用定時(shí)器用定時(shí)器T1T1作為串作為串行通信的波特率發(fā)生器,行通信的波特率發(fā)生器,T1T1溢出率經(jīng)溢出率經(jīng)2 2分頻(或不分頻)后又經(jīng)分頻(或不分頻)后又經(jīng)1616分分頻作為串行發(fā)送或接收的移位脈沖。移位脈沖的速率即是波特率。頻作為串行發(fā)送或接收的移位脈沖。移位脈沖的速率即是波特率。返回圖圖7-7 串行口內(nèi)部結(jié)構(gòu)示意簡(jiǎn)圖串行口內(nèi)部結(jié)構(gòu)示意簡(jiǎn)圖返回從圖中可看出,接收器是雙緩沖結(jié)構(gòu),在前一個(gè)字節(jié)被從接收緩沖器從圖中可看出,接收器是雙緩沖結(jié)構(gòu),在前一個(gè)字節(jié)被從接收緩沖器SBUF讀出之前,第二個(gè)字節(jié)即開始被接收(串行輸入至移位寄存器),但是,讀出之前,第二個(gè)字節(jié)

25、即開始被接收(串行輸入至移位寄存器),但是,在第二個(gè)字節(jié)接收完畢而前一個(gè)字節(jié)在第二個(gè)字節(jié)接收完畢而前一個(gè)字節(jié)CPU未讀取時(shí),會(huì)丟失前一個(gè)字節(jié)。未讀取時(shí),會(huì)丟失前一個(gè)字節(jié)。串行口的發(fā)送和接收都是以特殊功能寄存器串行口的發(fā)送和接收都是以特殊功能寄存器SBUF的名義進(jìn)行讀或?qū)懙?。?dāng)?shù)拿x進(jìn)行讀或?qū)懙?。?dāng)向向SBUF發(fā)發(fā)“寫寫”命令時(shí)(執(zhí)行命令時(shí)(執(zhí)行“MOV SBUF,A”指令),即是向發(fā)送緩沖指令),即是向發(fā)送緩沖器器SBUF裝載并開始由裝載并開始由TXD引腳向外發(fā)送一幀數(shù)據(jù),發(fā)送完便使發(fā)送中斷標(biāo)引腳向外發(fā)送一幀數(shù)據(jù),發(fā)送完便使發(fā)送中斷標(biāo)志位志位TI=1。在滿足串行口接收中斷標(biāo)志位在滿足串行口接收

26、中斷標(biāo)志位RI(SCON.0)=0的條件下,置允許接收位的條件下,置允許接收位REN(SCON.4)=1就會(huì)接收一幀數(shù)據(jù)進(jìn)入移位寄存器,并裝載到接收就會(huì)接收一幀數(shù)據(jù)進(jìn)入移位寄存器,并裝載到接收SBUF中,同時(shí)使中,同時(shí)使RI=1。當(dāng)發(fā)讀。當(dāng)發(fā)讀SBUF命令時(shí)(執(zhí)行命令時(shí)(執(zhí)行“MOV A,SBUF”命命令),便由接收緩沖器(令),便由接收緩沖器(SBUF)取出信息通過(guò))取出信息通過(guò)89C51內(nèi)部總線送內(nèi)部總線送CPU。 對(duì)于發(fā)送緩沖器,因?yàn)榘l(fā)送時(shí)對(duì)于發(fā)送緩沖器,因?yàn)榘l(fā)送時(shí)CPU是主動(dòng)的,不會(huì)產(chǎn)生重疊錯(cuò)誤,一般是主動(dòng)的,不會(huì)產(chǎn)生重疊錯(cuò)誤,一般不需要用雙緩沖器結(jié)構(gòu)來(lái)保持最大傳送速率。不需要用雙緩沖

27、器結(jié)構(gòu)來(lái)保持最大傳送速率。返回 89C51串行口是可編程接口,對(duì)它初始化編程只用兩個(gè)控制字分別寫入特殊功串行口是可編程接口,對(duì)它初始化編程只用兩個(gè)控制字分別寫入特殊功能寄存器能寄存器SCON(98H)和電源控制寄存器)和電源控制寄存器PCON(87H)中即可。)中即可。(1)SCON(98H) 89C51串行通信的方式選擇、接收和發(fā)送控制以及串行口的狀態(tài)標(biāo)串行通信的方式選擇、接收和發(fā)送控制以及串行口的狀態(tài)標(biāo)志等均由特殊功能寄存器志等均由特殊功能寄存器SCON控制和指示,其控制字格式如圖控制和指示,其控制字格式如圖7-8所所示。示。返回圖圖7-8 串行口控制寄存器串行口控制寄存器SCON返回 S

28、M0SM0和和SM1SM1(SCON.7SCON.7,SCON.6SCON.6)串行口工作方串行口工作方式選擇位。兩個(gè)選擇位對(duì)應(yīng)式選擇位。兩個(gè)選擇位對(duì)應(yīng)4 4種通信方式,如表種通信方式,如表7-17-1所示。所示。其中,其中,foscfosc是振蕩頻率。是振蕩頻率。返回SM2(SCON.5)多機(jī)通信控制位,主要用于方式多機(jī)通信控制位,主要用于方式2和方式和方式3。若置若置SM2=1,則允許多機(jī)通信。當(dāng)一片,則允許多機(jī)通信。當(dāng)一片89C51(主機(jī))與多片(主機(jī))與多片89C51(從機(jī))通(從機(jī))通信時(shí),所有從機(jī)的信時(shí),所有從機(jī)的SM2位都置位都置1。主機(jī)首先發(fā)送的一幀數(shù)據(jù)為地址,即從機(jī)機(jī)號(hào),。主

29、機(jī)首先發(fā)送的一幀數(shù)據(jù)為地址,即從機(jī)機(jī)號(hào),其中第其中第9位為位為1,所有的從機(jī)接收到數(shù)據(jù)后,將其中第,所有的從機(jī)接收到數(shù)據(jù)后,將其中第9位裝入位裝入RB8中。中。各個(gè)從機(jī)根據(jù)收到的第各個(gè)從機(jī)根據(jù)收到的第9位數(shù)據(jù)(位數(shù)據(jù)(RB8中)的值來(lái)決定從機(jī)可否再接收主機(jī)的信中)的值來(lái)決定從機(jī)可否再接收主機(jī)的信息。若(息。若(RB8)0,說(shuō)明是數(shù)據(jù)幀,則使接收中斷標(biāo)志位,說(shuō)明是數(shù)據(jù)幀,則使接收中斷標(biāo)志位RI0,信息丟失;若,信息丟失;若(RB8)1,說(shuō)明是地址幀,數(shù)據(jù)裝入,說(shuō)明是地址幀,數(shù)據(jù)裝入SBUF并置并置RI1,中斷所有從機(jī),被尋,中斷所有從機(jī),被尋址的目標(biāo)從機(jī)清除址的目標(biāo)從機(jī)清除SM2以接收主機(jī)發(fā)來(lái)的

30、一幀數(shù)據(jù)。其他從機(jī)仍然保持以接收主機(jī)發(fā)來(lái)的一幀數(shù)據(jù)。其他從機(jī)仍然保持SM21。若若SM2=0,即不屬于多機(jī)通信情況即不屬于多機(jī)通信情況,則接收一貞數(shù)據(jù)后則接收一貞數(shù)據(jù)后,不管第九位數(shù)據(jù)是不管第九位數(shù)據(jù)是0還是還是1,都都制制RI=1,接收到的數(shù)據(jù)裝入接收到的數(shù)據(jù)裝入SBUF。根據(jù)根據(jù)SM2這個(gè)功能這個(gè)功能,可實(shí)現(xiàn)多個(gè)可實(shí)現(xiàn)多個(gè)89C51應(yīng)用系統(tǒng)的串行通信。應(yīng)用系統(tǒng)的串行通信。在方式在方式1時(shí)時(shí),若若SM2=1,則只有接收到有效停止位時(shí)則只有接收到有效停止位時(shí),RI才制才制1,以便接收下一貞數(shù)據(jù)。以便接收下一貞數(shù)據(jù)。在方式在方式0時(shí)時(shí),SM2必須是必須是0。返回REN(SCON.4)允許接收控制

31、位。由軟件置允許接收控制位。由軟件置1或清或清0,只有當(dāng),只有當(dāng)REN1時(shí)才允許接收,相當(dāng)于串行接收的開關(guān);若時(shí)才允許接收,相當(dāng)于串行接收的開關(guān);若REN0,則禁,則禁止接收。止接收。 在串行通信接收控制過(guò)程中,如果滿足在串行通信接收控制過(guò)程中,如果滿足RI0和和REN1(允許接收)(允許接收)的條件,就允許接收,一幀數(shù)據(jù)就裝載入接收的條件,就允許接收,一幀數(shù)據(jù)就裝載入接收SBUF中。中。TB8(SCON.3)發(fā)送數(shù)據(jù)的第發(fā)送數(shù)據(jù)的第9位(位(D8)裝入)裝入TB8中。在方式中。在方式2或方式或方式3中,根據(jù)發(fā)送數(shù)據(jù)的需要由軟件置位或復(fù)位。在許多通信協(xié)中,根據(jù)發(fā)送數(shù)據(jù)的需要由軟件置位或復(fù)位。在

32、許多通信協(xié)議中可用作奇偶校驗(yàn)位,也可在多機(jī)通信中作為發(fā)送地址幀或數(shù)據(jù)幀議中可用作奇偶校驗(yàn)位,也可在多機(jī)通信中作為發(fā)送地址幀或數(shù)據(jù)幀的標(biāo)志位。對(duì)于后者,的標(biāo)志位。對(duì)于后者,TB81,說(shuō)明該幀數(shù)據(jù)為地址;,說(shuō)明該幀數(shù)據(jù)為地址;TB80,說(shuō),說(shuō)明該幀數(shù)據(jù)為數(shù)據(jù)字節(jié)。在方式明該幀數(shù)據(jù)為數(shù)據(jù)字節(jié)。在方式0或方式或方式1中,該為未用。中,該為未用。返回RB8(SCON.2)接收數(shù)據(jù)的第接收數(shù)據(jù)的第9位。在方式位。在方式2或方式或方式3中,接收到中,接收到的第的第9位數(shù)據(jù)放在位數(shù)據(jù)放在RB8位。它或是約定的奇位。它或是約定的奇/偶校驗(yàn)位,或是約定的地偶校驗(yàn)位,或是約定的地址址/數(shù)據(jù)標(biāo)識(shí)位。在方式數(shù)據(jù)標(biāo)識(shí)位。

33、在方式2和方式和方式3多機(jī)通信中,若多機(jī)通信中,若SM21,如果,如果RB81,說(shuō)明收到的數(shù)據(jù)為地址幀。,說(shuō)明收到的數(shù)據(jù)為地址幀。 在方式在方式1中,若中,若SM20(即不是多機(jī)通信情況),(即不是多機(jī)通信情況),RB8中存放的是已中存放的是已接收到的停止位。在方式接收到的停止位。在方式0中,該位未用。中,該位未用。TI(SCON.1)發(fā)送中斷標(biāo)志。在一幀數(shù)據(jù)發(fā)送完時(shí)被置位。在發(fā)送中斷標(biāo)志。在一幀數(shù)據(jù)發(fā)送完時(shí)被置位。在方式方式0串行發(fā)送第串行發(fā)送第8位結(jié)束或其他方式串行發(fā)送到停止位的開始時(shí)由硬位結(jié)束或其他方式串行發(fā)送到停止位的開始時(shí)由硬件置位,可用軟件查詢。它同時(shí)也申請(qǐng)中斷,件置位,可用軟件查

34、詢。它同時(shí)也申請(qǐng)中斷,TI置位意味著向置位意味著向CPU提提供供“發(fā)送緩沖器發(fā)送緩沖器SBUF已空已空”的信息,的信息,CPU可以準(zhǔn)備發(fā)送下一幀數(shù)據(jù)。可以準(zhǔn)備發(fā)送下一幀數(shù)據(jù)。串行口發(fā)送中斷被響應(yīng)后,串行口發(fā)送中斷被響應(yīng)后,TI不會(huì)自動(dòng)清不會(huì)自動(dòng)清0,必須由軟件清,必須由軟件清0。返回RI(SCON.0)接收中斷標(biāo)志。在節(jié)收到一幀有效數(shù)據(jù)后由硬件接收中斷標(biāo)志。在節(jié)收到一幀有效數(shù)據(jù)后由硬件置位。在方式置位。在方式0中,第中,第8位數(shù)據(jù)位數(shù)據(jù)接收接收結(jié)束時(shí),由硬件置位;在其他三種結(jié)束時(shí),由硬件置位;在其他三種方式中,當(dāng)接收到停止位中間時(shí)由硬件置位。方式中,當(dāng)接收到停止位中間時(shí)由硬件置位。RI1,申請(qǐng)

35、中斷,表,申請(qǐng)中斷,表示一幀數(shù)據(jù)接收結(jié)束,并已裝入接收示一幀數(shù)據(jù)接收結(jié)束,并已裝入接收SBUF中,要求中,要求CPU取走數(shù)據(jù)。取走數(shù)據(jù)。CPU響應(yīng)中斷,取走數(shù)據(jù)。響應(yīng)中斷,取走數(shù)據(jù)。RI也必須由軟件清也必須由軟件清0,清除中斷申請(qǐng),并,清除中斷申請(qǐng),并準(zhǔn)備接收下一幀數(shù)據(jù)。準(zhǔn)備接收下一幀數(shù)據(jù)。串行發(fā)送中斷標(biāo)志串行發(fā)送中斷標(biāo)志TI和接收中斷標(biāo)志和接收中斷標(biāo)志RI是同一個(gè)中斷源,是同一個(gè)中斷源,CPU事先不事先不知道是發(fā)送中斷知道是發(fā)送中斷TI還是接收中斷還是接收中斷RI產(chǎn)生的中斷請(qǐng)求,所以,在全雙工產(chǎn)生的中斷請(qǐng)求,所以,在全雙工通信時(shí),必須由軟件來(lái)判別。通信時(shí),必須由軟件來(lái)判別。 復(fù)位時(shí),復(fù)位時(shí),

36、SCON所有位均清所有位均清0。返回(2)PCON(87H) 電源控制寄存器電源控制寄存器PCON中只有中只有SMOD位與串行口工作有關(guān),位與串行口工作有關(guān),如圖如圖7-9所示。所示。圖圖7-9 電源控制寄存器電源控制寄存器PCON返回 SMOD(PCON.7)波特率倍增位。波特率倍增位。 在串行口方式在串行口方式1、方式、方式2和方式和方式3時(shí),波特率和時(shí),波特率和SMOD成正成正比,亦即當(dāng)比,亦即當(dāng)SMOD1時(shí),波特率提高一倍。時(shí),波特率提高一倍。 復(fù)位時(shí),復(fù)位時(shí),SMOD0。返回 根據(jù)實(shí)際需要,根據(jù)實(shí)際需要,89C51串行口可設(shè)置串行口可設(shè)置4種工作方式,可有種工作方式,可有8位、位、1

37、0位或位或11位幀格式。位幀格式。 方式方式0以以8位數(shù)據(jù)為一幀,不設(shè)起始位和停止位,先發(fā)送或位數(shù)據(jù)為一幀,不設(shè)起始位和停止位,先發(fā)送或接收最低位。其幀格式如下:接收最低位。其幀格式如下:返回 方式方式1以以10位為一幀傳輸,設(shè)有位為一幀傳輸,設(shè)有1個(gè)起始位(個(gè)起始位(0),),8個(gè)數(shù)個(gè)數(shù)據(jù)位和據(jù)位和1個(gè)停止位(個(gè)停止位(1)。其幀格式為:)。其幀格式為:返回 方式方式2和方式和方式3以以11位為位為1幀傳輸,設(shè)有幀傳輸,設(shè)有1個(gè)起始位(個(gè)起始位(0),),8個(gè)個(gè)數(shù)據(jù)位,數(shù)據(jù)位,1個(gè)附加第個(gè)附加第9位和位和1個(gè)停止位(個(gè)停止位(1)。其幀格式為)。其幀格式為: 附加第附加第9位(位(D8)由軟

38、件置)由軟件置1或清或清0。發(fā)送時(shí)在。發(fā)送時(shí)在TB8中,接收時(shí)中,接收時(shí)送送RB8中。中。返回(1)串行口方式)串行口方式0 方式方式0為同步移位寄存器輸入為同步移位寄存器輸入/輸出方式,常用于輸出方式,常用于擴(kuò)展擴(kuò)展I/O口???。 串行數(shù)據(jù)通過(guò)串行數(shù)據(jù)通過(guò)RXD輸入或輸出,而輸入或輸出,而TXD用于輸出用于輸出移位時(shí)鐘,作為外接部件的同步信號(hào)。移位時(shí)鐘,作為外接部件的同步信號(hào)。圖圖7-10(a)為發(fā)送電路,為發(fā)送電路,圖圖7-11(a)為接收電為接收電路。路。 這種方式不適用于兩個(gè)這種方式不適用于兩個(gè)89C51之間的直接數(shù)據(jù)通之間的直接數(shù)據(jù)通信,但可以通過(guò)外接移位寄存器來(lái)實(shí)現(xiàn)單片機(jī)的信,但可

39、以通過(guò)外接移位寄存器來(lái)實(shí)現(xiàn)單片機(jī)的接口擴(kuò)展。接口擴(kuò)展。返回圖圖7-10 方式方式0發(fā)送電路及時(shí)序發(fā)送電路及時(shí)序返回圖圖7-11 方式方式0接收電路及時(shí)序接收電路及時(shí)序返回例如,例如,74LS164可用于擴(kuò)展并行輸出口,可用于擴(kuò)展并行輸出口,74LS165可用于擴(kuò)展輸入口??捎糜跀U(kuò)展輸入口。 在這種方式下,收在這種方式下,收/發(fā)的數(shù)據(jù)為發(fā)的數(shù)據(jù)為8位,低位在位,低位在前,無(wú)起始位、奇偶校驗(yàn)位及停止位,波前,無(wú)起始位、奇偶校驗(yàn)位及停止位,波特率是固定的。特率是固定的。返回發(fā)送過(guò)程中,當(dāng)執(zhí)行一條將數(shù)據(jù)寫入發(fā)送緩沖器發(fā)送過(guò)程中,當(dāng)執(zhí)行一條將數(shù)據(jù)寫入發(fā)送緩沖器SBUF(99H)的指)的指令時(shí),串行口把令

40、時(shí),串行口把SBUF中中8位數(shù)據(jù)以位數(shù)據(jù)以fosc/12的波特率從的波特率從RXD(P3.0)端輸出,發(fā)送完畢置中斷標(biāo)志端輸出,發(fā)送完畢置中斷標(biāo)志TI=1。方式。方式0發(fā)送時(shí)序如發(fā)送時(shí)序如圖圖7-10(b)所所示。寫示。寫SBUF指令在指令在S6P1處產(chǎn)生一個(gè)正脈沖,在下一個(gè)機(jī)器周期的處產(chǎn)生一個(gè)正脈沖,在下一個(gè)機(jī)器周期的S6P2處數(shù)據(jù)的最低位輸出到處數(shù)據(jù)的最低位輸出到RXD(P3.0)腳上;再在下一個(gè)機(jī)器周)腳上;再在下一個(gè)機(jī)器周期的期的S3,S4,S5輸出移位時(shí)鐘為低電平,而在輸出移位時(shí)鐘為低電平,而在S6級(jí)下一個(gè)機(jī)器周期級(jí)下一個(gè)機(jī)器周期的的S1,S2為高電平,就這樣講為高電平,就這樣講8位

41、數(shù)據(jù)由低位至高位一位一位順序通位數(shù)據(jù)由低位至高位一位一位順序通過(guò)過(guò)RXD線輸出,并在線輸出,并在TXD腳上輸出腳上輸出fosc/12的移位時(shí)鐘,在的移位時(shí)鐘,在“寫寫SBUF”有效后的第有效后的第10個(gè)機(jī)器周期的個(gè)機(jī)器周期的S1P1將發(fā)送中斷標(biāo)志將發(fā)送中斷標(biāo)志TI置位。圖置位。圖中,中,74LS164是是TTL“串入并出串入并出”移位寄存器。移位寄存器。返回 接收時(shí),用軟件置接收時(shí),用軟件置REN=1(同時(shí),(同時(shí),RI=0),即開始接收。接收時(shí)序),即開始接收。接收時(shí)序如圖如圖7-11(b)所示。當(dāng)使所示。當(dāng)使SCON中的中的REN=1(RI=0)時(shí),產(chǎn)生一個(gè)正時(shí),產(chǎn)生一個(gè)正脈沖,在下一個(gè)機(jī)

42、器周期的脈沖,在下一個(gè)機(jī)器周期的S3P1S5P2,從,從TXD(P3.1)腳上輸出低電腳上輸出低電平的移位時(shí)鐘,在此機(jī)器周期的平的移位時(shí)鐘,在此機(jī)器周期的S5P2對(duì)對(duì)P3.0腳采樣,并在本機(jī)器周腳采樣,并在本機(jī)器周期的期的S6P2通過(guò)串行口內(nèi)的輸入移位寄存器將采樣值移位接收;在同通過(guò)串行口內(nèi)的輸入移位寄存器將采樣值移位接收;在同一個(gè)機(jī)器的一個(gè)機(jī)器的S6P1到下一個(gè)機(jī)器周期的到下一個(gè)機(jī)器周期的S2P2,輸出移位時(shí)鐘為高電平。,輸出移位時(shí)鐘為高電平。于是,講述句字節(jié)從地位至高位一位一位地接收下來(lái)病狀如于是,講述句字節(jié)從地位至高位一位一位地接收下來(lái)病狀如SBUF中,中,在啟動(dòng)接收過(guò)程(即寫在啟動(dòng)接收

43、過(guò)程(即寫SCON,清,清RI位)將位)將SCON中的中的RI清清0之后的之后的第第10個(gè)機(jī)器周期的個(gè)機(jī)器周期的S1P1,RI被置位。這一幀數(shù)據(jù)接收完畢,可進(jìn)行被置位。這一幀數(shù)據(jù)接收完畢,可進(jìn)行下一幀接收。圖下一幀接收。圖7-11(b)中,)中,74LS165是是TTL“并入串出并入串出”移位寄存移位寄存器,器,QH端為端為74LS165的串行輸出端,經(jīng)的串行輸出端,經(jīng)P3.0輸入至輸入至89C51。返回(2)串行口方式)串行口方式1 方式方式1真正用于串行發(fā)送或接收,為真正用于串行發(fā)送或接收,為10位通用異步接口。位通用異步接口。TXD與與RXD分別用于發(fā)送與接收數(shù)據(jù)。分別用于發(fā)送與接收數(shù)據(jù)

44、。 收發(fā)一幀數(shù)據(jù)的格式為收發(fā)一幀數(shù)據(jù)的格式為1位起始位、位起始位、8位數(shù)據(jù)位(低位在前)、位數(shù)據(jù)位(低位在前)、1位停止位,共位停止位,共10位。位。 在接收時(shí),停止位進(jìn)入在接收時(shí),停止位進(jìn)入SCON的的RB8,此方式的傳送波特率可調(diào)。,此方式的傳送波特率可調(diào)。 串行口方式串行口方式1的發(fā)送和接收時(shí)序如的發(fā)送和接收時(shí)序如圖圖7-12(a)和()和(b)所示所示返回圖圖7-12 方式方式1發(fā)送和接收時(shí)序發(fā)送和接收時(shí)序返回方式方式1發(fā)送時(shí),數(shù)據(jù)從引腳發(fā)送時(shí),數(shù)據(jù)從引腳TXD(P3.1)端輸出。當(dāng)執(zhí)行數(shù)據(jù)寫入發(fā))端輸出。當(dāng)執(zhí)行數(shù)據(jù)寫入發(fā)送緩沖器送緩沖器SBUF的命令時(shí),就啟動(dòng)了發(fā)送器開始發(fā)送。發(fā)送時(shí)

45、的定時(shí)的命令時(shí),就啟動(dòng)了發(fā)送器開始發(fā)送。發(fā)送時(shí)的定時(shí)信號(hào),也就是發(fā)送移位時(shí)鐘(信號(hào),也就是發(fā)送移位時(shí)鐘(TX時(shí)鐘),是由定時(shí)器時(shí)鐘),是由定時(shí)器T1(見(jiàn)圖見(jiàn)圖7-7)送送來(lái)的溢出信號(hào)經(jīng)過(guò)來(lái)的溢出信號(hào)經(jīng)過(guò)16分頻或分頻或32分頻(取決于分頻(取決于SMOD的值)而得到的,的值)而得到的,TX時(shí)鐘就是發(fā)送波特率??梢?jiàn),方式時(shí)鐘就是發(fā)送波特率。可見(jiàn),方式1的波特率是可變的。發(fā)送開始的波特率是可變的。發(fā)送開始的同時(shí),的同時(shí),SEND變?yōu)橛行?,將起始位向變?yōu)橛行В瑢⑵鹗嘉幌騎XD輸出;此后每經(jīng)過(guò)一個(gè)輸出;此后每經(jīng)過(guò)一個(gè)TX時(shí)鐘周期(時(shí)鐘周期(16分頻計(jì)數(shù)器溢出一次為一個(gè)時(shí)鐘周期分頻計(jì)數(shù)器溢出一次為一個(gè)時(shí)

46、鐘周期,因此因此,TX時(shí)鐘頻率時(shí)鐘頻率由波特率決定。)產(chǎn)生一個(gè)移位脈沖,并由由波特率決定。)產(chǎn)生一個(gè)移位脈沖,并由TXD輸出一個(gè)數(shù)據(jù)位;輸出一個(gè)數(shù)據(jù)位;8位數(shù)據(jù)位全部發(fā)送完后,置為位位數(shù)據(jù)位全部發(fā)送完后,置為位TI,并申請(qǐng)中斷置,并申請(qǐng)中斷置TXD為為1作為停止作為停止位,再經(jīng)一個(gè)時(shí)鐘周期,位,再經(jīng)一個(gè)時(shí)鐘周期,SEND失效。失效。返回 方式方式1接收時(shí),數(shù)據(jù)從引腳接收時(shí),數(shù)據(jù)從引腳RXD(P3.0)端輸入。接收是在端輸入。接收是在SCON寄存寄存器中器中REN位置位置1的前提下,并檢測(cè)到起始位(的前提下,并檢測(cè)到起始位(RXD上檢測(cè)到上檢測(cè)到10的跳的跳變,即起始位)而開始的。接收時(shí),定時(shí)信

47、號(hào)有兩種(如圖變,即起始位)而開始的。接收時(shí),定時(shí)信號(hào)有兩種(如圖7-12(b)所示):一種是接收移位時(shí)鐘(所示):一種是接收移位時(shí)鐘(RX時(shí)鐘),它的頻率和傳送波特率時(shí)鐘),它的頻率和傳送波特率相同,也是由定時(shí)器相同,也是由定時(shí)器T1的溢出信號(hào)經(jīng)過(guò)的溢出信號(hào)經(jīng)過(guò)16或或32分頻而得到的;另一分頻而得到的;另一種是位檢測(cè)器采樣脈沖,它的頻率是種是位檢測(cè)器采樣脈沖,它的頻率是RX時(shí)鐘的時(shí)鐘的16倍,亦即在一位數(shù)倍,亦即在一位數(shù)據(jù)期間有據(jù)期間有16位檢測(cè)器采樣脈沖,為完成檢測(cè),以位檢測(cè)器采樣脈沖,為完成檢測(cè),以16倍于波特率的速倍于波特率的速率對(duì)率對(duì)RXD進(jìn)行采樣。進(jìn)行采樣。返回 為了接受準(zhǔn)確無(wú)誤

48、,在正式接受數(shù)據(jù)之前,還必須判定這為了接受準(zhǔn)確無(wú)誤,在正式接受數(shù)據(jù)之前,還必須判定這個(gè)個(gè)10跳變是否是干擾引起的。為此,在這位中間(即一跳變是否是干擾引起的。為此,在這位中間(即一位時(shí)間分成位時(shí)間分成16等份,在第等份,在第7,第,第8及第及第9等份)連續(xù)對(duì)等份)連續(xù)對(duì)RXD采樣三次,取其中兩次相同的值進(jìn)行判斷。這樣能較好地采樣三次,取其中兩次相同的值進(jìn)行判斷。這樣能較好地消除干擾的影響。當(dāng)確認(rèn)是真正的起始位(消除干擾的影響。當(dāng)確認(rèn)是真正的起始位(0)后,就開)后,就開始接受一幀數(shù)據(jù)。當(dāng)一幀數(shù)據(jù)接受完畢后,必須同時(shí)滿足始接受一幀數(shù)據(jù)。當(dāng)一幀數(shù)據(jù)接受完畢后,必須同時(shí)滿足以下兩個(gè)條件,這次接受才真

49、正有效。以下兩個(gè)條件,這次接受才真正有效。返回RI=0,即上一幀數(shù)據(jù)接收完成時(shí),即上一幀數(shù)據(jù)接收完成時(shí),RI=1發(fā)出的中斷請(qǐng)求已被響應(yīng),發(fā)出的中斷請(qǐng)求已被響應(yīng),SBUF中數(shù)據(jù)已被取走。由軟件使中數(shù)據(jù)已被取走。由軟件使RI=0,以便提供,以便提供“接收接收SBUF已空已空”的信息。的信息。SM2=0或收到的停止位為或收到的停止位為1(方式(方式1時(shí),停止位進(jìn)入時(shí),停止位進(jìn)入RB8),則將接收),則將接收到的數(shù)據(jù)裝入串行口的到的數(shù)據(jù)裝入串行口的SBUF和和RB8(RB8裝入停止位),并置位裝入停止位),并置位RI;如果不滿足,接收到的數(shù)據(jù)不能裝入如果不滿足,接收到的數(shù)據(jù)不能裝入SBUF,這意味著該

50、幀信息將會(huì),這意味著該幀信息將會(huì)丟失。丟失。 值得注意的是,在整個(gè)接收過(guò)程中,保證值得注意的是,在整個(gè)接收過(guò)程中,保證REN=1是一個(gè)先決條件。是一個(gè)先決條件。只有當(dāng)只有當(dāng)REN=1時(shí),才能對(duì)時(shí),才能對(duì)RXD進(jìn)行檢測(cè)。進(jìn)行檢測(cè)。返回(3)串行口方式)串行口方式2和方式和方式3 串行口工作在方式串行口工作在方式2和方式和方式3均為每幀均為每幀11位異步通信格式,由位異步通信格式,由TXD和和RXD發(fā)送與接收(兩種方式操作是完全一樣的,所不同的只是波特發(fā)送與接收(兩種方式操作是完全一樣的,所不同的只是波特率)。率)。每幀每幀11位,即位,即1位起始位,位起始位,8位數(shù)據(jù)位(低位在前),位數(shù)據(jù)位(低

51、位在前),1位可編程的第位可編程的第9數(shù)據(jù)位和數(shù)據(jù)位和1位停止位。發(fā)送時(shí),第位停止位。發(fā)送時(shí),第9數(shù)據(jù)位(數(shù)據(jù)位(TB8)可以設(shè)置為)可以設(shè)置為1或或0,也可將奇偶位裝入也可將奇偶位裝入TB8,從而進(jìn)行奇偶校驗(yàn);接收時(shí),第,從而進(jìn)行奇偶校驗(yàn);接收時(shí),第9數(shù)據(jù)位進(jìn)數(shù)據(jù)位進(jìn)入入SCON的的RB8。方式方式2和方式和方式3的發(fā)送、接收時(shí)序如的發(fā)送、接收時(shí)序如圖圖7-13所示。其操作與方式所示。其操作與方式1類似。類似。返回圖圖7-13 方式方式2、方式、方式3發(fā)送和接收時(shí)序發(fā)送和接收時(shí)序返回發(fā)送前,先根據(jù)通信協(xié)議由軟件設(shè)置發(fā)送前,先根據(jù)通信協(xié)議由軟件設(shè)置TB8(如作奇偶校驗(yàn)位或地址(如作奇偶校驗(yàn)位或

52、地址/數(shù)數(shù)據(jù)標(biāo)志位),然后將要發(fā)送的數(shù)據(jù)寫入據(jù)標(biāo)志位),然后將要發(fā)送的數(shù)據(jù)寫入SBUF,即可啟動(dòng)發(fā)送過(guò)程。,即可啟動(dòng)發(fā)送過(guò)程。串行口能自動(dòng)把串行口能自動(dòng)把TB8取出,并裝入到第取出,并裝入到第9位數(shù)據(jù)位的位置,再逐一發(fā)位數(shù)據(jù)位的位置,再逐一發(fā)送出去。發(fā)送完畢,使送出去。發(fā)送完畢,使TI=1。 接收時(shí),使接收時(shí),使SCON中的中的REN=1,允許接收。當(dāng)檢測(cè)到,允許接收。當(dāng)檢測(cè)到RXD(P3.0)端端有有10的跳變(起始位)時(shí),開始接收的跳變(起始位)時(shí),開始接收9位數(shù)據(jù),送入移位寄存器位數(shù)據(jù),送入移位寄存器(9位)。當(dāng)滿足位)。當(dāng)滿足RI=0且且SM2=0,或接收到的第,或接收到的第9位數(shù)據(jù)為

53、位數(shù)據(jù)為1時(shí),前時(shí),前8位數(shù)據(jù)送入位數(shù)據(jù)送入SBUF,附加的第,附加的第9位數(shù)據(jù)送入位數(shù)據(jù)送入SCON中的中的RB8,置,置RI為為1;否則,這次接收無(wú)效,也不置位否則,這次接收無(wú)效,也不置位RI。返回 在串行通信中,收發(fā)雙方對(duì)發(fā)送或接收的數(shù)據(jù)速率有一定的約定,在串行通信中,收發(fā)雙方對(duì)發(fā)送或接收的數(shù)據(jù)速率有一定的約定,通過(guò)軟件對(duì)通過(guò)軟件對(duì)89C51串行口編程可約定四種工作方式。其中,方式串行口編程可約定四種工作方式。其中,方式0和和方式方式2的波特率是固定的;而方式的波特率是固定的;而方式1和方式和方式3的波特率是可變的,由定的波特率是可變的,由定時(shí)器時(shí)器T1的溢出率來(lái)決定。的溢出率來(lái)決定。

54、串行口的四種工作方式對(duì)應(yīng)著三種波特率。由于輸入的移位時(shí)鐘來(lái)串行口的四種工作方式對(duì)應(yīng)著三種波特率。由于輸入的移位時(shí)鐘來(lái)源不同,因此,各種方式的波特率計(jì)算公式也不同。源不同,因此,各種方式的波特率計(jì)算公式也不同。返回(1)方式)方式0的波特率的波特率 由由圖圖7-14可見(jiàn),方式可見(jiàn),方式0時(shí),發(fā)送或接收一位數(shù)據(jù)的移位時(shí)鐘時(shí),發(fā)送或接收一位數(shù)據(jù)的移位時(shí)鐘脈沖由脈沖由S6(即第(即第6個(gè)狀態(tài)周期,第個(gè)狀態(tài)周期,第12個(gè)節(jié)拍)給出,即每個(gè)機(jī)個(gè)節(jié)拍)給出,即每個(gè)機(jī)器周期產(chǎn)生一個(gè)移位時(shí)鐘,發(fā)送或接收一位數(shù)據(jù)。因此,波特器周期產(chǎn)生一個(gè)移位時(shí)鐘,發(fā)送或接收一位數(shù)據(jù)。因此,波特率固定為振蕩頻率的率固定為振蕩頻率的

55、1/12,并不受,并不受PCON寄存器中寄存器中SMOD位的位的影響。影響。圖圖7-14 串行口方式串行口方式0波特率的產(chǎn)生波特率的產(chǎn)生返回方式方式0波特率波特率 fosc / 12注意,符號(hào)注意,符號(hào)“ ”表示左面的表達(dá)式只是引擁右面表達(dá)式的數(shù)值,即表示左面的表達(dá)式只是引擁右面表達(dá)式的數(shù)值,即右面的表達(dá)式是提供了一種計(jì)算的方法。右面的表達(dá)式是提供了一種計(jì)算的方法。返回(2)方式)方式2的波特率的波特率 串行口方式串行口方式2波特率的產(chǎn)生與方式波特率的產(chǎn)生與方式0不同,即輸入的時(shí)鐘源不同,其時(shí)不同,即輸入的時(shí)鐘源不同,其時(shí)鐘輸入部分入鐘輸入部分入圖圖7-15所示。所示??刂平邮张c發(fā)送的移位時(shí)鐘

56、由振蕩頻率控制接收與發(fā)送的移位時(shí)鐘由振蕩頻率fosc的第二節(jié)拍的第二節(jié)拍P2時(shí)鐘(即時(shí)鐘(即fosc/2)給出,所以,方式)給出,所以,方式2波特率取決于波特率取決于PCON中中SMOD位的值:位的值:SMOD=0時(shí),波特率為時(shí),波特率為fosc的的1/64;SMOD=1時(shí),波特率為時(shí),波特率為fosc的的1/32。 即方式即方式2波特率波特率 2SMOD/64fosc圖圖7-15 串行口方式串行口方式2波特率的產(chǎn)生波特率的產(chǎn)生返回(3)方式)方式1和方式和方式3的波特率的波特率方式方式1和方式和方式3的移位時(shí)鐘脈沖由定時(shí)器的移位時(shí)鐘脈沖由定時(shí)器T1的溢出率決定,如的溢出率決定,如圖圖7-16

57、所示。因所示。因此,此,89C51串行口方式串行口方式1和方式和方式3的波特率由定時(shí)器的波特率由定時(shí)器T1的溢出率與的溢出率與SMOD值同值同時(shí)決定。即時(shí)決定。即方式方式1、方式、方式3波特率波特率 T1溢出率溢出率/n圖圖7-16 串行口方式串行口方式1、方式、方式3波特率的產(chǎn)生波特率的產(chǎn)生返回 當(dāng)當(dāng)SMOD=0時(shí),時(shí),n=32;SMOD=1時(shí),時(shí),n=16。所以,可用下式確定方。所以,可用下式確定方式式1和方式和方式3的波特率:的波特率:方式方式1、方式、方式3波特率波特率 2SMOD/32(T1溢出速率溢出速率)其中,其中,T1溢出速率取決于溢出速率取決于T1的計(jì)數(shù)速率(計(jì)數(shù)速率的計(jì)數(shù)速

58、率(計(jì)數(shù)速率 fosc/12)和)和T1預(yù)置的處置。預(yù)置的處置。若定時(shí)器若定時(shí)器T1采用模式采用模式1時(shí),波特率公式如下:時(shí),波特率公式如下:串行方式串行方式1、方式、方式3波特率波特率 2SMOD/32(fosc/12)/(216-初值初值)返回表表7-2列出了串行口方式列出了串行口方式1、方式、方式3常用波特率及其初值。常用波特率及其初值。 定時(shí)器定時(shí)器T1用作波特率發(fā)生器時(shí),通常選用定時(shí)器模式用作波特率發(fā)生器時(shí),通常選用定時(shí)器模式2(自動(dòng)重裝初值定時(shí)器)比較實(shí)用。要設(shè)置定時(shí)器(自動(dòng)重裝初值定時(shí)器)比較實(shí)用。要設(shè)置定時(shí)器T1為定為定時(shí)方式(使時(shí)方式(使C/T=0),讓),讓T1計(jì)數(shù)內(nèi)部振蕩

59、脈沖,即計(jì)數(shù)速計(jì)數(shù)內(nèi)部振蕩脈沖,即計(jì)數(shù)速率為率為fosc/12(注意應(yīng)禁止(注意應(yīng)禁止T1中斷,以免溢出而產(chǎn)生不必中斷,以免溢出而產(chǎn)生不必要的中斷)。先設(shè)定要的中斷)。先設(shè)定TH1和和TL1定時(shí)即輸初值為定時(shí)即輸初值為X,那么,那么每過(guò)每過(guò)“28-X”個(gè)機(jī)器周期,定時(shí)器個(gè)機(jī)器周期,定時(shí)器T1就會(huì)產(chǎn)生一次溢出。就會(huì)產(chǎn)生一次溢出。返回表7-2 常用波特率與其他參數(shù)選取關(guān)系返回 因此,因此,T1溢出速率為溢出速率為T1溢出速率溢出速率 (fosc/12)/(28-X)于是,可得出定時(shí)器于是,可得出定時(shí)器T1模式模式2的初始值的初始值X:返回 例例7-1:89C51單片機(jī)時(shí)鐘振蕩頻率為單片機(jī)時(shí)鐘振蕩頻

60、率為11.0592MHz,選用,選用定時(shí)器定時(shí)器T1工作模式工作模式2作為波特率發(fā)生器,波特率為作為波特率發(fā)生器,波特率為2400b/s,求初值。,求初值。 解:設(shè)置波特率控制為解:設(shè)置波特率控制為(SMOD)=0 所以,所以,(TH1)=(TL1)=F4H。返回 系統(tǒng)晶體振蕩頻率選為系統(tǒng)晶體振蕩頻率選為11.0592MHz就是為了使初值為整就是為了使初值為整數(shù),從而產(chǎn)生精確的波特率。數(shù),從而產(chǎn)生精確的波特率。 如果串行通信選用很低的波特率,可將定時(shí)器如果串行通信選用很低的波特率,可將定時(shí)器T1置于置于模式模式0或模式或模式1,即,即13位或位或16位定時(shí)方式;但在這種情況位定時(shí)方式;但在這種

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論