第5章80C51單片機(jī)的串行口_第1頁(yè)
第5章80C51單片機(jī)的串行口_第2頁(yè)
第5章80C51單片機(jī)的串行口_第3頁(yè)
第5章80C51單片機(jī)的串行口_第4頁(yè)
第5章80C51單片機(jī)的串行口_第5頁(yè)
已閱讀5頁(yè),還剩96頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、2022-1-41第第6 6章章 80C5180C51單片機(jī)的串行口單片機(jī)的串行口計(jì)算機(jī)計(jì)算機(jī)串行通信基礎(chǔ)串行通信基礎(chǔ)6.180C5180C51單片機(jī)的單片機(jī)的串行口串行口6.280C5180C51單片機(jī)的單片機(jī)的串行口應(yīng)用串行口應(yīng)用6.32022-1-426.1 計(jì)算機(jī)串行通信基礎(chǔ)計(jì)算機(jī)串行通信基礎(chǔ)通信:并行通信與串行通信通信:并行通信與串行通信 v 并行通信并行通信特點(diǎn)特點(diǎn):傳送控制簡(jiǎn)單、速度快,但傳輸線較多,成本高。:傳送控制簡(jiǎn)單、速度快,但傳輸線較多,成本高。 2022-1-43v 串行通信串行通信特點(diǎn)特點(diǎn):傳送控制復(fù)雜、速度慢,傳輸線少,成本低:傳送控制復(fù)雜、速度慢,傳輸線少,成本低

2、 2022-1-44v 異步通信與同步通信異步通信與同步通信n 收、發(fā)設(shè)備時(shí)鐘獨(dú)立,以字符收、發(fā)設(shè)備時(shí)鐘獨(dú)立,以字符( (幀幀) )為單位傳輸為單位傳輸 6.1.1 6.1.1 串行通信的基本概念串行通信的基本概念v 異步通信異步通信 2022-1-45 異步通信幀格式異步通信幀格式v起始位(位);起始位(位);v 數(shù)據(jù)位(位);數(shù)據(jù)位(位);v 奇偶校驗(yàn)位(位,可無(wú)校驗(yàn)位);奇偶校驗(yàn)位(位,可無(wú)校驗(yàn)位);v 停止位(位)。停止位(位)。 特點(diǎn)特點(diǎn)n 易于實(shí)現(xiàn)易于實(shí)現(xiàn)n 效率不高效率不高 v 同步通信同步通信(發(fā)、收時(shí)鐘直接連接,效率高。板內(nèi)元件間的(發(fā)、收時(shí)鐘直接連接,效率高。板內(nèi)元件間的S

3、PI接口)接口) 2022-1-46v 串行通信的傳輸方向串行通信的傳輸方向v 單工單工 v 半雙工半雙工 v 全雙工全雙工 80C5180C51有有1 1個(gè)全雙工個(gè)全雙工串行口串行口 2022-1-47v 信號(hào)的調(diào)制與解調(diào)信號(hào)的調(diào)制與解調(diào)DTEDTE:數(shù)據(jù):數(shù)據(jù)終端終端設(shè)備設(shè)備DCEDCE:數(shù)據(jù):數(shù)據(jù)通信通信設(shè)備設(shè)備 調(diào)制解調(diào)器調(diào)制解調(diào)器n 調(diào)制調(diào)制n 解調(diào)解調(diào) 2022-1-48v 串行通信的錯(cuò)誤校驗(yàn)串行通信的錯(cuò)誤校驗(yàn)v奇偶校驗(yàn)奇偶校驗(yàn) 發(fā)送字符時(shí)發(fā)送字符時(shí),數(shù)據(jù)位,數(shù)據(jù)位尾隨尾隨1 1位奇偶校驗(yàn)位位奇偶校驗(yàn)位(1 1或或0 0)。)。奇校驗(yàn)時(shí)奇校驗(yàn)時(shí),數(shù)據(jù)中,數(shù)據(jù)中“1 1”的個(gè)數(shù)與校驗(yàn)

4、位的個(gè)數(shù)與校驗(yàn)位“1 1”的個(gè)數(shù)之和應(yīng)為奇數(shù);的個(gè)數(shù)之和應(yīng)為奇數(shù);偶校驗(yàn)時(shí)偶校驗(yàn)時(shí),數(shù)據(jù)中,數(shù)據(jù)中“1 1”的個(gè)數(shù)與校驗(yàn)位的個(gè)數(shù)與校驗(yàn)位“1 1”的個(gè)數(shù)之和應(yīng)為偶數(shù)。的個(gè)數(shù)之和應(yīng)為偶數(shù)。接收字符時(shí)接收字符時(shí),對(duì),對(duì)“1 1”的個(gè)數(shù)進(jìn)行校驗(yàn),若發(fā)現(xiàn)的個(gè)數(shù)進(jìn)行校驗(yàn),若發(fā)現(xiàn)不一致,則說(shuō)明傳輸數(shù)據(jù)過(guò)程中出現(xiàn)了差錯(cuò)。不一致,則說(shuō)明傳輸數(shù)據(jù)過(guò)程中出現(xiàn)了差錯(cuò)。 2022-1-49v代碼和校驗(yàn)代碼和校驗(yàn) 發(fā)送方發(fā)送方將所發(fā)將所發(fā)數(shù)據(jù)塊求和數(shù)據(jù)塊求和(或各字節(jié)異或或各字節(jié)異或),產(chǎn)),產(chǎn)生的生的校驗(yàn)和字節(jié)校驗(yàn)和字節(jié)附加到數(shù)據(jù)塊的末尾。附加到數(shù)據(jù)塊的末尾。 接收方接收方在接收數(shù)據(jù)時(shí)要對(duì)在接收數(shù)據(jù)時(shí)要對(duì)數(shù)據(jù)塊(數(shù)據(jù)

5、塊(除校驗(yàn)字節(jié)外除校驗(yàn)字節(jié)外)求和(或各字節(jié)異或),求和(或各字節(jié)異或),將所得的結(jié)果與收到的將所得的結(jié)果與收到的“校驗(yàn)和校驗(yàn)和”進(jìn)行比較,兩者相符則無(wú)差錯(cuò),否則進(jìn)行比較,兩者相符則無(wú)差錯(cuò),否則就認(rèn)為傳送過(guò)程出現(xiàn)了差錯(cuò)。就認(rèn)為傳送過(guò)程出現(xiàn)了差錯(cuò)。 2022-1-410v 傳輸速率與傳輸距離傳輸速率與傳輸距離v傳輸速率傳輸速率波特率波特率:每秒鐘傳送信息的位數(shù),單位:波特(:每秒鐘傳送信息的位數(shù),單位:波特(Baud) 基帶傳輸基帶傳輸(每個(gè)(每個(gè)碼元碼元帶有帶有“1 1”或或“0 0”這這1 bit1 bit信息信息) )。 常用波特率為:常用波特率為:24002400、48004800、 9

6、6009600、14.4K14.4K、19.2K19.2K等等 v傳輸距離與傳輸速率的關(guān)系傳輸距離與傳輸速率的關(guān)系傳輸距離隨波特率的增加而減小。傳輸距離隨波特率的增加而減小。 等時(shí)間間隔信號(hào)稱(chēng)為碼元每個(gè)碼元可以攜帶n位信息 2022-1-4116.1.2 6.1.2 串行通信接口標(biāo)準(zhǔn)串行通信接口標(biāo)準(zhǔn)RS-232CRS-232C定義的是定義的是DTEDTE與與DCEDCE間的接口標(biāo)準(zhǔn)。間的接口標(biāo)準(zhǔn)。 v 機(jī)械特性機(jī)械特性DB-25DB-25(陽(yáng)頭)連接器(陽(yáng)頭)連接器 DB-9DB-9(陽(yáng)頭)連接器(陽(yáng)頭)連接器 陽(yáng)頭陽(yáng)頭通常用于通常用于計(jì)算機(jī)側(cè)計(jì)算機(jī)側(cè),陰頭陰頭用于用于連接線側(cè)連接線側(cè) 202

7、2-1-412v 功能特性功能特性插針序號(hào)信號(hào)名稱(chēng)功能信號(hào)方向 1 PGND保護(hù)接地 2(3)TXD發(fā)送數(shù)據(jù)(串行輸出)DTEDCE 3(2)RXD接收數(shù)據(jù)(串行輸入)DTEDCE 4(7)RTS請(qǐng)求發(fā)送DTEDCE 5(8)CTS允許發(fā)送DTEDCE 6(6)DSRDCE就緒(數(shù)據(jù)建立就緒)DTEDCE 7(5) SGND信號(hào)接地 8(1)DCD載波檢測(cè)DTEDCE 20(4)DTRDTE就緒(數(shù)據(jù)終端準(zhǔn)備就緒)DTEDCE 22(9) RI振鈴指示DTEDCE2022-1-413v 電氣特性電氣特性RS-232CRS-232C采用負(fù)邏輯電平,規(guī)定(采用負(fù)邏輯電平,規(guī)定(-3-3-25V-2

8、5V)為邏輯)為邏輯“1 1”,(+3+3+25V+25V)為邏輯)為邏輯“0 0”。-3V-3V+3V+3V是未定義的過(guò)渡區(qū)。是未定義的過(guò)渡區(qū)。試比較:試比較: 電平轉(zhuǎn)換電路(如電平轉(zhuǎn)換電路(如MAX232MAX232)。)。 2022-1-414v 過(guò)程特性過(guò)程特性v遠(yuǎn)遠(yuǎn)程通信,需要調(diào)制解調(diào)器程通信,需要調(diào)制解調(diào)器 2022-1-415v近近程通信,不需要調(diào)制解調(diào)器程通信,不需要調(diào)制解調(diào)器 無(wú)聯(lián)絡(luò)線方式無(wú)聯(lián)絡(luò)線方式 聯(lián)絡(luò)線短接(偽連接)方式聯(lián)絡(luò)線短接(偽連接)方式 2022-1-416v RS-232CRS-232C電平與電平與TTLTTL電平轉(zhuǎn)換驅(qū)動(dòng)電路電平轉(zhuǎn)換驅(qū)動(dòng)電路v早期采用早期采用

9、MC1488MC1488、MC1489MC1489 v近期常用近期常用MAXM232MAXM232: 片內(nèi)帶有自升壓電路片內(nèi)帶有自升壓電路 僅需僅需+5V+5V電源電源 內(nèi)含內(nèi)含2 2個(gè)發(fā)送器,個(gè)發(fā)送器,2 2個(gè)接收器個(gè)接收器 2022-1-417v 采用采用RS-232CRS-232C接口存在的問(wèn)題接口存在的問(wèn)題 v傳輸距離短、速率低傳輸距離短、速率低 通常不超過(guò)通常不超過(guò)1515米,速率米,速率20Kbps20Kbps v有電平偏移有電平偏移 RS-232RS-232收發(fā)共地,地電流會(huì)使電平偏移出現(xiàn)邏輯錯(cuò)誤。收發(fā)共地,地電流會(huì)使電平偏移出現(xiàn)邏輯錯(cuò)誤。 v抗干擾能力差抗干擾能力差 RS-23

10、2RS-232單端輸入,易混入干擾。(單端輸入,易混入干擾。(故用大擺幅故用大擺幅) 新標(biāo)準(zhǔn)新標(biāo)準(zhǔn)RS-485RS-485改善了傳輸特性,應(yīng)用廣泛!改善了傳輸特性,應(yīng)用廣泛! 2022-1-4186.2 80C51單片機(jī)的串行口單片機(jī)的串行口6.2.1 80C516.2.1 80C51串行口的結(jié)構(gòu)串行口的結(jié)構(gòu) 1 1個(gè)全雙工串口:個(gè)全雙工串口:通信通信或或接口擴(kuò)展接口擴(kuò)展 接收發(fā)送緩沖器接收發(fā)送緩沖器邏輯同名、物理分開(kāi);邏輯同名、物理分開(kāi);接收雙緩沖。接收雙緩沖。 2022-1-4196.2.2 80C516.2.2 80C51串行口的控制寄存器串行口的控制寄存器v 串行口控制寄存器串行口控制

11、寄存器SCONSCONv SM0SM0和和SM1SM1:工作方式選擇位:工作方式選擇位76543210SCONSM0SM1SM2RENTB8RB8TIRI字節(jié)地址:98HSM0SM1方 式說(shuō) 明波特率000移位寄存器fosc/1201110位UART(8位數(shù)據(jù))可變10211位UART(9位數(shù)據(jù))fosc/64或fosc/3211311位UART(9位數(shù)據(jù))可變2022-1-420vSM2SM2:多機(jī)通信控制位:多機(jī)通信控制位SM2=1SM2=1時(shí)時(shí), ,接收機(jī)接收機(jī)地址幀甄別地址幀甄別使能使能 。若若RB8RB81 1,接收的信息接收的信息可進(jìn)入可進(jìn)入SBUFSBUF,并使,并使RIRI為為

12、1 1,進(jìn)而在中斷服務(wù)中再進(jìn)行地址號(hào)比較進(jìn)而在中斷服務(wù)中再進(jìn)行地址號(hào)比較; ;若若RB8RB80 0,該幀不接收,丟棄掉,且保持,該幀不接收,丟棄掉,且保持RI=0RI=0。 SM2=0SM2=0時(shí),時(shí),接收機(jī)接收機(jī)地址幀甄別地址幀甄別禁止禁止。不論收到的不論收到的RB8RB8為為0 0或或1 1,均可以使接收幀進(jìn)入,均可以使接收幀進(jìn)入SBUFSBUF,并使,并使RI=1RI=1。此時(shí)的此時(shí)的RB8RB8通常為校驗(yàn)位。通常為校驗(yàn)位。 vRENREN:串行接收使能位,軟件置:串行接收使能位,軟件置1 1時(shí),啟動(dòng)接收過(guò)程時(shí),啟動(dòng)接收過(guò)程2022-1-421vTB8TB8:多機(jī)方式發(fā)送的第:多機(jī)方式

13、發(fā)送的第9 9位位發(fā)送的發(fā)送的地址地址/ /數(shù)據(jù)幀數(shù)據(jù)幀標(biāo)志。標(biāo)志。也可作為奇偶校驗(yàn)位。也可作為奇偶校驗(yàn)位。 vRB8RB8:多機(jī)方式接收的第:多機(jī)方式接收的第9 9位位接收的接收的地址地址/ /數(shù)據(jù)幀數(shù)據(jù)幀標(biāo)志。標(biāo)志。也可作為奇偶校驗(yàn)位。也可作為奇偶校驗(yàn)位。 vTITI:發(fā)送中斷標(biāo)志位,要由:發(fā)送中斷標(biāo)志位,要由軟件清軟件清0 0vRIRI:接收中斷標(biāo)志位,要由:接收中斷標(biāo)志位,要由軟件清軟件清0 02022-1-422v 電源控制寄存器電源控制寄存器PCON PCON vSMODSMOD:波特率倍增位。波特率倍增位。在串行口方式在串行口方式1 1、方式、方式2 2、方式方式3 3時(shí),波特率

14、與時(shí),波特率與SMODSMOD有關(guān),有關(guān),當(dāng)當(dāng)SMOD=1SMOD=1時(shí),波時(shí),波特率提高一倍。特率提高一倍。復(fù)位時(shí),復(fù)位時(shí),SMOD=0SMOD=0。 76543210PCONSMOD字節(jié)地址:97H2022-1-4236.2.3 80C516.2.3 80C51串行口的工作方式串行口的工作方式v 方式方式0 0:同步移位寄存器:同步移位寄存器,用于,用于擴(kuò)展并行口擴(kuò)展并行口 vRXDRXD:輸入輸入或或輸出輸出引腳引腳 vTXDTXD:移位脈沖移位脈沖輸出引腳輸出引腳v發(fā)送和接收都是發(fā)送和接收都是8 8位位v波特率固定為波特率固定為:fosc/12fosc/122022-1-424數(shù)據(jù)輸數(shù)

15、據(jù)輸出出: CRCR用于對(duì)用于對(duì)74LS16474LS164清清0 0 2022-1-425數(shù)據(jù)輸數(shù)據(jù)輸入入: S/LS/L下降沿下降沿將并行數(shù)將并行數(shù)據(jù)裝入據(jù)裝入,高電平,高電平啟動(dòng)啟動(dòng)數(shù)據(jù)移入。數(shù)據(jù)移入。 2022-1-426v 方式方式1 1:1010位幀,用于位幀,用于雙雙機(jī)通信機(jī)通信 v起始位:起始位:1 1位位 v數(shù)據(jù)位:數(shù)據(jù)位:8 8位位v停止位:停止位:1 1位位2022-1-427串行發(fā)送串行發(fā)送:(:(寫(xiě)寫(xiě)SBUFSBUF啟動(dòng)啟動(dòng)發(fā)送過(guò)程)發(fā)送過(guò)程) 串行接收串行接收:( (置置REN=1REN=1啟動(dòng)啟動(dòng)接收過(guò)程接收過(guò)程) ) 2022-1-428v 方式方式2 2和方式

16、和方式3 3:1111位幀,用于位幀,用于多機(jī)多機(jī)通信通信 v起始位:起始位:1 1位位 v數(shù)據(jù)位:數(shù)據(jù)位:9 9位位v停止位:停止位:1 1位位2022-1-429串行串行發(fā)送發(fā)送:(寫(xiě):(寫(xiě)SBUFSBUF啟動(dòng)發(fā)送過(guò)程)啟動(dòng)發(fā)送過(guò)程) 串行串行接收接收:( (置置REN=1REN=1啟動(dòng)接收過(guò)程啟動(dòng)接收過(guò)程) ) 2022-1-4306.2.4 80C516.2.4 80C51波特率確定與初始化步驟波特率確定與初始化步驟v 波特率的確定波特率的確定 v波特率的計(jì)算波特率的計(jì)算固定波特率:固定波特率: 方式方式0 0波特率波特率= fosc/12= fosc/12 方式方式2 2波特率波特率

17、= =(2 2SMODSMOD/64/64)* * foscfosc可變可變波特率波特率:( (方式方式1 1、方式、方式3 3) ) 波特率波特率= =(2 2SMODSMOD/32/32)* *(T1T1溢出率溢出率) T1T1溢出率溢出率 = fosc /12= fosc /12256 256 (TH1TH1)2022-1-431v 波特率的選擇波特率的選擇 波特率要選擇波特率要選擇標(biāo)稱(chēng)值標(biāo)稱(chēng)值,由于,由于TH1TH1的的初值是整數(shù)初值是整數(shù),為了,為了獲得標(biāo)稱(chēng)值,依公式獲得標(biāo)稱(chēng)值,依公式晶振頻率要選晶振頻率要選11.059211.0592MHzMHz。 方式方式1 1和方式和方式3 3

18、波特率與波特率與TH1TH1初值的對(duì)應(yīng)關(guān)系:初值的對(duì)應(yīng)關(guān)系: 波特率/(b/s)19.2 k9600480024001200TH1初值FDHFDHFAHF4HE8HSMOD10000若晶振為若晶振為12MHz12MHz,TH1TH1初值取初值取FDHFDH,依公式算出的波特,依公式算出的波特率為率為10416.610416.6; TH1TH1初值取初值取FCHFCH,為,為7812.57812.5。 2022-1-432v 串行口初始化步驟串行口初始化步驟 v確定確定T1T1的工作方式(的工作方式(TMODTMOD)v計(jì)算計(jì)算T1T1的初值,的初值,裝載裝載TH1TH1、TL1TL1v啟動(dòng)啟動(dòng)

19、T1T1(置位置位TR1TR1)v確定串行口工作方式(確定串行口工作方式(SCONSCON)v串口中斷設(shè)置(串口中斷設(shè)置(IEIE、IPIP)2022-1-4336.3 80C51單片機(jī)的串行口應(yīng)用單片機(jī)的串行口應(yīng)用6.3.1 6.3.1 利用單片機(jī)串口的并行利用單片機(jī)串口的并行I/OI/O擴(kuò)展擴(kuò)展 占用串口!占用串口!v單片機(jī)端的電平轉(zhuǎn)換單片機(jī)端的電平轉(zhuǎn)換6.3.2 6.3.2 單片機(jī)與單片機(jī)與PCPC機(jī)間的通信機(jī)間的通信v與與PCPC機(jī)的硬件連接機(jī)的硬件連接 v直通連接直通連接v交叉連接交叉連接vPCPC機(jī)串行口檢查機(jī)串行口檢查 nPCPC機(jī)的串行口的機(jī)的串行口的收、發(fā)信號(hào)引腳收、發(fā)信號(hào)引

20、腳短接短接 n運(yùn)行運(yùn)行串口調(diào)試軟件串口調(diào)試軟件 v連機(jī)編程測(cè)試連機(jī)編程測(cè)試void main(void)void main(void) uchar temp; uchar temp; init(); init(); while (1) while (1) temp = ReceiveChar();temp = ReceiveChar();/接收數(shù)據(jù)接收數(shù)據(jù)SendChar(temp); SendChar(temp); /發(fā)送數(shù)據(jù)發(fā)送數(shù)據(jù) void init(void)void init(void) SCON = 0 xSCON = 0 x5050; /; /方式方式1 1(N,8,1N,8,1

21、),接收允許),接收允許PCON = 0 x00; /PCON = 0 x00; /波特率不倍增波特率不倍增TMOD = 0 xTMOD = 0 x2020; /; /置置T1T1為為8 8位自動(dòng)重裝方式位自動(dòng)重裝方式TL1 = 0 xfd;TL1 = 0 xfd;TH1 = 0 xfd; /TH1 = 0 xfd; /波特率波特率96009600TR1 = 1; TR1 = 1; 76543210SCONSM0SM1SM2RENTB8RB8TIRI字節(jié)地址:98Huchar ReceiveChar() uchar ReceiveChar() uchar ch;uchar ch;while (

22、!RI); while (!RI); /等待接收完等待接收完ch = SBUF; ch = SBUF; RI = 0; RI = 0; return (ch);return (ch); void SendChar(uchar ch)void SendChar(uchar ch) SBUF = ch; SBUF = ch; /發(fā)送字符發(fā)送字符while (!TI); while (!TI); /等待發(fā)送完等待發(fā)送完TI = 0; TI = 0; /清標(biāo)志清標(biāo)志 v通信程序的擴(kuò)充與完善通信程序的擴(kuò)充與完善通訊協(xié)議:通訊協(xié)議:n 每幀:每幀:數(shù)據(jù)數(shù)據(jù)8 8位,起始位位,起始位1 1位,停止位位,停止

23、位1 1位,無(wú)檢位,無(wú)檢驗(yàn),波特率驗(yàn),波特率96009600。 n PC PC機(jī)作為主機(jī),機(jī)作為主機(jī),主機(jī)命令主機(jī)命令由由4 4個(gè)字符形成的字符個(gè)字符形成的字符串構(gòu)成,首字符串構(gòu)成,首字符$是同步頭,次字符為命令關(guān)是同步頭,次字符為命令關(guān)鍵字,其他鍵字,其他2 2個(gè)字符未定義。個(gè)字符未定義。n設(shè)命令設(shè)命令關(guān)鍵字為關(guān)鍵字為1 1時(shí)時(shí),單片機(jī)要將緩沖區(qū)的數(shù)據(jù),單片機(jī)要將緩沖區(qū)的數(shù)據(jù)以由以由前至后的順序前至后的順序發(fā)送到發(fā)送到PCPC機(jī)端;當(dāng)命令機(jī)端;當(dāng)命令關(guān)鍵字為關(guān)鍵字為2 2時(shí)時(shí),單片機(jī)要將緩沖區(qū)的數(shù)據(jù)以由,單片機(jī)要將緩沖區(qū)的數(shù)據(jù)以由后至前的順序后至前的順序發(fā)送到發(fā)送到PCPC機(jī)端,其他關(guān)鍵字未

24、定義。機(jī)端,其他關(guān)鍵字未定義。 v單片機(jī)端程序:?jiǎn)纹瑱C(jī)端程序:void DataInit(void)void DataInit(void) / /設(shè)置緩沖區(qū)調(diào)試數(shù)據(jù)設(shè)置緩沖區(qū)調(diào)試數(shù)據(jù)uchar i;uchar i;for(i=0;i10;i+)for(i=0;i10;i+)OutBuffi=i+0 x30; OutBuffi=i+0 x30; void SPortInit(void)void SPortInit(void) TMOD |=0 x20; TMOD |=0 x20; SCON=0 x50; SCON=0 x50; TH1=0 xfd; TH1=0 xfd; TL1=0 xfd; T

25、L1=0 xfd; TR1=1; TR1=1; ES = 1; ES = 1; EA = 1; EA = 1; void void SendCharSendChar(uchar ch)(uchar ch) SBUF = ch; /SBUF = ch; /發(fā)送字符發(fā)送字符while (!TI); /while (!TI); /等待發(fā)送完等待發(fā)送完TI = 0; TI = 0; void SPortIsr () interrupt 4void SPortIsr () interrupt 4 uchar i,ch; uchar i,ch; ES=0; ES=0; ch = SBUF; ch = SB

26、UF; RI=0; RI=0; if(ch= =0 x24) /if(ch= =0 x24) /檢測(cè)檢測(cè)$ InBuff0=ch; InBuff0=ch; for(i=1;i4;i+) for(i=1;i4;i+) while (!RI); while (!RI); RI=0; RI=0; InBuffi = SBUF; InBuffi = SBUF; InFullFlag=1; InFullFlag=1; ES=1; ES=1; void main(void)void main(void) DataInit(); DataInit(); SPortInit(); SPortInit(); I

27、nFullFlag = 0; InFullFlag = 0; while(1) while(1) if(InFullFlag)if(InFullFlag) switch(InBuff1)switch(InBuff1) /依命令完成相應(yīng)功能依命令完成相應(yīng)功能 InFullFlag = 0;InFullFlag = 0; switch(InBuff1)switch(InBuff1) /依命令完成相應(yīng)功能依命令完成相應(yīng)功能 case 0 x31case 0 x31: : for(i=0;i10;i+) for(i=0;i10;i+) SendChar(OutBuffi); SendChar(OutB

28、uffi); break;break; case 0 x32:case 0 x32: for(i=0;i10;i+) for(i=0;i10;i+) SendChar(OutBuff9-i); SendChar(OutBuff9-i); break;break; default:default:break;break; 2022-1-446PCPC機(jī)端程序:機(jī)端程序:Private Sub Form_Load()Private Sub Form_Load()MSComm1.CommPort = 1 MSComm1.CommPort = 1 設(shè)置通信端口號(hào)為設(shè)置通信端口號(hào)為COM1COM1MSC

29、omm1.Settings = MSComm1.Settings = 9600,n,8,19600,n,8,1 設(shè)置串口參數(shù)設(shè)置串口參數(shù)MSComm1.InputMode = 0 MSComm1.InputMode = 0 接收文本型數(shù)據(jù)接收文本型數(shù)據(jù)MSComm1.PortOpen = True MSComm1.PortOpen = True 打開(kāi)串行口打開(kāi)串行口End SubEnd Sub2022-1-447Private Sub Cmdsend_Click()Private Sub Cmdsend_Click()If Textsend.Text = ThenIf Textsend.Tex

30、t = Then pp = MsgBox( pp = MsgBox(發(fā)送數(shù)據(jù)不能為空!發(fā)送數(shù)據(jù)不能為空!, 16), 16) Exit Sub Exit SubEnd IfEnd IfMSComm1.Output = Trim(Textsend.Text)MSComm1.Output = Trim(Textsend.Text) For i = 1 To 20000000For i = 1 To 20000000Next iNext iEnd Sub End Sub Private Sub Timer1_Timer()Private Sub Timer1_Timer()Dim buf$Dim b

31、uf$buf = Trim(MSComm1.Input) buf = Trim(MSComm1.Input) 將緩沖區(qū)數(shù)據(jù)讀入將緩沖區(qū)數(shù)據(jù)讀入bufbuf變量變量If Len(buf) 0 Then If Len(buf) 0 Then 判緩沖區(qū)是否有數(shù)據(jù)判緩沖區(qū)是否有數(shù)據(jù)TextReceive.Text = TextReceive.Text = TextReceive.Text + Chr(13) + Chr(10) + buf TextReceive.Text + Chr(13) + Chr(10) + buf End IfEnd IfEnd SubEnd Sub6.3.3 6.3.3 單

32、片機(jī)與單片機(jī)間的通信單片機(jī)與單片機(jī)間的通信v硬件連接硬件連接 通訊協(xié)議:通訊協(xié)議:n 每每幀數(shù)據(jù)幀數(shù)據(jù)為為8 8位,位,1 1位起始位,位起始位,1 1位停止位,無(wú)檢位停止位,無(wú)檢驗(yàn),波特率驗(yàn),波特率96009600。 n 申請(qǐng)接收數(shù)據(jù)的單片機(jī),按下本機(jī)的請(qǐng)求鍵(按申請(qǐng)接收數(shù)據(jù)的單片機(jī),按下本機(jī)的請(qǐng)求鍵(按鍵接在鍵接在P3.5P3.5引腳),按下鍵后有引腳),按下鍵后有3 3種按鍵事件可能發(fā)種按鍵事件可能發(fā)生:生:短擊、長(zhǎng)擊和雙擊短擊、長(zhǎng)擊和雙擊,分別對(duì)應(yīng),分別對(duì)應(yīng)3 3種請(qǐng)求接收數(shù)據(jù)種請(qǐng)求接收數(shù)據(jù)的命令,即:的命令,即:“$1”$1”、“$2”$2”和和“$3”$3”。3 3種命令會(huì)種命令會(huì)

33、根據(jù)發(fā)生的按鍵事件發(fā)送到對(duì)方;發(fā)送數(shù)據(jù)的單片根據(jù)發(fā)生的按鍵事件發(fā)送到對(duì)方;發(fā)送數(shù)據(jù)的單片機(jī)依據(jù)接收到的命令完成對(duì)應(yīng)的數(shù)據(jù)發(fā)送任務(wù)。數(shù)機(jī)依據(jù)接收到的命令完成對(duì)應(yīng)的數(shù)據(jù)發(fā)送任務(wù)。數(shù)據(jù)傳送采用據(jù)傳送采用“!”為同步字符。為同步字符。 程序見(jiàn)教材程序見(jiàn)教材2022-1-4526.1 計(jì)算機(jī)串行通信基礎(chǔ)計(jì)算機(jī)串行通信基礎(chǔ)通信:并行通信與串行通信通信:并行通信與串行通信 v 并行通信并行通信特點(diǎn)特點(diǎn):傳送控制簡(jiǎn)單、速度快,但傳輸線較多,成本高。:傳送控制簡(jiǎn)單、速度快,但傳輸線較多,成本高。 2022-1-453v 串行通信串行通信特點(diǎn)特點(diǎn):傳送控制復(fù)雜、速度慢,傳輸線少,成本低:傳送控制復(fù)雜、速度慢,傳輸

34、線少,成本低 2022-1-454v 異步通信與同步通信異步通信與同步通信n 收、發(fā)設(shè)備時(shí)鐘獨(dú)立,以字符收、發(fā)設(shè)備時(shí)鐘獨(dú)立,以字符( (幀幀) )為單位傳輸為單位傳輸 6.1.1 6.1.1 串行通信的基本概念串行通信的基本概念v 異步通信異步通信 2022-1-455 異步通信幀格式異步通信幀格式v起始位(位);起始位(位);v 數(shù)據(jù)位(位);數(shù)據(jù)位(位);v 奇偶校驗(yàn)位(位,可無(wú)校驗(yàn)位);奇偶校驗(yàn)位(位,可無(wú)校驗(yàn)位);v 停止位(位)。停止位(位)。 特點(diǎn)特點(diǎn)n 易于實(shí)現(xiàn)易于實(shí)現(xiàn)n 效率不高效率不高 v 同步通信同步通信(發(fā)、收時(shí)鐘直接連接,效率高。板內(nèi)元件間的(發(fā)、收時(shí)鐘直接連接,效率高

35、。板內(nèi)元件間的SPI接口)接口) 2022-1-456v 串行通信的傳輸方向串行通信的傳輸方向v 單工單工 v 半雙工半雙工 v 全雙工全雙工 80C5180C51有有1 1個(gè)全雙工個(gè)全雙工串行口串行口 2022-1-457v 信號(hào)的調(diào)制與解調(diào)信號(hào)的調(diào)制與解調(diào)DTEDTE:數(shù)據(jù):數(shù)據(jù)終端終端設(shè)備設(shè)備DCEDCE:數(shù)據(jù):數(shù)據(jù)通信通信設(shè)備設(shè)備 調(diào)制解調(diào)器調(diào)制解調(diào)器n 調(diào)制調(diào)制n 解調(diào)解調(diào) 2022-1-458v 串行通信的錯(cuò)誤校驗(yàn)串行通信的錯(cuò)誤校驗(yàn)v奇偶校驗(yàn)奇偶校驗(yàn) 發(fā)送字符時(shí)發(fā)送字符時(shí),數(shù)據(jù)位,數(shù)據(jù)位尾隨尾隨1 1位奇偶校驗(yàn)位位奇偶校驗(yàn)位(1 1或或0 0)。)。奇校驗(yàn)時(shí)奇校驗(yàn)時(shí),數(shù)據(jù)中,數(shù)據(jù)中

36、“1 1”的個(gè)數(shù)與校驗(yàn)位的個(gè)數(shù)與校驗(yàn)位“1 1”的個(gè)數(shù)之和應(yīng)為奇數(shù);的個(gè)數(shù)之和應(yīng)為奇數(shù);偶校驗(yàn)時(shí)偶校驗(yàn)時(shí),數(shù)據(jù)中,數(shù)據(jù)中“1 1”的個(gè)數(shù)與校驗(yàn)位的個(gè)數(shù)與校驗(yàn)位“1 1”的個(gè)數(shù)之和應(yīng)為偶數(shù)。的個(gè)數(shù)之和應(yīng)為偶數(shù)。接收字符時(shí)接收字符時(shí),對(duì),對(duì)“1 1”的個(gè)數(shù)進(jìn)行校驗(yàn),若發(fā)現(xiàn)的個(gè)數(shù)進(jìn)行校驗(yàn),若發(fā)現(xiàn)不一致,則說(shuō)明傳輸數(shù)據(jù)過(guò)程中出現(xiàn)了差錯(cuò)。不一致,則說(shuō)明傳輸數(shù)據(jù)過(guò)程中出現(xiàn)了差錯(cuò)。 2022-1-459v代碼和校驗(yàn)代碼和校驗(yàn) 發(fā)送方發(fā)送方將所發(fā)將所發(fā)數(shù)據(jù)塊求和數(shù)據(jù)塊求和(或各字節(jié)異或或各字節(jié)異或),產(chǎn)),產(chǎn)生的生的校驗(yàn)和字節(jié)校驗(yàn)和字節(jié)附加到數(shù)據(jù)塊的末尾。附加到數(shù)據(jù)塊的末尾。 接收方接收方在接收數(shù)據(jù)時(shí)要對(duì)在接

37、收數(shù)據(jù)時(shí)要對(duì)數(shù)據(jù)塊(數(shù)據(jù)塊(除校驗(yàn)字節(jié)外除校驗(yàn)字節(jié)外)求和(或各字節(jié)異或),求和(或各字節(jié)異或),將所得的結(jié)果與收到的將所得的結(jié)果與收到的“校驗(yàn)和校驗(yàn)和”進(jìn)行比較,兩者相符則無(wú)差錯(cuò),否則進(jìn)行比較,兩者相符則無(wú)差錯(cuò),否則就認(rèn)為傳送過(guò)程出現(xiàn)了差錯(cuò)。就認(rèn)為傳送過(guò)程出現(xiàn)了差錯(cuò)。 2022-1-460v 傳輸速率與傳輸距離傳輸速率與傳輸距離v傳輸速率傳輸速率波特率波特率:每秒鐘傳送信息的位數(shù),單位:波特(:每秒鐘傳送信息的位數(shù),單位:波特(Baud) 基帶傳輸基帶傳輸(每個(gè)(每個(gè)碼元碼元帶有帶有“1 1”或或“0 0”這這1 bit1 bit信息信息) )。 常用波特率為:常用波特率為:24002400

38、、48004800、 96009600、14.4K14.4K、19.2K19.2K等等 v傳輸距離與傳輸速率的關(guān)系傳輸距離與傳輸速率的關(guān)系傳輸距離隨波特率的增加而減小。傳輸距離隨波特率的增加而減小。 等時(shí)間間隔信號(hào)稱(chēng)為碼元每個(gè)碼元可以攜帶n位信息 2022-1-4616.1.2 6.1.2 串行通信接口標(biāo)準(zhǔn)串行通信接口標(biāo)準(zhǔn)RS-232CRS-232C定義的是定義的是DTEDTE與與DCEDCE間的接口標(biāo)準(zhǔn)。間的接口標(biāo)準(zhǔn)。 v 機(jī)械特性機(jī)械特性DB-25DB-25(陽(yáng)頭)連接器(陽(yáng)頭)連接器 DB-9DB-9(陽(yáng)頭)連接器(陽(yáng)頭)連接器 陽(yáng)頭陽(yáng)頭通常用于通常用于計(jì)算機(jī)側(cè)計(jì)算機(jī)側(cè),陰頭陰頭用于用于

39、連接線側(cè)連接線側(cè) 2022-1-462v 功能特性功能特性插針序號(hào)信號(hào)名稱(chēng)功能信號(hào)方向 1 PGND保護(hù)接地 2(3)TXD發(fā)送數(shù)據(jù)(串行輸出)DTEDCE 3(2)RXD接收數(shù)據(jù)(串行輸入)DTEDCE 4(7)RTS請(qǐng)求發(fā)送DTEDCE 5(8)CTS允許發(fā)送DTEDCE 6(6)DSRDCE就緒(數(shù)據(jù)建立就緒)DTEDCE 7(5) SGND信號(hào)接地 8(1)DCD載波檢測(cè)DTEDCE 20(4)DTRDTE就緒(數(shù)據(jù)終端準(zhǔn)備就緒)DTEDCE 22(9) RI振鈴指示DTEDCE2022-1-463v 電氣特性電氣特性RS-232CRS-232C采用負(fù)邏輯電平,規(guī)定(采用負(fù)邏輯電平,規(guī)

40、定(-3-3-25V-25V)為邏輯)為邏輯“1 1”,(+3+3+25V+25V)為邏輯)為邏輯“0 0”。-3V-3V+3V+3V是未定義的過(guò)渡區(qū)。是未定義的過(guò)渡區(qū)。試比較:試比較: 電平轉(zhuǎn)換電路(如電平轉(zhuǎn)換電路(如MAX232MAX232)。)。 2022-1-464v 過(guò)程特性過(guò)程特性v遠(yuǎn)遠(yuǎn)程通信,需要調(diào)制解調(diào)器程通信,需要調(diào)制解調(diào)器 2022-1-465v近近程通信,不需要調(diào)制解調(diào)器程通信,不需要調(diào)制解調(diào)器 無(wú)聯(lián)絡(luò)線方式無(wú)聯(lián)絡(luò)線方式 聯(lián)絡(luò)線短接(偽連接)方式聯(lián)絡(luò)線短接(偽連接)方式 2022-1-466v RS-232CRS-232C電平與電平與TTLTTL電平轉(zhuǎn)換驅(qū)動(dòng)電路電平轉(zhuǎn)換驅(qū)

41、動(dòng)電路v早期采用早期采用MC1488MC1488、MC1489MC1489 v近期常用近期常用MAXM232MAXM232: 片內(nèi)帶有自升壓電路片內(nèi)帶有自升壓電路 僅需僅需+5V+5V電源電源 內(nèi)含內(nèi)含2 2個(gè)發(fā)送器,個(gè)發(fā)送器,2 2個(gè)接收器個(gè)接收器 2022-1-467v 采用采用RS-232CRS-232C接口存在的問(wèn)題接口存在的問(wèn)題 v傳輸距離短、速率低傳輸距離短、速率低 通常不超過(guò)通常不超過(guò)1515米,速率米,速率20Kbps20Kbps v有電平偏移有電平偏移 RS-232RS-232收發(fā)共地,地電流會(huì)使電平偏移出現(xiàn)邏輯錯(cuò)誤。收發(fā)共地,地電流會(huì)使電平偏移出現(xiàn)邏輯錯(cuò)誤。 v抗干擾能力差

42、抗干擾能力差 RS-232RS-232單端輸入,易混入干擾。(單端輸入,易混入干擾。(故用大擺幅故用大擺幅) 新標(biāo)準(zhǔn)新標(biāo)準(zhǔn)RS-485RS-485改善了傳輸特性,應(yīng)用廣泛!改善了傳輸特性,應(yīng)用廣泛! 2022-1-4686.2 80C51單片機(jī)的串行口單片機(jī)的串行口6.2.1 80C516.2.1 80C51串行口的結(jié)構(gòu)串行口的結(jié)構(gòu) 1 1個(gè)全雙工串口:個(gè)全雙工串口:通信通信或或接口擴(kuò)展接口擴(kuò)展 接收發(fā)送緩沖器接收發(fā)送緩沖器邏輯同名、物理分開(kāi);邏輯同名、物理分開(kāi);接收雙緩沖。接收雙緩沖。 2022-1-4696.2.2 80C516.2.2 80C51串行口的控制寄存器串行口的控制寄存器v 串

43、行口控制寄存器串行口控制寄存器SCONSCONv SM0SM0和和SM1SM1:工作方式選擇位:工作方式選擇位76543210SCONSM0SM1SM2RENTB8RB8TIRI字節(jié)地址:98HSM0SM1方 式說(shuō) 明波特率000移位寄存器fosc/1201110位UART(8位數(shù)據(jù))可變10211位UART(9位數(shù)據(jù))fosc/64或fosc/3211311位UART(9位數(shù)據(jù))可變2022-1-470vSM2SM2:多機(jī)通信控制位:多機(jī)通信控制位SM2=1SM2=1時(shí)時(shí), ,接收機(jī)接收機(jī)地址幀甄別地址幀甄別使能使能 。若若RB8RB81 1,接收的信息接收的信息可進(jìn)入可進(jìn)入SBUFSBUF

44、,并使,并使RIRI為為1 1,進(jìn)而在中斷服務(wù)中再進(jìn)行地址號(hào)比較進(jìn)而在中斷服務(wù)中再進(jìn)行地址號(hào)比較; ;若若RB8RB80 0,該幀不接收,丟棄掉,且保持,該幀不接收,丟棄掉,且保持RI=0RI=0。 SM2=0SM2=0時(shí),時(shí),接收機(jī)接收機(jī)地址幀甄別地址幀甄別禁止禁止。不論收到的不論收到的RB8RB8為為0 0或或1 1,均可以使接收幀進(jìn)入,均可以使接收幀進(jìn)入SBUFSBUF,并使,并使RI=1RI=1。此時(shí)的此時(shí)的RB8RB8通常為校驗(yàn)位。通常為校驗(yàn)位。 vRENREN:串行接收使能位,軟件置:串行接收使能位,軟件置1 1時(shí),啟動(dòng)接收過(guò)程時(shí),啟動(dòng)接收過(guò)程2022-1-471vTB8TB8:多

45、機(jī)方式發(fā)送的第:多機(jī)方式發(fā)送的第9 9位位發(fā)送的發(fā)送的地址地址/ /數(shù)據(jù)幀數(shù)據(jù)幀標(biāo)志。標(biāo)志。也可作為奇偶校驗(yàn)位。也可作為奇偶校驗(yàn)位。 vRB8RB8:多機(jī)方式接收的第:多機(jī)方式接收的第9 9位位接收的接收的地址地址/ /數(shù)據(jù)幀數(shù)據(jù)幀標(biāo)志。標(biāo)志。也可作為奇偶校驗(yàn)位。也可作為奇偶校驗(yàn)位。 vTITI:發(fā)送中斷標(biāo)志位,要由:發(fā)送中斷標(biāo)志位,要由軟件清軟件清0 0vRIRI:接收中斷標(biāo)志位,要由:接收中斷標(biāo)志位,要由軟件清軟件清0 02022-1-472v 電源控制寄存器電源控制寄存器PCON PCON vSMODSMOD:波特率倍增位。波特率倍增位。在串行口方式在串行口方式1 1、方式、方式2 2、

46、方式方式3 3時(shí),波特率與時(shí),波特率與SMODSMOD有關(guān),有關(guān),當(dāng)當(dāng)SMOD=1SMOD=1時(shí),波時(shí),波特率提高一倍。特率提高一倍。復(fù)位時(shí),復(fù)位時(shí),SMOD=0SMOD=0。 76543210PCONSMOD字節(jié)地址:97H2022-1-4736.2.3 80C516.2.3 80C51串行口的工作方式串行口的工作方式v 方式方式0 0:同步移位寄存器:同步移位寄存器,用于,用于擴(kuò)展并行口擴(kuò)展并行口 vRXDRXD:輸入輸入或或輸出輸出引腳引腳 vTXDTXD:移位脈沖移位脈沖輸出引腳輸出引腳v發(fā)送和接收都是發(fā)送和接收都是8 8位位v波特率固定為波特率固定為:fosc/12fosc/1220

47、22-1-474數(shù)據(jù)輸數(shù)據(jù)輸出出: CRCR用于對(duì)用于對(duì)74LS16474LS164清清0 0 2022-1-475數(shù)據(jù)輸數(shù)據(jù)輸入入: S/LS/L下降沿下降沿將并行數(shù)將并行數(shù)據(jù)裝入據(jù)裝入,高電平,高電平啟動(dòng)啟動(dòng)數(shù)據(jù)移入。數(shù)據(jù)移入。 2022-1-476v 方式方式1 1:1010位幀,用于位幀,用于雙雙機(jī)通信機(jī)通信 v起始位:起始位:1 1位位 v數(shù)據(jù)位:數(shù)據(jù)位:8 8位位v停止位:停止位:1 1位位2022-1-477串行發(fā)送串行發(fā)送:(:(寫(xiě)寫(xiě)SBUFSBUF啟動(dòng)啟動(dòng)發(fā)送過(guò)程)發(fā)送過(guò)程) 串行接收串行接收:( (置置REN=1REN=1啟動(dòng)啟動(dòng)接收過(guò)程接收過(guò)程) ) 2022-1-478

48、v 方式方式2 2和方式和方式3 3:1111位幀,用于位幀,用于多機(jī)多機(jī)通信通信 v起始位:起始位:1 1位位 v數(shù)據(jù)位:數(shù)據(jù)位:9 9位位v停止位:停止位:1 1位位2022-1-479串行串行發(fā)送發(fā)送:(寫(xiě):(寫(xiě)SBUFSBUF啟動(dòng)發(fā)送過(guò)程)啟動(dòng)發(fā)送過(guò)程) 串行串行接收接收:( (置置REN=1REN=1啟動(dòng)接收過(guò)程啟動(dòng)接收過(guò)程) ) 2022-1-4806.2.4 80C516.2.4 80C51波特率確定與初始化步驟波特率確定與初始化步驟v 波特率的確定波特率的確定 v波特率的計(jì)算波特率的計(jì)算固定波特率:固定波特率: 方式方式0 0波特率波特率= fosc/12= fosc/12 方

49、式方式2 2波特率波特率= =(2 2SMODSMOD/64/64)* * foscfosc可變可變波特率波特率:( (方式方式1 1、方式、方式3 3) ) 波特率波特率= =(2 2SMODSMOD/32/32)* *(T1T1溢出率溢出率) T1T1溢出率溢出率 = fosc /12= fosc /12256 256 (TH1TH1)2022-1-481v 波特率的選擇波特率的選擇 波特率要選擇波特率要選擇標(biāo)稱(chēng)值標(biāo)稱(chēng)值,由于,由于TH1TH1的的初值是整數(shù)初值是整數(shù),為了,為了獲得標(biāo)稱(chēng)值,依公式獲得標(biāo)稱(chēng)值,依公式晶振頻率要選晶振頻率要選11.059211.0592MHzMHz。 方式方式

50、1 1和方式和方式3 3波特率與波特率與TH1TH1初值的對(duì)應(yīng)關(guān)系:初值的對(duì)應(yīng)關(guān)系: 波特率/(b/s)19.2 k9600480024001200TH1初值FDHFDHFAHF4HE8HSMOD10000若晶振為若晶振為12MHz12MHz,TH1TH1初值取初值取FDHFDH,依公式算出的波特,依公式算出的波特率為率為10416.610416.6; TH1TH1初值取初值取FCHFCH,為,為7812.57812.5。 2022-1-482v 串行口初始化步驟串行口初始化步驟 v確定確定T1T1的工作方式(的工作方式(TMODTMOD)v計(jì)算計(jì)算T1T1的初值,的初值,裝載裝載TH1TH1

51、、TL1TL1v啟動(dòng)啟動(dòng)T1T1(置位置位TR1TR1)v確定串行口工作方式(確定串行口工作方式(SCONSCON)v串口中斷設(shè)置(串口中斷設(shè)置(IEIE、IPIP)2022-1-4836.3 80C51單片機(jī)的串行口應(yīng)用單片機(jī)的串行口應(yīng)用6.3.1 6.3.1 利用單片機(jī)串口的并行利用單片機(jī)串口的并行I/OI/O擴(kuò)展擴(kuò)展 占用串口!占用串口!v單片機(jī)端的電平轉(zhuǎn)換單片機(jī)端的電平轉(zhuǎn)換6.3.2 6.3.2 單片機(jī)與單片機(jī)與PCPC機(jī)間的通信機(jī)間的通信v與與PCPC機(jī)的硬件連接機(jī)的硬件連接 v直通連接直通連接v交叉連接交叉連接vPCPC機(jī)串行口檢查機(jī)串行口檢查 nPCPC機(jī)的串行口的機(jī)的串行口的收

52、、發(fā)信號(hào)引腳收、發(fā)信號(hào)引腳短接短接 n運(yùn)行運(yùn)行串口調(diào)試軟件串口調(diào)試軟件 v連機(jī)編程測(cè)試連機(jī)編程測(cè)試void main(void)void main(void) uchar temp; uchar temp; init(); init(); while (1) while (1) temp = ReceiveChar();temp = ReceiveChar();/接收數(shù)據(jù)接收數(shù)據(jù)SendChar(temp); SendChar(temp); /發(fā)送數(shù)據(jù)發(fā)送數(shù)據(jù) void init(void)void init(void) SCON = 0 xSCON = 0 x5050; /; /方式方式1

53、1(N,8,1N,8,1),接收允許),接收允許PCON = 0 x00; /PCON = 0 x00; /波特率不倍增波特率不倍增TMOD = 0 xTMOD = 0 x2020; /; /置置T1T1為為8 8位自動(dòng)重裝方式位自動(dòng)重裝方式TL1 = 0 xfd;TL1 = 0 xfd;TH1 = 0 xfd; /TH1 = 0 xfd; /波特率波特率96009600TR1 = 1; TR1 = 1; 76543210SCONSM0SM1SM2RENTB8RB8TIRI字節(jié)地址:98Huchar ReceiveChar() uchar ReceiveChar() uchar ch;ucha

54、r ch;while (!RI); while (!RI); /等待接收完等待接收完ch = SBUF; ch = SBUF; RI = 0; RI = 0; return (ch);return (ch); void SendChar(uchar ch)void SendChar(uchar ch) SBUF = ch; SBUF = ch; /發(fā)送字符發(fā)送字符while (!TI); while (!TI); /等待發(fā)送完等待發(fā)送完TI = 0; TI = 0; /清標(biāo)志清標(biāo)志 v通信程序的擴(kuò)充與完善通信程序的擴(kuò)充與完善通訊協(xié)議:通訊協(xié)議:n 每幀:每幀:數(shù)據(jù)數(shù)據(jù)8 8位,起始位位,起始位

55、1 1位,停止位位,停止位1 1位,無(wú)檢位,無(wú)檢驗(yàn),波特率驗(yàn),波特率96009600。 n PC PC機(jī)作為主機(jī),機(jī)作為主機(jī),主機(jī)命令主機(jī)命令由由4 4個(gè)字符形成的字符個(gè)字符形成的字符串構(gòu)成,首字符串構(gòu)成,首字符$是同步頭,次字符為命令關(guān)是同步頭,次字符為命令關(guān)鍵字,其他鍵字,其他2 2個(gè)字符未定義。個(gè)字符未定義。n設(shè)命令設(shè)命令關(guān)鍵字為關(guān)鍵字為1 1時(shí)時(shí),單片機(jī)要將緩沖區(qū)的數(shù)據(jù),單片機(jī)要將緩沖區(qū)的數(shù)據(jù)以由以由前至后的順序前至后的順序發(fā)送到發(fā)送到PCPC機(jī)端;當(dāng)命令機(jī)端;當(dāng)命令關(guān)鍵字為關(guān)鍵字為2 2時(shí)時(shí),單片機(jī)要將緩沖區(qū)的數(shù)據(jù)以由,單片機(jī)要將緩沖區(qū)的數(shù)據(jù)以由后至前的順序后至前的順序發(fā)送到發(fā)送到P

56、CPC機(jī)端,其他關(guān)鍵字未定義。機(jī)端,其他關(guān)鍵字未定義。 v單片機(jī)端程序:?jiǎn)纹瑱C(jī)端程序:void DataInit(void)void DataInit(void) / /設(shè)置緩沖區(qū)調(diào)試數(shù)據(jù)設(shè)置緩沖區(qū)調(diào)試數(shù)據(jù)uchar i;uchar i;for(i=0;i10;i+)for(i=0;i10;i+)OutBuffi=i+0 x30; OutBuffi=i+0 x30; void SPortInit(void)void SPortInit(void) TMOD |=0 x20; TMOD |=0 x20; SCON=0 x50; SCON=0 x50; TH1=0 xfd; TH1=0 xfd;

57、TL1=0 xfd; TL1=0 xfd; TR1=1; TR1=1; ES = 1; ES = 1; EA = 1; EA = 1; void void SendCharSendChar(uchar ch)(uchar ch) SBUF = ch; /SBUF = ch; /發(fā)送字符發(fā)送字符while (!TI); /while (!TI); /等待發(fā)送完等待發(fā)送完TI = 0; TI = 0; void SPortIsr () interrupt 4void SPortIsr () interrupt 4 uchar i,ch; uchar i,ch; ES=0; ES=0; ch = S

58、BUF; ch = SBUF; RI=0; RI=0; if(ch= =0 x24) /if(ch= =0 x24) /檢測(cè)檢測(cè)$ InBuff0=ch; InBuff0=ch; for(i=1;i4;i+) for(i=1;i4;i+) while (!RI); while (!RI); RI=0; RI=0; InBuffi = SBUF; InBuffi = SBUF; InFullFlag=1; InFullFlag=1; ES=1; ES=1; void main(void)void main(void) DataInit(); DataInit(); SPortInit(); SPort

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論