版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口王麗王麗2016-2017(1)2016-2017(1)第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口南南航航金金城城學(xué)學(xué)院院自自動動化化系系第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口南南航航金金城城學(xué)學(xué)院院自自動動化化系系教學(xué)內(nèi)容教學(xué)內(nèi)容7.1 串行通信的概念串行通信的概念7.2 串行口結(jié)構(gòu)串行口結(jié)構(gòu)7.3 串行口的通信工作方式串行口的通信工作方式7.4 串行通信接口標(biāo)準(zhǔn)串行通信接口標(biāo)準(zhǔn)第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口
2、l熟悉熟悉89S5189S51串行接口的基本結(jié)構(gòu)和工作原理串行接口的基本結(jié)構(gòu)和工作原理l熟練掌握串行接口控制寄存器熟練掌握串行接口控制寄存器SCONSCON的含義和功能的含義和功能l掌握串行口的掌握串行口的4 4種工作方式及其波特率的計算種工作方式及其波特率的計算l熟練掌握雙機(jī)通信的收發(fā)設(shè)計程序熟練掌握雙機(jī)通信的收發(fā)設(shè)計程序教學(xué)目標(biāo)教學(xué)目標(biāo)南南航航金金城城學(xué)學(xué)院院自自動動化化系系第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口通信通信7.1串行通信的概念在實(shí)際工作中,在實(shí)際工作中,CPUCPU與外設(shè)之間常常要進(jìn)行信息與外設(shè)之間常常要進(jìn)行信息交換,所有信息交換被稱為通信
3、。交換,所有信息交換被稱為通信。通信方式:并行通信和串行通信;通信方式:并行通信和串行通信;第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口一、并行通信與串行通信一、并行通信與串行通信 1 1、并行通信:多位數(shù)據(jù)同時傳送,需要信號通道多、并行通信:多位數(shù)據(jù)同時傳送,需要信號通道多控制簡單,傳輸速度快,傳輸線較多,短距離傳送7.1串行通信的概念第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口一、并行通信與串行通信一、并行通信與串行通信 2 2、串行通信:低速,需要信號通道少,長距離通信、串行通信:低速,需要信號通道少,長距離通信傳輸線少,可利用
4、電話網(wǎng),但傳送控制復(fù)雜。 7.1串行通信的概念第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口 單工:(或單工)配置: 數(shù)據(jù)只有一個方向傳送; m廣播、遙控、遙測、無線尋呼等屬于單工通信。 7.1.1串行通信的傳輸方向串行通信的傳輸方向串行通信的數(shù)據(jù)傳輸方式有三種:串行通信的數(shù)據(jù)傳輸方式有三種: 單工、半雙工和全雙工單工、半雙工和全雙工 第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口半雙向(或半雙工)配置:允許數(shù)據(jù)向兩個方向中的任一方向傳送,但每次只能有一個站點(diǎn)發(fā)送;例如,使用同一載波頻率的對講機(jī)、收發(fā)報機(jī)等都是半雙工的通信方式。7.1.1
5、串行通信的傳輸方向串行通信的傳輸方向串行通信的數(shù)據(jù)傳輸方式有三種:串行通信的數(shù)據(jù)傳輸方式有三種: 單工、半雙工和全雙工單工、半雙工和全雙工 第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口7.1.1串行通信的傳輸方向串行通信的傳輸方向串行通信的數(shù)據(jù)傳輸方式有三種:串行通信的數(shù)據(jù)傳輸方式有三種: 單工、半雙工和全雙工單工、半雙工和全雙工 全雙向(全雙工)配置全雙向(全雙工)配置同一時間可以雙向傳送數(shù)據(jù)。同一時間可以雙向傳送數(shù)據(jù)。等效于一對單向配置,它要求等效于一對單向配置,它要求兩端的通信設(shè)備都具有完整和兩端的通信設(shè)備都具有完整和獨(dú)立的發(fā)送和接受能力。獨(dú)立的發(fā)送和接受能
6、力。普通電話、手機(jī)都是最常用的普通電話、手機(jī)都是最常用的全雙工通信方式,計算機(jī)之間全雙工通信方式,計算機(jī)之間的高速數(shù)據(jù)通信也是這種方式。的高速數(shù)據(jù)通信也是這種方式。第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口串行通信的過程及通信協(xié)議串行通信的過程及通信協(xié)議1、串并轉(zhuǎn)換與設(shè)備同步 要成功通信必須解決兩個問題:(1)串并轉(zhuǎn)換 將計算機(jī)內(nèi)部的并行數(shù)據(jù)轉(zhuǎn)將計算機(jī)內(nèi)部的并行數(shù)據(jù)轉(zhuǎn)換成串行數(shù)據(jù),將其通過一換成串行數(shù)據(jù),將其通過一根通信線傳送;根通信線傳送;并將接收的串行數(shù)據(jù)再轉(zhuǎn)換并將接收的串行數(shù)據(jù)再轉(zhuǎn)換成并行數(shù)據(jù)送到計算機(jī)中。成并行數(shù)據(jù)送到計算機(jī)中。第第7 7章章 AT89S
7、51 AT89S51單片機(jī)的串行口單片機(jī)的串行口(2 2)設(shè)備同步)設(shè)備同步m進(jìn)行串行通信的兩臺設(shè)備必須同步工作才能有效地檢測通信線路上的信號變化,從而采樣傳送數(shù)據(jù)脈沖。m設(shè)備同步對通信雙方有兩個共同要求:一是統(tǒng)一的編碼方法;二是相同的傳送速率。m采用統(tǒng)一的編碼方法確定了一個字符二進(jìn)制表示值的位發(fā)送順序和位串長度,還有統(tǒng)一的邏輯電平規(guī)定。m通信雙方只有產(chǎn)生相同的傳送速率,才能確保設(shè)備同步,即雙方采用頻率相同的時鐘。波特率(波特率(Baud rateBaud rate)m即數(shù)據(jù)傳送速率,每秒鐘傳送二進(jìn)制代碼的位數(shù),單位是b/s。m波特率對于CPU與外界的通信是很重要的。m計算方法: 假設(shè)數(shù)據(jù)傳送
8、速率是120字符/s,而每個字符格式包含(1個起始位、1個終止位、8個數(shù)據(jù)位)。傳送的波特率為:10b字符120字符s1200bsm異步通信的傳送速率通常在5019200b/s之間。第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口2 2、串行通信協(xié)議、串行通信協(xié)議m通信協(xié)議是對數(shù)據(jù)傳送方式的規(guī)定,包括數(shù)據(jù)格式定義和數(shù)據(jù)位定義等。m通信雙方必須遵守統(tǒng)一的通信協(xié)議。串行通信協(xié)議包括同步協(xié)議和異步協(xié)議兩種。m在此只討論異步串行通信協(xié)議。第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口收、發(fā)設(shè)備使用收、發(fā)設(shè)備使用各自時鐘各自時鐘。 異步通信異步通信:
9、傳送的數(shù)據(jù)可以是傳送的數(shù)據(jù)可以是字符字符或一個或一個字節(jié)字節(jié)數(shù)據(jù),以數(shù)據(jù),以幀幀的形的形式一幀一幀傳送。式一幀一幀傳送。通信速度低,邏輯結(jié)構(gòu)簡單。通信速度低,邏輯結(jié)構(gòu)簡單。 7.1.2 異步通信的概念第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口異步通信方式異步通信方式01停停止止位位起起始始位位低位低位高位高位7位數(shù)據(jù)位位數(shù)據(jù)位奇偶奇偶校驗(yàn)校驗(yàn)停停止止位位第第N個字符個字符第第N-1個字符個字符m以字符構(gòu)成的幀為單位,字符間是異步的,字符內(nèi)各位是同步的第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口1、緊鄰的、緊鄰的2、有空閑位、有空閑位
10、異步通信方式異步通信方式第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口在幀格式中,一個字符由四個部分組成:起始位、數(shù)據(jù)位、奇偶校驗(yàn)位和停止位。m起始為(0),然后是58位數(shù)據(jù)(規(guī)定低位在前,高位在后),然后奇偶校驗(yàn)位(可省略),最后停止位(1)。注:奇偶校驗(yàn)也可用這一位(1/0)確定所代表信息的性質(zhì)(地址/數(shù)據(jù)等)。 停止位收到停止位后,上一字符已傳送完畢,同時,為接收下一個字符做好準(zhǔn)備。幀幀第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口m起始位(0)信號只占用一位,用來通知接收設(shè)備一個待接收的字符開始到達(dá)。線路上在不傳送字符時應(yīng)保持為1
11、。接收端不斷檢測線路的狀態(tài),若連續(xù)為1以后又測到一個0,就知道發(fā)來一個新字符, 應(yīng)馬上準(zhǔn)備接收。字符的起始位還被用作同步接收端的時鐘,以保證以后的接收能正確進(jìn)行。m起始位后面緊接著是數(shù)據(jù)位,它可以是5位(D0-D4)、6位、7位或8位(D0-D7)。第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口m奇偶校驗(yàn)(D8)只占一位,但這一位也可省去。也可用這一位(1/0)來確定這一幀中的字符所代表信息的性質(zhì)(地址/數(shù)據(jù)等)。m停止位:表征一個字符結(jié)束,用高電平(邏輯1)。停止位可以是1位、1.5位或2位。收到停止位后,表示上一字符已傳送完畢,同時,為接收下一個字符做好準(zhǔn)備(等
12、待再接收到0,就是新的字符的起始位)。若停止位以后不再緊接著傳送下一個字符,則將線路電平保持為高電平(邏輯1)。第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口二、異步通信與同步通信二、異步通信與同步通信 2 2、同步通信:、同步通信:發(fā)送方時鐘與接收方時鐘同步,既保持發(fā)送方時鐘與接收方時鐘同步,既保持 位同步,也保持字符同步。位同步,也保持字符同步。第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口m在數(shù)據(jù)開始傳送前用同步字符來指示(常約定在數(shù)據(jù)開始傳送前用同步字符來指示(常約定1 12 2個),并由個),并由時鐘來實(shí)現(xiàn)發(fā)送端和接收端同步,即
13、檢測到規(guī)定的同步字符后,時鐘來實(shí)現(xiàn)發(fā)送端和接收端同步,即檢測到規(guī)定的同步字符后,就連續(xù)按順序傳送數(shù)據(jù),直到通信告一段落。就連續(xù)按順序傳送數(shù)據(jù),直到通信告一段落。m同步傳送時,字符與字符之間沒有間隙,沒有起始位和停止位,同步傳送時,字符與字符之間沒有間隙,沒有起始位和停止位,僅在數(shù)據(jù)塊開始時用同步字符來指示同步。僅在數(shù)據(jù)塊開始時用同步字符來指示同步。第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口m同步字符:單同步字符或雙同步字符方式,然后就是連續(xù)的數(shù)據(jù)塊。m可以由用戶約定,也可采用ASCII碼中規(guī)定的SYNC代碼,即16H。按同步方式通信時,先發(fā)送同步字符,接收方檢測
14、到同步字符后,即準(zhǔn)備接收數(shù)據(jù)。m發(fā)送方除了傳送數(shù)據(jù)外,還要同時傳送時鐘信號:用來實(shí)現(xiàn)發(fā)送端與接收端之間的同步。以保證接收正確無誤。m同步傳送可以提高傳輸速率(達(dá)56kb/s或更高),但硬件比較復(fù)雜。第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口AT89S51串行口全雙工全雙工的通用異步收發(fā)通用異步收發(fā)(UART),可可同時雙向同時雙向傳輸傳輸。收、發(fā)雙方使用各自的時鐘使用各自的時鐘控制發(fā)送和接收過程,這樣可省去省去收、發(fā)雙方的一條同步時鐘信號線一條同步時鐘信號線,連接簡單且易實(shí)現(xiàn)。第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口257.2
15、7.2 串行口的結(jié)構(gòu)串行口的結(jié)構(gòu)第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口有兩個物理上獨(dú)立兩個物理上獨(dú)立的接收、發(fā)送緩沖器接收、發(fā)送緩沖器SBUF(屬于特殊功能寄存器),可同時發(fā)送、接收數(shù)據(jù)。發(fā)送緩沖器發(fā)送緩沖器只能寫入不能讀出接收緩沖器接收緩沖器只能讀出不能寫入兩個緩沖器共用一個特殊功能寄存器字節(jié)地址共用一個特殊功能寄存器字節(jié)地址(99H)。兩個控制寄存器:SCON和PCON。267.2 7.2 串行口的結(jié)構(gòu)串行口的結(jié)構(gòu)第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口 在邏輯上,在邏輯上,SBUF只有一個,它既表示發(fā)送寄存器,又表只有
16、一個,它既表示發(fā)送寄存器,又表示接收寄存器,具有同一個單元地址示接收寄存器,具有同一個單元地址99H。但在物理結(jié)構(gòu)上,。但在物理結(jié)構(gòu)上,則有兩個完全獨(dú)立的則有兩個完全獨(dú)立的SBUF,一個是發(fā)送緩沖寄存器,一個是發(fā)送緩沖寄存器SBUF,另一個是接收緩沖寄存器另一個是接收緩沖寄存器SBUF。如果。如果CPU寫寫SBUF,數(shù)據(jù)就,數(shù)據(jù)就會被送入會被送入發(fā)送寄存器發(fā)送寄存器準(zhǔn)備發(fā)送;準(zhǔn)備發(fā)送; MOV SBUF, A;/將將CPU的數(shù)據(jù)寫入發(fā)送緩沖器的數(shù)據(jù)寫入發(fā)送緩沖器 如果如果CPU讀讀SBUF,則讀入的數(shù)據(jù)一定來自,則讀入的數(shù)據(jù)一定來自接收緩沖器接收緩沖器。即。即CPU對對SBUF的讀寫,實(shí)際上是
17、分別訪問上述兩個不同的寄存的讀寫,實(shí)際上是分別訪問上述兩個不同的寄存器。器。 MOV A,SBUF ;/將接收緩沖器的數(shù)據(jù)讀入將接收緩沖器的數(shù)據(jù)讀入CPU第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口 串行數(shù)據(jù)緩沖器串行數(shù)據(jù)緩沖器SBUFSBUF SBUF是串行口緩沖寄存器,包括是串行口緩沖寄存器,包括發(fā)送寄存發(fā)送寄存器器和和接收寄存器接收寄存器,以便能以全雙工方式進(jìn)行通信。,以便能以全雙工方式進(jìn)行通信。此外,在接收寄存器之前還有移位寄存器,從而此外,在接收寄存器之前還有移位寄存器,從而構(gòu)成了串行接收的雙緩沖結(jié)構(gòu),這樣可以避免在構(gòu)成了串行接收的雙緩沖結(jié)構(gòu),這樣可以避
18、免在數(shù)據(jù)接收過程中出現(xiàn)幀重疊錯誤。發(fā)送數(shù)據(jù)時,數(shù)據(jù)接收過程中出現(xiàn)幀重疊錯誤。發(fā)送數(shù)據(jù)時,由于由于CPU是主動的,不會發(fā)生幀重疊錯誤,因此是主動的,不會發(fā)生幀重疊錯誤,因此發(fā)送電路不需要雙重緩沖結(jié)構(gòu)。發(fā)送電路不需要雙重緩沖結(jié)構(gòu)。第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口圖7-3 串行口結(jié)構(gòu)示意圖7.2 7.2 串行口的結(jié)構(gòu)串行口的結(jié)構(gòu)第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口m接收器是雙緩沖結(jié)構(gòu),在前一個字節(jié)被從接收緩沖器SBUF讀出之前,第二個字節(jié)即開始被接收(串行輸入至移位寄存器),但是,在第二個字節(jié)接收完畢而前一個字節(jié)CPU未
19、讀取時,會丟失前一個字節(jié)。m什么情況使TI=1:當(dāng)向SBUF發(fā)“寫”命令時(執(zhí)行“MOV SBUF,A”指令),即是向發(fā)送緩沖器SBUF裝載并開始由TXD引腳向外發(fā)送一幀數(shù)據(jù),發(fā)送完便使發(fā)送中斷標(biāo)志位TI=1。第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口m接收數(shù)據(jù)的條件: 接收中斷標(biāo)志位RI(SCON.0)=0; 允許接收位REN(SCON.4)=1。m什么情況使RI=1: 接收完一幀數(shù)據(jù)進(jìn)入移位寄存器,并裝載到接收SBUF中。 注:發(fā)送緩沖器發(fā)送時CPU是主動的,不會產(chǎn)生重疊錯誤,不需要用雙緩沖器結(jié)構(gòu)來保持最大傳送速率。第第7 7章章 AT89S51 AT89S
20、51單片機(jī)的串行口單片機(jī)的串行口 串行口的初始化編程:SCON和PCONSCON(98H):89C51串行通信的方式選擇、接收和發(fā)送控制以及串行口的狀態(tài)標(biāo)志。 7.2.1 7.2.1 串行口控制寄存器串行口控制寄存器SCONSCON第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口mSM0SM0和和SM1SM1串行口工作方式選擇位。對應(yīng)串行口工作方式選擇位。對應(yīng)4 4種通信種通信方式,其中,方式,其中,foscfosc是振蕩頻率。是振蕩頻率。第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口SM2(SCON.5)多機(jī)通信控制位,主要用于方式2和方
21、式3。允許多機(jī)通信,SM2=1 。當(dāng)一片89C51(主機(jī))與多片89C51(從機(jī))通信時,所有從機(jī)的SM2位都置1。主機(jī)首先發(fā)送的一幀地址,即從機(jī)機(jī)號,其中第9位為1,所有的從機(jī)接收到數(shù)據(jù)后,將其中第9位裝入RB8中。各個從機(jī)根據(jù)收到的第9位數(shù)據(jù)(RB8中)的值來決定從機(jī)可否再接收主機(jī)的信息。若(RB8)0,說明是數(shù)據(jù)幀,則使接收中斷標(biāo)志位RI0,信息丟失;若(RB8)1,說明是地址幀,數(shù)據(jù)裝入SBUF并置RI1,中斷所有從機(jī),被尋址的目標(biāo)從機(jī)清除SM2以接收主機(jī)發(fā)來的一幀數(shù)據(jù)。其他從機(jī)仍然保持SM21。 若SM2=0,單機(jī)通信,接收一幀數(shù)據(jù)后,置RI=1,將接收到的數(shù)據(jù)裝入SBUF。m根據(jù)S
22、M2這個功能,可實(shí)現(xiàn)多個89C51應(yīng)用系統(tǒng)的串行通信。m在方式1時,若SM2=1,則只有接收到有效停止位時,RI才置1,以便接收下一幀數(shù)據(jù)。在方式0時,SM2必須是0。第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口REN允許接受控制位:由軟件置1或清0,只有當(dāng)REN1時才允許接收,相當(dāng)于串行接收的開關(guān);若REN0,則禁止接收。 只有滿足RI0和REN1(允許接收)的條件,一幀數(shù)據(jù)就裝載入接收SBUF中。TB8(SCON.3)發(fā)送數(shù)據(jù)的第9位(D8)裝入TB8中。在方式2或方式3中,根據(jù)發(fā)送數(shù)據(jù)的需要由軟件置位或復(fù)位。在許多通信協(xié)議中可用作奇偶校驗(yàn)位,也可在多機(jī)通信中
23、作為發(fā)送地址幀或數(shù)據(jù)幀的標(biāo)志位。對于后者,TB81,說明該幀數(shù)據(jù)為地址;TB80,說明該幀數(shù)據(jù)為數(shù)據(jù)字節(jié)。在方式0或方式1中,該位未用。第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口RB8(SCON.2)接收數(shù)據(jù)的第9位。在方式2或方式3中,接收到的第9位數(shù)據(jù)放在RB8位。它可以是奇/偶校驗(yàn)位,或是約定的地址/數(shù)據(jù)標(biāo)識位。在方式2和方式3多機(jī)通信中,若SM21,如果RB81,說明收到的數(shù)據(jù)為地址幀。 方式1中,若SM20,RB8中存放的是已接收到的停止位。在方式0中,該位未用。TITI(SCON.1SCON.1)發(fā)送中斷標(biāo)志。發(fā)送完一幀數(shù)據(jù)被置發(fā)送中斷標(biāo)志。發(fā)送完一
24、幀數(shù)據(jù)被置1 1。 TITI置位意味著向置位意味著向CPUCPU提供提供“發(fā)送緩沖器發(fā)送緩沖器SBUFSBUF已空已空”的信息,的信息,CPUCPU可以準(zhǔn)備發(fā)送下一幀數(shù)據(jù)??梢詼?zhǔn)備發(fā)送下一幀數(shù)據(jù)。 在方式在方式0 0串行發(fā)送第串行發(fā)送第8 8位結(jié)束或其他方式串行發(fā)送到停止位時位結(jié)束或其他方式串行發(fā)送到停止位時由硬件置由硬件置1 1,可用軟件查詢。串行口發(fā)送中斷被響應(yīng)后,可用軟件查詢。串行口發(fā)送中斷被響應(yīng)后,TITI不會自動清不會自動清0 0,必須由軟件清,必須由軟件清0 0。RIRI(SCON.0SCON.0)接收中斷標(biāo)志。接收完一幀有效數(shù)據(jù)后接收中斷標(biāo)志。接收完一幀有效數(shù)據(jù)后由硬件置由硬件置
25、1 1。表示一幀數(shù)據(jù)接收結(jié)束,并已裝入接收。表示一幀數(shù)據(jù)接收結(jié)束,并已裝入接收SBUFSBUF中,要求中,要求CPUCPU取走數(shù)據(jù)。取走數(shù)據(jù)。RIRI也必須由軟件清也必須由軟件清0 0,并準(zhǔn)備接收,并準(zhǔn)備接收下一幀數(shù)據(jù)。下一幀數(shù)據(jù)。 在方式在方式0 0中,第中,第8 8位數(shù)據(jù)發(fā)送結(jié)束時,由硬件置位數(shù)據(jù)發(fā)送結(jié)束時,由硬件置1 1;在其他三;在其他三種方式中,當(dāng)接收到停止位中間時由硬件置種方式中,當(dāng)接收到停止位中間時由硬件置1 1。第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口m串行中斷源只有串行中斷源只有1 1個,是個,是RIRI還是還是TITI呢?呢?CPUCPU事
26、先不知道事先不知道是發(fā)送中斷是發(fā)送中斷TITI還是接收中斷還是接收中斷RIRI產(chǎn)生的中斷請求,所以,在產(chǎn)生的中斷請求,所以,在全雙工通信時,必須由全雙工通信時,必須由軟件來判別軟件來判別。m復(fù)位時,復(fù)位時,SCONSCON所有位均清所有位均清0 0。7.2.2 7.2.2 電源控制寄存器電源控制寄存器PCON PCON 第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口7.3 串行口的通信工作方式串行口的通信工作方式 7.3.1 工作方式工作方式0 m1. 1.工作原理工作原理m串行口控制寄存器串行口控制寄存器SCONSCON中,中,SM0SM0、SM1=00SM1=0
27、0時,串行口工作時,串行口工作于方式于方式0 0,此時串行口作為同步移位寄存器使用,此時串行口作為同步移位寄存器使用; ;m此工作方式并不是單片機(jī)之間的串行通信,而是用于單片機(jī)此工作方式并不是單片機(jī)之間的串行通信,而是用于單片機(jī)串行口外接移位寄存器,實(shí)現(xiàn)串行口外接移位寄存器,實(shí)現(xiàn)I/OI/O口的擴(kuò)展。口的擴(kuò)展。 第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口m串行數(shù)據(jù)通過引腳串行數(shù)據(jù)通過引腳RXDRXD輸入或輸出,而輸入或輸出,而TXDTXD引腳用于引腳用于輸出移位時鐘,作為外接器件的同步信號。輸出移位時鐘,作為外接器件的同步信號。m方式方式0 0的波特率是固定值,
28、它與系統(tǒng)的振蕩頻率有關(guān),的波特率是固定值,它與系統(tǒng)的振蕩頻率有關(guān),以以 的速率進(jìn)行數(shù)據(jù)的發(fā)送或接收。的速率進(jìn)行數(shù)據(jù)的發(fā)送或接收。 m2. 2.方式方式0 0的應(yīng)用的應(yīng)用m串行口的方式串行口的方式0 0,不適合兩個單片機(jī)之間進(jìn)行通信,但,不適合兩個單片機(jī)之間進(jìn)行通信,但是可以通過外接移位寄存器的方法,進(jìn)行單片機(jī)是可以通過外接移位寄存器的方法,進(jìn)行單片機(jī)I/OI/O端端口的擴(kuò)展??诘臄U(kuò)展。 D0D1D2D3D4D5D6D7 12/oscf第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口8位并入串出的移位寄存器,Q8為輸出端,CLK為時鐘脈沖輸入端,P/S為操作控制端,當(dāng)P
29、/S=1時,鎖存并行輸入數(shù)據(jù),P/S=0時,允許串行移位操作。AT89S51RXDTXDP1.0Q8CLKCD4014P/S并行輸入圖7-5 CD4014用于擴(kuò)展并行輸入口 例例7.17.1單片機(jī)外接單片機(jī)外接CD4014CD4014或或74LS16574LS165均可以用于擴(kuò)展并行輸入均可以用于擴(kuò)展并行輸入口,在本例中采用口,在本例中采用CD4014CD4014芯片作為擴(kuò)展芯片。采用查詢方式。芯片作為擴(kuò)展芯片。采用查詢方式。 /包含特殊功能寄存器庫 /定義P1.0 /主函數(shù) /定義變量i,將接收到的數(shù)據(jù)放到變量i中 /鎖存并行輸入數(shù)據(jù) /允許串行移位操作 /設(shè)定方式0,允許接收 /等待接收完
30、畢 /清中斷標(biāo)志 /保存并行輸入數(shù)據(jù)例例7.17.1C語言參考程序如下: # include sbit P1.0=P10; void main() unsigned char i; P1.0=1; P1.0=0; SCON=0 x10; while (!RI) ; RI=0; i=SBUF; AT89S51RXDTXDP1.0Q8CLKCD4014P/S并行輸入CD4014用于擴(kuò)展并行輸入口第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口例例7.17.1匯編參考程序如下匯編參考程序如下: : ORG 0000H ORG 0000H LJMP KIN LJMP KIN
31、ORG 0100H ORG 0100H KIN: MOV SCON,#00H KIN: MOV SCON,#00H CLR ES CLR ES SETB P1.0 SETB P1.0 CLR P1.0 CLR P1.0 SETB REN SETB REN JNB RI,$ JNB RI,$ MOV 40H,SBUF MOV 40H,SBUF SJMP $ SJMP $ END END ; ;上電后程序從上電后程序從00000H00000H開始開始 ; ;轉(zhuǎn)移到主程序轉(zhuǎn)移到主程序 ; ;主程序從主程序從0100H0100H開始開始 ; ;設(shè)定串行口為方式設(shè)定串行口為方式0 0 ; ;禁止串行中斷
32、禁止串行中斷 ; ;鎖存并行輸入數(shù)據(jù)鎖存并行輸入數(shù)據(jù) ; ;允許串行移位操作允許串行移位操作 ; ;允許并啟動接收(允許并啟動接收(TXDTXD發(fā)送移位脈沖)發(fā)送移位脈沖) ; ;等待接收完畢等待接收完畢 ; ;保存并行輸入保存并行輸入 ; ;循環(huán)等待循環(huán)等待 ; ;匯編結(jié)束匯編結(jié)束第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口m 例例7.27.2單片機(jī)外接單片機(jī)外接CD4094CD4094或或74LS16474LS164均可以用于擴(kuò)均可以用于擴(kuò)展并行輸出口,在本例中采用展并行輸出口,在本例中采用CD4094CD4094作為擴(kuò)展芯片作為擴(kuò)展芯片實(shí)現(xiàn)數(shù)據(jù)的并行輸出。實(shí)
33、現(xiàn)數(shù)據(jù)的并行輸出。 AT89S51RXDTXDP1.0DATACLKCD4094STB并行輸出圖7-6 CD4094用于擴(kuò)展并行輸出口CD40948位串入并出的同步移位寄存器;CLK為時鐘脈沖輸入端;STB=0時,允許從DATA端輸入,8位并行輸出端關(guān)閉;STB=1時,DATA輸入端關(guān)閉,允許8位并行數(shù)據(jù)輸出。 C語言參考程序如下:#include #define uchar unsigned char sbit STB=P10; sbit CLK=P31; void main() uchar data1; SCON=0 x00; STB=1; SBUF=data1; while(TI=0);
34、 TI=0; STB=0; CLK=0; CLK=1;while(1); / 包含頭文件 /定義無符號字符類型的縮寫 /位定義 /主程序 /聲明變量,存放需送出的數(shù)據(jù) /置4094于串行移位工作方式 /置串行口于工作方式0 /送出高八位數(shù)據(jù) /檢查是否傳送完畢 /傳完清除標(biāo)志位,準(zhǔn)備下一次數(shù)據(jù)傳輸 /置4094于并行輸出工作方式 /串行口數(shù)據(jù)發(fā)送完畢,P3.1上已停止同步移位脈沖/為使4094并行輸出數(shù)據(jù),軟件產(chǎn)生一個脈沖上升沿 /原地循環(huán) 第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口例例7.27.2匯編語言參考程序如下:匯編語言參考程序如下:ORG 0000HO
35、RG 0000HLJMP OUT LJMP OUT ORG 0100HORG 0100HOUT: SETB P1.OUT: SETB P1.0 0 MOV SCON,#00H MOV SCON,#00H MOV R0,#31HMOV R0,#31HMOV SBUF,R0 MOV SBUF,R0 JNB TI,$ JNB TI,$ CLR TI CLR TI CLR P1.CLR P1.0 0 CLR P3.1 CLR P3.1 SETB P3.1SETB P3.1 ; ;跳轉(zhuǎn)至跳轉(zhuǎn)至OUTOUT程序段程序段 ; ;置置40944094于串行移位工作方式于串行移位工作方式 ; ;置串行口于工作方
36、式置串行口于工作方式0 0 ; ;將將31H31H單元的數(shù)寫入單元的數(shù)寫入SBUFSBUF,啟動發(fā)送,啟動發(fā)送 ; ;檢測串行口發(fā)送數(shù)據(jù)是否完畢,未完等待檢測串行口發(fā)送數(shù)據(jù)是否完畢,未完等待 ; ;發(fā)送完畢后清發(fā)送完畢后清TITI標(biāo)志標(biāo)志 ; ;置置40944094于并行輸出工作方式于并行輸出工作方式 ; ;數(shù)據(jù)發(fā)送完,停止同步移位脈沖數(shù)據(jù)發(fā)送完,停止同步移位脈沖 ; ;為使為使40944094并行輸出數(shù)據(jù),軟件產(chǎn)生一個脈沖上升沿并行輸出數(shù)據(jù),軟件產(chǎn)生一個脈沖上升沿第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口 方式1:真正用于串行發(fā)送或接收,為10位通用異步接口。
37、TXD與RXD分別用于發(fā)送與接收數(shù)據(jù);m幀格式:1位起始位、8位數(shù)據(jù)位(低位在前)、1位停止位,共10位;m在接收時,停止位進(jìn)入SCON的RB8,7.3.2 7.3.2 工作方式工作方式1 11 1、工作原理、工作原理第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口方式方式1 1,波特率是可變的,以定時,波特率是可變的,以定時/ /計數(shù)器計數(shù)器T1T1的溢出率的溢出率作為波特率發(fā)生器,其關(guān)系式如下:作為波特率發(fā)生器,其關(guān)系式如下:23212256SMOD-Xoscf波特率()m方式1發(fā)送時,數(shù)據(jù)從引腳TXD(P3.1)端輸出。m當(dāng)執(zhí)行寫入發(fā)送SBUF的命令時,啟動了發(fā)
38、送器。m發(fā)送移位時鐘由定時器T1送來的溢出信號經(jīng)過16分頻或32分頻而得到的,方式1的波特率TX是可變的。第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口方式方式1和接收時序和接收時序m 方式1接收時,數(shù)據(jù)從引腳RXD(P3.0)端輸入。m接收的先決條件:REN位置1并檢測到起始位(RXD上檢測到10的跳變)而開始的。第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口當(dāng)一幀數(shù)據(jù)接收完畢后,還需判斷是否滿足以下條件,這次當(dāng)一幀數(shù)據(jù)接收完畢后,還需判斷是否滿足以下條件,這次接受才真正有效:接受才真正有效:RI=0RI=0。表示上一幀數(shù)據(jù)已被取走。表
39、示上一幀數(shù)據(jù)已被取走。SM2=0SM2=0或收到的停止位為或收到的停止位為1 1(方式(方式1 1時,停止位進(jìn)入時,停止位進(jìn)入RB8RB8)。)。 滿足以上條件則將接收到的數(shù)據(jù)裝入串行口的滿足以上條件則將接收到的數(shù)據(jù)裝入串行口的SBUFSBUF并置位并置位RIRI;如果不滿足,則該幀信息將會;如果不滿足,則該幀信息將會丟失丟失。 值得注意的是,在整個接收過程中,值得注意的是,在整個接收過程中,REN=1REN=1是一個先決條件。是一個先決條件。只有當(dāng)只有當(dāng)REN=1REN=1時,才能對時,才能對RXDRXD進(jìn)行檢測。進(jìn)行檢測。第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的
40、串行口m串行通信的編程有兩種方式:查詢方式和中斷方式。串行通信的編程有兩種方式:查詢方式和中斷方式。m都要注意清除標(biāo)志位都要注意清除標(biāo)志位TITI和和RIRI。 )(X-2561232212000oscf2. 2.應(yīng)用實(shí)例應(yīng)用實(shí)例例例7.3 7.3 設(shè)甲乙兩個單片機(jī)系統(tǒng)以串行工作方式設(shè)甲乙兩個單片機(jī)系統(tǒng)以串行工作方式1 1進(jìn)行數(shù)據(jù)傳進(jìn)行數(shù)據(jù)傳送,送,11.0592MHz11.0592MHz,波特率為,波特率為1200b/s1200b/s。甲機(jī)發(fā)送的。甲機(jī)發(fā)送的1616個字節(jié)個字節(jié)數(shù)據(jù)存在片內(nèi)數(shù)據(jù)存在片內(nèi)RAM40HRAM40H4FH4FH單元中,乙機(jī)接收后存在片內(nèi)單元中,乙機(jī)接收后存在片內(nèi)RA
41、M 50HRAM 50H為首的地址區(qū)域中。為首的地址區(qū)域中。解:串行工作方式解:串行工作方式1 1的波特率取決于定時器的波特率取決于定時器T1T1的溢出率的溢出率( (設(shè)設(shè)SMOD=0)SMOD=0),T1T1工作在方式工作在方式2 2,則,則T1T1的計數(shù)初值的計數(shù)初值X X:X X第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口m采用查詢方式進(jìn)行通信時,發(fā)送和接收子程序流程圖: 甲機(jī)發(fā)送程序:甲機(jī)發(fā)送程序:#include #define uchar unsigned char uchar idata buf16; uchar i; void main( ) TM
42、OD=0 x20; TL1=0 xE8; TH1=0 xE8; PCON=0 x00; SCON=0 x40; TR1=1; for(i=0;i16;i+) SBUF=bufi; while(TI= =0); TI=0; /包含特殊功能寄存器庫包含特殊功能寄存器庫 /定義定義uchar為無符號字符數(shù)據(jù)類型為無符號字符數(shù)據(jù)類型 /定義數(shù)組,將發(fā)送的定義數(shù)組,將發(fā)送的16個數(shù)據(jù)存放在個數(shù)據(jù)存放在buf數(shù)組數(shù)組 /定義變量定義變量i,作為作為16個數(shù)據(jù)循環(huán)發(fā)送的次數(shù)記錄個數(shù)據(jù)循環(huán)發(fā)送的次數(shù)記錄/置置T1定時器工作方式定時器工作方式2 /置置T1計數(shù)初值計數(shù)初值 /置置SMOD=0 /工作在方式工作在
43、方式1,不允許接收,不允許接收 / T1啟動計數(shù)啟動計數(shù)/循環(huán)發(fā)送循環(huán)發(fā)送16個數(shù)據(jù)個數(shù)據(jù) /發(fā)送數(shù)據(jù)發(fā)送數(shù)據(jù) /等待發(fā)送完畢等待發(fā)送完畢 /發(fā)送完后清中斷標(biāo)志發(fā)送完后清中斷標(biāo)志甲機(jī)發(fā)送程序:甲機(jī)發(fā)送程序:ORG 0000H LJMP TXDA ORG 0100H TXDA: MOV TMOD,#20H MOV TL1,#0E8H MOV TH1,#0E8H CLR ET1 SETB TR1 MOV SCON,#40H MOV PCON,#00H CLR ES MOV R0,#40H MOV R2,#16TRSA: MOV A,R0 MOVSBUF,A JNBTI,$ CLR CLRTI TI
44、 INC INCR0R0 DJNZ DJNZR2,TRSA R2,TRSA SJMP $ SJMP $ ; 上電后程序從上電后程序從00000H開始開始 ;轉(zhuǎn)移到主程序轉(zhuǎn)移到主程序 ;主程序從主程序從0100H開始開始 ;置置T1定時器工作方式定時器工作方式2 ;置置T1計數(shù)初值計數(shù)初值. ;置置T1計數(shù)重裝值計數(shù)重裝值;禁止禁止T1中斷中斷;T1啟動啟動 ;置串行方式置串行方式1,禁止接收禁止接收 ;置置SMOD=0(SMOD不能位操作不能位操作) ;禁止串行中斷禁止串行中斷 ;置發(fā)送數(shù)據(jù)區(qū)首地址置發(fā)送數(shù)據(jù)區(qū)首地址 ;置發(fā)送數(shù)據(jù)長度置發(fā)送數(shù)據(jù)長度 ;讀一個數(shù)據(jù)讀一個數(shù)據(jù) ;發(fā)送發(fā)送 ;等待一
45、幀數(shù)據(jù)發(fā)送完畢等待一幀數(shù)據(jù)發(fā)送完畢 ; ;清發(fā)送中斷標(biāo)志清發(fā)送中斷標(biāo)志 ; ;指向下一字節(jié)單元指向下一字節(jié)單元 ; ;判判16個數(shù)據(jù)發(fā)完否個數(shù)據(jù)發(fā)完否?未完繼續(xù)未完繼續(xù) ; ;循環(huán)等待循環(huán)等待乙機(jī)接收程序如下:乙機(jī)接收程序如下: #include #include #define uchar unsigned char #define uchar unsigned char uchar i; uchar i; void mainvoid main( ) unsigned char unsigned char * *P; P; P=0 x50; P=0 x50; TMOD=0 x20TMOD=0
46、 x20; TL1=0 xE8 TL1=0 xE8; TH1=0 xE8TH1=0 xE8; PCON=0 x00; PCON=0 x00; SCON=0 x50; SCON=0 x50; TR1=1TR1=1; forfor(i=0;i16;i+i=0;i16;i+) while while(RI= =0RI= =0); ; RI=0; RI=0; * *P =SBUF; P =SBUF; P+ P+; / /包含特殊功能寄存器庫包含特殊功能寄存器庫 / /定義定義ucharuchar為無符號字符數(shù)據(jù)類型為無符號字符數(shù)據(jù)類型 / /定義變量定義變量i i,作為接收,作為接收1616個數(shù)據(jù)的次
47、數(shù)記錄。個數(shù)據(jù)的次數(shù)記錄。 / /主函數(shù)主函數(shù) / /定義指針變量并賦初值定義指針變量并賦初值 / /置置T1T1定時器工作方式定時器工作方式2 2 / /置置T1T1計數(shù)初值計數(shù)初值 / /置置SMOD=0SMOD=0 / /工作在方式工作在方式1 1,允許接收,允許接收 / T1/ T1啟動計數(shù)啟動計數(shù) /循環(huán)體(連續(xù)接收循環(huán)體(連續(xù)接收1616個數(shù)據(jù))個數(shù)據(jù)) / /等待接收數(shù)據(jù)等待接收數(shù)據(jù) / /接收完一個字節(jié)的數(shù)據(jù)后清中斷標(biāo)志接收完一個字節(jié)的數(shù)據(jù)后清中斷標(biāo)志 / /接收數(shù)據(jù),送指定單元接收數(shù)據(jù),送指定單元/單元地址加單元地址加1 1,準(zhǔn)備存放下一個數(shù)據(jù),準(zhǔn)備存放下一個數(shù)據(jù)乙機(jī)接收程序
48、:乙機(jī)接收程序:ORG 0000H ORG 0000H LJMP RXDB LJMP RXDB ORG 0100H ORG 0100H RXDB: MOV TMOD,#20HRXDB: MOV TMOD,#20H MOV TL1,#0E8H MOV TL1,#0E8H MOV TH1,#0E8H MOV TH1,#0E8H CLR ET1 CLR ET1 SETB TR1 SETB TR1 MOV SCON,#40H MOV SCON,#40H MOV PCON,#00H MOV PCON,#00H CLR ES CLR ES MOV R0,#50HMOV R0,#50H MOV R2,#16
49、 MOV R2,#16 SETB REN SETB RENRDSB: JNBRDSB: JNB RI,$ RI,$ CLR CLR RI RI MOV MOV A,SBUF A,SBUF MOV MOV R0,A R0,A INC INC R0 R0 DJNZ DJNZ R2,RDSB R2,RDSB SJMP $ SJMP $ ; ;在在0000H0000H單元存放轉(zhuǎn)移指令單元存放轉(zhuǎn)移指令 ; ;轉(zhuǎn)移到主程序轉(zhuǎn)移到主程序; ;主程序從主程序從0100H0100H開始開始; ;置置T1T1定時器工作方式定時器工作方式2 2; ;置置T1T1計數(shù)初值計數(shù)初值; ;置置T1T1計數(shù)重裝值計數(shù)重裝值
50、 ; ;禁止禁止T1T1中斷中斷 ;T1;T1啟動啟動; ;置串行方式置串行方式1, 1,禁止接收禁止接收; ;置置SMOD=0(SMODSMOD=0(SMOD不能位操作不能位操作) ); ;禁止串行中斷禁止串行中斷 ; ;置接收數(shù)據(jù)區(qū)首地址置接收數(shù)據(jù)區(qū)首地址 ; ;置接收數(shù)據(jù)長度置接收數(shù)據(jù)長度; ;啟動接收啟動接收; ;等待一幀數(shù)據(jù)接收完畢等待一幀數(shù)據(jù)接收完畢; ;清接收中斷標(biāo)志清接收中斷標(biāo)志; ;讀接收數(shù)據(jù)讀接收數(shù)據(jù); ;存接收數(shù)據(jù)存接收數(shù)據(jù); ;指向下一數(shù)據(jù)存儲單元指向下一數(shù)據(jù)存儲單元; ;判判1616個數(shù)據(jù)接收完否個數(shù)據(jù)接收完否? ?未完繼續(xù)未完繼續(xù) ; ;循環(huán)等待循環(huán)等待第第7 7章
51、章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口全雙工應(yīng)用實(shí)例m利用AT89S51單片機(jī)的串行口,設(shè)計一個工作方式1的全雙工收發(fā)程序,并將接收到的數(shù)據(jù)借助P1口進(jìn)行LED顯示。假設(shè)晶振頻率為11.0592MHz,SMOD=0,波特率為2400b/s。雙方均采用中斷方式進(jìn)行通信。2240032122560-Xoscf()解:串行工作方式解:串行工作方式1的波特率取決于的波特率取決于T1的溢出率,的溢出率,T1工作于工作于方式方式2,當(dāng),當(dāng)SMOD=0時,則時,則T1的計數(shù)初值的計數(shù)初值X: XF4H,(TH1)=(TL1)=F4H 要求:要求:發(fā)送器來說,發(fā)送發(fā)送器來說,發(fā)送1幀數(shù)
52、據(jù)后,接收回執(zhí)信息幀數(shù)據(jù)后,接收回執(zhí)信息0,并用,并用P1顯示;顯示;接收器,接收接收器,接收1幀數(shù)據(jù)并存儲后,向甲方發(fā)送一個回執(zhí)信號幀數(shù)據(jù)并存儲后,向甲方發(fā)送一個回執(zhí)信號0;mC語言參考程序如下:發(fā)送方源程序:/初始化串行口void csh( )SM0=0;SM1=1; REN=1; TI=0;RI=0;PCON=0; TH1=0 xF4;TL1=0XF4; TMOD=0X20; EA=1;ES=1; TR1=1; void main()char c=data; csh( ); while(1) TI=0;SBUF=c; while(!TI); TI=0; void intrr( ) int
53、errupt 4 char temp;temp=SBUF;P1=temp; RI=0; EA=0; /置串行方式1 /允許接收 /設(shè)置SMOD=0 /設(shè)置TH1、TL1初值 /設(shè)置T1工作方式 /開中斷 /開定時器T1,產(chǎn)生波特率 /定義待發(fā)送的數(shù)據(jù)data /調(diào)用初始化函數(shù) /發(fā)送一組數(shù)據(jù) /等待發(fā)送結(jié)束 /顯示接收到的回執(zhí)信號 /關(guān)中斷接收方源程序:接收方源程序:/初始化串行口初始化串行口void csh( )void csh( ) SM0=0;SM0=0;SM1=1; SM1=1; REN=1; REN=1; TI=0;TI=0;RI=0;RI=0;PCON=0; PCON=0; TH1
54、=0 xF4;TH1=0 xF4;TL1=0XF4; TL1=0XF4; TMOD=0X20; TMOD=0X20; EA=1;EA=1;ES=1; ES=1; TR1=1; TR1=1; / /設(shè)置工作方式設(shè)置工作方式1 1 / /允許接收允許接收 /設(shè)置設(shè)置SMOD=0SMOD=0 /T1/T1設(shè)置初值設(shè)置初值 /T1/T1設(shè)置工作方式設(shè)置工作方式 / /開中斷開中斷 / / 開啟定時器開啟定時器T1T1 /串行口和T1初始化 /等待串行口接收中斷 /串行口接收中斷函數(shù) /保存接收到數(shù)據(jù) /顯示串行口接收到的數(shù)據(jù) /發(fā)送和接收標(biāo)志清0 /向甲方發(fā)送一個回執(zhí)信號0 /關(guān)中斷void main
55、( )csh( ); while(1); void intrr( ) interrupt 4 char temp;temp=SBUF; P1=temp; RI=0;TI=0; SBUF=0; while(!TI);TI=0; EA=0; 全雙工源程序:全雙工源程序:/初始化串行口初始化串行口void csh( )void csh( ) SM0=0;SM0=0;SM1=1; SM1=1; REN=1; REN=1; TI=0;TI=0;RI=0;RI=0;PCON=0; PCON=0; TH1=0 xF4;TH1=0 xF4;TL1=0XF4; TL1=0XF4; TMOD=0X20; TMOD
56、=0X20; TR1=1; TR1=1; EA=1;EA=1;ES=1; ES=1; / /設(shè)置工作方式設(shè)置工作方式1 1 / /允許接收允許接收 /設(shè)置設(shè)置SMOD=0SMOD=0 /T1/T1設(shè)置初值設(shè)置初值 /T1/T1設(shè)置工作方式設(shè)置工作方式 / /開中斷開中斷 / / 開啟定時器開啟定時器T1T1 /串行口和T1初始化 /等待串行口接收中斷 /串行口接收中斷函數(shù) /接收中斷,并清0 /保存接收到的數(shù)據(jù) /進(jìn)行LED顯示 /發(fā)送標(biāo)志清0 /發(fā)送下一幀數(shù)據(jù)void main( ) csh( ); char data *c ; char data *temp; while(1); void
57、 intrr( ) interrupt 4 while(!TI) RI=0; char *temp; temp+;*temp=SBUF; P1=temp; TI=0; c+; SBUF=*C; 中斷方式,另外甲機(jī)發(fā)送片內(nèi)RAM一組數(shù)據(jù),并將接收數(shù)據(jù)存入片內(nèi)ram內(nèi)第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口7.3.3 方式方式2方式2和方式3,9位異步通信接口。每幀數(shù)據(jù)為每幀數(shù)據(jù)為11位位,1位起始位0,8位數(shù)據(jù)位(先低位),1位可程控為1或0的第9位數(shù)據(jù)和1位停止位. 62SMOD264方式方式2波特率波特率 = fosc第第7 7章章 AT89S51 AT89
58、S51單片機(jī)的串行口單片機(jī)的串行口1)方式方式2發(fā)送發(fā)送發(fā)送前,先根據(jù)通信協(xié)議由軟件設(shè)置先根據(jù)通信協(xié)議由軟件設(shè)置TB8(如奇偶校驗(yàn)位或多機(jī)通信的地址/數(shù)據(jù)標(biāo)志位),然后將要發(fā)送的數(shù)據(jù)寫入SBUF,即啟動發(fā)送。TB8自動裝入自動裝入第9位數(shù)據(jù)位,逐一發(fā)送。發(fā)送完畢,使TI位置“1”。63第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口2)方式方式2接收接收SM0、SM1=10,且,且REN = 1時,以方式時,以方式2接收數(shù)據(jù)。數(shù)據(jù)接收數(shù)據(jù)。數(shù)據(jù)由由RXD端輸入,接收端輸入,接收11位信息。當(dāng)位檢測邏輯采樣到位信息。當(dāng)位檢測邏輯采樣到RXD的的負(fù)跳變,便開始接收一幀信息
59、。負(fù)跳變,便開始接收一幀信息。接收第接收第9位數(shù)據(jù)后,位數(shù)據(jù)后,需滿足以下兩個條件,需滿足以下兩個條件,才將接收到的數(shù)才將接收到的數(shù)據(jù)送入據(jù)送入SBUF,且且RI置置“1”。 。(1)RI = 0,意味著接收緩沖器為空。,意味著接收緩沖器為空。(2)SM2 = 0或接收到的第或接收到的第9位數(shù)據(jù)位位數(shù)據(jù)位RB8 = 1。若不滿足這兩個條件若不滿足這兩個條件,接收的信息將被丟棄。第第7 7章章 AT89S51 AT89S51單片機(jī)的串行口單片機(jī)的串行口2. 2. 應(yīng)用實(shí)例:應(yīng)用實(shí)例:方式方式2 2實(shí)現(xiàn)雙機(jī)通信,帶有奇偶校驗(yàn)和應(yīng)答功實(shí)現(xiàn)雙機(jī)通信,帶有奇偶校驗(yàn)和應(yīng)答功能能 例例7.5 7.5 設(shè)計一
60、個串行方式設(shè)計一個串行方式2 2收發(fā)程序,設(shè)收發(fā)程序,設(shè)SMOD=1SMOD=1,波特率,波特率固定為。固定為。甲機(jī)甲機(jī): :發(fā)送發(fā)送片內(nèi)片內(nèi)RAM50H5FHRAM50H5FH中的數(shù)據(jù),第中的數(shù)據(jù),第9 9位數(shù)據(jù)作為奇偶位數(shù)據(jù)作為奇偶校驗(yàn)位,采用校驗(yàn)位,采用偶校驗(yàn)偶校驗(yàn)方式,接到接收方核對正確的回復(fù)信號方式,接到接收方核對正確的回復(fù)信號(用(用00H00H表示)后,再發(fā)送下一字節(jié)數(shù)據(jù),否則重發(fā)該字節(jié)。表示)后,再發(fā)送下一字節(jié)數(shù)據(jù),否則重發(fā)該字節(jié)。乙機(jī)乙機(jī): :接收到的數(shù)據(jù)存在接收到的數(shù)據(jù)存在首址為首址為40H40H的片內(nèi)的片內(nèi)RAMRAM中,并核對奇中,并核對奇偶校驗(yàn)位。偶校驗(yàn)位。核對正確核
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 社交媒體運(yùn)營總結(jié)
- 二零二五年度企業(yè)財務(wù)報表分析及投資建議合同范本3篇
- 二零二五年度購物中心物業(yè)管理合同延期及消防設(shè)施補(bǔ)充協(xié)議范本3篇
- 二零二五年度個人消費(fèi)貸款合同貸后管理服務(wù)標(biāo)準(zhǔn)4篇
- 二零二五版水電站經(jīng)營權(quán)承包與電力價格協(xié)商合同3篇
- 報銷流程及相關(guān)知識培訓(xùn)
- 豐富教學(xué)手段增強(qiáng)學(xué)生語文素養(yǎng)
- 二零二五年度個人合伙清算協(xié)議書(清算期間債務(wù)重組)4篇
- 新課標(biāo)人教版小學(xué)語文六年級下冊復(fù)習(xí)題及答案
- 二零二五版水利工程臨時設(shè)施搭建勞務(wù)分包合同示范文本3篇
- 六年級數(shù)學(xué)上冊100道口算題(全冊完整版)
- 八年級數(shù)學(xué)下冊《第十九章 一次函數(shù)》單元檢測卷帶答案-人教版
- 帕薩特B5維修手冊及帕薩特B5全車電路圖
- 高三數(shù)學(xué)開學(xué)第一課
- 系統(tǒng)解剖學(xué)考試重點(diǎn)筆記
- 小學(xué)五年級解方程應(yīng)用題6
- 云南省地圖含市縣地圖矢量分層地圖行政區(qū)劃市縣概況ppt模板
- 年月江西省南昌市某綜合樓工程造價指標(biāo)及
- 暖通空調(diào)基礎(chǔ)知識及識圖課件
- 作物栽培學(xué)課件棉花
- 防滲墻工程施工用表及填寫要求講義
評論
0/150
提交評論