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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 7724|回復(fù): 7
收起左側(cè)

關(guān)于51單片機(jī)串口通信方式1到底和計(jì)數(shù)器T1有什么關(guān)系?

[復(fù)制鏈接]
ID:436819 發(fā)表于 2018-12-22 19:13 | 顯示全部樓層 |閱讀模式
單片機(jī)串口通信的問題
我就想問串口通信方式1 到底和計(jì)數(shù)器T1有什么關(guān)系?
波特率的計(jì)算重為什么要用到T1
波特率在程序里面到底是怎么體現(xiàn)的。
看了半天PPT都看不懂,我太笨了。。


回復(fù)

使用道具 舉報(bào)

ID:451718 發(fā)表于 2018-12-24 11:26 | 顯示全部樓層
呵呵。 你顯然是沒有弄清楚,定時(shí)器、中斷的本質(zhì)區(qū)別。
定時(shí)器是單片機(jī)內(nèi)部的一個(gè)模塊,不管是代碼如何編寫,它都獨(dú)立存在于芯片內(nèi)部,是一個(gè)功能模塊。
中斷,包括串口中斷,是一個(gè)機(jī)制,是單片的一個(gè)功能,這個(gè)功能一般都需要定時(shí)器模塊來實(shí)現(xiàn)(特別是串口中斷,需要定時(shí)器來提供波特率)。可以用定時(shí)器0,也可以用定時(shí)器1,主要看你如何去分配這個(gè)資源了。
回復(fù)

使用道具 舉報(bào)

ID:383374 發(fā)表于 2018-12-23 22:48 來自手機(jī) | 顯示全部樓層
波特率,看單片機(jī)的重裝載值有關(guān),
回復(fù)

使用道具 舉報(bào)

ID:155507 發(fā)表于 2018-12-24 10:43 | 顯示全部樓層
串口通信的基本認(rèn)識(shí)
通信分為并行通信和串行通信,并行通信時(shí)的數(shù)據(jù)各個(gè)位同時(shí)傳送,可以實(shí)現(xiàn)字節(jié)為單位通信,但通信線多占用資源,成本高。以前用到的的P1=0x55,一次給P1口的8個(gè)管腳分別賦值,同時(shí)進(jìn)行信號(hào)輸出,類似于8個(gè)車道可以過去8輛車,這樣的形式是并行的,一般稱P0,P1,P2,P3為51單片機(jī)的4組并行總線。

串行通信,就是一個(gè)車道,一個(gè)只能通過一輛車,如果一個(gè)0x55這樣一個(gè)字節(jié)的數(shù)據(jù)要傳輸過去的話,假如低位在前,高位在后的話,那發(fā)送方式是:0-1-0-1-0-1-0-1,一位一位的進(jìn)行傳輸,要發(fā)送8次才能發(fā)送完一個(gè)字節(jié)
STC89C52有兩個(gè)引腳是專門用來做串口通信的,一個(gè)是P3.0(RXD),一個(gè)是P3.1(TXD),他們組成的通信接口就是串行接口,簡(jiǎn)稱串口。用于兩個(gè)單片機(jī)進(jìn)行UART通信。兩單片機(jī)通信接口連接方式:RXD——TXD,TXD——RXD。
單片機(jī)1的TXD發(fā)送通道接到單片機(jī)2的RXD接收通道,單片機(jī)的1的RXD接收通道接到單片機(jī)2的TXD發(fā)送通道,從而實(shí)現(xiàn)相互通信。
當(dāng)單片機(jī)1想給單片機(jī)2發(fā)送數(shù)據(jù),比如發(fā)送了0xCE,用二進(jìn)制表示就是11001110,在串口通信過程中,是低位先發(fā),高位后發(fā)的原則,那么就是讓TXD首先拉低電平,持續(xù)一段時(shí)間,發(fā)送一位0,然后拉高電平,持續(xù)一段時(shí)間,發(fā)送一位1,繼續(xù)拉高,在持續(xù)一段時(shí)間,發(fā)送一位1,一直把8位二進(jìn)制數(shù)11001110全部發(fā)送完畢,這里涉及到一個(gè)問題,就是持續(xù)的一個(gè)時(shí)間段時(shí)間“到底是多少”。因而便引入通信中非常重要的一個(gè)概念波特率,也叫做比特率。

波特率
波特率就是發(fā)送二進(jìn)制數(shù)據(jù)位的速率,習(xí)慣用baud表示,即我們發(fā)送一位二進(jìn)制數(shù)據(jù)持續(xù)的時(shí)間=1/baud。在通信之前,單片機(jī)1和單片機(jī)2首先都要明確約定好他們之間的通信波特率,必須保持一致,收發(fā)雙方才能正常通信。 
約定好速度之后,我們還要考慮第二個(gè)問題,數(shù)據(jù)什么時(shí)候是起始,什么時(shí)候是結(jié)束?提前和延遲結(jié)束都會(huì)接收錯(cuò)誤。在uart通信的時(shí)候,一個(gè)字節(jié)是8位,規(guī)定當(dāng)沒有通信信號(hào)發(fā)生時(shí),通信線路保持高電平,當(dāng)數(shù)據(jù)發(fā)送前,先發(fā)一位0表示起始位,然后發(fā)送8位數(shù)據(jù)位,數(shù)據(jù)位是先低再高,數(shù)位位發(fā)送完后才呢個(gè)后再發(fā)送一位1表示停止位,這樣我們要發(fā)送的8位數(shù)據(jù),實(shí)際上我們發(fā)送了10位,多出來兩位其中一個(gè)是起始位,一個(gè)是停止位。而接受方一直保持的高電平,一旦檢測(cè)到一位低電平,準(zhǔn)備開始接受數(shù)據(jù),接受8位數(shù)據(jù)后,然后檢測(cè)停止位,再準(zhǔn)備下一個(gè)數(shù)據(jù)接收。 串口數(shù)據(jù)發(fā)送示意圖,實(shí)際上是一個(gè)時(shí)域示意圖,就是信號(hào)隨著時(shí)間變化的對(duì)應(yīng)關(guān)系。比如在單片機(jī)的發(fā)送引腳上,左邊的是先發(fā)生的,右邊的是后發(fā)生的,數(shù)據(jù)位的切換時(shí)間就是波特率分之一秒,如果能夠理解時(shí)域的概念,后邊很多通信的時(shí)序圖就很容易理解了。


手把手教你單片機(jī)串口通信-基礎(chǔ)篇
http://www.zg4o1577.cn/bbs/dpj-107804-1.html
回復(fù)

使用道具 舉報(bào)

ID:155507 發(fā)表于 2018-12-24 10:47 | 顯示全部樓層
UART模塊介紹
IO口模擬串口通信,讓大家了解了串口通信的本質(zhì),但是我們的單片機(jī)程序卻需要不停的檢測(cè)掃描單片機(jī)IO口收到的數(shù)據(jù),大量占用了單片機(jī)的運(yùn)行時(shí)間。這時(shí)候就會(huì)有聰明人想了,其實(shí)我們并不是很關(guān)心通信的過程,我們只需要一個(gè)通信的結(jié)果,最終得到接收到的數(shù)據(jù)就行了。這樣我們可以在單片機(jī)內(nèi)部做一個(gè)硬件模塊,讓它自動(dòng)接收數(shù)據(jù),接收完了,通知我們一下就可以了,我們的51單片機(jī)內(nèi)部就存在這樣一個(gè)UART模塊,要正確使用它,當(dāng)然還得先把對(duì)應(yīng)的特殊功能寄存器配置好。 
51單片機(jī)的UART串口的結(jié)構(gòu)由串行口控制寄存器SCON、發(fā)送和接收電路三部分構(gòu)成,先來了解一下串口控制寄存器SCON。 
SCON串行控制器的位分配(地址:0x98) 
位:符號(hào):復(fù)位值: 0:RI:0;1:TI:0;2:RB8:0;3:TB8:0;4:REN:0;5:SM2:0;6:SM1:0;7:SM0:0; 
0位RI:接收中斷標(biāo)志位,當(dāng)接收電路接收到停止位的中間位置時(shí),RI由硬件置1,必須通過軟件清零 
1位TI:發(fā)送中斷標(biāo)志位,當(dāng)發(fā)送電路發(fā)送到停止位的中間位置時(shí),TI由硬件置1,必須通過軟件清零。 
2位RB8:模式2和3中接收到的第9位數(shù)據(jù)(很少用),模式1用來接收停止位。 
3位TB8:模式2和3中要發(fā)送的第9位數(shù)據(jù)(很少用)。 
4位REN:使能串行接收。由軟件置位使能接收,軟件清零則禁止接收。 
5位SM2:多機(jī)通信控制位(極少用),模式1直接清零。 
6位SM1和7位SM0: 
這兩位共同決定了串口通信的模式0~模式3共4種模式。我們最常用的就是模式1,也就是SM0=0,SM1=1,下邊我們重點(diǎn)就講模式1,其它模式從略。 
對(duì)于串口的四種模式,模式1是最常用的,就是我們前邊提到的1位起始位,8位數(shù)據(jù)位和1位停止位。下面我們就詳細(xì)介紹模式1的工作細(xì)節(jié)和使用方法,至于其它3種模式與此也是大同小異,真正遇到需要使用的時(shí)候大家再去查閱相關(guān)資料就行了。 
在我們使用IO口模擬串口通信的時(shí)候,串口的波特率是使用定時(shí)器T0的中斷體現(xiàn)出來的。在硬件串口模塊中,有一個(gè)專門的波特率發(fā)生器用來控制發(fā)送和接收數(shù)據(jù)的速度。對(duì)于STC89C52單片機(jī)來講,這個(gè)波特率發(fā)生器只能由定時(shí)器T1或定時(shí)器T2產(chǎn)生,而不能由定時(shí)器T0產(chǎn)生,這和我們模擬的通信是完全不同的概念。 
如果用定時(shí)器2,需要配置額外的寄存器,默認(rèn)是使用定時(shí)器1的,我們本章內(nèi)容主要就使用定時(shí)器T1作為波特率發(fā)生器來講解,方式1下的波特率發(fā)生器必須使用定時(shí)器T1的模式2,也就是自動(dòng)重裝載模式,定時(shí)器的重載值計(jì)算公式為: 
TH1 = TL1 = 256 - 晶振值/12 /2/16 /波特率

和波特率有關(guān)的還有一個(gè)寄存器,是一個(gè)電源管理寄存器PCON,他的最高位可以把波特率提高一倍,也就是如果寫PCON |= 0x80以后,計(jì)算公式就成了: 
TH1 = TL1 = 256 - 晶振值/12 /16 /波特率 
公式中數(shù)字的含義這里解釋一下,256是8位定時(shí)器的溢出值,也就是TL1的溢出值,晶振值在我們的開發(fā)板上就是11059200,12是說1個(gè)機(jī)器周期等于12個(gè)時(shí)鐘周期,值得關(guān)注的是這個(gè)16,我們來重點(diǎn)說明。在IO口模擬串口通信接收數(shù)據(jù)的時(shí)候,采集的是這一位數(shù)據(jù)的中間位置,而實(shí)際上串口模塊比我們模擬的要復(fù)雜和精確一些。他采取的方式是把一位信號(hào)采集16次,其中第7、8、9次取出來,這三次中其中兩次如果是高電平,那么就認(rèn)定這一位數(shù)據(jù)是1,如果兩次是低電平,那么就認(rèn)定這一位是0,這樣一旦受到意外干擾讀錯(cuò)一次數(shù)據(jù),也依然可以保證最終數(shù)據(jù)的正確性。 
串口通信的發(fā)送和接收電路在物理上有2個(gè)名字相同的SBUF寄存器,它們的地址也都是0x99,但是一個(gè)用來做發(fā)送緩沖,一個(gè)用來做接收緩沖。意思就是說,有2個(gè)房間,兩個(gè)房間的門牌號(hào)是一樣的,其中一個(gè)只出人不進(jìn)人,另外一個(gè)只進(jìn)人不出人,這樣的話,我們就可以實(shí)現(xiàn)UART的全雙工通信,相互之間不會(huì)產(chǎn)生干擾。但是在邏輯上呢,我們每次只操作SBUF,單片機(jī)會(huì)自動(dòng)根據(jù)對(duì)它執(zhí)行的是“讀”還是“寫”操作來選擇是接收SBUF還是發(fā)送SBUF,后邊通過程序,我們就會(huì)徹底了解這個(gè)問題。 
##UART串口程序 
一般情況下,我們編寫串口通信程序的基本步驟如下所示: 
1、配置串口為模式1。 
2、配置定時(shí)器T1為模式2,即自動(dòng)重裝模式。 
3、根據(jù)波特率計(jì)算TH1和TL1的初值,如果有需要可以使用PCON進(jìn)行波特率加倍。 
4、打開定時(shí)器控制寄存器TR1,讓定時(shí)器跑起來。 
這里還要特別注意一下,就是在使用T1做波特率發(fā)生器的時(shí)候,千萬不要再使能T1的中斷了。 
我們先來看一下由IO口模擬串口通信直接改為使用硬件UART模塊時(shí)的程序代碼,看看程序是不是簡(jiǎn)單了很多,因?yàn)榇蟛糠值墓ぷ饔布K都替我們做了。程序功能和IO口模擬的是完全一樣的。

回復(fù)

使用道具 舉報(bào)

ID:407221 發(fā)表于 2020-1-28 22:52 | 顯示全部樓層
angmall 發(fā)表于 2018-12-24 10:43
串口通信的基本認(rèn)識(shí)
通信分為并行通信和串行通信,并行通信時(shí)的數(shù)據(jù)各個(gè)位同時(shí)傳送,可以實(shí)現(xiàn)字節(jié)為單位通 ...

十分感謝
回復(fù)

使用道具 舉報(bào)

ID:714714 發(fā)表于 2020-6-1 20:20 來自手機(jī) | 顯示全部樓層
angmall 發(fā)表于 2018-12-24 10:47
UART模塊介紹
IO口模擬串口通信,讓大家了解了串口通信的本質(zhì),但是我們的單片機(jī)程序卻需要不停的檢測(cè)掃描 ...

謝謝你
回復(fù)

使用道具 舉報(bào)

ID:759743 發(fā)表于 2020-6-1 21:41 | 顯示全部樓層
波特率
波特率就是發(fā)送二進(jìn)制數(shù)據(jù)位的速率,習(xí)慣用baud表示,即我們發(fā)送一位二進(jìn)制數(shù)據(jù)持續(xù)的時(shí)間=1/baud。在通信之前,單片機(jī)1和單片機(jī)2首先都要明確約定好他們之間的通信波特率,必須保持一致,收發(fā)雙方才能正常通信。
約定好速度之后,我們還要考慮第二個(gè)問題,數(shù)據(jù)什么時(shí)候是起始,什么時(shí)候是結(jié)束?提前和延遲結(jié)束都會(huì)接收錯(cuò)誤。在uart通信的時(shí)候,一個(gè)字節(jié)是8位,規(guī)定當(dāng)沒有通信信號(hào)發(fā)生時(shí),通信線路保持高電平,當(dāng)數(shù)據(jù)發(fā)送前,先發(fā)一位0表示起始位,然后發(fā)送8位數(shù)據(jù)位,數(shù)據(jù)位是先低再高,數(shù)位位發(fā)送完后才呢個(gè)后再發(fā)送一位1表示停止位,這樣我們要發(fā)送的8位數(shù)據(jù),實(shí)際上我們發(fā)送了10位,多出來兩位其中一個(gè)是起始位,一個(gè)是停止位。而接受方一直保持的高電平,一旦檢測(cè)到一位低電平,準(zhǔn)備開始接受數(shù)據(jù),接受8位數(shù)據(jù)后,然后檢測(cè)停止位,再準(zhǔn)備下一個(gè)數(shù)據(jù)接收。 串口數(shù)據(jù)發(fā)送示意圖,實(shí)際上是一個(gè)時(shí)域示意圖,就是信號(hào)隨著時(shí)間變化的對(duì)應(yīng)關(guān)系。比如在單片機(jī)的發(fā)送引腳上,左邊的是先發(fā)生的,右邊的是后發(fā)生的,數(shù)據(jù)位的切換時(shí)間就是波特率分之一秒,如果能夠理解時(shí)域的概念,后邊很多通信的時(shí)序圖就很容易理解了。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 91久久精品日日躁夜夜躁欧美 | 久久久国产精品一区 | 国产精品视频综合 | 日韩av在线一区二区 | 久久亚洲国产精品 | 一区二区三区视频 | 成人精品一区二区三区中文字幕 | 精品粉嫩aⅴ一区二区三区四区 | 久久久久久一区 | 91精品亚洲 | 亚洲一区二区三区四区五区中文 | 一区二区三区免费在线观看 | 国产一区二区 | 先锋资源在线 | 99re在线 | 五月激情六月婷婷 | www97影院| av在线天堂网| 啪一啪| 国产精品国产自产拍高清 | 日韩三级在线观看 | 日批日韩在线观看 | 国外成人在线视频网站 | 欧美日韩国产一区二区三区不卡 | 精品视频一区二区 | 午夜一区二区三区在线观看 | 国产精品国产三级国产aⅴ浪潮 | 黑人巨大精品 | 久久精品亚洲 | 91精品国产一区二区在线观看 | 国产精品中文字幕一区二区三区 | 国产成人精品av | 黄视频网站在线 | 91av在线免费 | 在线观看av网站永久 | 日韩黄色免费 | 罗宾被扒开腿做同人网站 | 成人3d动漫一区二区三区91 | 国产一级淫片免费视频 | 久操伊人 | 成人h免费观看视频 |