第6章串行通信AVR單片機應用技術(shù)項目化教程課件_第1頁
第6章串行通信AVR單片機應用技術(shù)項目化教程課件_第2頁
第6章串行通信AVR單片機應用技術(shù)項目化教程課件_第3頁
第6章串行通信AVR單片機應用技術(shù)項目化教程課件_第4頁
第6章串行通信AVR單片機應用技術(shù)項目化教程課件_第5頁
已閱讀5頁,還剩173頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第6章串行通信

串行通信基礎(chǔ)一ATmega16異步串行通信接口二單片機I/O口模擬串行通信三項目設(shè)計四第6章串行通信串行通信基礎(chǔ)一AT在實際中外部設(shè)備與單片機之間或單片機與單片機之間、單片機與計算機之間交換數(shù)據(jù),可以只通過2條線甚至一條線就完成數(shù)據(jù)的傳輸與交換。這時數(shù)據(jù)位排成一串,在數(shù)據(jù)線上傳輸,每個時間段只能傳輸一個比特位,且時間間隔為規(guī)定長度,這就是串行通信。第6章串行通信在實際中外部設(shè)備與單片機之間或單片機與單片機之間、單6.1.1串行通信與并行通信6.1串行通信基礎(chǔ) 前面所討論的AVR單片機I/O口,其數(shù)據(jù)傳輸是按字節(jié)進行,一個字節(jié)8個比特位分別與I/O口位線相對應,同時從8個I/O口輸入、輸出,一個字節(jié)傳輸只需要時間T即可完成,這是數(shù)據(jù)的并行傳輸,如圖6-1所示。并行傳輸具有傳輸線多、速度快、編程簡單、通信距離短的特點。6.1.1串行通信與并行通信6.1串行通信基礎(chǔ) 前面所討論6.1.1串行通信與并行通信6.1串行通信基礎(chǔ)6.1.1串行通信與并行通信6.1串行通信基礎(chǔ)6.1.1串行通信與并行通信6.1串行通信基礎(chǔ) 在串行數(shù)據(jù)傳輸中,一個字節(jié)8個比特數(shù)據(jù)排成一串,可以高位(MBS)在前,也可以低位在前(LBS),依次在數(shù)據(jù)線上進行傳輸。如果其傳輸速度與并行通信的速度相等且都為T,則串行通信中傳輸完一個字節(jié)所需要時間為8T,傳輸n個比特位則需要nT時間,如圖6-2所示。串行通信具有傳輸線少、成本低等特點,比較適合遠通信。6.1.1串行通信與并行通信6.1串行通信基礎(chǔ) 在串行數(shù)據(jù)6.1.1串行通信與并行通信6.1串行通信基礎(chǔ)6.1.1串行通信與并行通信6.1串行通信基礎(chǔ)6.1.2串行通信方式6.1串行通信基礎(chǔ)根據(jù)串行通信的組成形式和數(shù)據(jù)傳輸方向,串行通信有3種通信方式:單工、半雙工、全雙工。6.1.2串行通信方式6.1串行通信基礎(chǔ)根據(jù)串行通6.1.2串行通信方式6.1串行通信基礎(chǔ) 單工通信如圖6-3a所示。單工通信只允許數(shù)據(jù)在一個方向上傳輸,發(fā)送端只能發(fā)送數(shù)據(jù),接收端只能接收數(shù)據(jù)。 半工通信如圖6-3b所示。半雙工通信數(shù)據(jù)可以在兩個方向傳輸,但不能同時進行數(shù)據(jù)收、發(fā)。發(fā)送端在發(fā)送數(shù)據(jù)的同時,接收端只能接收數(shù)據(jù),反之亦然。通過開關(guān)切換,可以將收發(fā)端功能互換,原來的接收端發(fā)送數(shù)據(jù),原來的發(fā)送端接收數(shù)據(jù)。 全雙工通信分別有獨立的接收線和獨立的發(fā)送線,數(shù)據(jù)的收發(fā)可以同時進行,且互不影響,如圖6-3c所示。在單片機系統(tǒng)中,三種串行通信方式都有應用。6.1.2串行通信方式6.1串行通信基礎(chǔ) 單工通信如圖6-6.1.3同步通信與異步通信6.1串行通信基礎(chǔ)1.同步通信SYNC(SynchronousCommunication)同步通信以數(shù)據(jù)塊為傳輸單元,一個數(shù)據(jù)塊中包含了若干個數(shù)據(jù)字符(比如數(shù)據(jù)字節(jié)),僅在數(shù)據(jù)塊首部設(shè)置有1~2個同步字符,用以進行數(shù)據(jù)通信。一旦建立數(shù)據(jù)同步,就可以進行數(shù)據(jù)字符的傳輸,中間無需再同步,數(shù)據(jù)塊中的數(shù)據(jù)字符長度可定義,如圖6-4。6.1.3同步通信與異步通信6.1串行通信基礎(chǔ)1.同步6.1.3同步通信與異步通信6.1串行通信基礎(chǔ)1.同步通信由于同步通信是以數(shù)據(jù)塊為傳輸單元,冗余數(shù)據(jù)信息少,因此同步通信的通信速度很高,可達到Mbps以上。在單片機系統(tǒng)中,采用同步串行通信時可以取消數(shù)據(jù)塊前面的同步字符,用專門的時鐘線來傳遞同步信號,以保證收發(fā)端數(shù)據(jù)的嚴格同步。因此,在單片機的同步通信中,單工或半雙工的通信硬件連接時需要兩條線,一條傳輸數(shù)據(jù),另一條專用于傳輸時鐘信號,而在全雙工通信中則需要3條線,1條數(shù)據(jù)輸入、1條數(shù)據(jù)輸出、1條時鐘線。6.1.3同步通信與異步通信6.1串行通信基礎(chǔ)1.同步6.1.3同步通信與異步通信6.1串行通信基礎(chǔ)2、異步通信異步通信以字符為傳輸單位,通信中兩個字符的時間間隔不固定(異步),而字符中的兩個相鄰的比特位的時間是固定的(同步)。在異步通信中,沒有專門的、獨立的同步時鐘信號,典型的異步通信的數(shù)據(jù)幀格式如圖6-5所示,由起始位、數(shù)據(jù)位、奇偶校驗位、停止位所組成。起始位為一固定時間長度的低電平,表示一幀數(shù)據(jù)的開始,接著就是傳輸?shù)臄?shù)據(jù),其長度有5位、6位、7位、8位、9位等。數(shù)據(jù)位后面是奇偶校驗位,指示數(shù)據(jù)通信的出錯情況。校驗位后面是1位或2位停止位。停止位為高電平,表示這一幀數(shù)據(jù)的結(jié)束。6.1.3同步通信與異步通信6.1串行通信基礎(chǔ)2、異步通6.1.3同步通信與異步通信6.1串行通信基礎(chǔ)2、異步通信數(shù)據(jù)幀后面跟著幾位保證數(shù)據(jù)可靠傳輸?shù)目臻e位。異步通信數(shù)據(jù)幀的間隔時間不同,通信時數(shù)據(jù)是一幀一幀進行傳輸,每幀通過起始位來同步。由于異步通信中沒有專門的時鐘同步信號,因此在芯片內(nèi)部需要專門的時序還原電路從異步數(shù)據(jù)幀中提取時鐘信號,以保證接收的數(shù)據(jù)被正常還原。6.1.3同步通信與異步通信6.1串行通信基礎(chǔ)2、異步通6.1.3同步通信與異步通信6.1串行通信基礎(chǔ)3、波特率(BaudRate) 波特率是表示串行通信傳輸數(shù)據(jù)快慢的物理參數(shù),其定義為單位時間內(nèi)傳輸?shù)亩M制bit數(shù),用位/秒(BitperSecond)表示,或?qū)懗蒪ps。如串行通信中的數(shù)據(jù)傳輸波特率為128bps,意為每秒鐘傳輸128個bit,合計16個字節(jié),傳輸一個比特所需要的時間為:1/128bps=0.0078秒=7.8毫秒。傳輸一個字節(jié)的時間為:7.8×8=62.4毫秒。在異步通信中,常見的波特率通常有1200、2400、4800、9600等,其單位都是bps。高速的可以達到19200bps。異步通信中允許收發(fā)端的時鐘(波特率)誤差不超過5%。6.1.3同步通信與異步通信6.1串行通信基礎(chǔ)3、波特率6.1.4同步通信與異步通信6.1串行通信基礎(chǔ) 由于串行通信方式能實現(xiàn)較遠距離的數(shù)據(jù)傳輸,因此在遠距離控制時或在工業(yè)控制現(xiàn)場通常使用串行通信方式來傳輸數(shù)據(jù)。由于遠距離數(shù)據(jù)傳輸時普通的TTL或CMOS電平無法滿足工業(yè)現(xiàn)場的干擾和各種電氣性能,因此不能用于直接進行遠距離的數(shù)據(jù)傳輸。國際電氣工業(yè)協(xié)會EIA推出了RS-232、RS485等接口標準。6.1.4同步通信與異步通信6.1串行通信基礎(chǔ) 由于串行6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)1、RS-232接口 RS-232C是1969年電子工業(yè)協(xié)會(EIA)制定的在數(shù)據(jù)終端設(shè)備DTE和數(shù)據(jù)通訊設(shè)備(DCE)之間的串行的二進制數(shù)據(jù)交換的接口,全稱是EIA-RS-232-C協(xié)議,實際中常稱RS-232,也稱EIA-232,最初采用DB-25作為連接器,包含雙通道,但是現(xiàn)在也有采用DB-9的單通道接口連接,其端口定義見表6-1所示。在實際中,DB9由于結(jié)構(gòu)簡單,僅需要3根線就可以完成全雙工通信,所以在實際中使用比較多,應用廣泛。6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)1、RS-6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)1、RS-232接口

6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)1、RS-6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)1、RS-232接口

6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)1、RS-6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)1、RS-232接口 RS-232采用負邏輯電平,用負電壓表示數(shù)字信號邏輯‘1’,用正電平表示數(shù)字信號的邏輯‘0’。規(guī)定邏輯‘1’的電壓范圍為-5—-15V,邏輯‘0’的電壓范圍為+5V-—+15V。 RS-232-C標準規(guī)定,驅(qū)動器允許有2500pF的電容負載,通信距離將受此電容限制,例如,采用150pF/m的通信電纜時,最大通信距離為15m;若每米電纜的電容量減小,通信距離可以增加。傳輸距離短的另一原因是RS-232屬單端信號傳送,存在共地噪聲和不能抑制共模干擾等問題,因此一般用于20m以內(nèi)的通信。6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)1、RS-6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)2.RS-485接口規(guī)范RS-485為彌補RS-232之不足而提出的。為改進RS-232通信距離短、速率低的缺點,RS-485定義了一種平衡通信接口,將傳輸速率提高到10Mbps,傳輸距離延長到4000英尺(速率低于100kbps時),并允許在一條平衡線上連接最多10個接收器。RS-485是一種單機發(fā)送、多機接收的單向、平衡傳輸規(guī)范,為擴展應用范圍,隨后又為其增加了多點、雙向通信能力,即允許多個發(fā)送器連接到同一條總線上,同時增加了發(fā)送器的驅(qū)動能力和沖突保護特性,擴展了總線共模范圍,其特點可以總結(jié)為:6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)2.RS6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)2.RS-485接口規(guī)范(1)差分平衡偉輸;(2)多點通信;(3)驅(qū)動器輸出電壓(帶載):≥|1.5V|;(4)接收器輸入門限:±200mV;(5)-7V至+12V總線共模范圍;(6)最大輸入電流:1.0mA/-0.8mA(7)最大總線負載:32個單位負載(UL);(8)最大傳輸速率:10Mbps;(9)最大電纜長度:4000英尺(3000米)。6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)2.RS6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)2.RS-485接口規(guī)范RS-485接口是采用平衡驅(qū)動器和差分接收器的組合,抗共模干能力增強,即抗噪聲干擾性好。RS-485的電氣特性是用傳輸線之間的電壓差表示邏輯信號,邏輯“1”以兩線間的電壓差為+(2—6)V表示;邏輯“0”以兩線間的電壓差為-(2—6)V表示。 RS-232-C接口在總線上只允許連接1個收發(fā)器,即一對一通信方式。而RS-485接口在總線上是允許不只一個收發(fā)器存在,總線允許最多128個收發(fā)器存在,具備多站能力,基于RS-485接口可以方便的組建設(shè)備網(wǎng)絡,實現(xiàn)組網(wǎng)傳輸或組網(wǎng)控制。6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)2.RS6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)2.RS-485接口規(guī)范由于RS-485接口具有良好的抗噪聲干擾性,使之成為遠傳輸距離、多機通信的首選串行接口。RS-485允許總線存在多主機負載,其僅僅是一個電氣接口規(guī)范,只規(guī)定了平衡驅(qū)動器和接收器的物理層電特性,而對于保證數(shù)據(jù)可靠傳輸和通信的連接層、應用層等協(xié)議在RS-485中并沒有定義,需要用戶在實際使用中予以定義。Modbus、RTU等是基于RS-485物理鏈路的常見的通信協(xié)議。6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)2.RS6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)3.串行通信接口電平轉(zhuǎn)換

(1)TTL/CMOS電平與RS-232電平轉(zhuǎn)換 TTL/CMOS電平采用的是0-5V的正邏輯,即0V表示邏輯0,5V表示邏輯1,而RS-232采用的負邏輯,邏輯0用+5V-+15V表示,邏輯1用-5V--15V表示。在TTL/CMOS的單片機系統(tǒng)中,如果使用RS-232串行口進行通信,必須進行電平轉(zhuǎn)換。MAX232是一種常見的RS-232電平電平轉(zhuǎn)換芯片,單芯片解決全雙工通信方案,單電源工作,外圍僅需少數(shù)幾個電容器即可,其邏輯圖和應用原理見圖6-7、6-8所示。6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)3.串6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)3.串行通信接口電平轉(zhuǎn)換

(1)TTL/CMOS電平與RS-232電平轉(zhuǎn)換

6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)3.串6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)3.串行通信接口電平轉(zhuǎn)換

(2)TTL/CMOS電平與RS-485電平轉(zhuǎn)換 RS-485電平是平衡差分傳輸,而TTL/CMOS是單極性電平,需要經(jīng)過電平轉(zhuǎn)換才能進行信號傳輸。常見的RS-485電平轉(zhuǎn)換芯片有MAX485、MAX487等。MAX485為8個腳的芯片,支持半雙工通信,RO為數(shù)據(jù)接收引腳,RI為數(shù)據(jù)發(fā)送引腳,RE#為接收使能端,DE為發(fā)送使能端。見圖6-9所示。6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)3.串6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)3.串行通信接口電平轉(zhuǎn)換

(2)TTL/CMOS電平與RS-485電平轉(zhuǎn)換6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)3.串6.2.1串行通信接口特點6.2ATmega16異步串行通信接口(1)全雙工通信操作,獨立收發(fā)單元,2級FIFO;(2)支持異步或同步通信方式;(3)具有高精度的專用波特率發(fā)生器;(4)數(shù)據(jù)位長度支持5、6、7、8、9位數(shù)據(jù),(5)硬件奇偶判決功能;(6)具有數(shù)據(jù)過速檢測功能;(7)具有幀錯誤檢測功能;(8)三個獨立的中斷源:發(fā)送結(jié)束中斷,發(fā)送數(shù)據(jù)寄存器空中斷,以及接收結(jié)束中斷;(9)支持多處理器通訊模式。6.2.1串行通信接口特點6.2ATmega16異步串6.2.2串行通信接口組成6.2ATmega16異步串行通信接口 ATmega16串行接口主要由數(shù)據(jù)寄存器、控制寄存器、波特率發(fā)生器、發(fā)送移位寄存器、接收移位寄存器、奇偶校驗電路等電路組成,見圖6-10。6.2.2串行通信接口組成6.2ATmega16異步6.2.2串行通信接口組成6.2ATmega16異步串行通信接口(1)數(shù)據(jù)寄存器UDRUDR數(shù)據(jù)寄存器分為接收數(shù)據(jù)寄存器和數(shù)據(jù)發(fā)送寄存器。(2)控制寄存器分別為UCSRA、UCSRB、UCSRC,通過對控制寄存器的編程,以實現(xiàn)對串行通信口的工作模式、波特率、數(shù)據(jù)格式等進行設(shè)置。(3)波特率發(fā)生器 ATmega16具有專用的波特率發(fā)生器器件,其工作時鐘來源于系統(tǒng)時鐘fosc,經(jīng)過如圖6-11所示的時鐘電路產(chǎn)生數(shù)據(jù)收、發(fā)電路所需要的時鐘信號。6.2.2串行通信接口組成6.2ATmega16異步6.2.2串行通信接口組成6.2ATmega16異步串行通信接口6.2.2串行通信接口組成6.2ATmega16異步6.2.2串行通信接口組成6.2ATmega16異步串行通信接口ATmega16的串行口通過編程可以實現(xiàn)4種時鐘模式,分別為正常的異步模式、倍速異步模式、主機同步模式、從機同步模式。通過對控制寄存器的相關(guān)位進行編程,可以設(shè)定串行口工作在全雙工異步模式或移位寄存器的同步模式。無論是串行口工作與同步模式或異步模式,其波特率均可是可以編程的。在異步模式中,波特率具有倍增功能,在不改變?nèi)魏螀?shù)、數(shù)據(jù)前提下,通過設(shè)置相關(guān)位可以使波特率時鐘提高1倍,以應用于更高通信速度的場合。在同步模式中,同步時鐘源可以編程選擇來自于主機或來自于從機。6.2.2串行通信接口組成6.2ATmega16異步6.2.2串行通信接口組成6.2ATmega16異步串行通信接口(4)發(fā)送移位寄存器發(fā)送移位寄存器的功能是將發(fā)送的數(shù)據(jù)進行轉(zhuǎn)換,將發(fā)送數(shù)據(jù)寄存器UDR中數(shù)據(jù)在時鐘信號的作用進行移位,每一個時鐘數(shù)據(jù)向前移一位,最后將UDR中的并行數(shù)據(jù)變成一串串行數(shù)據(jù)從數(shù)據(jù)發(fā)送引腳TXD發(fā)送出去。(5)接收移位寄存器接收移位寄存器的功能是將接收到的串行數(shù)據(jù)進行轉(zhuǎn)換,在時鐘信號作用下,數(shù)據(jù)接收引腳RXD每收到一個數(shù)據(jù)移位寄存器向前移動移位,實現(xiàn)將接收的串行數(shù)據(jù)轉(zhuǎn)變成并行數(shù)據(jù)的功能,收到的數(shù)據(jù)被放入數(shù)據(jù)接收寄存器UDR中。6.2.2串行通信接口組成6.2ATmega16異步6.2.2串行通信接口組成6.2ATmega16異步串行通信接口(6)奇偶校驗電路奇偶校驗電路是完成對收發(fā)數(shù)據(jù)的奇偶校驗。奇偶校驗是檢測數(shù)據(jù)通信出錯的常用手段,簡單易于實現(xiàn)。當發(fā)送數(shù)據(jù)寄存器UDR中二進制數(shù)1的個數(shù)為奇數(shù)個時,則將相應的奇偶標志位置1,連同數(shù)據(jù)位、啟停位構(gòu)成數(shù)據(jù)幀一并發(fā)送。接收端接收到以后,如果接收寄存器中UDR二進制數(shù)1的個數(shù)為奇數(shù)個,則奇偶標志位不變,依舊為‘1’。因此通過判別對比收發(fā)端奇偶標志可以快速檢測數(shù)據(jù)在傳輸過程中是否出錯,這種規(guī)則稱為“寄校驗”,反之如果1的個數(shù)為偶數(shù)個則將奇偶標志置1的稱為“偶校驗”,在控制寄存器中可以編程選擇“奇校驗”還是“偶校驗”。6.2.2串行通信接口組成6.2ATmega16異步6.2.3串行通信接口寄存器6.2ATmega16異步串行通信接口1.UDR數(shù)據(jù)寄存器 接收器和發(fā)送器使用的寄存器都是UDR寄存器,但是僅名字相同,他們是兩個完全獨立的數(shù)據(jù)寄存器。當對UDR寫操作時數(shù)據(jù)通過TXB發(fā)送出去,當執(zhí)行UDR讀操作時將RXB接收的數(shù)據(jù)讀出來。當數(shù)據(jù)長度不足8bit時如5、6、7bit,未被使用的數(shù)據(jù)位被發(fā)送器忽略,而接收器則將它們直接置為0。6.2.3串行通信接口寄存器6.2ATmega16異步6.2.3串行通信接口寄存器6.2ATmega16異步串行通信接口1.UDR數(shù)據(jù)寄存器對UDR執(zhí)行寫操作前應該先檢查UDR是否為空,即UDR里面的數(shù)據(jù)是否被發(fā)送結(jié)束,同訪問控制寄存器的標志位實現(xiàn)。若寫UDR時其不為空即數(shù)據(jù)發(fā)送還未結(jié)束,新寫入的數(shù)據(jù)無效。接收緩沖器UDR包含一個兩級FIFO,接收的數(shù)據(jù)被置于FIFO中。讀UDR會影響FIFO的狀態(tài),但FIFO空時同樣會在控制寄存器中產(chǎn)生相應標志位。6.2.3串行通信接口寄存器6.2ATmega16異步6.2.3串行通信接口寄存器6.2ATmega16異步串行通信接口2.波特率寄存器UBRR波特率發(fā)生器工作寄存器UBRR中的內(nèi)容決定其產(chǎn)生的波特率值大小。波特率與UBRR寄存器取值關(guān)系如表6-2所示6.2.3串行通信接口寄存器6.2ATmega16異步6.2.3串行通信接口寄存器6.2ATmega16異步串行通信接口2.波特率寄存器UBRR6.2.3串行通信接口寄存器6.2ATmega16異步6.2.3串行通信接口寄存器6.2ATmega16異步串行通信接口2.波特率寄存器UBRR表中fosc表示系統(tǒng)晶振頻率大小,B為通信波特率,UBRR為波特率寄存器。常用的波特率有1200bps、2400bps等,在已知波特率和fosc前提下通過應用表6-x中的公式可以計算出UBRR寄存器取值。UBRR寄存器為16位寄存器,分成高位UBRRH和低位UBRRL兩部分。在ICCAVR編譯器使用C語言編程時,可以將一個16位的數(shù)直接寫入UBRR寄存器即可。但需要注意的是,UBRR的取值必須在0-4095之間。6.2.3串行通信接口寄存器6.2ATmega16異步6.2.3串行通信接口寄存器6.2ATmega16異步串行通信接口3.控制和狀態(tài)寄存器控制和狀態(tài)寄存器是用來對串行口進行編程以及保存串行口的工作各種工作狀態(tài),在使用時至關(guān)重要。ATmega16有三個控制與狀態(tài)寄存器,分別為UCSRA、UCSRB、UCSRC。6.2.3串行通信接口寄存器6.2ATmega16異步6.2.3串行通信接口寄存器6.2ATmega16異步串行通信接口3.控制和狀態(tài)寄存器

RXC位(Bit7):接收結(jié)束標志位。接收器已成功接收一個數(shù)據(jù)并置于接收緩沖器中,此時RXC置位。RXC標志可用來產(chǎn)生接收結(jié)束中斷,執(zhí)行完程序后自動清零。對該位寫1清零會導致一次重復接收錯誤。TXC位(Bit6):發(fā)送結(jié)束標志位。 發(fā)送緩沖器(UDR)中的數(shù)據(jù)發(fā)送完成UDR為空,此時TXC置位,TXC標志可用來產(chǎn)生發(fā)送結(jié)束中斷。執(zhí)行完程序后該標志位自動清零,對該位寫1清零會導致一次重復發(fā)送錯誤。UDRE位(Bit5):數(shù)據(jù)寄存器空標志位。(1)控制與狀態(tài)寄存器UCSRA6.2.3串行通信接口寄存器6.2ATmega16異步6.2.3串行通信接口寄存器6.2ATmega16異步串行通信接口3.控制和狀態(tài)寄存器

FE(bit4):幀錯誤位。DOR(Bit3):數(shù)據(jù)溢出標志位。UPE(Bit2):奇偶校驗錯誤標志位。U2X(Bit1):波特率倍增控制位。MPCM(Bit0):多處理器通信模式標志位。 幀錯誤位(FE)、數(shù)據(jù)溢出標志位(DOR)、奇偶校驗錯誤標志位(UPE)與UDR中的內(nèi)容有關(guān),當對UDR進行讀寫操作時會影響這些標志位,因此讀UDR數(shù)據(jù)之前應先將這三個標志位的內(nèi)容讀取出來。這三個標志位不會觸發(fā)CPU產(chǎn)生中斷。(1)控制與狀態(tài)寄存器UCSRA6.2.3串行通信接口寄存器6.2ATmega16異步6.2.3串行通信接口寄存器6.2ATmega16異步串行通信接口3.控制和狀態(tài)寄存器

RXCIE位(Bit7):接收結(jié)束中斷使能位。TXCIE位(Bit6):發(fā)送結(jié)束中斷使能位。UDRIE位(Bit5):串行口數(shù)據(jù)寄存器空中斷使能。RXEN位(Bit4):接收使能位。置位后啟動USART接收器。PD0的I/O口功能不可用,將作為RXD數(shù)據(jù)接收專用引腳使用。該位清零禁止接收器。TXEN位(Bit3):發(fā)送使能位。UCSZ2位(Bit2):與UCSRC中的UCSZ0、UCSZ1位一同使用。(2)控制與狀態(tài)寄存器UCSRB6.2.3串行通信接口寄存器6.2ATmega16異步6.2.3串行通信接口寄存器6.2ATmega16異步串行通信接口3.控制和狀態(tài)寄存器

RXB8位(Bit1):接收數(shù)據(jù)位8。 RXB8與UDR組成9位串行數(shù)據(jù)幀,接收到的第9位數(shù)據(jù)被置于RXB8中。在對9位數(shù)據(jù)進行讀取之前應先讀RXB8的數(shù)據(jù)位,再讀UDR中的低位數(shù)據(jù)。TXB8位(Bit0):發(fā)送數(shù)據(jù)位8。 TXB8與UDR組成9位串行數(shù)據(jù)幀,發(fā)送的第9位數(shù)據(jù)被置于TXB8中。在對9位數(shù)據(jù)進行讀取發(fā)送前應先將第9位數(shù)據(jù)寫入TXB8中,再將余下數(shù)據(jù)寫入UDR。(2)控制與狀態(tài)寄存器UCSRB6.2.3串行通信接口寄存器6.2ATmega16異步6.2.3串行通信接口寄存器6.2ATmega16異步串行通信接口3.控制和狀態(tài)寄存器

UCSRC寄存器與UBRRH寄存器共用相同的I/O地址。對該寄存器的訪問,需要注意其數(shù)據(jù)取值。URSEL位(Bit7):寄存器選擇位。通過該位選擇訪問UCSRC寄存器或UBRRH寄存器。URSEL位為1時對UCSRC進行讀或?qū)懖僮?,因此寫入UCSRC的值應該大于等于80H(0x80)。而URSEL位為0時對波特率寄存器的高位UBRRH進行操作,寫入UBR寄存器數(shù)不能超過4095。UMSEL位(Bit6):UMSEL=0,異步模式,UMSEL=1同步模式。(3)控制與狀態(tài)寄存器UCSRC6.2.3串行通信接口寄存器6.2ATmega16異步6.2.3串行通信接口寄存器6.2ATmega16異步串行通信接口3.控制和狀態(tài)寄存器

UPM位(Bit5:4):奇偶校驗模式位,校驗方式如表6-3所示。(2)控制與狀態(tài)寄存器UCSRB6.2.3串行通信接口寄存器6.2ATmega16異步6.2.3串行通信接口寄存器6.2ATmega16異步串行通信接口3.控制和狀態(tài)寄存器

USBS位(Bit3):停止位選擇位,USBS=0,1位停止位,USBS=1選擇2位停止位。UCSZ位:數(shù)據(jù)字符長度選擇位,分別為UCZS0、UCZS1、UCZS2三個位,用來設(shè)定串行通信數(shù)據(jù)字符的長度,見表6-4所示。(3)控制與狀態(tài)寄存器UCSRC6.2.3串行通信接口寄存器6.2ATmega16異步6.2.3串行通信接口寄存器6.2ATmega16異步串行通信接口3.控制和狀態(tài)寄存器

(2)控制與狀態(tài)寄存器UCSRB6.2.3串行通信接口寄存器6.2ATmega16異步6.2.3串行通信接口寄存器6.2ATmega16異步串行通信接口【例6-1】按要求完成串行通信口寄存器的初始化操作,系統(tǒng)時鐘為8M。(1)設(shè)置同步通信模式,波特率30000bps;(2)設(shè)置8位異步通信模式,波特率設(shè)為2400bps;

解:(1)UCSRA寄存器無需編程,UCSRB寄存器中的RXEN、TXEN位置位開啟接收和發(fā)送器,UCSRC寄存器中的URSEL位置位選擇對UCSRC寄存器操作,UMSEL位置位選則同步模式,計算波特率寄存器初始值:編程如下:6.2.3串行通信接口寄存器6.2ATmega16異步6.2.3串行通信接口寄存器6.2ATmega16異步串行通信接口(2)UCSRA寄存器無需編程,UCSRB寄存器中的RXEN、TXEN位置位開啟接收和發(fā)送器,UCSRC寄存器中的URSEL位置位選擇對UCSRC寄存器操作,UCSZ0、UCSZ1置位選擇8位數(shù)據(jù)模式,波特率不增倍的寄存器值計算公式如下:編程如下:6.2.3串行通信接口寄存器6.2ATmega16異步6.2.3串行通信接口寄存器6.2ATmega16異步串行通信接口思考:設(shè)置串行通信參數(shù)為數(shù)據(jù)位為9位,異步通信模式,波特率設(shè)為9600bps,1位停止位,無奇偶校驗位,使用中斷方式完成數(shù)據(jù)收發(fā),該如何對寄存器編程?6.2.3串行通信接口寄存器6.2ATmega16異步6.2.4串行通信接口使用6.2ATmega16異步串行通信接口

voidUSART_Init(unsignedintbaud){/*設(shè)置波特率*/UBRRH=(unsignedchar)(baud>>8);UBRRL=(unsignedchar)baud;/*接收器與發(fā)送器使能*/UCSRB=(1<<RXEN)|(1<<TXEN);/*設(shè)置幀格式:8個數(shù)據(jù)位,2個停止位*/UCSRC=(1<<URSEL)|(1<<USBS)|(3<<UCSZ0);}1初始化6.2.4串行通信接口使用6.2ATmega16異步串6.2.4串行通信接口使用6.2ATmega16異步串行通信接口1發(fā)送數(shù)據(jù)(8位)

voidUSART_Transmit(unsignedchardata){/*等待發(fā)送緩沖器為空*/while(!(UCSRA&(1<<UDRE)));/*將數(shù)據(jù)放入緩沖器,發(fā)送數(shù)據(jù)*/UDR=data;}6.2.4串行通信接口使用6.2ATmega16異步串6.2.4串行通信接口使用6.2ATmega16異步串行通信接口2發(fā)送數(shù)據(jù)(字符串)voidUSART_Transmit_String(unsignedchar*data){while(*data!=‘\0’)/*檢查數(shù)組結(jié)束標志*/{while(!(UCSR0A&(1<<UDRE0)))/*檢查發(fā)送FIFO空*/;UDR0=*data;data++;}return;}6.2.4串行通信接口使用6.2ATmega16異步串6.2.4串行通信接口使用6.2ATmega16異步串行通信接口3接收數(shù)據(jù)(8位)unsignedcharUSART_Receive(void){/*等待接收數(shù)據(jù)*/while(!(UCSRA&(1<<RXC)));/*從緩沖器中獲取并返回數(shù)據(jù)*/returnUDR;}6.2.4串行通信接口使用6.2ATmega16異步串6.2.4串行通信接口使用6.2ATmega16異步串行通信接口3接收數(shù)據(jù)(8位)unsignedintUSART_Receive(void){unsignedcharstatus,resh,resl;/*等待接收數(shù)據(jù)*/while(!(UCSRA&(1<<RXC)));/*從緩沖器中獲得狀態(tài)、第9位及數(shù)據(jù)*/status=UCSRA;resh=UCSRB;resl=UDR;/*如果出錯,返回-1*/if(status&(1<<FE)|(1<<DOR)|(1<<PE))return-1;/*過濾第9位數(shù)據(jù),然后返回*/resh=(resh>>1)&0x01;return((resh<<8)|resl);}6.2.4串行通信接口使用6.2ATmega16異步串6.3單片機I/O口模擬串行通信串行傳輸具有連接簡單、使用方便的特點,因此在實際中被廣泛使用。使用串行接口的器件和芯片可以節(jié)約單片機的I/O口,降低系統(tǒng)復雜性,使系統(tǒng)設(shè)計更為簡潔。而包括Atmega16在內(nèi)的單片機,其串行通信口的數(shù)量有限,因此使用單片機的I/O來模擬串行口的工作過程是一種常用辦法。使用I/O口可以方便的擴展同步串行通信、異步串行通信等。由于同步通信具有獨立的同步時鐘線,因此使用I/O口模擬操作簡單。而異步串行通信沒有獨立的同步時鐘線,需要通過對協(xié)議的解碼提取時鐘信號后再提取數(shù)據(jù),因此其收發(fā)均要復雜。6.3單片機I/O口模擬串行通信串行傳輸具有連接簡6.3.1單片機模擬串行口輸出6.3單片機I/O口模擬串行通信1.移位寄存器74HC595 74HC595是常見的74系列的8位移位數(shù)據(jù)寄存器。輸入的是串行數(shù)據(jù),輸出的是并行數(shù)據(jù)。74HC595還帶鎖存功能,8個輸出端的數(shù)據(jù)可以同步更新,與單片機連接只需要3個腳即可,單片機3個I/O口引腳接到74HC59之后就可以輸出擴展出8個I/O口。當更多的74HC595芯片級聯(lián)以后可以擴展更多的I/O口出來,以滿足需要I/O控制口比較多的場合,比如LED點陣屏驅(qū)動等。6.3.1單片機模擬串行口輸出6.3單片機I/O口模擬串6.3.1單片機模擬串行口輸出6.3單片機I/O口模擬串行通信1.移位寄存器74HC595

6.3.1單片機模擬串行口輸出6.3單片機I/O口模擬串6.3.1單片機模擬串行口輸出6.3單片機I/O口模擬串行通信1.移位寄存器74HC595

Q0-Q7:并行數(shù)據(jù)輸出,Q7S用于多片74HC595芯片的級聯(lián),OE#:為芯片使能端,OE#必須為低電平有效。MR#:為芯片復位引腳。DS、SHCP、STCP三個引腳為74HC595的串行數(shù)據(jù)輸入引腳,他們之間的時序關(guān)系如圖6-13所示。DS為串行數(shù)據(jù)輸入引腳,SHCP為同步移位時鐘,DS在每個SHCP的上升沿期間將數(shù)據(jù)移入芯片。當8個數(shù)據(jù)移位完成后數(shù)據(jù)在STCP的上升沿作用下同步輸出到Q0-Q7輸?shù)揭_6.3.1單片機模擬串行口輸出6.3單片機I/O口模擬串6.3.1單片機模擬串行口輸出6.3單片機I/O口模擬串行通信2.使用單片機I/O口驅(qū)動74HC595單片機可以使用3個I/O口分別模擬DS、SHCP、STCP的工作時序即可將一個字節(jié)數(shù)據(jù)通過串口輸出到達74HC595芯片內(nèi)部,并由Q0-Q7引腳輸出。在CPU內(nèi)部,數(shù)據(jù)是并行的,將并行數(shù)據(jù)變成串行數(shù)據(jù)并送DS端使用移位運算符實現(xiàn)。將欲通過串行口發(fā)送的數(shù)據(jù)存放在變量x中,將x與0x80進行按位與運算,若結(jié)果為0x80則發(fā)送數(shù)據(jù)‘1’,從DS輸出高電平,并控制SHCP端產(chǎn)生一個上升沿移位時鐘將該位數(shù)據(jù)移位到595,將x中數(shù)據(jù)向左移動1位并重復剛才的過程,直到8位數(shù)據(jù)發(fā)送完畢為止。這種方法是先發(fā)送數(shù)據(jù)的最高位(MSB),最后才發(fā)送數(shù)據(jù)的最低位(LSB)。此時的數(shù)據(jù)僅保存在移位寄存器中,并未輸?shù)綌?shù)據(jù)引腳Q0-Q7端,從STCP端產(chǎn)生一個上升沿脈沖將數(shù)據(jù)從移位寄存器輸?shù)絈0-Q7引腳上即可。6.3.1單片機模擬串行口輸出6.3單片機I/O口模擬串6.3.1單片機模擬串行口輸出6.3單片機I/O口模擬串行通信2.使用單片機I/O口驅(qū)動74HC595【例6-2】使用1片74HC595擴展8個I/O輸出口,驅(qū)動8個發(fā)光二極管。解:設(shè)PA0接SHCP端,PA1接DS端,PA2接STCP端,故PA0、PA1、PA2設(shè)置為輸出口,在proteus中繪制原理圖如圖6-146.3.1單片機模擬串行口輸出6.3單片機I/O口模擬串6.3.1單片機模擬串行口輸出6.3單片機I/O口模擬串行通信2.使用單片機I/O口驅(qū)動74HC595編寫程序如下6.3.1單片機模擬串行口輸出6.3單片機I/O口模擬串6.3.1單片機模擬串行口輸出6.3單片機I/O口模擬串行通信6.3.1單片機模擬串行口輸出6.3單片機I/O口模擬串6.3.2單片機模擬串行口輸入6.3單片機I/O口模擬串行通信使用串行口讀入外部器件或芯片數(shù)據(jù)可以節(jié)約很多I/O引腳。在理解使用單片機模擬串行口輸出的基礎(chǔ)上,對串行口得輸入模擬就變得相對容易。1.TLC2551串行A/D采樣芯片 TLC2551是一片單芯片12bit轉(zhuǎn)換精度A/D采樣芯片,內(nèi)部集成了采樣保持器,如圖6-15所示。轉(zhuǎn)換的數(shù)據(jù)結(jié)果通過3條串行總線輸出給主機。TLC2551只有8個引腳,其中AIN為數(shù)模信號輸入引腳,VDD為單5V供電電源端,VREF為外接參考電壓,F(xiàn)S為與幀同步控制引腳,多芯片級聯(lián)時使用,單芯片時該引腳接高電平。6.3.2單片機模擬串行口輸入6.3單片機I/O口模擬串6.3.2單片機模擬串行口輸入6.3單片機I/O口模擬串行通信1.TLC2551串行A/D采樣芯片 SCLK、CS#、SDO為三總線串行通信接口,SCLK為移位時鐘,CS#為芯片片選端,SDO為數(shù)據(jù)輸出端,三者之間時序見圖6-16。6.3.2單片機模擬串行口輸入6.3單片機I/O口模擬串6.3.2單片機模擬串行口輸入6.3單片機I/O口模擬串行通信1.TLC2551串行A/D采樣芯片

轉(zhuǎn)換結(jié)束的數(shù)字量結(jié)果出現(xiàn)SDO端,高位在前,低位在后,對應SCLK的下降沿期間,即每一個SCLK脈沖出現(xiàn)一個數(shù)據(jù)位,12個脈沖后此次轉(zhuǎn)換結(jié)果全國輸出完畢。對TLC25551進行操作只能在CS#為低電平期間進行。6.3.2單片機模擬串行口輸入6.3單片機I/O口模擬串6.3.2單片機模擬串行口輸入6.3單片機I/O口模擬串行通信2.使用單片機I/O讀取TLC2551轉(zhuǎn)換數(shù)據(jù)圖6-16所示的時序圖可知,在CS#為低電平期間讀取TLC2551的結(jié)果,使用單片機的I/O模擬時序,假設(shè)讀取的數(shù)據(jù)存放在整型變量x中,在讀取SDO數(shù)據(jù)前,先從SCLK產(chǎn)生一個下降沿信號,使數(shù)據(jù)位出現(xiàn)在SDO線上。將SDO引腳讀入單片機,若得其為高電平則將變量x的最低端并上數(shù)值1,否則在最低位與上數(shù)字0,并將變量x向左移動1位,完成一位數(shù)據(jù)的讀取,重復12次后TLC2551的轉(zhuǎn)換結(jié)果便被讀入變量x中。6.3.2單片機模擬串行口輸入6.3單片機I/O口模擬串6.3.2單片機模擬串行口輸入6.3單片機I/O口模擬串行通信2.使用單片機I/O讀取TLC2551轉(zhuǎn)換數(shù)據(jù)【例6-3】在Atmega16單片機系統(tǒng)中擴展一片12bit的串口A/D轉(zhuǎn)換芯片TLC2551,將其結(jié)果讀入并保存在變量x中。 解:PA0、PA1、PA2三個引腳與TLC2551的CE#、SDO、SCLK三個引腳相連,PA1設(shè)為輸入口,其他設(shè)為輸出口,編程如下6.3.2單片機模擬串行口輸入6.3單片機I/O口模擬串第6章串行通信AVR單片機應用技術(shù)項目化教程課件第6章串行通信AVR單片機應用技術(shù)項目化教程課件6.4.1雙機串行通信6.4項目設(shè)計1.項目設(shè)計要求兩個CPU之間進行通信,采用全雙工異步通信方式實現(xiàn),雙機通信參數(shù)設(shè)置為:數(shù)據(jù)位為8位,1個起始位1個停止位,無奇偶校驗位,波特率設(shè)置為9600bps,系統(tǒng)時鐘8M。實現(xiàn)的任務為CPU1給CPU2發(fā)字符‘A’,CPU2接收確認為字符‘A’后控制PA0口紅色LED亮,并給CPU1反饋字符‘Y’,否則控制PA1的藍色LED閃并給CPU1反饋字符‘N’。CPU1如果收到Y(jié)控制PA0口紅色燈亮,收到N控制PA1口藍色燈閃。 CPU1接收到字符‘B’后控制PA口紅色LED亮,否則PA1口藍色LED閃,分別使用查詢判斷和中斷方式實現(xiàn)。6.4.1雙機串行通信6.4項目設(shè)計1.項目設(shè)計要求6.4.1雙機串行通信6.4項目設(shè)計2.項目分析(1)2個CPU串行通信接口采用相同的波特率及數(shù)據(jù)傳輸格式,因此初始化程序完全一樣;(2)CPU1先發(fā)送數(shù)據(jù)給CPU2,CPU2接收數(shù)據(jù)之后判斷是否是字符‘A’,如果是則亮紅燈,并發(fā)字符‘Y’給CPU1;如果不是字符‘A’則燈閃爍,并發(fā)字符‘N‘給CPU1;(3)CPU1接收數(shù)據(jù),并判斷接收到的數(shù)據(jù)是否等于字符‘Y’,如果是,紅燈亮,如果不是則藍燈閃。6.4.1雙機串行通信6.4項目設(shè)計2.項目分析6.4.1雙機串行通信6.4項目設(shè)計3.項目實現(xiàn) 根據(jù)項目分析,繪制程序流程圖如圖6-17所示,原理圖如圖6-18所示。6.4.1雙機串行通信6.4項目設(shè)計3.項目實現(xiàn)第6章串行通信AVR單片機應用技術(shù)項目化教程課件第6章串行通信AVR單片機應用技術(shù)項目化教程課件第6章串行通信AVR單片機應用技術(shù)項目化教程課件第6章串行通信AVR單片機應用技術(shù)項目化教程課件6.4.1雙機串行通信6.4項目設(shè)計4.項目調(diào)試 修改CPU1程序,發(fā)送字符‘A’,運行程序觀察結(jié)果,此時兩個CPU亮紅燈,說明通信正常。再次修改CPU程序,發(fā)送非‘A’字符比如‘a(chǎn)’,運行程序,此時兩個CPU的藍燈閃爍,表示通信失敗。6.4.1雙機串行通信6.4項目設(shè)計4.項目調(diào)試6.4.2字符串收發(fā)通信6.4項目設(shè)計1.項目設(shè)計要求 設(shè)計一個串行數(shù)據(jù)收發(fā)項目,實現(xiàn)單片機與虛擬終端之間的字符串收發(fā)。單片機系統(tǒng)時鐘為8M,通信參數(shù)設(shè)置為:數(shù)據(jù)位為8位,1個起始位1個停止位,無奇偶校驗位,設(shè)置波特率為19200bps。6.4.2字符串收發(fā)通信6.4項目設(shè)計1.項目設(shè)計要求6.4.2字符串收發(fā)通信6.4項目設(shè)計1.項目設(shè)計要求

6.4.2字符串收發(fā)通信6.4項目設(shè)計1.項目設(shè)計要求6.4.2字符串收發(fā)通信6.4項目設(shè)計1.項目設(shè)計要求 虛擬終端向單片機發(fā)送字符串,字符串長度在程序中定義。單片機接收完所有字符串之后將其發(fā)送給虛擬終端,虛擬終端會將收到的數(shù)據(jù)顯示出來。單片機接收到的字符串放在指針p所指的起始地址,其長度不定。當接收完所有字符之后單片機啟動字符串發(fā)送程序,將接收到的字符串發(fā)送給虛擬機,如圖6-19所示。6.4.2字符串收發(fā)通信6.4項目設(shè)計1.項目設(shè)計要求6.4.2字符串收發(fā)通信6.4項目設(shè)計2.項目分析(1)初始化串行口,設(shè)置控制與狀態(tài)寄存器USRCA-USRCC。(2)計算波特率,將結(jié)果存放在UBRR寄存器中,波特率不倍增。(3)設(shè)置中斷,使能全局中斷,使能發(fā)送中斷和接收中斷。(4)開始接收數(shù)據(jù),接收數(shù)據(jù)長度存放在變量size中,每接收到一個數(shù)據(jù)存放在指針變量p所指的地址單元,然后修改指針p以存放下一個接收到的數(shù)據(jù)。當size規(guī)定長度內(nèi)的數(shù)據(jù)接收完成后接收程度返回指針p的首地址。(5)啟動發(fā)送程序,將指針p所指的長度為size的字符串發(fā)送出去。6.4.2字符串收發(fā)通信6.4項目設(shè)計2.項目分析6.4.2字符串收發(fā)通信6.4項目設(shè)計3.項目實現(xiàn) 通過對項目的分析,設(shè)計程序流程圖如圖6-20所示,編寫程序如下。6.4.2字符串收發(fā)通信6.4項目設(shè)計3.項目實現(xiàn)第6章串行通信AVR單片機應用技術(shù)項目化教程課件第6章串行通信AVR單片機應用技術(shù)項目化教程課件第6章串行通信AVR單片機應用技術(shù)項目化教程課件第6章串行通信AVR單片機應用技術(shù)項目化教程課件6.4.2字符串收發(fā)通信6.4項目設(shè)計4項目調(diào)試 在源程序中設(shè)置size長度,比如設(shè)置其長度為5,雙機虛擬終端,按圖6-21設(shè)置其參數(shù),主要是波特率,一定要和單片機波特率一直,否則無法收發(fā)數(shù)據(jù)。6.4.2字符串收發(fā)通信6.4項目設(shè)計4項目調(diào)試6.4.2字符串收發(fā)通信6.4項目設(shè)計4項目調(diào)試

運行程序,自動彈出虛擬終端調(diào)試界面,如圖6-22所示。如果不能自動彈出鼠標右單擊虛擬終端,選擇“”手動打開即可。用鼠標左單擊圖6-22界面激活虛擬終端發(fā)送功能,隨機輸入5個字符發(fā)送給單片機,單片接收到以后會發(fā)回給虛擬終端,并在圖6-22的窗口顯示。6.4.2字符串收發(fā)通信6.4項目設(shè)計4項目調(diào)試第6章串行通信

串行通信基礎(chǔ)一ATmega16異步串行通信接口二單片機I/O口模擬串行通信三項目設(shè)計四第6章串行通信串行通信基礎(chǔ)一AT在實際中外部設(shè)備與單片機之間或單片機與單片機之間、單片機與計算機之間交換數(shù)據(jù),可以只通過2條線甚至一條線就完成數(shù)據(jù)的傳輸與交換。這時數(shù)據(jù)位排成一串,在數(shù)據(jù)線上傳輸,每個時間段只能傳輸一個比特位,且時間間隔為規(guī)定長度,這就是串行通信。第6章串行通信在實際中外部設(shè)備與單片機之間或單片機與單片機之間、單6.1.1串行通信與并行通信6.1串行通信基礎(chǔ) 前面所討論的AVR單片機I/O口,其數(shù)據(jù)傳輸是按字節(jié)進行,一個字節(jié)8個比特位分別與I/O口位線相對應,同時從8個I/O口輸入、輸出,一個字節(jié)傳輸只需要時間T即可完成,這是數(shù)據(jù)的并行傳輸,如圖6-1所示。并行傳輸具有傳輸線多、速度快、編程簡單、通信距離短的特點。6.1.1串行通信與并行通信6.1串行通信基礎(chǔ) 前面所討論6.1.1串行通信與并行通信6.1串行通信基礎(chǔ)6.1.1串行通信與并行通信6.1串行通信基礎(chǔ)6.1.1串行通信與并行通信6.1串行通信基礎(chǔ) 在串行數(shù)據(jù)傳輸中,一個字節(jié)8個比特數(shù)據(jù)排成一串,可以高位(MBS)在前,也可以低位在前(LBS),依次在數(shù)據(jù)線上進行傳輸。如果其傳輸速度與并行通信的速度相等且都為T,則串行通信中傳輸完一個字節(jié)所需要時間為8T,傳輸n個比特位則需要nT時間,如圖6-2所示。串行通信具有傳輸線少、成本低等特點,比較適合遠通信。6.1.1串行通信與并行通信6.1串行通信基礎(chǔ) 在串行數(shù)據(jù)6.1.1串行通信與并行通信6.1串行通信基礎(chǔ)6.1.1串行通信與并行通信6.1串行通信基礎(chǔ)6.1.2串行通信方式6.1串行通信基礎(chǔ)根據(jù)串行通信的組成形式和數(shù)據(jù)傳輸方向,串行通信有3種通信方式:單工、半雙工、全雙工。6.1.2串行通信方式6.1串行通信基礎(chǔ)根據(jù)串行通6.1.2串行通信方式6.1串行通信基礎(chǔ) 單工通信如圖6-3a所示。單工通信只允許數(shù)據(jù)在一個方向上傳輸,發(fā)送端只能發(fā)送數(shù)據(jù),接收端只能接收數(shù)據(jù)。 半工通信如圖6-3b所示。半雙工通信數(shù)據(jù)可以在兩個方向傳輸,但不能同時進行數(shù)據(jù)收、發(fā)。發(fā)送端在發(fā)送數(shù)據(jù)的同時,接收端只能接收數(shù)據(jù),反之亦然。通過開關(guān)切換,可以將收發(fā)端功能互換,原來的接收端發(fā)送數(shù)據(jù),原來的發(fā)送端接收數(shù)據(jù)。 全雙工通信分別有獨立的接收線和獨立的發(fā)送線,數(shù)據(jù)的收發(fā)可以同時進行,且互不影響,如圖6-3c所示。在單片機系統(tǒng)中,三種串行通信方式都有應用。6.1.2串行通信方式6.1串行通信基礎(chǔ) 單工通信如圖6-6.1.3同步通信與異步通信6.1串行通信基礎(chǔ)1.同步通信SYNC(SynchronousCommunication)同步通信以數(shù)據(jù)塊為傳輸單元,一個數(shù)據(jù)塊中包含了若干個數(shù)據(jù)字符(比如數(shù)據(jù)字節(jié)),僅在數(shù)據(jù)塊首部設(shè)置有1~2個同步字符,用以進行數(shù)據(jù)通信。一旦建立數(shù)據(jù)同步,就可以進行數(shù)據(jù)字符的傳輸,中間無需再同步,數(shù)據(jù)塊中的數(shù)據(jù)字符長度可定義,如圖6-4。6.1.3同步通信與異步通信6.1串行通信基礎(chǔ)1.同步6.1.3同步通信與異步通信6.1串行通信基礎(chǔ)1.同步通信由于同步通信是以數(shù)據(jù)塊為傳輸單元,冗余數(shù)據(jù)信息少,因此同步通信的通信速度很高,可達到Mbps以上。在單片機系統(tǒng)中,采用同步串行通信時可以取消數(shù)據(jù)塊前面的同步字符,用專門的時鐘線來傳遞同步信號,以保證收發(fā)端數(shù)據(jù)的嚴格同步。因此,在單片機的同步通信中,單工或半雙工的通信硬件連接時需要兩條線,一條傳輸數(shù)據(jù),另一條專用于傳輸時鐘信號,而在全雙工通信中則需要3條線,1條數(shù)據(jù)輸入、1條數(shù)據(jù)輸出、1條時鐘線。6.1.3同步通信與異步通信6.1串行通信基礎(chǔ)1.同步6.1.3同步通信與異步通信6.1串行通信基礎(chǔ)2、異步通信異步通信以字符為傳輸單位,通信中兩個字符的時間間隔不固定(異步),而字符中的兩個相鄰的比特位的時間是固定的(同步)。在異步通信中,沒有專門的、獨立的同步時鐘信號,典型的異步通信的數(shù)據(jù)幀格式如圖6-5所示,由起始位、數(shù)據(jù)位、奇偶校驗位、停止位所組成。起始位為一固定時間長度的低電平,表示一幀數(shù)據(jù)的開始,接著就是傳輸?shù)臄?shù)據(jù),其長度有5位、6位、7位、8位、9位等。數(shù)據(jù)位后面是奇偶校驗位,指示數(shù)據(jù)通信的出錯情況。校驗位后面是1位或2位停止位。停止位為高電平,表示這一幀數(shù)據(jù)的結(jié)束。6.1.3同步通信與異步通信6.1串行通信基礎(chǔ)2、異步通6.1.3同步通信與異步通信6.1串行通信基礎(chǔ)2、異步通信數(shù)據(jù)幀后面跟著幾位保證數(shù)據(jù)可靠傳輸?shù)目臻e位。異步通信數(shù)據(jù)幀的間隔時間不同,通信時數(shù)據(jù)是一幀一幀進行傳輸,每幀通過起始位來同步。由于異步通信中沒有專門的時鐘同步信號,因此在芯片內(nèi)部需要專門的時序還原電路從異步數(shù)據(jù)幀中提取時鐘信號,以保證接收的數(shù)據(jù)被正常還原。6.1.3同步通信與異步通信6.1串行通信基礎(chǔ)2、異步通6.1.3同步通信與異步通信6.1串行通信基礎(chǔ)3、波特率(BaudRate) 波特率是表示串行通信傳輸數(shù)據(jù)快慢的物理參數(shù),其定義為單位時間內(nèi)傳輸?shù)亩M制bit數(shù),用位/秒(BitperSecond)表示,或?qū)懗蒪ps。如串行通信中的數(shù)據(jù)傳輸波特率為128bps,意為每秒鐘傳輸128個bit,合計16個字節(jié),傳輸一個比特所需要的時間為:1/128bps=0.0078秒=7.8毫秒。傳輸一個字節(jié)的時間為:7.8×8=62.4毫秒。在異步通信中,常見的波特率通常有1200、2400、4800、9600等,其單位都是bps。高速的可以達到19200bps。異步通信中允許收發(fā)端的時鐘(波特率)誤差不超過5%。6.1.3同步通信與異步通信6.1串行通信基礎(chǔ)3、波特率6.1.4同步通信與異步通信6.1串行通信基礎(chǔ) 由于串行通信方式能實現(xiàn)較遠距離的數(shù)據(jù)傳輸,因此在遠距離控制時或在工業(yè)控制現(xiàn)場通常使用串行通信方式來傳輸數(shù)據(jù)。由于遠距離數(shù)據(jù)傳輸時普通的TTL或CMOS電平無法滿足工業(yè)現(xiàn)場的干擾和各種電氣性能,因此不能用于直接進行遠距離的數(shù)據(jù)傳輸。國際電氣工業(yè)協(xié)會EIA推出了RS-232、RS485等接口標準。6.1.4同步通信與異步通信6.1串行通信基礎(chǔ) 由于串行6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)1、RS-232接口 RS-232C是1969年電子工業(yè)協(xié)會(EIA)制定的在數(shù)據(jù)終端設(shè)備DTE和數(shù)據(jù)通訊設(shè)備(DCE)之間的串行的二進制數(shù)據(jù)交換的接口,全稱是EIA-RS-232-C協(xié)議,實際中常稱RS-232,也稱EIA-232,最初采用DB-25作為連接器,包含雙通道,但是現(xiàn)在也有采用DB-9的單通道接口連接,其端口定義見表6-1所示。在實際中,DB9由于結(jié)構(gòu)簡單,僅需要3根線就可以完成全雙工通信,所以在實際中使用比較多,應用廣泛。6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)1、RS-6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)1、RS-232接口

6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)1、RS-6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)1、RS-232接口

6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)1、RS-6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)1、RS-232接口 RS-232采用負邏輯電平,用負電壓表示數(shù)字信號邏輯‘1’,用正電平表示數(shù)字信號的邏輯‘0’。規(guī)定邏輯‘1’的電壓范圍為-5—-15V,邏輯‘0’的電壓范圍為+5V-—+15V。 RS-232-C標準規(guī)定,驅(qū)動器允許有2500pF的電容負載,通信距離將受此電容限制,例如,采用150pF/m的通信電纜時,最大通信距離為15m;若每米電纜的電容量減小,通信距離可以增加。傳輸距離短的另一原因是RS-232屬單端信號傳送,存在共地噪聲和不能抑制共模干擾等問題,因此一般用于20m以內(nèi)的通信。6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)1、RS-6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)2.RS-485接口規(guī)范RS-485為彌補RS-232之不足而提出的。為改進RS-232通信距離短、速率低的缺點,RS-485定義了一種平衡通信接口,將傳輸速率提高到10Mbps,傳輸距離延長到4000英尺(速率低于100kbps時),并允許在一條平衡線上連接最多10個接收器。RS-485是一種單機發(fā)送、多機接收的單向、平衡傳輸規(guī)范,為擴展應用范圍,隨后又為其增加了多點、雙向通信能力,即允許多個發(fā)送器連接到同一條總線上,同時增加了發(fā)送器的驅(qū)動能力和沖突保護特性,擴展了總線共模范圍,其特點可以總結(jié)為:6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)2.RS6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)2.RS-485接口規(guī)范(1)差分平衡偉輸;(2)多點通信;(3)驅(qū)動器輸出電壓(帶載):≥|1.5V|;(4)接收器輸入門限:±200mV;(5)-7V至+12V總線共模范圍;(6)最大輸入電流:1.0mA/-0.8mA(7)最大總線負載:32個單位負載(UL);(8)最大傳輸速率:10Mbps;(9)最大電纜長度:4000英尺(3000米)。6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)2.RS6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)2.RS-485接口規(guī)范RS-485接口是采用平衡驅(qū)動器和差分接收器的組合,抗共模干能力增強,即抗噪聲干擾性好。RS-485的電氣特性是用傳輸線之間的電壓差表示邏輯信號,邏輯“1”以兩線間的電壓差為+(2—6)V表示;邏輯“0”以兩線間的電壓差為-(2—6)V表示。 RS-232-C接口在總線上只允許連接1個收發(fā)器,即一對一通信方式。而RS-485接口在總線上是允許不只一個收發(fā)器存在,總線允許最多128個收發(fā)器存在,具備多站能力,基于RS-485接口可以方便的組建設(shè)備網(wǎng)絡,實現(xiàn)組網(wǎng)傳輸或組網(wǎng)控制。6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)2.RS6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)2.RS-485接口規(guī)范由于RS-485接口具有良好的抗噪聲干擾性,使之成為遠傳輸距離、多機通信的首選串行接口。RS-485允許總線存在多主機負載,其僅僅是一個電氣接口規(guī)范,只規(guī)定了平衡驅(qū)動器和接收器的物理層電特性,而對于保證數(shù)據(jù)可靠傳輸和通信的連接層、應用層等協(xié)議在RS-485中并沒有定義,需要用戶在實際使用中予以定義。Modbus、RTU等是基于RS-485物理鏈路的常見的通信協(xié)議。6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)2.RS6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)3.串行通信接口電平轉(zhuǎn)換

(1)TTL/CMOS電平與RS-232電平轉(zhuǎn)換 TTL/CMOS電平采用的是0-5V的正邏輯,即0V表示邏輯0,5V表示邏輯1,而RS-232采用的負邏輯,邏輯0用+5V-+15V表示,邏輯1用-5V--15V表示。在TTL/CMOS的單片機系統(tǒng)中,如果使用RS-232串行口進行通信,必須進行電平轉(zhuǎn)換。MAX232是一種常見的RS-232電平電平轉(zhuǎn)換芯片,單芯片解決全雙工通信方案,單電源工作,外圍僅需少數(shù)幾個電容器即可,其邏輯圖和應用原理見圖6-7、6-8所示。6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)3.串6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)3.串行通信接口電平轉(zhuǎn)換

(1)TTL/CMOS電平與RS-232電平轉(zhuǎn)換

6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)3.串6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)3.串行通信接口電平轉(zhuǎn)換

(2)TTL/CMOS電平與RS-485電平轉(zhuǎn)換 RS-485電平是平衡差分傳輸,而TTL/CMOS是單極性電平,需要經(jīng)過電平轉(zhuǎn)換才能進行信號傳輸。常見的RS-485電平轉(zhuǎn)換芯片有MAX485、MAX487等。MAX485為8個腳的芯片,支持半雙工通信,RO為數(shù)據(jù)接收引腳,RI為數(shù)據(jù)發(fā)送引腳,RE#為接收使能端,DE為發(fā)送使能端。見圖6-9所示。6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)3.串6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)3.串行通信接口電平轉(zhuǎn)換

(2)TTL/CMOS電平與RS-485電平轉(zhuǎn)換6.1.4同步通信與異步通信6.1串行通信基礎(chǔ)3.串6.2.1串行通信接口特點6.2ATmega16異步串行通信接口(1)全雙工通信操作,獨立收發(fā)單元,2級FIFO;(2)支持異步或同步通信方式;(3)具有高精度的專用波特率發(fā)生器;(4)數(shù)據(jù)位長度支持5、6、7、8、9位數(shù)據(jù),(5)硬件奇偶判決功能;(6)具有數(shù)據(jù)過速檢測功能;(7)具有幀錯誤檢測功能;(8)三個獨立的中斷源:發(fā)送結(jié)束中斷,發(fā)送數(shù)據(jù)寄存器空中斷,以及接收結(jié)束中斷;(9)支持多處理器通訊模式。6.2.1串行通信接口特點6.2ATmega16異步串6.2.2串行通信接口組成6.2ATmega16異步串行通信接口 ATmega16串行接口主要由數(shù)據(jù)寄存器、控制寄存器、波特率發(fā)生器、發(fā)送移位寄存器、接收移位寄存器、奇偶校驗電路等電路組成,見圖6-10。6.2.2串行通信接口組成6.2ATmega16異步6.2.2串行通信接口組成6.2ATmega16異步串行通信接口(1)數(shù)據(jù)寄存器UDRUDR數(shù)據(jù)寄存器分為接收數(shù)據(jù)寄存器和數(shù)據(jù)發(fā)送寄存器。(2)控制寄存器分別為UCSRA、UCSRB、UCSRC,通過對控制寄存器的編程,以實現(xiàn)對串行通信口的工作模式、波特率、數(shù)據(jù)格式等進行設(shè)置。(3)波特率發(fā)生器 ATmega16具有專用的波特率發(fā)生器器件,其工作時鐘來源于系統(tǒng)時鐘fosc,經(jīng)過如圖6-11所示的時鐘電路產(chǎn)生數(shù)據(jù)收、發(fā)電路所需要的時鐘信號。6.2.2串行通信接口組成6.2ATmega16異步6.2.2串行通信接口組成6.2ATmega16異步串行通信接口6.2.2串行通信接口組成6.2ATmega16異步6.2.2串行通信接口組成6.2ATmega16異步串行通信接口ATmega16的串行口通過編程可以實現(xiàn)4種時鐘模式,分別為正常的異步模式、倍速異步模式、主機同步模式、從機同步模式。通過對控制寄存器的相關(guān)位進行編程,可以設(shè)定串行口工作在全雙工異步模式或移位寄存器的同步模式。無論是串行口工作與同步模式或異步模式,其波特率均可是可以編程的。在異步模式中,波特率具有倍增功能,在不改變?nèi)魏螀?shù)、數(shù)據(jù)前提下,通過設(shè)置相關(guān)位可以使波特率時鐘提高1倍,以應用于更高通信速度的場合。在同步模式中,同步時鐘源可以編程選擇來自于主機或來自于從機。6.2.2串行通信接口組成6.2ATmega16異步6.2.2串行通信接口組成6.2ATmega16異步串行通信接口(4)發(fā)送移位寄存器發(fā)送移位寄存器的功能是將發(fā)送的數(shù)據(jù)進行轉(zhuǎn)換,將發(fā)送數(shù)據(jù)寄存器UDR中數(shù)據(jù)在時鐘信號的作用進行移位,每一個時鐘數(shù)據(jù)向前移一位,最后將UDR中的并行數(shù)據(jù)變成一串串行數(shù)據(jù)從數(shù)據(jù)發(fā)送引腳TXD發(fā)送出去。(5)接收移位寄存器接收移位寄存器的功能是將接收到的串行數(shù)據(jù)進行轉(zhuǎn)換,在時鐘信號作用下,數(shù)據(jù)接收引腳RXD每收到一個數(shù)據(jù)移位寄存器向前移動移位,實現(xiàn)將接收的串行數(shù)據(jù)轉(zhuǎn)變成并行數(shù)據(jù)的功能,收到的數(shù)據(jù)被放入數(shù)據(jù)接收寄存器UDR中。6.2.2串行通信接口組成6.2ATmega16異步6.2.2串行通信接口組成6.2ATmega16異步串行通信接口(6)奇偶校驗電路奇偶校驗電路是完成對收發(fā)數(shù)據(jù)的奇偶校驗。奇偶校驗是檢測數(shù)據(jù)通信出錯的常用手段,簡單易于實現(xiàn)。當發(fā)送數(shù)據(jù)寄存器UDR中二進制數(shù)1的個數(shù)為奇數(shù)個時,則將相應的奇偶標志位置1,連同數(shù)據(jù)位、啟停位構(gòu)成數(shù)據(jù)幀一并發(fā)送。接收端接收到以后,如果接收寄存器中UDR二進制數(shù)1的個數(shù)為奇數(shù)個,則奇偶標志位不變,依舊為‘1’。因此通過判別對比收發(fā)端奇偶標志可以快速檢測數(shù)據(jù)在傳輸過程中是否出錯,這種規(guī)則稱為“寄校驗”,反之如果1的個數(shù)為偶數(shù)個則將奇偶標志置1的稱為“偶校驗”,在控制寄存器中可以編程選擇“奇校驗”還是“偶校驗”。6.2.2串行通信接口組成6.2ATmega16異步6.2.3串行通信接口寄存器6.2ATmega16異步串行通信接口1.UDR數(shù)據(jù)寄存器 接收器和發(fā)送器使用的寄存器都是UDR寄存器,但是僅名字相同,他們是兩個完全獨立的數(shù)據(jù)寄存器。當對UDR寫操作時數(shù)據(jù)通過TXB發(fā)送出去,當執(zhí)行UDR讀操作時將RXB接收的數(shù)據(jù)讀出來。當數(shù)據(jù)長度不足8bit時如5、6、7bit,未被使用的數(shù)據(jù)位被發(fā)送器忽略,而接收器則將它們直接置為0。6.2.3串行通信接口寄存器6.2ATmega16異步6.2.3串行通信接口寄存器6.2ATmega16異步串行通信接口1.UDR數(shù)據(jù)寄存器對UDR執(zhí)行寫操作前應該先檢查UDR是否為空,即UDR里面的數(shù)據(jù)是否被發(fā)送結(jié)束,同訪問控制寄存器的標志位實現(xiàn)。若寫UDR時其不為空即數(shù)據(jù)發(fā)送還未結(jié)束,新寫入的數(shù)據(jù)無效。接收緩沖器UDR包含一個兩級FIFO,接收的數(shù)據(jù)被置于FIFO中。讀UDR會影響FIFO的狀態(tài),但FIFO空時同樣會在控制寄存器中產(chǎn)生相應標志位。6.2.3串行通信接口寄存器6.2ATmega16異步6.2.3串行通信接口寄存器6.2ATmega16異步串行通信接口2.波特率寄存器UBRR波特率發(fā)生器工作寄存器UBRR中的內(nèi)容決定其產(chǎn)生的波特率值大小。波特率與UBRR寄存器取值關(guān)系如表6-2所示6.2.3串行通信接口寄存器6.2ATmega16異步6.2.3串行通信接口寄存器6.2ATmega16異步串行通信接口2.波特率寄存器UBRR6.2.3串行通信接口寄存器6.2ATmega16異步6.2.3串行通信接口寄存器6.2ATmega16異步串行通信接口2.波特率寄存器UBRR表中fosc表示系統(tǒng)晶振頻率大小,B為通信波特率,UBRR為波特率寄存器。常用的波特率有1200bps、2400bps等,在已知波特率和fosc前提下通過應用表6-x中的公式可以計算出UBRR寄存器取值。UBRR寄存器為16位寄存器,分成高位UBRRH和低位UBRRL兩部分。在ICCAVR編譯器使用C語言編程時,可以將一個16位的數(shù)直接寫入UBRR寄存器即可。但需要注意的是,UBRR的取值必須在0-4095之間。6.2.3串行通信接口寄存器6.2ATmega16異步6.2.3串行通信接口寄存器6.2ATmega16異步串行通信接口3.控制和狀態(tài)寄存器控制和狀態(tài)寄存器是用來對串行口進行編程以及保存串行口的工作各種工作狀態(tài),在使用時至關(guān)重要。ATmega16有三個控制與狀態(tài)寄存器,分別為UCSRA、UCSRB、UCSRC。6.2.3串行通信接口寄存器6.2ATmega16異步6.2.3串行通信接口寄存器6.2ATmega16異步串行通信接口3.控制和狀態(tài)寄存器

RXC位(Bit7):接收結(jié)束標志位。接收器已成功接收一個數(shù)據(jù)并置于接收緩沖器中,此時RXC置位。RXC標志可用來產(chǎn)生接收結(jié)束中斷,執(zhí)行完程序后自動清零。對該位寫1清零會導致一次重復接收錯誤。TXC位(Bit6):發(fā)送結(jié)束標志位。 發(fā)送緩沖器(UDR)中的數(shù)據(jù)發(fā)送完成UDR為空,此時TXC置位,TXC標志可用來產(chǎn)生發(fā)送結(jié)束中斷。執(zhí)行完程序后該標志位自動清零,對該位寫1清零會導致一次重復發(fā)送錯誤。UDRE位(Bit5):數(shù)據(jù)寄存器空標志位。(1)控制與狀態(tài)寄存器UCSRA6.2.3串行通信接口寄存器6.2ATmega16異步6.2.3串行通信接口寄存器6.2ATmega16異步串行通信接口3.控制和狀態(tài)寄存器

FE(bit4):幀錯誤位。DOR(Bit3):數(shù)據(jù)溢出標志位。UPE(Bit2):奇偶校驗錯誤標志位。U2X(Bit1):波特率倍增控制位。MPCM(Bit0):多處理器通信模式標志位。 幀錯誤位(FE)、數(shù)據(jù)溢出標志位(DOR)、奇偶校驗錯誤標志位(UPE)與UDR中的內(nèi)容有關(guān),當對UDR進行讀寫操作時會影響這些標志位,因此讀UDR數(shù)據(jù)之前應先將這三個標志位的內(nèi)容讀取出來。這三個標志位不會觸發(fā)CPU產(chǎn)生中斷。(1)控制與狀態(tài)寄存器UCSRA6.2.3串行通信接口寄存器6.2ATmega16異步6.2.3串行通信接口寄存器6.2ATmega16異步串行通信接口3.控制和狀態(tài)寄存器

RXCIE位(Bit7):接收結(jié)束中斷使能位。TXCIE位(Bit6):發(fā)送結(jié)束中斷

溫馨提示

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

評論

0/150

提交評論