80C51單片機(jī)的串口異步通信時,方式1時,SM2=0和SM2=1有什么區(qū)別?
-
注意,是區(qū)別,分別為0和1時具體的過程的區(qū)別是什么呢?謝謝各位大俠!~... 注意,是區(qū)別,分別為0和1時具體的過程的區(qū)別是什么呢?謝謝各位大俠!~ 展開
全部評論(3條)
-
- 哈咕嚕咕 2011-06-06 00:00:00
- 方式1中,若SM2=1,則只有收到有效的停止位時才激活RI。
-
贊(18)
回復(fù)(0)
-
- 崔哥雄起2011 2011-06-07 00:00:00
- 7.1 計(jì)算機(jī)串行通信基礎(chǔ) 隨著多微機(jī)系統(tǒng)的廣泛應(yīng)用和計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的普及,計(jì)算機(jī)的通信功能愈來愈顯得重要。計(jì)算機(jī)通信是指計(jì)算機(jī)與外部設(shè)備或計(jì)算機(jī)與計(jì)算機(jī)之間的信息交換。 通信有并行通信和串行通信兩種方式。在多微機(jī)系統(tǒng)以及現(xiàn)代測控系統(tǒng)中信息的交換多采用串行通信方式。 計(jì)算機(jī)通信是將計(jì)算機(jī)技術(shù)和通信技術(shù)的相結(jié)合,完成計(jì)算機(jī)與外部設(shè)備或計(jì)算機(jī)與計(jì)算機(jī)之間的信息交換 。可以分為兩大類:并行通信與串行通信。 并行通信通常是將數(shù)據(jù)字節(jié)的各位用多條數(shù)據(jù)線同時進(jìn)行傳送 。 串行通信是將數(shù)據(jù)字節(jié)分成一位一位的形式在一條傳輸線上逐個地傳送。 7.1.1 串行通信的基本概念 一、異步通信與同步通信 1、異步通信 異步通信是指通信的發(fā)送與接收設(shè)備使用各自的時鐘控制數(shù)據(jù)的發(fā)送和接收過程。為使雙方的收發(fā)協(xié)調(diào),要求發(fā)送和接收設(shè)備的時鐘盡可能一致。 異步通信是以字符(構(gòu)成的幀)為單位進(jìn)行傳輸,字符與字符之間的間隙(時間間隔)是任意的,但每個字符中的各位是以固定的時間傳送的,即字符之間不一定有“位間隔”的整數(shù)倍的關(guān)系,但同一字符內(nèi)的各位之間的距離均為“位間隔”的整數(shù)倍。 異步通信的數(shù)據(jù)格式 : 2、同步通信 同步通信時要建立發(fā)送方時鐘對接收方時鐘的直接控制,使雙方達(dá)到完全同步。此時,傳輸數(shù)據(jù)的位之間的距離均為“位間隔”的整數(shù)倍,同時傳送的字符間不留間隙,即保持位同步關(guān)系,也保持字符同步關(guān)系。發(fā)送方對接收方的同步可以通過兩種方法實(shí)現(xiàn)。 面向字符的同步格式 : 面向位的同步格式 : 二、串行通信的傳輸方向 1、單工 單工是指數(shù)據(jù)傳輸僅能沿一個方向,不能實(shí)現(xiàn)反向傳輸。 2、半雙工 半雙工是指數(shù)據(jù)傳輸可以沿兩個方向,但需要分時進(jìn)行。 3、全雙工 全雙工是指數(shù)據(jù)可以同時進(jìn)行雙向傳輸。 三、信號的調(diào)制與解調(diào) 利用調(diào)制器(Modulator)把數(shù)字信號轉(zhuǎn)換成模擬信號,然后送到通信線路上去,再由解調(diào)器(Demodulator)把從通信線路上收到的模擬信號轉(zhuǎn)換成數(shù)字信號。由于通信是雙向的,調(diào)制器和解調(diào)器合并在一個裝置中,這就是調(diào)制解調(diào)器MODEM。 四、串行通信的錯誤校驗(yàn) 1、奇偶校驗(yàn) 在發(fā)送數(shù)據(jù)時,數(shù)據(jù)位尾隨的1位為奇偶校驗(yàn)位(1或0)。奇校驗(yàn)時,數(shù)據(jù)中“1”的個數(shù)與校驗(yàn)位“1”的個數(shù)之和應(yīng)為奇數(shù);偶校驗(yàn)時,數(shù)據(jù)中“1”的個數(shù)與校驗(yàn)位“1”的個數(shù)之和應(yīng)為偶數(shù)。接收字符時,對“1”的個數(shù)進(jìn)行校驗(yàn),若發(fā)現(xiàn)不一致,則說明傳輸數(shù)據(jù)過程中出現(xiàn)了差錯。 五、傳輸速率與傳輸距離 1、傳輸速率 比特率是每秒鐘傳輸二進(jìn)制代碼的位數(shù),單位是:位/秒(bps)。如每秒鐘傳送240個字符,而每個字符格式包含10位(1個起始位、1個停止位、8個數(shù)據(jù)位),這時的比特率為: 10位×240個/秒 = 2400 bps 2、傳輸距離與傳輸速率的關(guān)系 串行接口或終端直接傳送串行信息位流的Z大距離與傳輸速率及傳輸線的電氣特性有關(guān)。當(dāng)傳輸線使用每0.3m(約1英尺)有50PF電容的非平衡屏蔽雙絞線時,傳輸距離隨傳輸速率的增加而減小。當(dāng)比特率超過1000 bps 時,Z大傳輸距離迅速下降,如9600 bps 時Z大距離下降到只有76m(約250英尺)。 7.1.2 串行通信接口標(biāo)準(zhǔn) 一、RS-232C接口 RS-232C是EIA(美國電子工業(yè)協(xié)會)1969年修訂RS-232C標(biāo)準(zhǔn)。RS-232C定義了數(shù)據(jù)終端設(shè)備(DTE)與數(shù)據(jù)通信設(shè)備(DCE)之間的物理接口標(biāo)準(zhǔn)。 1、機(jī)械特性 RS-232C接口規(guī)定使用25針連接器,連接器的尺寸及每個插針的排列位置都有明確的定義。(陽頭) 2、功能特性 4、過程特性 過程特性規(guī)定了信號之間的時序關(guān)系,以便正確地接收和發(fā)送數(shù)據(jù) 。 二、RS-422A接口 三、RS-485接口 RS-485是一點(diǎn)對多點(diǎn)的通信接口,一般采用雙絞線的結(jié)構(gòu)。普通的PC機(jī)一般不帶RS485接口,因此要使用RS-232C/RS-485轉(zhuǎn)換器。對于單片機(jī)可以通過芯片MAX485來完成TTL/RS-485的電平轉(zhuǎn)換。在計(jì)算機(jī)和單片機(jī)組成的RS-485通信系統(tǒng)中,下位機(jī)由單片機(jī)系統(tǒng)組成,上位機(jī)為普通的PC機(jī),負(fù)責(zé)監(jiān)視下位機(jī)的運(yùn)行狀態(tài),并對其狀態(tài)信息進(jìn)行集中處理,以圖文方式顯示下位機(jī)的工作狀態(tài)以及工業(yè)現(xiàn)場被控設(shè)備的工作狀況。系統(tǒng)中各節(jié)點(diǎn)(包括上位機(jī))的識別是通過設(shè)置不同的站地址來實(shí)現(xiàn)的。 7.2 80C51的串行口 有兩個物理上獨(dú)立的接收、發(fā)送緩沖器SBUF,它們占用同一地址99H ;接收器是雙緩沖結(jié)構(gòu) ;發(fā)送緩沖器,因?yàn)榘l(fā)送時CPU是主動的,不會產(chǎn)生重疊錯誤。 SCON 是一個特殊功能寄存器,用以設(shè)定串行口的工作方式、接收/發(fā)送控制以及設(shè)置狀態(tài)標(biāo)志: ●SM2,多機(jī)通信控制位,主要用于方式2和方式3。當(dāng)接收機(jī)的SM2=1時可以利用收到的RB8來控制是否激活RI(RB8=0時不激活RI,收到的信息丟棄;RB8=1時收到的數(shù)據(jù)進(jìn)入SBUF,并激活RI,進(jìn)而在中斷服務(wù)中將數(shù)據(jù)從SBUF讀走)。當(dāng)SM2=0時,不論收到的RB8為0和1,均可以使收到的數(shù)據(jù)進(jìn)入SBUF,并激活RI(即此時RB8不具有控制RI激活的功能)。通過控制SM2,可以實(shí)現(xiàn)多機(jī)通信。 在方式0時,SM2必須是0。在方式1時,若SM2=1,則只有接收到有效停止位時,RI才置1。 ●REN,允許串行接收位。由軟件置REN=1,則啟動串行口接收數(shù)據(jù);若軟件置REN=0,則禁止接收。 ●TB8,在方式2或方式3中,是發(fā)送數(shù)據(jù)的第九位,可以用軟件規(guī)定其作用??梢杂米鲾?shù)據(jù)的奇偶校驗(yàn)位,或在多機(jī)通信中,作為地址幀/數(shù)據(jù)幀的標(biāo)志位。 在方式0和方式1中,該位未用。 ●RB8,在方式2或方式3中,是接收到數(shù)據(jù)的第九位,作為奇偶校驗(yàn)位或地址幀/數(shù)據(jù)幀的標(biāo)志位。在方式1時,若SM2=0,則RB8是接收到的停止位。 PCON中只有一位SMOD與串行口工作有關(guān) : 四、波特率的計(jì)算 在串行通信中,收發(fā)雙方對發(fā)送或接收數(shù)據(jù)的速率要有約定。通過軟件可對單片機(jī)串行口編程為四種工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可變的,由定時器T1的溢出率來決定。 串行口的四種工作方式對應(yīng)三種波特率。由于輸入的移位時鐘的來源不同,所以,各種方式的波特率計(jì)算公式也不相同。 方式0的波特率 = fosc/12 方式2的波特率 =(2SMOD/64)· fosc 方式1的波特率 =(2SMOD/32)·(T1溢出率) 方式3的波特率 =(2SMOD/32)·(T1溢出率) 串行口工作之前,應(yīng)對其進(jìn)行初始化,主要是設(shè)置產(chǎn)生波特率的定時器1、串行口控制和中斷控制。具體步驟如下: 確定T1的工作方式(編程TMOD寄存器); 計(jì)算T1的初值,裝載TH1、TL1; 啟動T1(編程TCON中的TR1位); 確定串行口控制(編程SCON寄存器); 串行口在中斷方式工作時,要進(jìn)行中斷設(shè)置(編程IE、IP寄存器)。 以上材料引自郭天翔的51單片機(jī)教程,強(qiáng)烈推薦此視頻,可以上網(wǎng)查郭天翔《十天學(xué)會單片機(jī)》。
-
贊(4)
回復(fù)(0)
-
- yangmin5257 2018-04-05 00:00:00
- 方式1時,SM2一般設(shè)置為 0 SM2=1,則只有收到有效的停止位時才激活RI。
-
贊(1)
回復(fù)(0)
熱門問答
- 80C51單片機(jī)的串口異步通信時,方式1時,SM2=0和SM2=1有什么區(qū)別?
- 注意,是區(qū)別,分別為0和1時具體的過程的區(qū)別是什么呢?謝謝各位大俠!~... 注意,是區(qū)別,分別為0和1時具體的過程的區(qū)別是什么呢?謝謝各位大俠!~ 展開
2011-06-05 14:32:30
461
3
- 串口通信和串行通信有什么區(qū)別?
2017-09-03 22:50:26
609
2
- 單片機(jī)串口通信原理
2011-04-15 07:22:02
506
4
- 總線通信與串口通信有什么區(qū)別
- 請教下大蝦們,常說的總線有profibus、can、modbus、FF、devicenet等,這些是不是以走什么協(xié)議來命名的?那我可以說:“它走can協(xié)議嗎?”而常見的串口通信modbus,MPI,PPI等與總線通信... 請教下大蝦們,常說的總線有profibus、can、modbus、FF、devicenet等,這些是不是以走什么協(xié)議來命名的?那我可以說:“它走can協(xié)議嗎?”而常見的串口通信modbus, MPI , PPI等與總線通信有什么區(qū)別呢? 展開
2017-09-03 18:20:12
568
1
- 力控組態(tài)軟件怎樣和單片機(jī)串口通信
- 想用力控做一個界面實(shí)現(xiàn)和單片機(jī)串口通信,請高手指教... 想用力控做一個界面實(shí)現(xiàn)和單片機(jī)串口通信,請高手指教 展開
2012-12-06 05:02:57
392
3
- 電子負(fù)載與單片機(jī)怎么實(shí)現(xiàn)串口通信
2014-07-15 00:25:30
537
2
- labview課設(shè),串口通信,求個單片機(jī)程序
- 具體要求如下;【設(shè)計(jì)內(nèi)容】1、編制單片機(jī)程序,實(shí)現(xiàn)在LED上顯示指定的字符串并進(jìn)行調(diào)試。2、編制虛擬儀器軟件,可以通過串口實(shí)現(xiàn)與單片機(jī)的通迅,可以向單片機(jī)發(fā)送規(guī)定的字符串并在單... 具體要求如下; 【 設(shè)計(jì)內(nèi)容 】 1、編制單片機(jī)程序,實(shí)現(xiàn)在LED上顯示指定的字符串并進(jìn)行調(diào)試。 2、編制虛擬儀器軟件,可以通過串口實(shí)現(xiàn)與單片機(jī)的通迅,可以向單片機(jī)發(fā)送規(guī)定的字符串并在單片機(jī)試驗(yàn)箱的LED顯示器上顯示。 3、實(shí)驗(yàn)設(shè)備為:計(jì)算機(jī)、單片機(jī)試驗(yàn)箱、串口數(shù)據(jù)線。 【 設(shè)計(jì)要求 】 1、程序能夠連續(xù)運(yùn)行,可在字符型控件中輸入字符串,點(diǎn)擊發(fā)送鍵可以向單片機(jī)發(fā)送該字符串。 2、單片機(jī)在接受字符串后,在LED上進(jìn)行顯示,要求字符顯示正確,當(dāng)發(fā)送的字符串較長時,應(yīng)能逐個字符顯示。 3、編程實(shí)現(xiàn),界面友好,操作方便。 展開
2012-06-15 03:39:22
491
3
- 求:單片機(jī)80c51怎么做脈沖信號發(fā)生器
- 需要6個按鍵控制脈沖的占空比,1-99%2個數(shù)碼管顯示占空比,按鍵功能要求:數(shù)值加。減,啟動,確認(rèn),調(diào)個位數(shù)值,調(diào)十位數(shù)值,頻率1000HZ,輸出電壓5V!求高手解決需要圖和程序,拜托各... 需要6個按鍵控制脈沖的占空比,1-99% 2個數(shù)碼管顯示占空比,按鍵功能要求:數(shù)值加。減,啟動,確認(rèn),調(diào)個位數(shù)值,調(diào)十位數(shù)值,頻率1000HZ,輸出電壓5V!求高手解決 需要圖和程序,拜托各位高手 展開
2010-05-17 05:29:56
372
5
- 壓力傳感器串口通信的問題
- Z近在用壓力傳感器在做串口通信,需要將壓力傳感器傳出的數(shù)據(jù)通過串口解析然后保存到數(shù)據(jù)庫中??墒窃谥亓?,也就是壓力不變的情況下,串口接收到的數(shù)據(jù)一直在循環(huán)變化。到底哪些才是... Z近在用壓力傳感器在做串口通信,需要將壓力傳感器傳出的數(shù)據(jù)通過串口解析然后保存到數(shù)據(jù)庫中。可是在重量,也就是壓力不變的情況下,串口接收到的數(shù)據(jù)一直在循環(huán)變化。到底哪些才是需要的數(shù)據(jù)格式呢?壓力不可能在一直變化的啊。接收到的數(shù)據(jù)應(yīng)該如何解析呢?如何轉(zhuǎn)化為我們所需要的壓力數(shù)值呢?(壓力傳感器沒有什么協(xié)議之類的描述,只給了模擬量和壓力之間的計(jì)算公式)。 大神求指點(diǎn)?。。?! 我們購買的壓力傳感器輸出的是模擬信號,我們用了ADC將其轉(zhuǎn)化為數(shù)值信號,但是輸出的數(shù)據(jù)格式不知道如何解析。另外,有測量介質(zhì)是固體的數(shù)字壓力傳感器嗎?我查了好像大部分?jǐn)?shù)字壓力傳感器都是測液壓和氣壓的啊,沒有測量固體壓力的。高手幫忙??! 展開
2013-04-26 08:49:26
480
2
- modbus rtu串口通信
- 公司買了一個溫度巡檢儀,功能有限,我想通過自己做的軟件來增強(qiáng)巡檢儀的功能,但對串口通信編程知之甚少。現(xiàn)通過監(jiān)控原程序得到以下數(shù)據(jù):write requests: 01 03 00 01 00 01 D5 CA 01 01 00 50 00 20 3D C3 01 03 00 60 00 10 44 18 read requests: 01 03... 公司買了一個溫度巡檢儀,功能有限,我想通過自己做的軟件來增強(qiáng)巡檢儀的功能,但對串口通信編程知之甚少?,F(xiàn)通過監(jiān)控原程序得到以下數(shù)據(jù):write requests: 01 03 00 01 00 01 D5 CA 01 01 00 50 00 20 3D C3 01 03 00 60 00 10 44 18 read requests: 01 03 02 00 02 39 85 01 01 04 00 00 00 00 FB D1 01 03 20 4E 20 4E 20 4E 20 4E 20 4E 20 4E 20 4E 20 4E 20 4E 20 4E 20 4E 20 4E 20 4E 20 4E 20 4E 20 4E 20 AE 38 從中能不能翻譯出什么東西?? 后來我又根據(jù)已有資料及網(wǎng)上相關(guān)程序編寫了以下通訊程序: Private Sub Command1_Click() '發(fā)請求 Dim btSend(23) As Byte btSend(0) = &H1 '目標(biāo)站號 btSend(1) = &H3 '功能碼 btSend(2) = &H0 'I0.0地址(0000)高字節(jié) btSend(3) = &H1 'i0.0地址(0000)低字節(jié) btSend(4) = &H0 '讀取個數(shù)高字節(jié) btSend(5) = &H1 '讀取個數(shù)低字節(jié) btSend(6) = &HD5 btSend(7) = &HCA btSend(8) = &H1 btSend(9) = &H1 btSend(10) = &H0 btSend(11) = &H50 btSend(12) = &H0 btSend(13) = &H20 btSend(14) = &H3D btSend(15) = &HC3 btSend(16) = &H1 btSend(17) = &H3 btSend(18) = &H0 btSend(19) = &H60 btSend(20) = &H0 btSend(21) = &H10 btSend(22) = &H44 btSend(23) = &H18 ComK3.Output = CVar(btSend) Dim btReceive As Variant With ComK3 Do DoEvents Loop Until .InBufferCount = 5 .InputLen = 30 btReceive = .Input Text1.Text = Hex$(btReceive(1)) Text2.Text = Hex$(btReceive(2)) Text3.Text = Hex$(btReceive(3)) Text4.Text = Hex$(btReceive(4)) ' Text5.Text = Hex$(btReceive(5)) 'Text6.Text = Hex$(btReceive(6)) ' Text7.Text = Hex$(btReceive(7)) ' Text8.Text = Hex$(btReceive(8)) ' Text9.Text = Hex$(btReceive(9)) ' Text10.Text = Hex$(btReceive(10)) ' Text11.Text = Hex$(btReceive(11)) ' Text12.Text = Hex$(btReceive(12)) ' Text13.Text = Hex$(btReceive(13)) ' Text14.Text = Hex$(btReceive(14)) ' Text15.Text = Hex$(btReceive(15)) ' Text16.Text = Hex$(btReceive(16)) ' End If End With End Sub Private Sub Form_Load() With ComK3 .CommPort = 1 .Settings = "9600,N,8,2" .InputMode = comInputModeBinary '二進(jìn)制收發(fā) .InBufferSize = 512 .OutBufferSize = 512 If (Not .PortOpen) Then .PortOpen = True End With End Sub 能收到4個亂碼,應(yīng)該是錯誤標(biāo)示,原程序待CRC驗(yàn)證,我驗(yàn)證不出,所以先刪除了。期望大俠們幫我修改下程序 展開
2009-07-05 16:19:26
440
2
- 兩個單片機(jī)能不能不通過兩個MAX232直接連接進(jìn)行串口通信?
- 單片機(jī)串口通信要通過MAX232進(jìn)行電平轉(zhuǎn)換,兩個單片機(jī)通常需要兩片,這樣相當(dāng)于電平轉(zhuǎn)換了兩次,也就是又轉(zhuǎn)換回了初試的TTL電平,那么能不能直接不用MAX232.兩個單片機(jī)之間直接是TTL電平通信呢?
2012-07-01 09:05:37
501
7
- 單片機(jī)和plc有什么區(qū)別
2011-03-13 05:12:36
314
5
- 電泳時2%的膠和1%的膠有什么區(qū)別
2016-02-22 14:43:24
501
1
- 51單片機(jī)串口通訊
- 51單片機(jī)串口是不是全雙工的,我記得書上寫的是,但是用中斷的話,又想發(fā)送和接收同時進(jìn)行,程序怎么寫?按理說在中斷里根據(jù)是RI=1還是TI=1是可以判斷接收引起的中斷還是發(fā)送引起的中... 51單片機(jī)串口是不是全雙工的,我記得書上寫的是,但是用中斷的話,又想發(fā)送和接收同時進(jìn)行,程序怎么寫?按理說在中斷里根據(jù)是RI=1還是TI=1是可以判斷接收引起的中斷還是發(fā)送引起的中斷,但是發(fā)送和接收同時進(jìn)行是不是會出現(xiàn)RI和TI同時為1?對此很困惑,總覺得不是全雙工,哪位幫我解釋一下,謝謝! 展開
2016-10-16 04:46:14
485
1
- 九針串口通信連接線的接法
- 九針串口通信連接線的接法是不是只要用到三根線就可以,其中,公對公母對母,,公對母各是怎么樣接的用,數(shù)字123456789表示就可以啦希望高手能說明白一點(diǎn)... 九針串口通信連接線的接法 是不是只要用到三根線就可以, 其中,公對公 母對母,,公對母 各是怎么樣接的 用,數(shù)字 123456789 表示就可以啦 希望高手能說明白一點(diǎn) 展開
2013-03-26 10:18:50
956
4
- 液位傳感器怎么和單片機(jī)連接,傳感器的哪里和單片機(jī)哪個串口連接
2018-05-07 12:43:43
437
1
- PLC和單片機(jī)的通信怎么實(shí)現(xiàn)
- 我用的臺達(dá)的PLC,需要和溫度巡檢儀之間通信,PLC讀取溫度,溫度巡檢儀是單片機(jī)開發(fā)的,485接口,Z好越簡單越好,我初學(xué)不懂,請教大家怎么實(shí)現(xiàn),需要程序的話,大家能給我發(fā)個嗎
2017-09-26 03:01:29
769
2
- 電源開關(guān)1和0表示什么!
- 電源開關(guān)1和0表示什么!
2010-09-07 03:35:05
526
4
- 液晶電視對比度15000:1和200:1有什么區(qū)別
2017-10-03 00:18:28
652
1
- 差壓變送器的量程0到500帕和負(fù)500到0有什么區(qū)別 0
2015-08-16 01:51:20
488
2
4月突出貢獻(xiàn)榜
推薦主頁
最新話題





參與評論
登錄后參與評論