c51 串口 波特率的計算

2020-11-29 電子產品世界

在串行通信中,收發雙方對發送或接收的數據速率要有一定的約定,我們通過軟體對MCS—51串行口編程可約定四種工作方式。其中,方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可變的,由定時器T溢出率決定。

串行口的四種工作方式對應著三種波特率。由於輸人的移位時鐘的來源不同,所以,各種方式的波特率計算公式也不同。
一、方式0的波特率
方式0時,移位時鐘脈衝由56(即第6個狀態周期,第12個節拍)給出,即每個機器周期產生一個移位時鐘,發送或接收一位數據。所以,波特率為振蕩頻率的十二分之一,並不受 PCON寄存器中SMOD的影響,即:

本文引用地址:http://www.eepw.com.cn/article/201611/315547.htm

方式0的波特率=fosc/12

三、方式l和方式3的波特率
方式1和方式3的移位時鐘脈衝由定時器T1的溢出率決定,故波特宰由定時器T1的
溢出率與SMOD值同時決定,即:
方式1和方式3的波特率=2SMOD/32·T1溢出率
其中,溢出率取決於計數速率和定時器的預置值。計數速率與TMOD寄存器中C/T的狀態有關。當C/T=0時,計數速率=fosc/2;當C/T=1時,計數速率取決於外部輸入時鐘頻率。
當定時器Tl作波特率發生器使用時,通常選用可自動裝入初值模式(工作方式2),在
工作方式2中,TLl作為計數用,而自動裝入的初值放在THl中,設計數初值為x,則每過「256一x」個機器周期,定時器T1就會產生一次溢出。為了避免因溢出而引起中斷,此時應禁止T1中斷。這時,溢出周期為:

系統晶振頻率選為11.0592MHZ就是為了使初值為整數,從而產生精確的波特率。
如果串行通信選用很低的波特率,可將定時器Tl置於工作方式0或工作方式1,但在
這種情況下,T1溢出時,需用中斷服務程序重裝初值。中斷響應時間和執行指令時間會使波特率產生一定的誤差,可用改變初值的辦法加以調整。
表6—2列出了各種常用的波特率及其初值。


相關焦點

  • 串口通信原理和控制程序
    以USART1為例的串口初始化本文引用地址:http://www.eepw.com.cn/article/201809/391492.htm  本程序調用了STM32自帶的固件庫,工程中具體的文件見下圖:
  • 串口波特率轉換的純軟體實現
    本軟體用Visual Basic軟體編寫,串口用MSCOMM控制項實現。核心功能就是將Mscomm1接收的數據立即送到Mscomm2的發送區。難點在於對16進位數據的轉換處理。 On Error GoTo uerror3 MSComm2.Output = strBuff Label14.Caption = Label14.Caption + Len(strBuff) 發送計數 End If End Selectuerror3:End Sub本文介紹的串口波特率轉換的純軟體方法和程序
  • 詳解波特率發生器編程/計算/波特率選擇
    詳解波特率發生器編程/計算/波特率選擇 軼名 發表於 2016-10-10 10:27:52   波特率發生器是什麼
  • 什麼是「串口」?
    大多數計算機包含兩個基於RS232的串口。串口同時也是儀器儀表設備通用的通信協議;很多GPIB兼容的設備也帶有RS-232口。同時,串口通信協議也可以用於獲取遠程採集設備的數據。串口通信的概念非常簡單,串口按位(bit)發送和接收字節。儘管比按字節(byte)的並行通信慢,但是串口可以在使用一根線發送數據的同時用另一根線接收數據。
  • 一分四串口UART擴展晶片的特性
    在某些產品中,有時可能需要多個串口,控制多個設備。矛盾的是,CPU通常不會有那麼多串口,所以這個時候就需要通過合適的方式進行串口擴展,或者通過Local Bus,或者SPI,或者USB接口。在本文中我想為讀者介紹兩款比較實用的串口(UART)擴展晶片,一種是SPI轉UART,一種是USB轉UART,都是一分四的。
  • Arduino的串口通訊函數
    串口通訊是單片機當中用到的最多的一種通訊,對我而言,它最大的一個優勢就是簡單,相對於I2C、SPI等,參與串口通訊的線只有兩根,分別為接收端、發送端,當然還包括電源線,我們暫且不管。單片機工作的時候一般都是單片機與之間單片機通訊,還有一種就是單片機與電腦的通訊,與電腦通訊主要是調試單片機的時候使用,那麼串口通訊到底在通訊什麼呢?
  • 淺談硬體串口通信基礎概念
    串口通信(Serial Communication),是指外設和計算機間通過數據信號線、地線等按位進行傳輸數據的一種通信方式,屬於串行通信方式。串口是一種接口標準,它規定了接口的電氣標準,沒有規定接口插件電纜以及使用的協議。
  • 中標麒麟作業系統串口調試方法研究
    串口作為一種廣泛應用的計算機接口,計算機對設備進行通信控制幾乎都是通過串口進行的。在中標麒麟作業系統下進行串口調試與Windows不同,本文將介紹兩種中標麒麟作業系統下的串口調試方法。串口設備的設備文件是用「/dev/ttyS0」、「/dev/ttyS1」來命名的,Windows下的「COM1」對應於中標麒麟下的「/dev/ttyS0」。打開串口只需要調用open()函數打開設備文件即可。1.2初始化串口串口的初始化設置包括波特率、數據位、奇偶校驗位、停止位和流控制設置。對它們各自進行設置時都有多種選擇,因此編程時一般採用switch()函數實現。
  • 51單片機STC89C54波特率以及雙時鐘探討
    最近公司老大讓我嘗試STC89C54單片機的最高波特率,經過一下午的嘗試,基本可以搞清楚了。在11.0592M的晶振下,若單片機工作在12T模式下(即一個機器周期為12個時鐘周期),波特率最高可為57600.而若工作在6T模式下(即一個機器周期為6個時鐘周期),則波特率最高可為115200.
  • LabVIEW串口通信的一個例子-串口"示波器"
    功能介紹:左邊上方串口接收區,下方為串口字符發送區。右方為一個波形圖表,在程序內部每次將串口發送過來的數據,以f%格式化,顯示在波形圖表上。狀態Init:程序初始化,主要把OpenCom等按鈕,串口狀態,串口接收字符串,波形圖標,TX/RX計數等控制項,置為False或清零。初始化狀態只執行一次,接下來就進入狀態Event。
  • 串口通訊的起始、數據、停止位是怎麼分配的?
    串口是串行接口(serial port)的簡稱,也稱為串行通信接口或COM接口。串口通信是指採用串行通信協議(serial communication)在一條信號線上將數據一個比特一個比特地逐位進行傳輸的通信模式。
  • 基於樹莓派的多串口多總線伺服器設計
    (1)串口通信參數①波特率為2 400~115 200 bps;②數據位為6/7/8/9;③校驗位為None/Even/Odd;④停止位為1/1.5/2;⑤成幀長度為1~15000位元組;⑥成幀間隔為30~500位。
  • STM32 串口功能 庫函數 詳解和DMA 串口高級運用(轉載)
    硬體怎麼連接出發,當然對於stm32還要熟悉庫函數的功能具起來rs232和485電平的區別硬體外圍晶片,波特率(反映傳一位的時間),起始位和停止位,數據寬度,校驗,硬體流控制,相應連接電腦時的接口怎麼樣的。配置,使用函數,中斷,查詢並結合通信協議才算了解了串口使用。
  • 串口通訊的起始、數據、停止位分配也不過如此
    串口是串行接口(serial port)的簡稱,也稱為串行通信接口或COM接口。 串口通信是指採用串行通信協議(serial communication)在一條信號線上將數據一個比特一個比特地逐位進行傳輸的通信模式。
  • 霍尼韋爾1900GHD掃描槍怎麼樣模擬串口讀取二維碼中文信息?
    原標題:霍尼韋爾1900GHD掃描槍怎麼樣模擬串口讀取二維碼中文信息? 霍尼韋爾1900GHD掃描槍怎麼樣模擬串口讀取二維碼中文信息?本文講詳細介紹一下操作的方法,供您參考借鑑。
  • 【實例】如何用串口軟體調試變頻器?
    每一個做工控的都必須要會利用串口調試軟體來和我們的外圍設備來做通訊測試。今天我們就來學習怎麼用串口調試軟體控制臺達的這款變頻器。廢話不多說,直接進入正題。 首先我們要準備好USB轉RS-232的串口線和RS-232轉RS485的模塊,或者USB直接轉RS485也行。
  • 機房常見的串口伺服器有哪些?它的作用是?
    3.對於RS232接口,PC機的一個串口只能夠接一臺串口設備,如果需要連接多個設備,原來的串口方案將不易於擴展,而網絡則沒有該問題。   由於以上原因,需要將設備連接到網絡上。但是已經有成千上萬原有的串口設備已存在,對這些設備的大批量改造顯然不是一蹴而就的,這樣作為暫時的解決方案——將串口轉化為網口的串口聯網伺服器就應運而生了。
  • 波特率自適應的RS-485中繼器設計
    2 幾種RS-485中繼器  現有的RS-485中繼器通常採用三種方法來實現:①採用RC充放電延時與RS觸發器的配合來控制RS-485晶片的數據收發方向;②採用單片機的定時器定時控制RS-485接口收發方向;③採用單片機串口監視總線上的數據,通過查表當數據送給本中繼器下的終端時才開啟數據傳輸通道。
  • arduino設置串口模式專題及常見問題 - CSDN
    串口名Arduino名TXRXUART0Serialpin1pin3UART1Serial1pin10pin9UART2Serial2pin17pin161、串口初始化Serial.begin(speed, config)參數:speed:波特率,一般取值9600,115200等。config:設置數據位、校驗位和停止位。
  • 樂創物聯物聯網架構之硬體層中間件Arduino 串口通信
    本節就來講感知層下硬體層中間件Arduino 串口通信。感知層是物聯網最基礎的部分,就像人的五官一樣去感受世界。1 Arduino 串口通信簡介Arduino需要和其他設備之間進行通信(例如PC、藍牙、WiFi等),而最常見最簡單的方式就是串口通信。