串行口通信原理及操作流程WORD_第1頁
串行口通信原理及操作流程WORD_第2頁
串行口通信原理及操作流程WORD_第3頁
串行口通信原理及操作流程WORD_第4頁
串行口通信原理及操作流程WORD_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、文檔可能無法思考全面,請瀏覽后下載! 串行口通信原理及操作流程 51單片機的串行口是一個可編程全雙工的通信接口,具有UART(通用異步收發(fā)器)的全部功能,能同時進行數據的發(fā)送和接收,也可以作為同步移位寄存器使用。 51單片機的串行口主要由兩個獨立的串行數據緩沖寄存器SBUF(發(fā)送緩沖寄存器和接收緩沖寄存器)和發(fā)送控制器、接收控制器、輸入移位寄存器及若干控制門電路組成。 51 單片機可以通過特殊功能寄存器SBUF隊串行接收或串行發(fā)送寄存器進行訪問,兩個寄存器共用一個地址99H,但在物理上是兩個獨立的寄存器,由指令操作決定訪問哪一個寄存器。執(zhí)行寫指令時訪問串行發(fā)送寄存器;執(zhí)行讀指令時,訪問串行接收

2、寄存器。(接收器具有雙緩沖結構,即在接收寄存器中讀出前一個已接收到的字節(jié)之前,便能接收第二個字節(jié),如果第二個字節(jié)已接收完畢,而第一個字節(jié)還沒有讀出,則將丟失其中一個字節(jié),編程時應引起注意。對于發(fā)送器,因為是由 cpu控制的,所以不需要考慮。 7 / 12 與串行口緊密相關的一個特殊功能寄存器是串行口控制寄存器SCON,它用來設定串行口的工作方式、接收/發(fā)送控制以及狀態(tài)標志等。 串行口控制寄存器SCON 串行口控制寄存器SCON在特殊功能寄存器中,字節(jié)地址為98H,可位尋址,單片機復位時SCON全部被清零。 位序號 D7 D6 D5 D4 D3 D2 D1 D0 位符號 SM0 SM1 SM2

3、REN TB8 RB8 T1 R1 SM0,SM1為工作方式選擇位。串行口有四種工作方式,它們由SM0、SM1設定。其中方式一最為常用。 SM2為多機通信控制位。 REN為允許串行接收位。 TB8為方式2、3中方式數據的第九位。 RB8為方式2、2中接收數據的第九位。 TI為發(fā)送中斷標志位,在方式0時,當串行發(fā)送第8位數據結束時,或在其他方式,串行發(fā)送停止位的開始時,由內部硬件使TI置一,向CPU發(fā)出中斷申請。在中斷服務程序中,必須使用軟件將其清零,取消此中斷申請。 RI為接收中斷標志位。在方式0時,當串行接收第8位數據結束時,或在其他方式,串行接收停止位的中間時,由內部硬件使RI置一,向CP

4、U發(fā)出中斷申請。在中斷服務程序中,必須使用軟件將其清零,取消此中斷申請。 串口工作方式1簡介(0、2、3以后再說),串行口方式傳送1幀數據共10位,其中一位起始位(0),八位數據位(最低位在前,高位在后),一位停止位(1)。幀與幀之間可以有空閑,也可以無空閑。TXD(P3.1)位數據發(fā)送引腳,RXD(P3.0)為數據接收引腳。其傳輸波特率是可變的,對于51單片機,波特率由定時器1的溢出率決定。 串行口方式1編程與實現(xiàn) 當數據被寫入SBUF寄存器后,單片機自動開始從起始位發(fā)送數據,發(fā)送到停止位的開始時,由內部硬件使TI置1,向CPU申請中斷,接下來可在中斷服務程序中做相應的處理,也可選擇不進入中

5、斷。 用軟件置REN為1時,接收器以所選擇波特率的16倍速率采樣RXD引腳電平,檢測到RXD引腳輸入電平發(fā)生負跳變時,則說明起始位有效,將其移入輸入移位寄存器,并開始接收這一幀信息的其余位。接收過程中,數據從移位寄存器右邊移入,起始位移至輸入移位寄存器最左邊時,控制電路進行最后一次移位。當 RI=0,且SM2=0(或接收到的停止位為1時),將接收到的9位數據的前8位數據裝入接收SBUF,第9位(停止位)進入RB8,并置RI=1,向 CPU請求中斷。 在具體操作串口之前需要對單片機的一些與串口有關的特殊功能寄存器進行初始化設置,主要是設置產生波特率的定時器1、串行口控制和中斷控制。具體步驟如下:

6、 1. 確定T1的工作方式(編程TMOD寄存器) 2. 計算T1的初值,載入TH1、TL1 3. 啟動T1(編程TCON中的TR1位) 4. 確定串行口工作方式(編程SCON寄存器) 5. 串行口工作在中斷方式時,要進行中斷設置(編程IE,IP) /* 實現(xiàn)功能: RS232通信(串口通信) */ #include; #define uint unsigned int #define uchar unsigned char uchar flag; uchar date; void init() TMOD=0X20;/定時器1工作方式2 TH1=0xfd;/9600 TH0=0xfd;/9600 TR1=1;/啟動定時器1 REN=1;/允許串口接收 SM0=0;/設定串口工作方式1 SM1=1;/設定串口工作方式1 EA=1; /開總中斷 ES=1;/開串口中斷 void main() init(); while(1) if(flag=1) ES=0; /關閉串口中斷 P1=date; SBUF=date; while(!TI);/等待串行發(fā)送停止位的開始,TI=1,并向CPU發(fā)送中斷請求 TI=0;/取消此次

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論