51串列埠傳送資料的格式

2021-05-27 16:23:37 字數 1721 閱讀 4752

序列口控制暫存器scon

sm0、sm1:序列口工作方式控制位:

sm0、sm1   工作方式   功能           波特率

00         方式0   同步移位暫存器   fosc/12

01           方式1   8位uart       可變(t1溢位率)

10           方式2   9位uart     fosc/64或fosc/32

11           方式3   9位uart     可變(t1溢位率)

其中,fosc為振盪器的頻率,uart為通用非同步接收和傳送器的英文縮寫。

序列口工作方式0:

當設定sm0、sm1為00時,序列口工作於方式0,它又叫同步移位暫存器輸出方式。在方式0下,資料從rxd(p3.0)端序列輸出或輸入,同步訊號從txd(p3.1)端輸出,傳送或接收的資料為8位,低位在前,高位在後,沒有起始位和停止位。資料傳輸率固定為振盪器的頻率1/12,也就是每個機器週期傳送一位資料。方式0可以外接移位暫存器,將序列口擴充套件為並行口,也可以外接同步輸入/輸出裝置。

執行任何一條以sbuf為目的暫存器指令,就開始傳送。

序列口工作方式1:

當設定sm0、sm1為01時,序列口工作於方式1,為資料傳輸率可變的8位非同步通訊方式,由txd傳送,rxd接收,一幀資料為10位,1位起始位(低電平),8位資料位(低位在前),1位停止位(高電平)。資料傳輸率取決於定時器1或2的溢位速率(1/溢位週期)和資料傳輸率是否加倍的選擇位smod。

對於有定時器/計數器2的微控制器,當t2con暫存器中rclk和tclk置位時,用定時器2作為接收和傳送資料傳輸率發生器,而rclk=tclk=0時,用定時器1作為接收和傳送的資料傳輸率發生器。2個定時器/計數器可以交叉使用,即傳送和接收採用不同的資料傳輸率。

傳送過程是由執行任何一條以sbuf為目的的暫存器指令引起的。

序列口工作方式2:

序列口工作方式3:

當設定sm0、sm1二位為11時,序列口工作於方式3。方式3與方式2類似,唯一的區別是方式3的資料傳輸率是可變的,而幀格式與方式2一樣為11位一幀。方式3也適用於多機通訊。

sm2:多機通訊控制位多機通訊時工作於方式2和方式3,sm2位主要用於方式2和方式3。接收狀態,當序列口工作於方式2或方式3,以及sm2=1時,只有當接收到第9位資料(rb8)為1時,才把接收到的前8位資料送入sbuf,且置位ri發出中斷請求,否則會將接收到的資料放棄。當sm2=0時,就不管第9位資料是0還是1,都將資料送入sbuf,並發出中斷請求。

工作於方式0,sm2必須為0。

ren:允許接收位

ren用於控制資料接收的允許和禁止,ren=1允許接收,ren=0禁止接收。

tb8:傳送資料位8

在方式2和方式3中,tb8是要傳送的第9位資料位,在多機通訊中同樣需要傳輸這一位,tb8=0表示傳輸的為資料,tb8=1代表傳輸的為位址。

rb8:接收資料位8

在方式2和方式3中,rb8存放接收到的第9位資料,用以識別接收到的資料特徵。

ti:傳送中斷標誌位

可定址標誌位。方式0時,傳送完第8位資料後,由硬體置位,其他方式下,在傳送或停止位之前由硬體置位,ti=1表示幀傳送結束, 向cpu發中斷申請。在中斷服務程式中,必須用軟體將其清0,取消此中斷申請。

ri:接收中斷標誌位

可定址標誌位。方式0時,接收完第8位資料後,該位由硬體置位,在其他工作方式下,該位由硬體置位,ri=1表示幀接收完成,向cpu發中斷申請。在中斷服務程式中,必須用軟體將其清0,取消此中斷申請。

07 24 c51串列埠 資料傳送 資料接收

首先是介紹下串列埠的相關暫存器 這裡著重介紹下scon 序列控制暫存器 和它的工作方式。下面是scon各位的意義。在scon中,sm0和sm1的組合決定了序列口的工作方式.在這裡我們串列埠資料傳送和接受用到的是方式1,當ren 1時允許序列口接收資料 得出01010000 所以scon 0x50 而...

LabVIEW串列埠程式設計 02 串列埠傳送

先說明一下,跟串列埠相關的函式都位於下圖所示的位置。官方的幫助文件對每個函式有詳細介紹,大家有不懂的地方首先檢視幫助文件,配合搜尋引擎深化理解。串列埠傳送一次資料過程的可以分為三個步驟 開啟串列埠 傳送資料 關閉串列埠。分別對應confugure port,write,close這三個函式。用這三個...

python實戰串列埠助手 7串列埠傳送

上次發的帖子的接收是有異常的,昨天下班時,反覆的測試,發現問題很大,晚上不想睡覺了,就起來修改除錯,終於搞定乙個沒有異常的版本讀取函式,如果有使用我 的,把下面2個函式替換一下即可,但是還有個問題沒有解決,就是顯示到text文字框沒有實現,我還要再繼續研究一下,傳送函式,一次只能發乙個,超過乙個就無...