51微控制器序列通訊原理
51微控制器序列通訊原理
計算機通訊
計算機通訊:計算機與外部裝置或計算機之間的資訊交換。基本的通訊方式有兩種。
- 並行通訊:將傳送資料位元組的各位用多條資料線同時進行傳送。優點:控制簡單,傳輸速度快。缺點:由於傳輸線較多,長距離傳送成本高且接收方的各位同時接受困難。
- 序列通訊:所傳送的資料各位按順序一位一位地傳送或接收。優點:傳輸線少,成本低。缺點:控制複雜。
序列通訊
非同步通訊
通訊的傳送與接收裝置使用自己的時鐘控制資料的傳送和接收過程(兩個時鐘儘可能一致)。
資料或字元是一幀一幀地傳送的。先用一個起始位0表示字元的開始,然後是8位資料,規定低位在前,高位在後。其後是奇偶校驗位,此位通過對資料奇偶性的檢查,可用於判別字元傳送的正確性(可省略)。最後是停止位,用以表示字元的結束。
同步通訊
傳送方時鐘對接收方時鐘的完全控制,保持位同步關係也保持字元同步關係。
資料傳送速率
波特率: 每秒鐘傳送二進位制程式碼的位數
單位:位/秒,bps
傳輸距離隨傳輸速率增加而減少。
調變解調器:由於距離太遠時,要先採用調製器把數字訊號轉換位模擬訊號,並加以放大在傳送。在接收時,在用解調器把模擬訊號轉換成數字訊號在送入計算機介面。
傳輸方向
單工:資料傳輸僅能沿一個方向
半雙工:資料傳輸可以沿兩個方向,但要分時進行。
全雙工:資料可以同時進行雙向輸出
微控制器序列口
內部硬體結構:兩個物理上獨立的接受、傳送緩衝器SBUF。傳送緩衝器只能寫入不能讀出。接收緩衝器只能讀出不能寫入。
序列口特殊功能暫存器
序列口控制暫存器SCON
符號 | 位元組地址 | 位名稱 | 位名稱 | 位名稱 | 位名稱 | 位名稱 | 位名稱 | 位名稱 | 位名稱 | 復位值 |
---|---|---|---|---|---|---|---|---|---|---|
SCON | 98H | SM0/FE | SM1 | SM2 | REN | TB8 | RB8 | TI | RI | 0000 0000 |
- RI:接收中斷標誌位。在方式0時,接收完第8位資料時,RI由硬體自動置1。在其他方式中,序列接收到停止位時,該位置1。RI=1,表示一幀資料接收完畢,並申請中斷,要求CPU從接收SBUF取走資料。
- TI:傳送中斷標誌位。。在方式0時,傳送完第8位資料時,TI由硬體自動置1。在其他方式中,序列傳送停止位的開始時,該位置1。TI=1,表示一幀資料傳送完畢,並申請中斷,在 CPU響應中斷後,在中斷服務程式中向SBUF寫入要傳送的下一幀資料。
- RB8:接收的第9位資料。在方式1時,若SM2=0,RB8接收到的停止位。在方式0中。不使用RB8.
- TB8:傳送的第9位資料。其值由軟體置1或清0。在雙機序列通訊時,一般作為奇偶校驗位使用;在多級序列通訊中用來表示主機傳送的是地址幀還是資料幀,TB9=1為地址幀,TB8=0為資料幀。在方式0和方式1中,不使用TB8。
- REN:允許序列接受位。由軟體置1或清0。REN=1,允許序列口接收資料;REN=0,禁止序列口接收資料。
- SM2:多機通訊控制位。在方式2和方式3時進行。如果SM2=1,則只有當接收到的第九位資料(REB)為1時,才使RI置1,產生中斷請求,並將接收到的前8位資料送入SBUF,當接收到的第九位資料位0時,則將接收到的前8位資料丟棄;如果SM2=0,則將前8位資料送入SBUF中,並使RI置1。
- SM0/SM1:方式選擇位
SM0 | SM1 | 工作方式 | 功能 | 說明 | 波特率 |
---|---|---|---|---|---|
0 | 0 | 方式0 | 8位同步移位暫存器 | 常用於擴充套件I/O口 | fosc/12 |
0 | 1 | 方式1 | 10位URAT | 8位資料、起始位、結束位 | 可變(由定時器控制) |
1 | 0 | 方式2 | 11位URAT | 8位資料、起始位0、結束位1和奇偶校驗位 | fosc/32或fosc/64 |
1 | 1 | 方式3 | 11位URAT | 8位資料、起始位0、結束位1和奇偶校驗位 | 可變(由定時器控制) |
fosc=晶振的頻率。
URAT=非同步通訊暫存器
電源控制暫存器PCON
符號 | 位元組地址 | 位名稱 | 位名稱 | 位名稱 | 位名稱 | 位名稱 | 位名稱 | 位名稱 | 位名稱 | 復位值 |
---|---|---|---|---|---|---|---|---|---|---|
PCON | 87H | SMOD | SMOD0 | POF | GF1 | GF0 | PD | IDL | 0xx1 0000 |
僅SMOD、SMOD0兩位與串列埠有關
- SMOD0:幀錯位檢測有效控制位。當SMOD0=1時,SCON暫存器中的SM0/FE位用於FE(幀錯誤檢測)功能。當SMOD0=0時,SCON暫存器中的SM0/FE位用於SM0功能。
- SMOD:波特率選擇位。(波特率倍增位):在方式2時,SMOD=1要比SMOD=0時的波特率加倍。
波特率的設定與計算
- 方式0
波 特 率 = f o s c 12 波特率=\frac{f_{osc}}{12} 波特率=12fosc - 方式2
波 特 率 = 2 S M O D 64 × f o s c 波特率=\frac{2^{SMOD} }{64} \times{f_{osc }} 波特率=642SMOD×fosc
序列口工作在方式2時,波特率僅與SMOD位的值有關。 - 方式1和方式三
波 特 率 = 2 S M O D 32 × 定 時 器 T 1 的 溢 出 率 波特率=\frac{2^{SMOD} }{32} \times{定時器T1的溢位率} 波特率=322SMOD×定時器T1的溢出率
T1常設定為方式2定時,即8位重灌入方式,並且不允許T1中斷。可以避免軟體重灌初值帶來的定時誤差。
定 時 器 1 的 溢 出 率 = 1 溢 出 周 期 = 1 ( 256 − X ) × T c y = f o s c 12 × ( 256 − X ) 定時器1的溢位率=\frac{1 }{溢位週期}=\frac{1}{(256-X)\times{T_{cy}}}=\frac{f_{osc}}{12\times{(256-X)}} 定時器1的溢出率=溢出周期1=(256−X)×Tcy1=12×(256−X)fosc
式中Tcy為系統機器週期;X為初值
PC與多個微控制器通訊
- 採用RS-232標準匯流排通訊
- 採用RS-422標準匯流排通訊
串列埠如何使用
序列口工作之前,應對其初始化
- 確定T1的工作方式(TMOD);
- 計算T1的初值,裝載TH1,TL1;
- 啟動T1(TCON中的TR1位)
- 確定序列口控制(SCON)
中斷設定(IE,IP暫存器)
相關文章
- 序列通訊
- 51微控制器學習歷程(二)快速入門51微控制器
- 快速入門51微控制器
- 51微控制器紅外接收
- 51微控制器彙編教程
- 基於8266WIFI模組實現智慧手機與51微控制器的通訊入門WiFi
- 序列通訊與並行通訊的區別並行
- 51微控制器實現流水燈
- 51微控制器學習跳轉
- websocket通訊原理Web
- 簡單的51微控制器多工作業系統(C51)作業系統
- 圖解通訊原理(乙太網通訊及物理層工作原理)圖解
- 分散式通訊之序列化分散式
- 51、52微控制器使用矩陣鍵盤矩陣
- python、51微控制器、百度ai介面PythonAI
- 基於51微控制器的定時器定時器
- 2020-10-31 51微控制器學習
- 51微控制器入門:LED燈控制(01)
- 51微控制器入門:數碼管(3)
- 51微控制器系列(三)51 微控制器遊戲設計 —— 雙人對戰小遊戲(石頭剪刀布)遊戲設計
- socket.io通訊原理
- 51nod 1202 子序列個數
- 51微控制器學習資料書籍分享
- 51微控制器程式下載失敗原因排查
- 51微控制器程式框架之組合按鍵框架
- 51微控制器程式框架之矩陣按鍵框架矩陣
- 基於51微控制器的矩陣按鍵矩陣
- 51微控制器入門:獨立按鍵(02)
- 51微控制器實現數碼管顯示
- 基於STC51微控制器的霓虹燈
- 序列中最大的數(51Nod-1062)
- STM32學習之SPI序列通訊
- 51微控制器流水燈電路以及C程式碼C程式
- 基於51微控制器的智慧溫控風扇
- 基於51微控制器液晶萬年曆設計
- 輕鬆玩轉51微控制器C語言pdfC語言
- 2024-03-08 51微控制器開發筆記筆記
- 51微控制器程式框架之LED閃爍_方法1框架