日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C51单片机学习笔记之串口通信

發(fā)布時(shí)間:2023/12/29 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C51单片机学习笔记之串口通信 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

簡介

串口通信就是單片機(jī)和pc之間的一種通信方式。

通信方式:并行,串行,同步,異步(最常用的)

傳輸方向:單工,半雙工(不同時(shí)間),全雙工

基本結(jié)構(gòu)

?

相關(guān)寄存器

SCON串口控制寄存器(主要用方式1)

D7D6D5D4D3D2D1D0
符號SM0SM1SM2RENTB8RB8TIRI
多機(jī)通信控制位允許接收位是要發(fā)送的第9位數(shù)據(jù)位接收到的第9位數(shù)據(jù)位發(fā)送中斷標(biāo)志位接收中斷標(biāo)志位
主要用于方式2,3中1允許接收
0拒絕接收

TB8——在方式2和方式3中,TB8是要作為數(shù)據(jù)幀第9位被發(fā)送出去的,在多機(jī)通信中,可用于判斷當(dāng)前數(shù)據(jù)幀的數(shù)據(jù)是地址還是數(shù)據(jù),TB8=0為數(shù)據(jù),TB8=1為地址?

RB8——當(dāng)單片機(jī)已經(jīng)接收一幀數(shù)據(jù)幀時(shí),會把數(shù)據(jù)幀中的第9位放到 RB8中。方式0不使用RB8,在方式2和方式3中,RB8為接收到的數(shù)據(jù)幀的第9位數(shù)據(jù)位。

TI——方式1、2、3中。當(dāng)發(fā)送數(shù)據(jù)完畢,硬件會將其置1,當(dāng) TI 被置1,會向CPU發(fā)送中斷請求。我們記得要在中斷服務(wù)程序中把 IT 置回0

RI——當(dāng)接受完一幀數(shù)據(jù)時(shí),RI ?由硬件置1,當(dāng)RI 被置1,會向CPU請求中斷。同樣要在中斷服務(wù)程序中把 RI 置回0。

SM0SM1工作方式功能波特率
00方式08位同步移位寄存器晶振頻率 / 12
01方式110位UART可變
10方式211位晶振頻率/32或晶振頻率/64
11方式311位可變

PCON功率控制寄存器

D7D6D5D4D3D2D1D0
PCONSMOD

這個寄存器只有一個位SMOD,在方式1,2.,3時(shí),波特率都與SMOD有關(guān),當(dāng)SMOD=1時(shí),波特率會增加一倍。復(fù)位時(shí),SMOD變回0。

SBUF寄存器:51單片機(jī)中的特殊寄存器,串行數(shù)據(jù)緩沖器(一個接收一個發(fā)送),兩個其實(shí)是共用的一個地址99H,但是兩個在物理上面是分開的。
當(dāng)發(fā)送使用時(shí),就采用SBUF=XXX; ?(XXX為需要傳送的數(shù)據(jù))
當(dāng)接收使用時(shí),采用XXX=SBUF;
記得因?yàn)槭谴械乃詡鬏敹际且晃灰晃贿M(jìn)行的。

波特率計(jì)算?

?

?代碼部分

#include <REGX52.H> #include "delay.h" #include "DigitalTube.h" void init() {SCON=0x50;//配置寄存器PCON=0;//波特率不加倍TMOD |=0X20;//定時(shí)器選擇工作模式2TH1=TL1=0xfd;//波特率9600EA=1;//中斷打開ES=1;//接受中斷ET1=1;//定時(shí)器中斷關(guān)閉TR1=1;//定時(shí)器開關(guān)打開 } void UART_SendByte() interrupt 4 {unsigned char date; //定義一個數(shù)據(jù)delay();date = SBUF;//pc發(fā)送數(shù)據(jù)RI = 0; //接收關(guān)閉print(date/10,1);//控制數(shù)碼管print(date%10,2);SBUF = date;//pc接收數(shù)據(jù)while(!TI);//判斷發(fā)送是否關(guān)閉TI = 0;//發(fā)送關(guān)閉 }

?結(jié)論

代碼部分我只給了中斷配置及串口通信的代碼,其余大家自由發(fā)揮。本章重點(diǎn)是搞清楚串口通信的寄存器配置,波特率的計(jì)算,以及與之前中斷、定時(shí)器相關(guān)知識相結(jié)合。——中斷——定時(shí)器

總結(jié)

以上是生活随笔為你收集整理的C51单片机学习笔记之串口通信的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。