久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

串行口通信原理及操作流程

作者:玉另符   來源:本站原創   點擊數:  更新時間:2013年12月03日   【字體:

51單片機的串行口是一個可編程全雙工的通信接口,具有UART(通用異步收發器)的全部功能,能同時進行數據的發送和接收,也可以作為同步移位寄存器使用。

51單片機的串行口主要由兩個獨立的串行數據緩沖寄存器SBUF(發送緩沖寄存器和接收緩沖寄存器)和發送控制器、接收控制器、輸入移位寄存器及若干控制門電路組成。

51 單片機可以通過特殊功能寄存器SBUF隊串行接收或串行發送寄存器進行訪問,兩個寄存器共用一個地址99H,但在物理上是兩個獨立的寄存器,由指令操作決定訪問哪一個寄存器。執行寫指令時訪問串行發送寄存器;執行讀指令時,訪問串行接收寄存器。(接收器具有雙緩沖結構,即在接收寄存器中讀出前一個已接收到的字節之前,便能接收第二個字節,如果第二個字節已接收完畢,而第一個字節還沒有讀出,則將丟失其中一個字節,編程時應引起注意。對于發送器,因為是由 cpu控制的,所以不需要考慮。

 

與串行口緊密相關的一個特殊功能寄存器是串行口控制寄存器SCON,它用來設定串行口的工作方式、接收/發送控制以及狀態標志等。

串行口控制寄存器SCON

串行口控制寄存器SCON在特殊功能寄存器中,字節地址為98H,可位尋址,單片機復位時SCON全部被清零。

位序號

D7

D6

D5

D4

D3

D2

D1

D0

位符號

SM0

SM1

SM2

REN

TB8

RB8

T1

R1

SM0,SM1為工作方式選擇位。串行口有四種工作方式,它們由SM0、SM1設定。其中方式一最為常用。

SM2為多機通信控制位。

REN為允許串行接收位。

TB8為方式2、3中方式數據的第九位。

RB8為方式2、2中接收數據的第九位。

TI為發送中斷標志位,在方式0時,當串行發送第8位數據結束時,或在其他方式,串行發送停止位的開始時,由內部硬件使TI置一,向CPU發出中斷申請。在中斷服務程序中,必須使用軟件將其清零,取消此中斷申請。

RI為接收中斷標志位。在方式0時,當串行接收第8位數據結束時,或在其他方式,串行接收停止位的中間時,由內部硬件使RI置一,向CPU發出中斷申請。在中斷服務程序中,必須使用軟件將其清零,取消此中斷申請。

 

串口工作方式1簡介(0、2、3以后再說),串行口方式傳送1幀數據共10位,其中一位起始位(0),八位數據位(最低位在前,高位在后),一位停止位(1)。幀與幀之間可以有空閑,也可以無空閑。TXD(P3.1)位數據發送引腳,RXD(P3.0)為數據接收引腳。其傳輸波特率是可變的,對于51單片機,波特率由定時器1的溢出率決定。

 

串行口方式1編程與實現

當數據被寫入SBUF寄存器后,單片機自動開始從起始位發送數據,發送到停止位的開始時,由內部硬件使TI置1,向CPU申請中斷,接下來可在中斷服務程序中做相應的處理,也可選擇不進入中斷。

用軟件置REN為1時,接收器以所選擇波特率的16倍速率采樣RXD引腳電平,檢測到RXD引腳輸入電平發生負跳變時,則說明起始位有效,將其移入輸入移位寄存器,并開始接收這一幀信息的其余位。接收過程中,數據從移位寄存器右邊移入,起始位移至輸入移位寄存器最左邊時,控制電路進行最后一次移位。當 RI=0,且SM2=0(或接收到的停止位為1時),將接收到的9位數據的前8位數據裝入接收SBUF,第9位(停止位)進入RB8,并置RI=1,向 CPU請求中斷。

在具體操作串口之前需要對單片機的一些與串口有關的特殊功能寄存器進行初始化設置,主要是設置產生波特率的定時器1、串行口控制和中斷控制。具體步驟如下:

1.         確定T1的工作方式(編程TMOD寄存器)

2.         計算T1的初值,載入TH1、TL1

3.         啟動T1(編程TCON中的TR1位)

4.         確定串行口工作方式(編程SCON寄存器)

5.         串行口工作在中斷方式時,要進行中斷設置(編程IE,IP)

/**********************

實現功能:

RS232通信(串口通信)

**********************/

#include<reg52.h>

#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);//等待串行發送停止位的開始,TI=1,并向CPU發送中斷請求

TI=0;//取消此次中斷

ES=1; //開串口中斷

flag=0;

}

}

}

void time1() interrupt 4

{

RI=0;//取消中斷申請

date=SBUF;

flag=1; 

}

 

關閉窗口

相關文章

主站蜘蛛池模板: 99热热热热| 午夜一区二区三区视频 | 在线综合视频 | 午夜电影在线播放 | 天天av综合 | 欧美激情综合色综合啪啪五月 | 亚洲夜夜爽 | av电影一区二区 | 99精品免费视频 | 一区二区三区国产好 | 中文字幕第100页 | 成人视屏在线观看 | 日韩午夜网站 | 黄色片大全在线观看 | 欧美一二三 | 国产精品一二三区 | 久久99精品久久久久久秒播九色 | 69性欧美高清影院 | av一二三区 | 日日噜噜噜夜夜爽爽狠狠视频, | 欧美一区二区三区久久精品 | 久久精品亚洲精品国产欧美kt∨ | h片在线观看网站 | 91亚洲精华国产 | 视频一二三区 | 日韩午夜在线观看 | 日韩成人一区 | 欧美影院| 免费看黄色小视频 | 亚洲国产精品成人无久久精品 | 欧美精品被 | 久久精品欧美一区二区三区不卡 | 国产精品久久久亚洲 | 精品国产免费人成在线观看 | 一区二区不卡高清 | 91麻豆精品国产91久久久更新资源速度超快 | 精品国产精品三级精品av网址 | 免费成人高清 | www.久久久久久久久久久 | 国产一区二区三区四区在线观看 | 免费国产视频 |