簡單的微控制器串列埠通訊

2021-09-25 15:44:11 字數 2277 閱讀 6455

序列介面 (serial inte***ce) 是指資料一位一位地順序傳送,其特點是通訊線路簡單,只要一對傳輸線就可以實現雙向通訊(可以直接利用**線作為傳輸線),從而大大降低了成本,特別適用於遠距離通訊,但傳送速度較慢。一條資訊的各位資料被逐位按順序傳送的通訊方式稱為序列通訊。序列通訊的特點是:資料位的傳送,按位順序進行,最少只需一根傳輸線即可完成;成本低但傳送速度慢。序列通訊的距離可以從幾公尺到幾千公尺;根據資訊的傳送方向,序列通訊可以進一步分為單工、半雙工和全雙工三種。序列介面是一種可以將接受來自cpu的並行資料字元轉換為連續的序列資料流傳送出去,同時可將接受的序列資料流轉換為並行的資料字元供給cpu的器件。

單工是對乙個啞巴說活,半雙工是兩人用對講機交流,全雙工是兩人激烈的吵架

由於每個硬體都有乙個開發手冊,軟體**必須根據手冊來寫,因此**並沒有固定的。這裡用51微控制器來舉例:

51微控制器的序列口設有兩個控制暫存器:序列控制暫存器scon和波特率選

擇特殊功能暫存器pcon。

序列控制暫存器scon用於選擇序列通訊的工作方式和某些控制功能。格式如下

其中sm0sm1按下列組合確定序列口的工作方式:

sm2:允許方式2或方式3多機通訊控制位。在方式2或方式3時,如sm2位為1,ren位為1,則從機處於只有接收到rb8位為1(位址幀)時才啟用中斷請求標誌位ri為1,並向主機請求中斷處理。被確認為定址的叢機則復位sm2位為0,從而才接收rb8為0的資料幀。在方式1時,如果sm2位為1,則只有在接收到有效的停止位時才置位中斷請求標誌位ri為1;在方式0時,sm2 應為0。

ren:允許/禁止序列接收控制位。由軟體置位ren,即ren=1為允許序列接收狀態,可啟動序列接收器rxd,開始接收資訊。軟體復位ren,即ren=0,則禁止接收。

tb8: 在方式2或方式3,它為要傳送的第9位資料,按需要由軟體置位或清0。例如,可用作資料的校驗位或多機通訊中表示位址幀/資料幀的標誌位。

rb8: 在方式2或方式3,是接收到的第9位資料。在方式1,若sm2=0,則rb8是接收到的停止位。方式0不用rb8。

ti: 傳送中斷請求標誌位。在方式0,當序列傳送資料第8位結束時,由內部硬體自動置位,即ti=1,向主機請求中斷,響應中斷後必須用軟體復位,即ti=0。在其他方式中,則在停止位開始傳送時由內部硬體置位,必須用軟體復位。

ri: 接收中斷請求標誌位。在方式0,當序列接收到第8位結束時由內部硬體自動置位ri=1,向主機請求中斷,響應中斷後必須用軟體復位,即ri=0。在其他方式中,序列接收到停止位的中間時刻由內部硬體置位,即ri=1(例外情況見sm2說明),必須由軟體復位,即ri=0。

當軟體設定scon的sm0、sm1為「01」 時,序列通訊則以模式1工作。此模式為8位uart格式,一幀資訊為10位:1位起始位,8位資料位(低位在先)和1位停止位。波特率可變,即可根據需要進行設定。txd(txd/p3.1)為傳送資訊,rxd(rxd/p3.0)為接收端接收資訊,序列口為全雙工接受/傳送序列口。(具體的可以檢視stc89c52晶元手冊這裡就不多說了)

因此需要先寫出

scon |= 0x1 << 6

這句**代表sm0為0,sm1為1工作模式為1。

再然後確定波特率的設定,序列通訊模式1的波特率=2smod/32×(定時器/計數器1溢位率)。

當 微控制器工作在12t模式時,定時器的溢位率 = sysclk/12/( 256 - th1)。

sysclk是系統頻率。

tmod |= 0x1<<5;// tr1 = 1; 啟動定時器,讓定時器工作

tcon |= 0x1 << 6; 定時器1的模式為1

th1 = 0xfd;算出來的位址是16位的這是低8位 這裡頻率為9600

tl1 = 0xfd; 算出來的位址是16位的這是高8位

這樣串列埠初始化就配置好了,可以通過

void sendbyte(char bytedata)

void sendstring(char *pstr)

}int main()

} return 0;

}

來讓51微控制器傳送給pc你設定的「hello」字串

微控制器串列埠通訊

微控制器串列埠通訊 通常的usb序列通訊方式為全雙工,即兩條資料線 rxd和txd,一條用於傳送資料,一條用於接收資料。在序列通訊前,需要對序列通訊進行配置。對於微控制器 ri為接受中斷標誌位,未通訊時ri 0 當電腦傳送第乙個位元組幀a0到微控制器時,sbuf a0,中斷標誌位ri 1,微控制器呼...

微控制器串列埠通訊

1 需求 實現電腦端控制微控制器開啟燈光風扇,顯示微控制器傳遞過來的資料 如溫度 濕度等 2 工具 平台軟體 驅動人生 vs2012 keil4 3 下面就開始吧 4 檢視我們當前的通訊埠號 如圖 然後確定我們微控制器的晶振,我是用的是11.0592m的 即9600 差不多我們就可以開始我們的開發了...

微控制器串列埠通訊

1 每隔1秒鐘,a向b通過串列埠傳送乙個位元組c num 該位元組按照0x00 0x09迴圈,例如某一時刻傳送c num 0x 3 2 b接收到資料後,做9 c num的計算,並將計算結果通過串列埠傳送給a微控制器。例如b接收到0x03,則b要通過串列埠返回0x09 0x03 0x06給微控制器a ...