標題: 51單片計算機串口開發詳解 [打印本頁]
作者: dagu 時間: 2014-12-26 00:00
標題: 51單片計算機串口開發詳解
一.51單片計算機串口結構圖如下:
二. SCON 是一個特殊功能寄存器說明:
用以設定串行口的工作方式、接收/發送控制以及設置狀態標志
各位功能如下:
SM0和SM1 為工作方式選擇位
SM2,多機通信控制位,主要用于方式2和方式3。當接收機的SM2=1時可以利用收到的RB8來控制是否激活RI(RB8=0時不激活RI,收到的信息丟棄;RB8=1時收到的數據進入SBUF,并激活RI,進而在中斷服務中將數據從SBUF讀走)。當SM2=0時,不論收到的RB8為0和1,均可以使收到的數據進入SBUF,并激活RI(即此時RB8不具有控制RI激活的功能)。通過控制SM2,可以實現多機通信。
在方式0時,SM2必須是0。在方式1時,若SM2=1,則只有接收到有效停止位時,RI才置1。
REN,允許串行接收位。由軟件置REN=1,則啟動串行口接收數據;若軟件置REN=0,則禁止接收。
TB8,在方式2或方式3中,是發送數據的第九位,可以用軟件規定其作用。可以用作數據的奇偶校驗位,或在多機通信中,作為地址幀/數據幀的標志位。
在方式0和方式1中,該位未用。
RB8,在方式2或方式3中,是接收到數據的第九位,作為奇偶校驗位或地址幀/數據幀的標志位。在方式1時,若SM2=0,則RB8是接收到的停止位。
TI,發送中斷標志位。在方式0時,當串行發送第8位數據結束時,或在其它方式,串行發送停止位的開始時,由內部硬件使TI置1,向CPU發中斷申請。在中斷服務程序中,必須用軟件將其清0,取消此中斷申請。
RI,接收中斷標志位。在方式0時,當串行接收第8位數據結束時,或在其它方式,串行接收停止位的中間時,由內部硬件使RI置1,向CPU發中斷申請。也必須在中斷服務程序中,用軟件將其清0,取消此中斷申請。
三.串口開發例程,下面程式實現向單片機發關信息后,它收完后再返回送回來。
#include<reg52.h>
unsigned char flag,a;
void main()
{
TMOD=0x20; //設置定時器1為工作方式2,串口是靠在、定時器工作的
TH1=0xfd;
TL1 =0xfd; //裝串口初值,設置串口波特率9600,計算出來的
TR1=1;//打開定時器
REN=1; // 打開串口允許位
SM0=0;
SM1=1;//設置串口工作方式1
EA=1; //打開總中斷
ES=1; //打開串口中斷
while(1)
{
if (RI==1) //這個是用來讀取到P1口
{
RI=0;
P1=SBUF:
}
if(flag==1) //表明串口收到的數據可以用來發送
{
ES=0; //防止TI進入串口中斷關串口中斷
flag=0;
SBUF=a; //向發送SBUF送a
while(!TI); //等待 發送結束。未發送結束之前T1一直是0
TI=0; // 通過軟件將TI置0防止中斷后進入中斷服務程序
ES=1;
}
}
}
void ser() interrupt 4
{
RI=0;
P1=SBUF;
a=SBUF;
flag=1;
}
附:max232芯片接線圖
max 232 內部合并了MC1488和MC1489能夠實現TTL電平和232電平的雙向轉換
除了232接口外還有其它的接口,都有自己不同的特性
RS-485是一點對多點的通信接口,一般采用雙絞線的結構。普通的PC機一般不帶RS485接口,因此要使用RS-232C/RS-485轉換器。對于單片機可以通過芯片MAX485來完成TTL/RS-485的電平轉換。在計算機和單片機組成的RS-485通信系統中,下位機由單片機系統組成,上位機為普通的PC機,負責監視下位機的運行狀態,并對其狀態信息進行集中處理,以圖文方式顯示下位機的工作狀態以及工業現場被控設備的工作狀況。系統中各節點(包括上位機)的識別是通過設置不同的站地址來實現的。
作者: zllarry 時間: 2014-12-27 22:21
值得擁有
作者: machinnneee 時間: 2014-12-30 11:45
很詳細的資料,謝謝分享
作者: machinnneee 時間: 2014-12-30 11:51
經過驗證,程序可用
作者: lxl2255 時間: 2015-1-7 13:14
詳細的資料,謝謝
作者: yyxtj 時間: 2015-4-16 20:28
好東西,學習一下,謝謝!
作者: 眾生作廢 時間: 2015-5-15 10:22
SM2,多機通信控制位,主要用于方式2和方式3。當接收機的SM2=1時可以利用收到的RB8來控制是否激活RI(RB8=0時不激活RI,收到的信息丟棄;RB8=1時收到的數據進入SBUF,并激活RI,進而在中斷服務中將數據從SBUF讀走)。當SM2=0時,不論收到的RB8為0和1,均可以使收到的數據進入SBUF,并激活RI(即此時RB8不具有控制RI激活的功能)。通過控制SM2,可以實現多機通信。
在方式0時,SM2必須是0。在方式1時,若SM2=1,則只有接收到有效停止位時,RI才置1。
REN,允許串行接收位。由軟件置REN=1,則啟動串行口接收數據;若軟件置REN=0,則禁止接收。
TB8,在方式2或方式3中,是發送數據的第九位,可以用軟件規定其作用。可以用作數據的奇偶校驗位,或在多機通信中,作為地址幀/數據幀的標志位。
在方式0和方式1中,該位未用。
RB8,在方式2或方式3中,是接收到數據的第九位,作為奇偶校驗位或地址幀/數據幀的標志位。在方式1時,若SM2=0,則RB8是接收到的停止位。
TI,發送中斷標志位。在方式0時,當串行發送第8位數據結束時,或在其它方式,串行發送停止位的開始時,由內部硬件使TI置1,向CPU發中斷申請。在中斷服務程序中,必須用軟件將其清0,取消此中斷申請。
RI,接收中斷標志位。在方式0時,當串行接收第8位數據結束時,或在其它方式,串行接收停止位的中間時,由內部硬件使RI置1,向CPU發中斷申請。也必須在中斷服務程序中,用軟件將其清0,取消此中斷申請。
作者: 51hei電控04261 時間: 2015-12-24 11:45
很好的帖子
作者: 迷戀520冬天 時間: 2016-3-17 23:11
很好的帖子 幫助很大
作者: qq529593957 時間: 2016-3-18 00:34
很好的帖子 幫助很大很好的帖子 幫助很大
作者: 淺水初探 時間: 2016-9-1 15:11
我用這個程序在我的實驗板上調試,可以通過,但燒入單片機運行,串口無顯示,為何?
作者: qzyhlf 時間: 2019-1-25 10:52
值得擁有
作者: wengjiamin 時間: 2021-1-9 21:07
RS-485還要在終端接120歐姆電阻,防止信號反射
作者: zhangweiyu 時間: 2021-2-17 15:50
真是個好貼,我正好在學習,謝謝!
作者: lsh04 時間: 2021-2-20 23:20
很詳細的資料,謝謝分享
作者: robter 時間: 2021-2-22 10:44
感謝樓主,很好的學習資料
歡迎光臨 (http://www.zg4o1577.cn/bbs/) |
Powered by Discuz! X3.1 |
主站蜘蛛池模板:
a黄视频|
国产乱码一区
|
能看的av
|
欧美日韩毛片
|
精品免费视频
|
日韩久久久久久久
|
精品在线一区
|
伊人网站在线
|
国产日韩久久
|
日日干夜夜操天天操
|
在线国产一区二区
|
精品久久久久一区二区国产
|
激情视频中文字幕
|
日韩视频―中文字幕
|
成人午夜视频在线观看
|
欧美另类视频
|
美女视频一区二区三区
|
欧美一级电影免费观看
|
羞羞的视频免费看
|
三级在线观看
|
久久精品视频网站
|
欧美人妖网站
|
超碰导航
|
8x国产精品视频一区二区
|
亚洲区一区二
|
中文在线一区二区
|
国产一区二区三区网站
|
国产精品亚洲二区
|
国产精品久久久久久久久久久久久
|
亚洲综合热|
日本久久网
|
97人人超碰|
亚洲草草视频
|
精品欧美乱码久久久久久1区2区
|
夜夜爽99久久国产综合精品女不卡
|
一区二区在线观看av
|
国产精品色哟哟网站
|
国产精品毛片av
|
久久精品国产一区二区三区不卡
|
天天看天天操
|
国产精品欧美一区二区
|