『原創(chuàng)』單片機的串行口通信

串行口通信是單片機與各個模塊之間的數(shù)據(jù)傳遞的重要橋梁带斑,不得不說要想能夠?qū)崿F(xiàn)模塊間的數(shù)據(jù)傳輸,這是一個非常必要的基礎(chǔ)性的東西勋拟。所以今天我們來說一下單片機的串口通信勋磕。 大神別噴


串行口通信分為并行通信方式和串行通信方式,其中串行通信又分異步串行通信和同步串行通信敢靡。這次主要講解一下串行通信方式挂滓,其他方式和一些概念可以去了解一下,我們直接進入正題說話啸胧。<

</br>

先講一個波特率赶站,單片機與計算機在串口通信時的速率用波特率表示幔虏,它定義為每秒傳輸二進制代碼的位數(shù),關(guān)于單片機四種波特率計算方式在這里就不好列出了贝椿,可以去網(wǎng)上搜一下想括。
下面是電源管理寄存器PCON的位解析:
各位的定義: SMOD:該位與 串口通信有關(guān)。
SMOD=0; 串口方式1烙博,2瑟蜈,3時, 波特率正常渣窜。
SMOD=1; 串口方式1铺根,2,3時乔宿, 波特率加倍位迂。
GF1,GF0:兩個通用工作標志位,用戶可以自由使用详瑞。
PD:掉電模式設(shè)定位掂林。
PD=0 單片機處于正常工作狀態(tài)。
PD=1 單片機進入掉電(Power Down)模式 坝橡,可由 外部中斷或硬件復(fù)位模式喚醒党饮,進入掉電模式后,外部晶振停振驳庭,CPU刑顺、定時器、 串行口全部停止工作饲常,只有外部中斷工作蹲堂。
IDL:空閑模式設(shè)定位。
IDL=0 單片機處于正常工作狀態(tài)贝淤。
IDL=1 單片機進入空閑(Idle)模式柒竞,除CPU不工作外,其余仍繼續(xù)工作播聪,在空閑模式下可由任一個中斷或硬件復(fù)位喚醒朽基。

</br>

再介紹一個串行口控制寄存器SCON

串行口控制寄存器SCON

SM0、SM1:串行口工作方式選擇位
SM2:多機通信控制位
REN:允許/禁止串行口接收的控制位
TB8:在方式2和方式3中离陶,是被發(fā)送的第9位數(shù)據(jù)稼虎,可根據(jù)需要由軟件置1或清零,也可以作為奇偶校驗位招刨,在方式1中是停止位霎俩。
RB8:在方式2和方式3中,是被接收的第9位數(shù)據(jù)(來自第TB8位);在方式1中打却,RB8收到的是停止位杉适,在方式0中不用。
TI——串行口發(fā)送中斷請求標志位: 當(dāng)發(fā)送完一幀串行數(shù)據(jù)后柳击,由硬件置1猿推;在轉(zhuǎn)向中斷服務(wù)程序后,用軟件清0捌肴。
RI——串行口接收中斷請求標志位: 當(dāng)接收完一幀串行數(shù)據(jù)后蹬叭,由硬件置1;在轉(zhuǎn)向中斷服務(wù)程序后哭靖,用軟件清0。
51單片機的簡介——串行口侈离、SCON

串行口方式1

通過代碼來說明原理
`
#include<reg52.h>
sbit led=P1^0;
unsigned char flag,a,i;
unsigned char table[]="I get a test";
void main()
{
led=1;
TMOD=0x20;//設(shè)置定時器1為工作方式2 定時器用來設(shè)置波特率
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1; //允許串行口接收位
SM0=0; //串行口的工作方式為方式1
SM1=1;
EA=1; //全局中斷允許
ES=1; //串口中斷允許
while(1)
{

        if(flag==1)
            {
                ES=0;
                for(i=0;i<6;i++)
                {
                  SBUF=table[i]; 
                  while(!TI);
                  TI=0;
                 
                
                }  
                SBUF=a;  //只接受字符或字符串形式
                while(!TI);
                TI=0;
                ES=1;
                flag=0;


            }  
       }
 }

  void ser() interrupt 4
{
RI=0;
a=SBUF;
flag=1;
led=~led;

}

當(dāng)程序運行時试幽,我們用定時器來設(shè)定波特率,打開串行口寄存器的相應(yīng)位控制卦碾,我們用串行口助手來測試铺坞,把程序下載到單片機上,打開串行口助手洲胖,通過助手發(fā)送一個字符济榨,注意是字符,因為我們在定義a為字符型绿映,當(dāng)發(fā)送完一個字符后擒滑,單片機的SBUF接收寄存器就會收到這個字符,此時硬件會把RI置1叉弦,會觸發(fā)中斷丐一,進入中斷函數(shù),我們要用軟件將RI置0 淹冰,a=SBUF為單片機自動將接收寄存器中的數(shù)取走給a库车,此時a 便會受到數(shù)據(jù),結(jié)束中斷樱拴,便會在while中繼續(xù)執(zhí)行柠衍,當(dāng)執(zhí)行完if判斷后,我們要把全局中斷關(guān)閉晶乔,即ES=0珍坊,因為我們要把數(shù)據(jù)發(fā)送出去,防止其不斷進入中斷正罢,使其陷入死循環(huán)之中垫蛆,通過for語句把字符數(shù)組的字符發(fā)給發(fā)送寄存器SBUF,當(dāng)我們每發(fā)送一個字符時,硬件都會把TI置1袱饭,又因為我們關(guān)閉了全局中斷川无,此時不回進入中斷,我們只需把TI置0 即可完成發(fā)送虑乖,我們便會在串口助手收到字符數(shù)據(jù)的數(shù)據(jù)和自己輸入的數(shù)據(jù)懦趋,此外,特別聲明SBUF是兩個不同的寄存器疹味,雖然都是用同一地址仅叫,但一個是接收寄存器,一個是發(fā)送寄存器糙捺。

</br>

新手上路诫咱,很多不足,歡迎指正洪灯。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末坎缭,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子签钩,更是在濱河造成了極大的恐慌掏呼,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件铅檩,死亡現(xiàn)場離奇詭異憎夷,居然都是意外死亡,警方通過查閱死者的電腦和手機昧旨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進店門拾给,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人兔沃,你說我怎么就攤上這事鸣戴。” “怎么了粘拾?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵窄锅,是天一觀的道長。 經(jīng)常有香客問我缰雇,道長入偷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任械哟,我火速辦了婚禮疏之,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘暇咆。我一直安慰自己锋爪,他們只是感情好丙曙,可當(dāng)我...
    茶點故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著其骄,像睡著了一般亏镰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拯爽,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天索抓,我揣著相機與錄音,去河邊找鬼毯炮。 笑死逼肯,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的桃煎。 我是一名探鬼主播篮幢,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼为迈!你這毒婦竟也來了三椿?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤曲尸,失蹤者是張志新(化名)和其女友劉穎赋续,沒想到半個月后男翰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體另患,經(jīng)...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年蛾绎,在試婚紗的時候發(fā)現(xiàn)自己被綠了昆箕。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,673評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡租冠,死狀恐怖鹏倘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情顽爹,我是刑警寧澤纤泵,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站镜粤,受9級特大地震影響捏题,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜肉渴,卻給世界環(huán)境...
    茶點故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一公荧、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧同规,春花似錦循狰、人聲如沸窟社。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽灿里。三九已至,卻和暖如春昧识,著一層夾襖步出監(jiān)牢的瞬間钠四,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工跪楞, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留缀去,地道東北人。 一個月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓甸祭,卻偏偏與公主長得像缕碎,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子池户,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,562評論 2 349

推薦閱讀更多精彩內(nèi)容