當前位置:名人名言大全網 - 經典說說 - 串行端口通信(1)

串行端口通信(1)

人類存在於世間,交流必不可少。交流使人類能夠相互了解,傳遞信息,提高生活質量。但也需要單片機,否則單機無法形成系統,發揮更大的威力。只有單片機和外圍設備相互傳遞信息,相互反饋,才會有壹個完善的系統。發明了串口通訊。讓我們了解壹下串口通信(uart)。

為了更好的理解串口通信,在介紹之前,我們先來看看幾個概念來補充壹下知識,了解壹下uart的工作原理。

串行通信有兩種,壹種是異步串行通信,另壹種是同步串行通信。

異步串行通信:異步串行通信是指通信雙方以壹個字符(包括特定的附加位)為數據傳輸單位的串行數據傳輸,發送方傳輸的字符之間的間隔不壹定,具有數據段傳輸不規則的特點。

同步串行通信:所謂同步通信,是指發送方和接收方的時鐘信號的頻率和相位在約定的通信速率下始終保持壹致(同步),保證雙方在發送和接收數據時有完全壹致的時序關系。

兩種串行通信的唯壹區別是時間。發送字符時,異步可以在不同的時間間隔發送,同步只能在固定的時間間隔發送。

波特率:波特率表示每秒傳輸的二進制位數,是衡量數據傳輸速率的指標。用單位時間內載波調制狀態變化的次數來表示。

相互通信的甲乙雙方必須具有相同的波特率,否則無法成功完成串行通信。

52單片機有壹個全雙工串行通信端口。全雙工UART(通用異步收發器)的壹個串行I/O端口,用於實現單片機之間或單片機與微機之間的串行通信;片內振蕩器和時鐘產生電路、應時晶體和微調電容需要外部連接。最佳振蕩頻率為6m-12m。引腳rxd (p3.0)和txd (p3.1)與串行通信相關。可以設置波特率。

串行端口通信與三個寄存器相關,即:

該寄存器中只有SMOD位與串行端口通信相關。系統復位默認為SMOD=0。當波特率為52單片機的定時器2生成時,波特率不受SMOD的影響。使用定時器1產生波特率時,如果沒有設置,默認為0,波特率正常。當設置為1時,波特率加倍。

串行端口是10位的通用異步接口。發送或接收壹幀數據信息為10位,包括1起始位“0”,8個數據位和1停止位“1”。發送數據:數據從TXD端口輸出。當數據寫入發送緩沖器SBUF時,發送器開始發送。發送壹幀數據後,設置中斷標誌TI=1,申請中斷,通知CPU可以發送下壹幀數據。接收數據:首先使REN=1(允許接收數據),串口接收來自RXD的數據。當采樣1為0時,確認是起始位“0”,然後開始接收壹幀數據。當接收到壹幀數據時,設置中斷標誌RI=1,申請中斷,通知CPU從SBUF中取出接收到的數據。

溢出率就是溢出頻率。只要計算出定時器每次溢出所需的時間t,溢出率就是1/t,計算在波特率為9600bps而沒有波特率加倍(SMOD=0)的情況下如何分配計數器。在這裏,因為波特率需要非常準確,否則通信會出錯。如果定時器模式是1,采用手動過載,誤差會很大,因為進入中斷功能需要時間,累計的時間會是錯誤的。所以這裏我們用的是2,8位自動重裝的工作模式。計數器自動重新加載,無需人工幹預,減少了錯誤。

根據上面的公式,如果波特率不加倍,SMOD=0,工作模式2,那麽n=8,波特率=9600,就可以算出x=253,以及十六進制的fd。

示例1原封不動地發送接受的數據。采用查詢方式,所以不需要打開串口中斷和中斷功能。只要不斷查詢ti和ri的值,就知道數據收發了。

如有偏離示例1,不做詳細評論。

在串行通信中,1模式是最常用的,所以要仔細理解1模式。對串行數據進行了逐位處理,處理了壹個52單片機模塊。只要知道接收壹段數據會產生接收中斷,就應該把它設置為0。如果發送壹段數據會產生傳輸中斷,您也應該將其設置為0。自己設置為0,數據就OK了。下壹篇文章將介紹其他三種方式,請註意。