![8051單片機(jī)的異步串行通信技術(shù)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/23/4cb8f977-b5b2-4379-b20a-fce0c7898e0e/4cb8f977-b5b2-4379-b20a-fce0c7898e0e1.gif)
![8051單片機(jī)的異步串行通信技術(shù)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/23/4cb8f977-b5b2-4379-b20a-fce0c7898e0e/4cb8f977-b5b2-4379-b20a-fce0c7898e0e2.gif)
![8051單片機(jī)的異步串行通信技術(shù)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/23/4cb8f977-b5b2-4379-b20a-fce0c7898e0e/4cb8f977-b5b2-4379-b20a-fce0c7898e0e3.gif)
![8051單片機(jī)的異步串行通信技術(shù)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/23/4cb8f977-b5b2-4379-b20a-fce0c7898e0e/4cb8f977-b5b2-4379-b20a-fce0c7898e0e4.gif)
![8051單片機(jī)的異步串行通信技術(shù)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/23/4cb8f977-b5b2-4379-b20a-fce0c7898e0e/4cb8f977-b5b2-4379-b20a-fce0c7898e0e5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第八章 8051單片機(jī)的異步串行通信技術(shù)第一節(jié) 概述 計(jì)算機(jī)與外界的信息交換稱為通信。常用通信方式有兩種:并行通信與串行通信,簡(jiǎn)稱并行傳送和串行傳送。并行傳送具有傳送速度快,效率高等優(yōu)點(diǎn),但傳送多少數(shù)據(jù)位就需要多少根數(shù)據(jù)線,傳送成本高;串行傳送是按位順序進(jìn)行數(shù)據(jù)傳送,最少僅需要一根傳輸線即可完成,傳送距離遠(yuǎn),但傳送速度慢。串行通信又分同步和異步兩種方式。同步通信中,在數(shù)據(jù)傳送開始時(shí)先用同步字符來指示(常約定12個(gè)),并由同時(shí)傳送的時(shí)鐘信號(hào)來實(shí)現(xiàn)發(fā)送端和接收端同步,即檢測(cè)到規(guī)定的同步字符后,接著就連續(xù)按順序傳送數(shù)據(jù)。這種傳送方式對(duì)硬件結(jié)構(gòu)要求較高。在單片機(jī)異步通信中,數(shù)據(jù)分為一幀一幀地傳送,即異
2、步串行通信一次傳送一個(gè)完整字符,字符格式如圖81所示: 圖81 異步串行通信的字符格式 一個(gè)字符應(yīng)包括以下信息: 1. 起始位:對(duì)應(yīng)邏輯0(space)狀態(tài)。發(fā)送器通過發(fā)送起始位開始一幀字符的傳送。 2. 數(shù)據(jù)位:起始位之后傳送數(shù)據(jù)位。數(shù)據(jù)位中低位在前,高位在后。數(shù)據(jù)位可以是5、6、7、8位。 3. 奇偶校驗(yàn)位:奇偶校驗(yàn)位實(shí)際上是傳送的附加位,若該位用于用于奇偶校驗(yàn),可校檢串行傳送的正確性。奇偶校驗(yàn)位的設(shè)置與否及校驗(yàn)方式(奇校驗(yàn)還是偶校驗(yàn))由用戶需要確定。 4. 停止位:用邏輯1(mark)表示。停止位標(biāo)志一個(gè)字符傳送的結(jié)束。停止位可以是1、1.5或2位。 串行通信中用每秒傳送二進(jìn)制數(shù)據(jù)位的數(shù)
3、量表示傳送速率,稱為波特率。 1波特1bps(位/秒) 例如數(shù)據(jù)傳送速率是240幀/秒,每幀由一位起始位、八位數(shù)據(jù)位和一位停止位組成,則傳送速率為: 10×2402400位/ 秒2400波特 單片機(jī)的串行通信主要采用異步通信傳送方式。在串行通信中,按不同的通信方向有單工傳送和雙工傳送之分,如圖82所示: 甲機(jī) 乙機(jī) (a)單工傳送 甲機(jī) 乙機(jī) (b)雙工傳送 甲機(jī) 乙機(jī) (c)全雙工傳送 圖82 單片機(jī)串行通信方向示意 圖82(a)中,甲.乙兩機(jī)只能單方向發(fā)送或接收數(shù)據(jù); 圖82(b)中,甲機(jī)和乙機(jī)能分時(shí)進(jìn)行雙向發(fā)送和接收數(shù)據(jù); 圖82(c)中,甲,乙兩機(jī)能同時(shí)雙向發(fā)送和接收數(shù)據(jù)。
4、第二節(jié) 8051串行口的基本結(jié)構(gòu) MCS51系列單片機(jī)串行口結(jié)構(gòu)框圖如圖83所示: 圖83 8051串行口結(jié)構(gòu)框圖 一、串行口緩沖寄存器SBUF 圖83中SUBF是串行口緩沖寄存器,發(fā)送SBUF和接收SBUF地址同為99H,但由于發(fā)送SBUF不能接收數(shù)據(jù), 接收SBUF也不具有發(fā)送功能,故二者工作互不干擾。當(dāng)CPU向SBUF寫入時(shí),數(shù)據(jù)進(jìn)入發(fā)送SBUF,同時(shí)啟動(dòng)串行發(fā)送;CPU讀SBUF時(shí),實(shí)際上是讀接收SBUF數(shù)據(jù)。二、串行通信控制寄存器 與串行通信有關(guān)的控制寄存器主要是串行通信控制寄存器SCON。SCON是8051的一個(gè)可以位尋址的專用寄存器,用于串行數(shù)據(jù)通信的控制。SCON的單元地址98
5、H,位地址9FH98H。寄存器內(nèi)容及位地址表示如下:SCON位地址9F9E9D9C9B9A9998位符號(hào)SM0SM1SM2RENTB8RB8TIRI各位功能說明如下:位符號(hào) 功 能 說 明SM0,SM1SM0,SM1串行口工作方式選擇位: SM0 SM1 工作方式 功 能 0 0 0 8位數(shù)碼傳送,波特率固定,為f晶振/12。 0 1 1 10位數(shù)碼傳送,波特率可變。 1 0 2 11位數(shù)碼傳送,波特率固定,為f晶振/64或f晶振/32。 1 1 3 11位數(shù)碼傳送,波特率可變。SM2SM2多機(jī)通信控制位: 當(dāng)串行口以方式2或方式3接收時(shí),如SM21,則只有當(dāng)接收到的第九位數(shù)據(jù)(RB8)為1,
6、才將接收到的前8位數(shù)據(jù)送入接收SBUF,并使RI位置1,產(chǎn)生中斷請(qǐng)求信號(hào);否則將接收到的前8位數(shù)據(jù)丟棄。而當(dāng)SM20時(shí),則不論第九位數(shù)據(jù)為0還是為1,都將前8位數(shù)據(jù)裝入接收SBUF中,并產(chǎn)生中斷請(qǐng)求信號(hào)。對(duì)方式0,SM2必須為0, 對(duì)方式1,當(dāng)SM2=1,只有接收到有效停止位后才使RI位置1。RENREN允許接收位,用于對(duì)串行數(shù)據(jù)的接收進(jìn)行控制: REN0, 禁止接收;REN1,允許接收。該位由軟件置1或清零。TB8TB8發(fā)送數(shù)據(jù)位8:在方式2和方式3時(shí),TB8是要發(fā)送的第9位數(shù)據(jù)。RB8RB8接收數(shù)據(jù)位8:在方式2和方式3中,RB8位存放接收到的第9位數(shù)據(jù)TITI發(fā)送中斷標(biāo)志:當(dāng)方式0時(shí),發(fā)
7、送完第8位數(shù)據(jù)后,該位由硬件置位。在其它方式下,于發(fā)送停止位之前由硬件置位。因此TI1,表示幀發(fā)送結(jié)束。其狀態(tài)既可供軟件查詢使用,也可請(qǐng)求中斷。 TI位由軟件清0。RIRI接收中斷標(biāo)志:當(dāng)方式0時(shí),接收完第8位數(shù)據(jù)后,該位由硬件置1。在其它方式下,當(dāng)接收到停止位時(shí),該位由硬件置位。因此RI1,表示幀接收結(jié)束。其狀態(tài)既可供軟件查詢使用,也可以請(qǐng)求中斷。RI位由軟件清0。 另外,電源控制寄存器PCON中SMOD位可影響串行口的波特率。 當(dāng)(SMOD)1,串行口波特率加倍。 還有中斷允許寄存器IE中的ES位可選擇串行口中斷允許或禁止。 ES0,禁止串行口中斷 ES1,允許串行口中斷第三節(jié) 80 51
8、串行通信工作方式及應(yīng)用 8051單片機(jī)的串行通信共有四種工作方式: 1 串行工作方式0 串行口為同步移位寄存器方式,波特率固定為f晶振/12。該方式主要用于I/O口擴(kuò)展等,方式0傳送數(shù)據(jù)時(shí),串行數(shù)據(jù)由RXD(P3.0)端輸入或輸出,而TXD(P3.1)此時(shí)僅作為同步移位脈沖發(fā)生器發(fā)出移位脈沖。 串行數(shù)據(jù)的發(fā)送和接收以8位為一幀,不設(shè)起始位和停止位,其格式如下: D0D1D2D3D4D5D6D7方式0輸出數(shù)據(jù)時(shí),向SBUF寫入數(shù)據(jù)的指令: MOV SBUF, A或: MOV SBUF, XXH即為從RXD端輸出數(shù)據(jù)的發(fā)送啟動(dòng)指令。當(dāng)位數(shù)據(jù)全部移出后,SCON 中的TI位被自動(dòng)置1。方式0輸入數(shù)據(jù)
9、時(shí),使 SCON 中REN位置1指令:SETB REN即為從RXD端輸入數(shù)據(jù)啟動(dòng)指令。當(dāng)接收到8位數(shù)據(jù)后SCON中的RI位被自動(dòng)置1。方式0工作時(shí)往往需要外部有串入并出寄存器(輸出)和并入串出寄存器(輸入)配合使用,方式0多用于將串行口轉(zhuǎn)變?yōu)椴⑿锌诘氖褂脠?chǎng)合,如圖84所示: 并行輸出 并行輸入 8051 串行輸出 P8 P1 8051 串行輸入 P8 P1 RXD D CD4094 RXD Q8 CD4014 TXD CLK STB TXD CLK P/S 移位脈沖 移位脈沖 P1.0 P1.0 (a) (b)圖84 串行工作方式0與輸入,輸出電路的連接示例 圖84(a)中CD4094是”串入
10、并出”移位寄存器,TXD端輸出頻率為F晶振 /12的固定方波信號(hào)(移位脈沖),在該移位脈沖的作用下,D端串行輸入數(shù)據(jù)可依次存入CD4094內(nèi)部8D鎖存器鎖存。P1.0為選通信號(hào), 當(dāng)P1.0=STB為高電平時(shí),將內(nèi)部8D鎖存器數(shù)據(jù)并行輸出。圖84(b)中CD4014為“串入/并出串出”移位寄存器,P1P8為并行輸入端,Q8為串行輸出端,當(dāng)P1.0=P/S=1,加在并行輸入端P1P8上的數(shù)據(jù)在時(shí)鐘脈沖作用下從Q8端串行輸出。方式0的移位操作的波特率固定為單片機(jī)晶振頻率f晶振的十二分之一。即:波特率=f晶振/12。例如當(dāng)f晶振=12MHZ,波特率 = 10 6 (位/秒)。例81 試編寫從CD40
11、94并行輸出數(shù)據(jù)36H的參考程序:解: 參考程序如下: MOV SCON, #00H ; 串行口工作方式0。 CLR ES ; 禁止串行口中斷。 MOV A, #36H ; 傳送數(shù)據(jù)送A。 CLR P1.0 ; 關(guān)閉并行輸出。 MOV SBUF, A ; 啟動(dòng)串行輸出。 HERE:JBC TI, FS ; 等待串行輸出完畢。 AJMP HERE FS:SETB P1.0 ;開啟并行輸出。RET ;返回。 2串行工作方式1(1) 方式傳送的數(shù)據(jù)格式方式傳送一幀為10位的串行數(shù)據(jù),包括1位起始位,8位數(shù)據(jù)位和1位停止位。其幀格式為: 起 始 D0 D1 D2 D3 D4 D5 D6 D7 停 止(
12、2)方式1的波特率的確定方式1的波特率是可變的,計(jì)算公式為:波特率=(2smod / 32)×( T1溢出率) 其中smod為PCON寄存器最高位的值。 所謂定時(shí)器T1的溢出就是T1在單位時(shí)間內(nèi)溢出的次數(shù)。如設(shè)T1為工作方式2,那么T1定時(shí)時(shí)間: T1定時(shí)=(28X)×T機(jī) =(28X)×12 / F晶振 則T1的溢出率= 1/ T1定時(shí)= F晶振 /(12(28X) 由此可得波特率的計(jì)算公式為: 波特率=(2smod/32)×F晶振 /(12(28X) 實(shí)際使用時(shí)總是先確定波特率,再計(jì)算定時(shí)器T1的記數(shù)初值X,然后進(jìn)行T1的初始化。根據(jù)上述波特率的計(jì)算
13、公式,可得T1記數(shù)初值的計(jì)算公式為: X = 256 (F晶振×2smod )/(384×波特率)定時(shí)器T1之所以選擇工作方式2,是因?yàn)榉绞?具有自動(dòng)加載功能,可避免通過程序反復(fù)裝入計(jì)數(shù)初值而影響波特率的準(zhǔn)確性。(3)方式1數(shù)據(jù)的發(fā)送和接收 方式1的數(shù)據(jù)發(fā)送由一條寫入單片機(jī)發(fā)送寄存器SBUF指令啟動(dòng)。8位數(shù)據(jù)在串行口由硬件自動(dòng)加入起始位和停止位組成完整的幀格式。在內(nèi)部移位脈沖作用下,由TXD端串行輸出。發(fā)送完一幀數(shù)據(jù)后,使TXD輸出端維持”1”狀態(tài)并置使TI標(biāo)志位置1以通知CPU發(fā)送下一個(gè)字符。接收數(shù)據(jù)由接收單片機(jī)SCON中的REN置1開始,隨后串行口不斷采樣RXD端電平,
14、當(dāng)采樣到RXD端電平從1向0跳變時(shí),就認(rèn)定是接收信號(hào)并開始接收從RXD端輸入的數(shù)據(jù),并送入內(nèi)部接收寄存器SBUF中,直到停止位到來之后,并使RI位置1,通知CPU從SBUF中取走接收到的一幀字符。方式1傳送數(shù)據(jù)時(shí)發(fā)送前應(yīng)先清TI,接收前應(yīng)先清RI。 例82 甲,乙兩單片機(jī)擬以工作方式1進(jìn)行串行數(shù)據(jù)通信,波特率為1200,甲機(jī)發(fā)送,發(fā)送數(shù)據(jù)在甲機(jī)外部RAM 1000H101FH單元中。乙機(jī)接收,并把接收數(shù)據(jù)依次放入乙機(jī)外部RAM 1000H101FH單元中。甲,乙機(jī)晶振頻率均為6MHZ。 連接方式如圖85所示: TXD RXD 甲機(jī) 乙機(jī) 圖85 例82示意圖 解:設(shè)定:(1) 甲、乙機(jī)定時(shí)用工
15、作方式2,即初值6×106×1384×1200 X256 243F3H (2) SMOD0,即波特率不倍增。 (3) 用查詢傳送方式。 (4) SCON=01000000B=40H 可得甲機(jī)發(fā)送主程序如下: ORG 0030H MOV TMOD, #20H ;設(shè)定時(shí)器1工作方式2。 MOV TL1, #0F3H ;設(shè)置定時(shí)器初值。 MOV TH1, #0F3H ;設(shè)置重裝值。 CLR EA ;禁止中斷。 MOV PCON, #00H ;(SMOD)=0。 MOV SCON, #40H ;設(shè)串行工作方式1,禁止接收。 MOV DPTR, #1000H ;建立發(fā)送數(shù)據(jù)
16、地址指針初值。 MOV R7, #20H ;建立計(jì)數(shù)指針。 SETB TR1 ;啟動(dòng)定時(shí)器1。 SEND:MOVX A, DPTR ;取數(shù)據(jù)。 MOV SBUF,A ;啟動(dòng)數(shù)據(jù)傳送操作。 JNB TI, $ ;等待一幀發(fā)送完畢。 CLR TI ;清TI標(biāo)志。 INC DPTR ;指向下一單元。 DJNZ R7, SEND ;數(shù)據(jù)塊傳送結(jié)束? 沒結(jié)束繼續(xù)傳送。 CLR TR1 ;傳送結(jié)束,停止定時(shí)器1工作。 RET ;返回。 乙機(jī)接收參考程序如下: ORG 0030H MOV TMOD, #20H ;設(shè)定時(shí)器1工作方式2。 MOV TL1, #0F3H ;設(shè)置定時(shí)器初值。 MOV TH1, #0
17、F3H ;設(shè)置重裝值。 CLR EA ;禁止中斷。 MOV PCON, #00H ;SMOD=0。 MOV SCON, #40H ;設(shè)串行工作方式1。 MOV DPTR, #1000H ;建立接收地址指針初值。 MOV R7, #20H ;建立計(jì)數(shù)指針。 SETB TR1 ;啟動(dòng)定時(shí)器T1。 SETB REN ;啟動(dòng)接收數(shù)據(jù)操作。RECIV:JNB RI, $ ;等待數(shù)據(jù)接收完畢。 CLR RI ;清RI標(biāo)志。 MOV A, SBUF ;取數(shù)據(jù)。 MOVX DPTR,A ;送外部RAM。 INC DPTR ;指向下一單元。 DJNZ R7, RECIV ;數(shù)據(jù)塊接收完畢?沒完繼續(xù)接收。 CLR
18、 TR1 ;接收完畢, 停止定時(shí)器1工作。 RET ;返回。 如改用中斷方式甲機(jī)發(fā)送參考程序如下: ORG 0000H AJMP MAIN ORG 0023H LJMP ASEND ;建立串行中斷口地址。 ORG 0030H MAIN:MOV SP, #30H ;設(shè)置堆棧。 MOV TMOD, #20H ;設(shè)定時(shí)器1工作方式2。 MOV TL1, #0F3H ;設(shè)置定時(shí)器初值。 MOV TH1, #0F3H ;設(shè)置重裝值。 MOV PCON, #00H ;SMOD=0。 MOV SCON, #40H ;設(shè)串行工作方式。 MOV R7, #1FH ;建立計(jì)數(shù)指針。 MOV DPTR, #1000
19、H ;建立發(fā)送地址指針初值。 SETB EA ;總中斷允許。 SETB ES ;串行中斷允許。 SETB TR0 ;啟動(dòng)定時(shí)器0。 MOVX A, DPTR ;第一個(gè)數(shù)據(jù)送A。 MOV SBUF, A ;啟動(dòng)傳送數(shù)據(jù)操作。 INC DPTR ;指向下一RAM單元。WAIT:AJMP $ ;等待中斷。 中斷服務(wù)子程序: ORG 0100HCLR TI ;清TI。ASEND:MOVX A, DPTR ;取數(shù)據(jù)。 MOV SBUF,A ;傳送數(shù)據(jù) INC DPTR ;指向下一單元。 DJNZ R7, GOON ;傳送結(jié)束?沒結(jié)束繼續(xù)傳送。 CLR EA ;傳送結(jié)束,關(guān)閉。 CLR TR1 GOON:
20、RETI ;返回。 順便指出,甲機(jī)以中斷方式傳送數(shù)據(jù)時(shí),計(jì)數(shù)指示為1FH而非20H,這是因?yàn)樵趩?dòng)甲機(jī)發(fā)送時(shí)已經(jīng)向SBUF發(fā)送了一個(gè)數(shù)據(jù)。 至于乙機(jī),既可用上述查詢方式接收,也可用中斷方式接收。中斷方式程序設(shè)計(jì)思路與查詢方式類似,不再細(xì)述。 在異步串行通訊中,接收機(jī)以波特率的3倍檢測(cè)RXD端信號(hào),檢測(cè)到兩次以上相同信號(hào)即為有效信號(hào)。 在實(shí)際應(yīng)用中,可根椐需要加入奇偶校驗(yàn)位一起傳送,以提高傳送的可靠性。 例83 甲,乙兩單片機(jī)同樣以工作方式1進(jìn)行串行數(shù)據(jù)通信,波特率為1200,甲機(jī)發(fā)送,發(fā)送數(shù)據(jù)在甲機(jī)外部RAM 1000H101FH單元中,在發(fā)送之前先將數(shù)據(jù)塊長(zhǎng)度發(fā)送給乙機(jī),發(fā)送完后,向乙機(jī)發(fā)送
21、一個(gè)累加校驗(yàn)和。 乙機(jī)接收,乙機(jī)首先接收數(shù)據(jù)長(zhǎng)度,然后接收數(shù)據(jù),并把接收數(shù)據(jù)依次放入乙機(jī)外部RAM 1000H101FH單元中,接收完畢后進(jìn)行一次累加和校驗(yàn),數(shù)據(jù)全部接收完畢時(shí)向甲機(jī)送出狀態(tài)字,表示傳送狀態(tài)。甲、乙機(jī)晶振頻率均為6MHZ。 連接方式見圖86: 甲 乙 TXD RXD RXD TXD 圖86 例83示意圖解:設(shè)定如下: (1)波特率約定為1200,以定時(shí)器T1為波特率發(fā)生器,T1用工作方式2(SMOD)0,波特率不倍增。6×106×1384×1200 則初值: X256 243F3H (2)設(shè)置R5為累加和寄存器,R6為數(shù)據(jù)塊長(zhǎng)度寄存器。 (3)用查
22、詢傳送方式。(4)串行口為工作方式1,允許接收,即; SCON=01010000B=50H 可得甲機(jī)發(fā)送主程序如下: ORG 0030H MOV TMOD, #20H ;設(shè)定時(shí)器1工作方式2。 MOV TL1, #0F3H ;設(shè)置定時(shí)器初值。 MOV TH1, #0F3H ;設(shè)置重裝值。 SETB TR1 ;啟動(dòng)定時(shí)器1。 MOV PCON, #00H ;(SMOD)=0。 MOV SCON, #50H ;設(shè)串行工作方式1,允許接收。AGAIN:MOV DPTR, #1000H ;建立發(fā)送數(shù)據(jù)地址指針初值。 MOV R6, #20H ;數(shù)據(jù)塊長(zhǎng)度送 R6。 MOV R5, #00H ;累加和寄
23、存器清“0”。 MOV SBUF, R6 ;先發(fā)送長(zhǎng)度值。 L1:JBC TI, L2 ;等待發(fā)送結(jié)束。 AJMP L1 L2:MOVX A, DPTR ;取數(shù)據(jù)塊中數(shù)據(jù)。MOV SBUF, A ;發(fā)送數(shù)據(jù)。ADD A, R5 ;發(fā)送數(shù)據(jù)累加。 MOV R5, A ;累加和送R5。INC DPTR ;地址加1。L3:JBC TI, L4 ;等待一幀數(shù)據(jù)發(fā)送完畢。 AJMP L3L4:DJNZ R6, L2 ;判斷數(shù)據(jù)塊是否發(fā)送完,若未完繼續(xù)發(fā)送。 MOV SBUF, R5 ;數(shù)據(jù)塊發(fā)送完畢,發(fā)累加和校驗(yàn)碼。 L5:JBC TI, L6 ;等待發(fā)送累加和碼結(jié)束。 AJMP L5L6:JBC RI
24、, L7 ;接收從機(jī)發(fā)來的結(jié)果標(biāo)志碼。 AJMP L6L7:MOV A, SBUF JZ L8 ;若標(biāo)志碼為00H,表示接收正確,返回;反之重發(fā)。 AJMP AGAIN ;發(fā)送有錯(cuò),重發(fā)。L8:RET 乙機(jī)接收參考程序如下: ORG 0030H MOV TMOD, #20H ;設(shè)定時(shí)器1工作方式2。 MOV TL1, #0F3H ;設(shè)置定時(shí)器初值。 MOV TH0, #0F3H ;設(shè)置重裝值。 SETB TR1 ;啟動(dòng)T1。 MOV PCON, #00H ;SMOD=0。 MOV SCON, #50H ;設(shè)串行工作方式1,允許接收。AGAIN:MOV DPTR, #1000H ;建立接收地址指
25、針初值L0:JBC RI, L1 ;接收發(fā)送長(zhǎng)度值。 AJMP L0L1:MOV A, SBUF MOV R6, A ;取發(fā)送長(zhǎng)度值送R6。MOV R5, #00H ;累加和寄存器清”0”。WAIT:JBC RI, L2 ;接收數(shù)據(jù)。AJMP WAITL2:MOV A, SBUF MOVX DPTR,A ;將所接收數(shù)據(jù)送數(shù)據(jù)區(qū)。INC DPTR ;指向下一單元。ADD A, R5 ;累加。MOV R5, ADJNZ R6, WAIT ;若數(shù)據(jù)接收未完繼續(xù)。L3:JBC RI, L4 ;數(shù)據(jù)接收完畢,接收主機(jī)的累加校驗(yàn)碼。 AJMP L3L4:MOV A, SBUF ;取主機(jī)累加和校驗(yàn)碼。XRL
26、 A, R5 ;與本機(jī)累加和進(jìn)行校驗(yàn)。JZ L7 ;若校驗(yàn)正確轉(zhuǎn)L7。MOV SBUF, #0FFH ;校驗(yàn)出錯(cuò),回送校驗(yàn)出錯(cuò)標(biāo)志碼FFH,表示要求主機(jī)重發(fā)。L5:JBC TI, L6 ;回送FFH。AJMP L5L6:AJMP AGAIN ;重新接收L7:MOV SBUF, #00H ;回送校驗(yàn)正確標(biāo)志碼00H。L8:JBC TI, L9 ;回送。AJMP L8 L9:RET ;接收完成,返回。 3串行工作方式2 方式2是11位為一幀的串行通信方式,即1位始位,9位數(shù)據(jù)位和1位停止位。其中第9位數(shù)據(jù)既可作奇偶校驗(yàn)位,也可作控制位使用。其幀格式為: 起 始 D0 D1 D2 D3 D4 D5
27、D6 D7 D8 停 止 附加第9位(D8)由軟件置1或清零。方式2發(fā)送時(shí)單片機(jī)自動(dòng)將SBUF中8位數(shù)據(jù)加上SCON中TB8作為第9位數(shù)據(jù)進(jìn)行發(fā)送。接收時(shí),單片機(jī)將接收到的前8位數(shù)據(jù)送入SBUF,而在SCON中RB8位中存放第9位數(shù)據(jù)。方式2波特率只有兩種,用公式表示: 波特率(2smod/64)×f晶振 當(dāng)SMOD=0, 波特率為f晶振/64 當(dāng)SMOD=1, 波特率為f晶振/32 4串行工作方式3 方式3通信過程與方式2完全相同。區(qū)別僅在于方式3的波特率可通過設(shè)置定時(shí)的工作方式和初值來設(shè)定(與串行工作方式1波特率設(shè)定方法相同)。 順便指出,由于方式1和方式3的波特率設(shè)置較為靈活,
28、在單片機(jī)串行通信中得到廣泛應(yīng)用。第四節(jié) 單片機(jī)多機(jī)通信原理 單片機(jī)多機(jī)通信是指一臺(tái)主機(jī)和多臺(tái)從機(jī)之間的通信。8051的串行通信控制寄存器SCON中設(shè)有多機(jī)通信控制位SM2(SCON.5)。串行口以方式2或方式3接收時(shí),若SM21,則僅當(dāng)接收到的第九位數(shù)據(jù)為1時(shí),才將數(shù)據(jù)送入接收緩沖器SBUF,并置位RI發(fā)出中斷請(qǐng)求信號(hào),否則將丟失信息;而當(dāng)SM20時(shí),則無論第九位是0還是1,都能將數(shù)據(jù)裝入SBUF,并產(chǎn)生中斷請(qǐng)求信號(hào)。根據(jù)這個(gè)特性,便可實(shí)現(xiàn)主機(jī)與多個(gè)從機(jī)之間的串行通信。 圖87為8051多機(jī)通信連接示意圖,圖中8051為主機(jī),其余8051為從機(jī)。 TXD RXD TXD RXD TXD RXD
29、 TXD RXD 8051 8051 8051 8051 主機(jī) 0#從機(jī) 1#從機(jī) 2#從機(jī) 圖87 多機(jī)通信連接示意 以主機(jī)向從機(jī)發(fā)送數(shù)據(jù)為例,在編程前,可先定義各從機(jī)通信地址,設(shè)三個(gè)從機(jī)地址分別為00H,01H,和02H。主機(jī)和從機(jī)在初始化程序中將串行口工作方式設(shè)定為11位異步通信方式(方式2或方式3),且置位SM2,允許串行口中斷。在主機(jī)和某一從機(jī)通信之前,先向所有從機(jī)發(fā)出所選從機(jī)的地址,即聯(lián)絡(luò)通信命令,接著才發(fā)送數(shù)據(jù)或命令。 在主機(jī)發(fā)送地址時(shí),地址數(shù)據(jù)標(biāo)識(shí)位TB8(即發(fā)送的第九位數(shù)據(jù))設(shè)置1以表示地址信息,各從機(jī)接收到主機(jī)發(fā)來的地址信息后,則置位中斷標(biāo)志RI,中斷后判斷主機(jī)送來的地址與
30、本從機(jī)是否相符。若為本地址,則將本機(jī)SM2位清0,準(zhǔn)備與主機(jī)進(jìn)行數(shù)據(jù)通信。 沒選中的從機(jī)則保持SM21狀態(tài),接著主機(jī)發(fā)送數(shù)據(jù)幀(TB80表示),各串行口同時(shí)收到了數(shù)據(jù)幀,而只有已選中的從機(jī)(SM20)才能產(chǎn)生中斷并接收該數(shù)據(jù),其余從機(jī)因收到第九位數(shù)據(jù)RB80且本機(jī)SM21,所以將數(shù)據(jù)丟掉。這就實(shí)現(xiàn)了主機(jī)和從機(jī)的一對(duì)一通信。通信只能在主從機(jī)之間進(jìn)行,如若在兩個(gè)從機(jī)之間進(jìn)行,必需通過主機(jī)作中介。這就像我們身處喧囂的鬧市,卻在渴望山清水秀的僻靜之地。心若靜,何處都是水云間,都是世外桃源,都是僻靜之所,心若浮躁,不管你居所何處,都難寧靜。其實(shí),很多人懼怕喧囂,卻又怕極了孤獨(dú),人實(shí)在是矛盾的載體。然而,
31、人的最高境界,就是孤獨(dú)。受得了孤獨(dú),忍得了寂寞,扛得住壓力,才能成為生活的強(qiáng)者,才不會(huì)因?yàn)樯畹陌到付?duì)美好事物的追求。常常喜歡靜坐,沒有人打擾,一個(gè)人,也有一個(gè)人的宿醉。面對(duì)這喧囂塵世,安靜下來的時(shí)光,才是最貼近心底的那一抹溫柔,時(shí)光如水,靜靜流淌。即便獨(dú)自矗立夜色,不說話,也很美。這恬淡時(shí)光,忘卻白日的傷感,撿起平淡,將靈魂在寧靜的夜色里放空。回頭看看曾經(jīng)走過的路,每一個(gè)腳印,都是豐富而厚重的,是對(duì)未來的希望,是對(duì)生活的虔誠(chéng)。我們都是生活里的平凡之人,不管一天中多么努力,多么辛苦,老天總是會(huì)給你時(shí)不時(shí)的開個(gè)玩笑,可能有些玩笑,來的有點(diǎn)猛,有點(diǎn)不知所措,但是又怎么樣呢?你要知道,人的能力
32、和智慧是無窮的。面對(duì)生活的暗礁,我們只能用坦然的心態(tài)去接受它,然后盡量去改變它,讓它激起生命的浪花。即使改變不了,只要努力了,就不言后悔。有時(shí)候,難過了,想哭就哭出來,哭又不是罪,哭完了繼續(xù)努力,總有一天,時(shí)間會(huì)告訴你,你的眼淚是不會(huì)白流的。沒有苦難的人生,它一定是不完美的。生命里,沒有一帆風(fēng)順,總有一些看不見的暗礁等著你,既然注定要撞上,那就努力尋找岸的方向。只要不放棄,一定有抵達(dá)岸邊的希望,若選擇放棄,那么岸依然是岸,死神只會(huì)離你越來越近。能和災(zāi)難抗衡,能珍惜生命的人,那么他的人生一定不會(huì)太灰暗。只要你不放棄自己,生活就不會(huì)放棄你,成功的希望就會(huì)被實(shí)現(xiàn)。凡事成功的人,經(jīng)歷生活的暗礁,那是必然途徑。生命路上的災(zāi)難和創(chuàng)傷,會(huì)讓你更好的前進(jìn)。行走塵世間,保持好心態(tài),一切都有可能被改變,當(dāng)別人在為你吶喊助威時(shí),自己千萬不要放棄,不要半途而廢,前功盡棄。只要堅(jiān)持,生命一定會(huì)被你改寫。人生何其短,千萬不要讓過往和未來,羈絆住今天的心情,應(yīng)該尊重生命,珍惜時(shí)光,活好每一天。林清玄說:“今天掃完今天的落葉,明天的樹葉不會(huì)在今天掉下來,不要為明天煩惱,要努力地活在今天這一刻?!边€有一句話叫,昨天的太陽曬不干今天的衣裳。假若有人問
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年L-乳酸合作協(xié)議書
- 八年級(jí)英語下冊(cè) Unit 4 單元綜合測(cè)試卷(人教河南版 2025年春)
- 2022高等教育自學(xué)考試《心理學(xué)》能力測(cè)試試題-含答案
- 2025年二手商鋪購(gòu)房合同格式版(2篇)
- 2025年五年級(jí)英語下學(xué)期工作總結(jié)(二篇)
- 2025年個(gè)人房屋租賃合同條款范文(2篇)
- 2025年五年級(jí)班主任工作總結(jié)例文(5篇)
- 2025年事業(yè)單位試用期勞動(dòng)合同樣本(2篇)
- 2025年五年級(jí)讀書活動(dòng)總結(jié)模版(二篇)
- 2025年個(gè)人房買賣合同范文(2篇)
- 2025年1月浙江省高考政治試卷(含答案)
- 教體局校車安全管理培訓(xùn)
- 湖北省十堰市城區(qū)2024-2025學(xué)年九年級(jí)上學(xué)期期末質(zhì)量檢測(cè)綜合物理試題(含答案)
- 導(dǎo)播理論知識(shí)培訓(xùn)班課件
- 空氣能安裝合同
- 電廠檢修安全培訓(xùn)課件
- 初二上冊(cè)的數(shù)學(xué)試卷
- 四大名繡課件-高一上學(xué)期中華傳統(tǒng)文化主題班會(huì)
- 起重機(jī)械生產(chǎn)單位題庫質(zhì)量安全員
- 高中生物選擇性必修1試題
- 電氣工程及其自動(dòng)化專業(yè)《畢業(yè)設(shè)計(jì)(論文)及答辯》教學(xué)大綱
評(píng)論
0/150
提交評(píng)論