MCS-51串行口通信技術(shù)課件_第1頁
MCS-51串行口通信技術(shù)課件_第2頁
MCS-51串行口通信技術(shù)課件_第3頁
MCS-51串行口通信技術(shù)課件_第4頁
MCS-51串行口通信技術(shù)課件_第5頁
已閱讀5頁,還剩61頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第九章第九章 MCS-51串行口通信技術(shù)串行口通信技術(shù)9.1 串行通信基礎(chǔ)串行通信基礎(chǔ) 9.2 MCS-51串行口串行口9.3 MCS-51串行口的應(yīng)用串行口的應(yīng)用配套實(shí)驗(yàn):配套實(shí)驗(yàn): 1 、紅外收發(fā)實(shí)驗(yàn);、紅外收發(fā)實(shí)驗(yàn); 2 、RS232 通信實(shí)驗(yàn);通信實(shí)驗(yàn); 3 、RS485 通信實(shí)驗(yàn)。通信實(shí)驗(yàn)。 。理論課學(xué)習(xí)目標(biāo):理論課學(xué)習(xí)目標(biāo): : 1 、了解串行通信的概念、用途、串行通信標(biāo)準(zhǔn);、了解串行通信的概念、用途、串行通信標(biāo)準(zhǔn); 2 、掌握單片機(jī)串行通訊接口硬件電路;、掌握單片機(jī)串行通訊接口硬件電路; 3 、掌握應(yīng)用程序設(shè)計(jì)、掌握應(yīng)用程序設(shè)計(jì) 。 思考問題:思考問題: 1、單片機(jī)串行通信接口的

2、電平類型?、單片機(jī)串行通信接口的電平類型? 2、異步與同步通信的區(qū)別?、異步與同步通信的區(qū)別? 3、串行通信接口有哪些類型?、串行通信接口有哪些類型? 4、單片機(jī)如何能收、發(fā)數(shù)據(jù)?、單片機(jī)如何能收、發(fā)數(shù)據(jù)? 5、單片機(jī)串行口的通信速率為多少?、單片機(jī)串行口的通信速率為多少? 6 、單片機(jī)串行口的通信距離為多少?、單片機(jī)串行口的通信距離為多少? 7、 TXD 、RXD 、 COM 口、口、DB9 、EIA的含義?的含義? 8 、全雙工、半雙工、全雙工、半雙工 和單工的區(qū)別?和單工的區(qū)別? 9 、串行口能否多個并聯(lián)?、串行口能否多個并聯(lián)? 10 、單片機(jī)串行口轉(zhuǎn)換芯片有哪些?、單片機(jī)串行口轉(zhuǎn)換芯片

3、有哪些? 11 、串口工作用到哪些寄存器?、串口工作用到哪些寄存器? 9.1 串行通信基礎(chǔ)串行通信基礎(chǔ) 通信通信: : 信息交換信息交換, , 最基本的有串行通信和并行通信兩種。最基本的有串行通信和并行通信兩種。 并行通信是指并行通信是指一個數(shù)據(jù)一個數(shù)據(jù)的的各位同時各位同時進(jìn)行傳送的通信方式。進(jìn)行傳送的通信方式。 優(yōu)點(diǎn)優(yōu)點(diǎn): : 傳送速度快;傳送速度快; 缺點(diǎn)缺點(diǎn): : 一個并行數(shù)據(jù)有多少個位,就需要多少根傳輸線,一個并行數(shù)據(jù)有多少個位,就需要多少根傳輸線,適用于近距離傳送,太遠(yuǎn)距離的成本太高,一般不采用。適用于近距離傳送,太遠(yuǎn)距離的成本太高,一般不采用。 串行通信是指串行通信是指一個數(shù)據(jù)一個

4、數(shù)據(jù)的的各位逐位順序各位逐位順序傳送的通信方式。傳送的通信方式。 優(yōu)點(diǎn)優(yōu)點(diǎn): : 單向單線傳輸信息,連接方便,遠(yuǎn)單向單線傳輸信息,連接方便,遠(yuǎn)、近距離均可;近距離均可; 缺點(diǎn)缺點(diǎn): : 傳送速傳送速度度較低。較低。 圖圖9- 1 (a) 并行通信并行通信 (b) 串行通信串行通信MCUMCURAM RAM MCU MCU MAX MAX 232232 按照串行數(shù)據(jù)的時鐘控制方式,串行通信可分為同步通信和異步通信按照串行數(shù)據(jù)的時鐘控制方式,串行通信可分為同步通信和異步通信兩類。兩類。 1.同步通信(同步通信(依靠同步頭進(jìn)行同步)依靠同步頭進(jìn)行同步) 9.1.1 串行通信的分類串行通信的分類圖圖9

5、- 2 同步通信的格式同步通信的格式 SYNCSYNC數(shù)符數(shù)符 1數(shù)符數(shù)符 2數(shù)符數(shù)符 N-1數(shù)符數(shù)符 NCRCCRCSYNC數(shù)符數(shù)符 1數(shù)符數(shù)符 2數(shù)符數(shù)符 N-1數(shù)符數(shù)符 NCRCCRCEBH 90H 16H 在同步通信中,由在同步通信中,由同步時鐘同步時鐘來實(shí)現(xiàn)發(fā)送和接收的同步。來實(shí)現(xiàn)發(fā)送和接收的同步。在發(fā)送時要插入同步字符,接收端接收到同步字符后,開始在發(fā)送時要插入同步字符,接收端接收到同步字符后,開始接收串行數(shù)據(jù)位。發(fā)送端在發(fā)送數(shù)據(jù)流過程中,若出現(xiàn)沒有接收串行數(shù)據(jù)位。發(fā)送端在發(fā)送數(shù)據(jù)流過程中,若出現(xiàn)沒有準(zhǔn)備好數(shù)據(jù)的情況,便用同步字符來填充,一直到下一字符準(zhǔn)備好數(shù)據(jù)的情況,便用同步字符

6、來填充,一直到下一字符準(zhǔn)備好為止。數(shù)據(jù)流由一個個數(shù)據(jù)組成,稱為數(shù)據(jù)塊。準(zhǔn)備好為止。數(shù)據(jù)流由一個個數(shù)據(jù)組成,稱為數(shù)據(jù)塊。每一每一個數(shù)據(jù)可選個數(shù)據(jù)可選58個數(shù)據(jù)位和一個奇偶校驗(yàn)位。個數(shù)據(jù)位和一個奇偶校驗(yàn)位。此外整個數(shù)據(jù)此外整個數(shù)據(jù)流還可進(jìn)行奇偶校驗(yàn)或循環(huán)冗余校驗(yàn)(流還可進(jìn)行奇偶校驗(yàn)或循環(huán)冗余校驗(yàn)(CRC)。同步字符可)。同步字符可以采用統(tǒng)一的標(biāo)準(zhǔn)格式,也可自由約定。以采用統(tǒng)一的標(biāo)準(zhǔn)格式,也可自由約定。 同步通信的數(shù)據(jù)傳送速率較高,一般適合于傳送大量的同步通信的數(shù)據(jù)傳送速率較高,一般適合于傳送大量的數(shù)據(jù)。數(shù)據(jù)。 同步通信的時鐘同步要求高。同步通信的時鐘同步要求高。 2.異步通信異步通信l 傳送的數(shù)據(jù)

7、通常是不連續(xù)的,數(shù)據(jù)通常是以字符為單位組傳送的數(shù)據(jù)通常是不連續(xù)的,數(shù)據(jù)通常是以字符為單位組 成成字符幀字符幀傳送的;傳送的;l 接受端檢測到接受端檢測到RXD線線=起始位(起始位(RXD平時為高電平)時,平時為高電平)時, 即開始接受數(shù)據(jù);即開始接受數(shù)據(jù);l 字符幀數(shù)據(jù)均是字符幀數(shù)據(jù)均是低位在前,高位在后低位在前,高位在后;l 發(fā)送端和接收端有各自獨(dú)立的時鐘來控制數(shù)據(jù)的發(fā)送和發(fā)送端和接收端有各自獨(dú)立的時鐘來控制數(shù)據(jù)的發(fā)送和 接收。接收。 2.異步通信異步通信 字符幀由字符幀由起始位、數(shù)據(jù)位、校驗(yàn)位和停止位起始位、數(shù)據(jù)位、校驗(yàn)位和停止位等四部分組等四部分組成其典型的格式如圖成其典型的格式如圖9-

8、 3所示。所示。 。圖圖9- 3 異步通信的格式異步通信的格式 在上述幀格式中,一個字符的傳送由起始位開始,至停止在上述幀格式中,一個字符的傳送由起始位開始,至停止位結(jié)束。位結(jié)束。 起始位:起始位:位于字符幀開頭,只占位于字符幀開頭,只占一位一位,為,為邏輯邏輯0低電平,低電平, 用于向接收設(shè)備表示發(fā)送端開始發(fā)送一幀信息。用于向接收設(shè)備表示發(fā)送端開始發(fā)送一幀信息。 數(shù)據(jù)位:數(shù)據(jù)位:緊跟起始位之后,用戶根據(jù)情況可取緊跟起始位之后,用戶根據(jù)情況可取5位、位、6位、位、 7位或位或8位位,低位在前高位在后低位在前高位在后。 奇偶校驗(yàn)位:奇偶校驗(yàn)位:位于數(shù)據(jù)位之后,僅占位于數(shù)據(jù)位之后,僅占一位一位,用

9、來表征串行,用來表征串行 通信中采用奇校驗(yàn)還是偶校驗(yàn),由用戶決定。通信中采用奇校驗(yàn)還是偶校驗(yàn),由用戶決定。 停止位:停止位:位于字符幀最后,為位于字符幀最后,為邏輯邏輯1高電平。通??扇「唠娖?。通??扇? 位、位、1.5位或位或2位位,用于向接收端表示一幀字符信,用于向接收端表示一幀字符信 息已經(jīng)發(fā)送完,也為發(fā)送下一幀作準(zhǔn)備。息已經(jīng)發(fā)送完,也為發(fā)送下一幀作準(zhǔn)備。 在一幀信息中,每一位的傳送時間(位寬)是一定的,在一幀信息中,每一位的傳送時間(位寬)是一定的,用用Td表示,表示,Td的倒數(shù)稱為的倒數(shù)稱為波特率波特率。波特率是串行通信中的一。波特率是串行通信中的一個重要概念,只有當(dāng)通信雙方采用相同

10、的波特率時,通信才個重要概念,只有當(dāng)通信雙方采用相同的波特率時,通信才不會發(fā)生混亂。波特率表示每秒傳送的位數(shù)。不會發(fā)生混亂。波特率表示每秒傳送的位數(shù)。 波特率用于表征數(shù)據(jù)傳輸?shù)乃俣龋ㄌ芈试礁?,?shù)據(jù)傳波特率用于表征數(shù)據(jù)傳輸?shù)乃俣?,波特率越高,?shù)據(jù)傳輸速度越快。輸速度越快。 在串行通信中數(shù)據(jù)是在發(fā)送站和接收站之間進(jìn)行傳送的,在串行通信中數(shù)據(jù)是在發(fā)送站和接收站之間進(jìn)行傳送的,按照信息傳送的方向,可以分為按照信息傳送的方向,可以分為單工、半雙工和全雙工單工、半雙工和全雙工三種制三種制式。式。 在單工制式下,通信線的一端接發(fā)送器,一端接接收器,在單工制式下,通信線的一端接發(fā)送器,一端接接收器,只能單方

11、向傳送信息。只能單方向傳送信息。 在半雙工制式下,每個站各有一個發(fā)送器和一個接收器。在半雙工制式下,每個站各有一個發(fā)送器和一個接收器。信息能從甲站傳送到乙站,也可以從乙站傳送到甲站,即能雙信息能從甲站傳送到乙站,也可以從乙站傳送到甲站,即能雙向傳送信息;但在同一時間,信息只能向一個方向傳送,而不向傳送信息;但在同一時間,信息只能向一個方向傳送,而不能同時在兩個方向上傳送能同時在兩個方向上傳送(雙向分時)(雙向分時)。 全雙工通信系統(tǒng)的每端都有發(fā)送器和接收器,能同時實(shí)現(xiàn)全雙工通信系統(tǒng)的每端都有發(fā)送器和接收器,能同時實(shí)現(xiàn)信息的雙向傳送信息的雙向傳送(雙向同時)(雙向同時)。 9.1.2 串行通信的

12、制式串行通信的制式 圖圖9-4 單工、半雙工和全雙工三種制式示意圖單工、半雙工和全雙工三種制式示意圖 甲站甲站發(fā)送器發(fā)送器 乙站乙站發(fā)送器發(fā)送器 甲站甲站 乙站乙站收收發(fā)發(fā)收收發(fā)發(fā) 甲站甲站 乙站乙站收收發(fā)發(fā)收收發(fā)發(fā)單工單工半雙工半雙工全雙工全雙工 異步通信的硬件電路稱為異步通信的硬件電路稱為UARTUART,即通用異步接收器,即通用異步接收器/ /發(fā)送器發(fā)送器 (Universal Asynchronous Reiver/TransmitterUniversal Asynchronous Reiver/Transmitter);); 同步通信的硬件電路稱為同步通信的硬件電路稱為USRTUSR

13、T,即即通用通用同步接收器同步接收器/發(fā)送器發(fā)送器 (Universal Synchronous Receiver/TransmitterUniversal Synchronous Receiver/Transmitter);); 注意:收發(fā)器:注意:收發(fā)器:TransceiverTransceiver 9.1.3 串行通信的接口電路串行通信的接口電路 串行通信的基本特征是數(shù)據(jù)串行通信的基本特征是數(shù)據(jù)逐位順序逐位順序進(jìn)行傳送進(jìn)行傳送 串行通信的格式及約定(如:同步方式、通訊速率、數(shù)串行通信的格式及約定(如:同步方式、通訊速率、數(shù)據(jù)塊格式、信號電平據(jù)塊格式、信號電平等)不同,形成了多種串行通信的

14、等)不同,形成了多種串行通信的協(xié)議與接口標(biāo)準(zhǔn)。協(xié)議與接口標(biāo)準(zhǔn)。 常見的有:常見的有:n 通用異步收發(fā)器通用異步收發(fā)器(UART) 本課程介紹的串口本課程介紹的串口n 通用串行總線(通用串行總線(USB)n I2C總線總線n CAN總線總線n SPI總線總線n RS-485,RS-232C,RS422A標(biāo)準(zhǔn)等標(biāo)準(zhǔn)等9.1.4 串行通信總線標(biāo)準(zhǔn)及其接口串行通信總線標(biāo)準(zhǔn)及其接口 RS-232 RS-232接口是由美國電子工業(yè)協(xié)會(接口是由美國電子工業(yè)協(xié)會(EIAEIA)正式公布的串)正式公布的串行通信總線標(biāo)準(zhǔn),它一共有行通信總線標(biāo)準(zhǔn),它一共有3 3個版本:個版本:RS-232A, RS-232BRS

15、-232A, RS-232B、RS-232CRS-232C。RS-232CRS-232C是現(xiàn)在最常使用的串行接口標(biāo)準(zhǔn),該標(biāo)準(zhǔn)是現(xiàn)在最常使用的串行接口標(biāo)準(zhǔn),該標(biāo)準(zhǔn)定義了數(shù)據(jù)終端設(shè)備(定義了數(shù)據(jù)終端設(shè)備(DTEDTE)和數(shù)據(jù)通信設(shè)備()和數(shù)據(jù)通信設(shè)備(DCEDCE)間按位)間按位進(jìn)行串行傳輸?shù)慕涌谛畔?,合理安排了接口的電氣信號和機(jī)進(jìn)行串行傳輸?shù)慕涌谛畔?,合理安排了接口的電氣信號和機(jī)械要求;現(xiàn)在常用的械要求;現(xiàn)在常用的PCPC機(jī)上的串口機(jī)上的串口COM 1COM 1、COM2COM2都是采用的都是采用的RS-232CRS-232C接口。接口。 1. RS-232接口接口2 . DB9頭引腳編號及定義

16、頭引腳編號及定義引腳引腳1CD載波監(jiān)測(載波監(jiān)測(Carrier Detect)引腳引腳2RXD接收字符(接收字符(Receive)引腳引腳3TXD發(fā)送字符(發(fā)送字符(Transmit)引腳引腳4DTR數(shù)據(jù)終端就緒(數(shù)據(jù)終端就緒(Data Terminal Ready)引腳引腳5GND地線(地線(Ground)引腳引腳6DSR數(shù)據(jù)裝置就緒數(shù)據(jù)裝置就緒引腳引腳7RTS發(fā)送數(shù)據(jù)請求發(fā)送數(shù)據(jù)請求引腳引腳8CTS清除發(fā)送清除發(fā)送引腳引腳9RI鈴聲指示鈴聲指示表表9-13. RS-232 信號定義及電氣特性信號定義及電氣特性RS-232采用負(fù)邏輯,即:采用負(fù)邏輯,即: 邏輯邏輯“0”:+5V+15V 邏

17、輯邏輯“1”:-5V-15V考慮到噪聲的干擾后,可考慮到噪聲的干擾后,可允許的范圍是:允許的范圍是:邏輯邏輯“0” :+3V+15V 邏輯邏輯“1” :-3V-15V模糊區(qū)模糊區(qū)-5V+5V+3V-3V+15V-15V噪聲范圍噪聲范圍0V圖圖9.5 信號定義信號定義 圖圖9-6 RS-232C9-6 RS-232C電平與電平與TTLTTL電平的轉(zhuǎn)換電平的轉(zhuǎn)換 圖圖9-7 MAX2329-7 MAX232引腳圖引腳圖 MAX232 硬件電路圖硬件電路圖 R1 IN13R2 IN8T1 IN11T2 IN10GND15V+2V-6VCC16R1 OUT12R2 OUT9T1 OUT14T2 OUT

18、7C1+1C1 -3C2+4C2 -5U6INNV-NRXNTXINVCCC10104C14104C11104C13104C12104MAX232162738495J3串口圖圖9- 8 MAX232圖圖 MAX4859.2 MCS-51的串行口的串行口引腳轉(zhuǎn)義引腳功能說明P3.0RXD串行數(shù)據(jù)接收端串行數(shù)據(jù)接收端P3.1TXD串行數(shù)據(jù)發(fā)送端串行數(shù)據(jù)發(fā)送端P3.2INT0外部中斷0請求P3.3INT1外部中斷1請求P3.4T0計(jì)數(shù)器0外部輸入P3.5T1計(jì)數(shù)器1外部輸入P3.6WR外部數(shù)據(jù)存儲器寫P3.7RD外部數(shù)據(jù)存儲器讀 全雙工的異步通訊串行口,全雙工的異步通訊串行口,4種工作方式種工作方式

19、 , 波特率由片內(nèi)波特率由片內(nèi)定時器定時器/計(jì)數(shù)器控制。發(fā)送或接收均可發(fā)出中斷請求。計(jì)數(shù)器控制。發(fā)送或接收均可發(fā)出中斷請求。9.2.1 9.2.1 串行口的結(jié)構(gòu)串行口的結(jié)構(gòu) 兩個兩個物理上獨(dú)立地接收和發(fā)送緩沖器,可同時收、發(fā)數(shù)物理上獨(dú)立地接收和發(fā)送緩沖器,可同時收、發(fā)數(shù)據(jù)。兩個緩沖器共用一個特殊功能寄存器字節(jié)地址:據(jù)。兩個緩沖器共用一個特殊功能寄存器字節(jié)地址:SBUFSBUF(99H99H);); 兩個兩個控制寄存器:特殊功能寄存器控制寄存器:特殊功能寄存器SCONSCON和和PCONPCON。 注意:注意: MOV SBUF,A 啟動一次數(shù)據(jù)發(fā)送啟動一次數(shù)據(jù)發(fā)送, 可向可向SBUF再發(fā)送下一

20、個數(shù);再發(fā)送下一個數(shù); MOV A,SBUF 完成一次數(shù)據(jù)接收完成一次數(shù)據(jù)接收 , SBUF可再接收下一個數(shù)??稍俳邮障乱粋€數(shù)。 發(fā) 送SBUF(99H)門發(fā) 送 控 制 器接 收 控 制 器1輸 入 移 位 寄 存 器串行控制寄存器(98H)定時器1接 收SBUF(99H)888TIRI內(nèi) 部 總 線TXD(P3.1)RXD(P3.0)串 行 口 中 斷圖圖9- 10 MCS-51串行口發(fā)送和接收電路框圖串行口發(fā)送和接收電路框圖 MCS-51對串行通信方式的選擇、接收和發(fā)送控制以及串對串行通信方式的選擇、接收和發(fā)送控制以及串行口的狀態(tài)標(biāo)志等均由串行口控制寄存器行口的狀態(tài)標(biāo)志等均由串行口控制寄

21、存器SCON控制和指示,控制和指示,SCON可以位尋址,字節(jié)地址可以位尋址,字節(jié)地址98H,單片機(jī)復(fù)位時,所有位均,單片機(jī)復(fù)位時,所有位均為為0。 表表 9-2 SCON各位定義各位定義 SCON9FH9EH9DH9CH9BH9AH99H98H SM0SM1SM2RENTB8RB8TIRI1. 串行口控制寄存器串行口控制寄存器SCONSM0 SM1工作方式工作方式功能功能波特率波特率0 0方式方式08位同步移位寄存位同步移位寄存器器fosc/120 1方式方式110位位UART可變可變1 0方式方式211位位UARTfosc/64或或fosc/321 1方式方式311位位UART可變可變表表

22、9-3 SM0、SM1:串行方式選擇位:串行方式選擇位SM2SM2:多機(jī)通信控制位:多機(jī)通信控制位在方式在方式2 2和方式和方式3 3處于接收方式時,處于接收方式時, l 若若SM2=1, SM2=1, 且接收到的第且接收到的第9 9位數(shù)據(jù)位數(shù)據(jù)RB8RB8為為0 0時,不激活時,不激活RIRI;l 若若SM2=1SM2=1,且,且RB8=1RB8=1時,則置時,則置RI=1RI=1。在方式在方式2 2、3 3處于處于接收或發(fā)送方式接收或發(fā)送方式時,時, 若若SM2=0SM2=0,不論接收到的第,不論接收到的第9 9位位RB8RB8為為0 0還是為還是為1 1,TITI、RIRI都以都以正常方

23、式被激活。正常方式被激活。在方式在方式1 1處于接收時,若處于接收時,若SM2=1SM2=1,則只有收到有效的停止位后,則只有收到有效的停止位后,RIRI置置1 1。在方式在方式0 0中,中,SM2SM2應(yīng)為應(yīng)為0 0。 TB8 TB8:發(fā)送數(shù)據(jù)的第:發(fā)送數(shù)據(jù)的第9 9位位 在方式在方式2 2和方式和方式3 3中,由軟件置位或復(fù)位,可做奇偶校驗(yàn)中,由軟件置位或復(fù)位,可做奇偶校驗(yàn) 位。在多機(jī)通信中,可作為區(qū)別地址幀或數(shù)據(jù)幀的標(biāo)識位,一位。在多機(jī)通信中,可作為區(qū)別地址幀或數(shù)據(jù)幀的標(biāo)識位,一般約定地址幀時,般約定地址幀時,TB8TB8為為1 1,數(shù)據(jù)幀時,數(shù)據(jù)幀時,TB8TB8為為0 0。 RB8

24、RB8:接收數(shù)據(jù)的第:接收數(shù)據(jù)的第9 9位位 功能同功能同TB8。REN:允許串行接收位,:允許串行接收位, 由軟件置位或清零;由軟件置位或清零; REN=1時,允許接收;時,允許接收; REN=0時,禁止接收。時,禁止接收。TITI:發(fā)送中斷標(biāo)志位:發(fā)送中斷標(biāo)志位 在方式在方式0 0中,發(fā)送完中,發(fā)送完8 8位數(shù)據(jù)后,由位數(shù)據(jù)后,由硬件置位硬件置位;在其它方;在其它方式中,在發(fā)送停止位之初由硬件置位。因此,式中,在發(fā)送停止位之初由硬件置位。因此,TITI是發(fā)送完一是發(fā)送完一幀數(shù)據(jù)的標(biāo)志,可以用指令幀數(shù)據(jù)的標(biāo)志,可以用指令 JBC TIJBC TI,relrel 來查詢是否發(fā)來查詢是否發(fā)送結(jié)束

25、。送結(jié)束。TI=1TI=1時,也可向時,也可向CPUCPU申請中斷,響應(yīng)中斷后,必須申請中斷,響應(yīng)中斷后,必須由由軟件清除軟件清除TITI。RIRI:接收中斷標(biāo)志位:接收中斷標(biāo)志位 在方式在方式0 0中,接收完中,接收完8 8位數(shù)據(jù)后,由位數(shù)據(jù)后,由硬件置位硬件置位;在其它方;在其它方式中,在接收停止位的中間由硬件置位。同式中,在接收停止位的中間由硬件置位。同TITI一樣,也可以一樣,也可以通過通過 JBC RIJBC RI,relrel 來查詢是否接收完一幀數(shù)據(jù)。來查詢是否接收完一幀數(shù)據(jù)。RI=1RI=1時,時,也可申請中斷,響應(yīng)中斷后,必須由也可申請中斷,響應(yīng)中斷后,必須由軟件清除軟件清除

26、RIRI。 PCON PCON主要是為主要是為CHMOSCHMOS型單片機(jī)的電源控制而設(shè)置的專用寄存型單片機(jī)的電源控制而設(shè)置的專用寄存器,不可以位尋址,字節(jié)地址為器,不可以位尋址,字節(jié)地址為87H87H。在。在HMOSHMOS的的80518051單片機(jī)中,單片機(jī)中,PCONPCON除了最高位以外,其它位都是虛設(shè)的。除了最高位以外,其它位都是虛設(shè)的。PCON(87H) SMODGF1GF0PDIDL2. 電源控制寄存器電源控制寄存器PCON表表 9-4 PCON各位定義各位定義 1. 1. 方式方式0 0 在方式在方式0 0下,串行口作同步移位寄存器用,其波特率固定下,串行口作同步移位寄存器用,

27、其波特率固定為為fosc/12fosc/12。串行數(shù)據(jù)從串行數(shù)據(jù)從RXD(P3.0)RXD(P3.0)端輸入或輸出,同步移位端輸入或輸出,同步移位脈沖由脈沖由TXD(P3.1)TXD(P3.1)送出送出。這種方式常用于擴(kuò)展。這種方式常用于擴(kuò)展I/OI/O口。口。 1) 1) 發(fā)送發(fā)送 當(dāng)一個數(shù)據(jù)寫入串行口發(fā)送緩沖器當(dāng)一個數(shù)據(jù)寫入串行口發(fā)送緩沖器SBUFSBUF時,串行口將時,串行口將8 8位位數(shù)據(jù)以數(shù)據(jù)以fosc/12fosc/12的波特率從的波特率從RXDRXD引腳輸出(低位在前),發(fā)送引腳輸出(低位在前),發(fā)送完置中斷標(biāo)志完置中斷標(biāo)志TITI為為1 1,請求中斷。在再次發(fā)送數(shù)據(jù)之前,必須,

28、請求中斷。在再次發(fā)送數(shù)據(jù)之前,必須由軟件清由軟件清TITI為為0 0。 具體接線圖如圖具體接線圖如圖9-119-11所示。其中,所示。其中,74LS16474LS164為串入并出移為串入并出移位寄存器。位寄存器。9.2.2 MCS-51串行口的工作方式串行口的工作方式 圖圖9-11 方式方式0用于擴(kuò)展用于擴(kuò)展I/O口輸出口輸出1283456 10 11 12 13數(shù) 據(jù) 輸 出移 位 脈 沖RXDTXD805174LS164D7D6 D5 D4 D3 D2 D1 D0 圖圖9- 12 方式方式0發(fā)送時序發(fā)送時序 在滿足在滿足REN=1REN=1和和RI=0RI=0的條件下,串行口即開始從的條件

29、下,串行口即開始從RXDRXD端以端以fosc/12fosc/12的波特率輸入數(shù)據(jù)(低位在前),的波特率輸入數(shù)據(jù)(低位在前),當(dāng)接收完當(dāng)接收完8 8位數(shù)據(jù)后,位數(shù)據(jù)后,置中斷標(biāo)志置中斷標(biāo)志RIRI為為1 1,請求中斷。在再次接收數(shù)據(jù)之前,必須由,請求中斷。在再次接收數(shù)據(jù)之前,必須由軟件清軟件清RIRI為為0 0。 具體接線圖如圖具體接線圖如圖9-139-13所示。其中,所示。其中,74LS16574LS165為并入串出移位為并入串出移位寄存器。寄存器。 串行控制寄存器串行控制寄存器SCONSCON中的中的TB8TB8和和RB8RB8在方式在方式0 0中未用。值得中未用。值得注意的是,每當(dāng)發(fā)送或

30、接收完注意的是,每當(dāng)發(fā)送或接收完8 8位數(shù)據(jù)后,硬件會自動置位數(shù)據(jù)后,硬件會自動置TITI或或RIRI為為1 1,CPUCPU響應(yīng)響應(yīng)TITI或或RIRI中斷后,必須由用戶用軟件清中斷后,必須由用戶用軟件清0 0。方式。方式0 0時,時,SM2SM2必須為必須為0 0。2) 接收接收 圖圖9-13 方式方式0用于擴(kuò)展用于擴(kuò)展I/O口輸入口輸入926543 14 13 12 11數(shù) 據(jù) 輸 入移 位 脈 沖RXDTXD805174LS165D7D6D5D4D3D2D1D0 圖圖9- 14 方式方式0接收時序接收時序 注意: 1.軟件清零 CLR TI ; TI位清 “0”CLR RI ; RI位

31、清 “0” 2.串并轉(zhuǎn)換芯片74LS16474LS164是串入并出芯片,是串入并出芯片,74LS16574LS165是并入串出芯片是并入串出芯片 當(dāng)當(dāng)SM0=0, SM1=1SM0=0, SM1=1時,串行口以方式時,串行口以方式1 1工作。方式工作。方式1 1為為1010位通用位通用異步通信接口。其中異步通信接口。其中TXDTXD發(fā)送數(shù)據(jù),發(fā)送數(shù)據(jù),RXDRXD接收數(shù)據(jù)接收數(shù)據(jù)。一幀信息包括:。一幀信息包括:一個起始位,一個起始位,8 8位數(shù)據(jù)位(低位在前),位數(shù)據(jù)位(低位在前),1 1位停止位。位停止位。 (1 1)發(fā)送)發(fā)送 發(fā)送時,數(shù)據(jù)從發(fā)送時,數(shù)據(jù)從TXDTXD端輸出。當(dāng)向端輸出。當(dāng)

32、向CPUCPU執(zhí)行一條寫執(zhí)行一條寫SBUFSBUF指令即指令即開啟了發(fā)送過程。發(fā)送時序如圖開啟了發(fā)送過程。發(fā)送時序如圖9-159-15所示。所示。 2. 方式方式1 圖圖9- 15 方式方式1發(fā)送時序發(fā)送時序 CPU發(fā)送的發(fā)送的“寫寫SBUF”指令啟動發(fā)送控制器,同時將并指令啟動發(fā)送控制器,同時將并行數(shù)據(jù)送入行數(shù)據(jù)送入SBUF。經(jīng)過一個機(jī)器周期,發(fā)送控制器。經(jīng)過一個機(jī)器周期,發(fā)送控制器SEND、DATA有效,輸出控制門被打開,在發(fā)送移位脈沖(有效,輸出控制門被打開,在發(fā)送移位脈沖(TX CLOCK)的作用下,向外逐位輸出串行信號。在發(fā)送時,)的作用下,向外逐位輸出串行信號。在發(fā)送時,串行口自動

33、地在數(shù)據(jù)的前后分別插入一位起始位串行口自動地在數(shù)據(jù)的前后分別插入一位起始位“0”和一位和一位停止位停止位“1”,以構(gòu)成一幀信息;在,以構(gòu)成一幀信息;在8位數(shù)據(jù)發(fā)出之后,并在位數(shù)據(jù)發(fā)出之后,并在停止位開始時,停止位開始時,CPU自動使自動使TI為為1,申請發(fā)送中斷,同時發(fā),申請發(fā)送中斷,同時發(fā)送出下一個數(shù)據(jù)。當(dāng)一幀信息發(fā)完后,自動保持送出下一個數(shù)據(jù)。當(dāng)一幀信息發(fā)完后,自動保持TXD端的信端的信號為號為“1”。方式。方式1發(fā)送時的移位時鐘是由定時器發(fā)送時的移位時鐘是由定時器T1送來的溢送來的溢出信號經(jīng)過出信號經(jīng)過16分頻或分頻或32分頻(取決于分頻(取決于PCON中的中的SMOD位)位)而取得的,

34、因此而取得的,因此方式方式1的波特率的波特率是可變的。是可變的。 2) 2) 接收接收 接收時,由接收時,由RENREN置置1 1,允許接收,串行口采樣,允許接收,串行口采樣RXDRXD,當(dāng)采樣,當(dāng)采樣由由1 1到到0 0跳變時,確認(rèn)是起始位跳變時,確認(rèn)是起始位“0”0”,開始接收一幀數(shù)據(jù)。當(dāng),開始接收一幀數(shù)據(jù)。當(dāng)RI=0RI=0,且停止位為,且停止位為1 1或或SM2=0SM2=0時,停止位進(jìn)入時,停止位進(jìn)入RB8RB8位,同時置中位,同時置中斷標(biāo)志斷標(biāo)志RIRI;否則信息將丟失。所以,方式;否則信息將丟失。所以,方式1 1接收時,應(yīng)先用軟接收時,應(yīng)先用軟件清除件清除RIRI或或SM2SM2

35、標(biāo)志。標(biāo)志。 圖圖9- 16 方式方式1接收時序接收時序 方式方式2下,串行口為下,串行口為11位位UART,傳送波特率與,傳送波特率與SMOD有關(guān)。有關(guān)。發(fā)送或接收一幀數(shù)據(jù)包括發(fā)送或接收一幀數(shù)據(jù)包括1位起始位位起始位0,8位數(shù)據(jù)位,位數(shù)據(jù)位,1位可編程位可編程位位(用于奇偶校驗(yàn)用于奇偶校驗(yàn))和和1位停止位位停止位1。 1) 1) 發(fā)送發(fā)送 發(fā)送時,先根據(jù)通信協(xié)議由軟件設(shè)置發(fā)送時,先根據(jù)通信協(xié)議由軟件設(shè)置TB8TB8,然后用指令將要,然后用指令將要發(fā)送的數(shù)據(jù)寫入發(fā)送的數(shù)據(jù)寫入SBUFSBUF,啟動發(fā)送器。寫,啟動發(fā)送器。寫SBUFSBUF的指令,除了將的指令,除了將8 8位數(shù)據(jù)送入位數(shù)據(jù)送入S

36、BUFSBUF外,同時還將外,同時還將TB8TB8裝入發(fā)送移位寄存器的第裝入發(fā)送移位寄存器的第9 9位,位,并通知發(fā)送控制器進(jìn)行一次發(fā)送。一幀信息即從并通知發(fā)送控制器進(jìn)行一次發(fā)送。一幀信息即從TXDTXD發(fā)送,在發(fā)送,在送完一幀信息后,送完一幀信息后,TITI被自動置被自動置1 1,在發(fā)送下一幀信息之前,在發(fā)送下一幀信息之前,TITI必須由中斷服務(wù)程序或查詢程序清必須由中斷服務(wù)程序或查詢程序清0 0。3. 方式方式2 2) 2) 接收接收 當(dāng)當(dāng)REN=1REN=1時,允許串行口接收數(shù)據(jù)。數(shù)據(jù)由時,允許串行口接收數(shù)據(jù)。數(shù)據(jù)由RXDRXD端輸入,端輸入,接收接收1111位的信息。當(dāng)接收器采樣到位的

37、信息。當(dāng)接收器采樣到RXDRXD端的負(fù)跳變,并判斷端的負(fù)跳變,并判斷起始位有效后,開始接收一幀信息。當(dāng)接收器接收到第起始位有效后,開始接收一幀信息。當(dāng)接收器接收到第9 9位位數(shù)據(jù)后,若同時滿足以下兩個條件:數(shù)據(jù)后,若同時滿足以下兩個條件:RI=0RI=0和和SM2=0SM2=0或接收到或接收到的第的第9 9位數(shù)據(jù)為位數(shù)據(jù)為1 1,則接收數(shù)據(jù)有效,則接收數(shù)據(jù)有效,8 8位數(shù)據(jù)送入位數(shù)據(jù)送入SBUFSBUF,第,第9 9位送入位送入RB8RB8,并置,并置RI=1RI=1。若不滿足上述兩個條件,則信息丟。若不滿足上述兩個條件,則信息丟失。失。 方式方式3為波特率可變的為波特率可變的11位位UART

38、通信方式,除了波特通信方式,除了波特率以外,方式率以外,方式3和方式和方式2完全相同。完全相同。4. 方式方式3 當(dāng)采用方式當(dāng)采用方式0 0和方式和方式2 2時,波特率僅僅與晶振頻率有關(guān)。時,波特率僅僅與晶振頻率有關(guān)。在方式在方式0 0中,波特率為時鐘頻率的中,波特率為時鐘頻率的1/121/12,即,即f foscosc/12/12,固定不變。,固定不變。 在方式在方式2 2中,波特率取決于中,波特率取決于PCONPCON中的中的SMODSMOD值,當(dāng)值,當(dāng)SMOD=0SMOD=0時,時,波特率為波特率為f foscosc/64/64;當(dāng);當(dāng)SMOD=1SMOD=1時,波特率為時,波特率為f

39、foscosc/32/32。 9.2.3 MCS-51串行口的波特率串行口的波特率1. 方式方式0和方式和方式2SMOD:波特率選擇位。波特率選擇位。例如:方式例如:方式1的波特率的計(jì)算公式為:的波特率的計(jì)算公式為: 方式方式1波特率波特率=(2SMOD/32)定時器定時器T1的溢出率的溢出率也稱也稱SMOD位為位為波特率倍增位波特率倍增位。 在方式在方式1 1和方式和方式3 3時,波特率不僅僅與晶振頻率和時,波特率不僅僅與晶振頻率和SMODSMOD位有位有關(guān),還與定時器關(guān),還與定時器T1T1的設(shè)置有關(guān)。的設(shè)置有關(guān)。 波特率的計(jì)算公式為:波特率的計(jì)算公式為:波特率波特率=2=2SMOD/32/

40、32定時器定時器T1溢出率溢出率 其中,定時器其中,定時器T1T1的溢出率又與其工作關(guān)系、計(jì)數(shù)初值、晶的溢出率又與其工作關(guān)系、計(jì)數(shù)初值、晶振頻率相關(guān)。用定時器振頻率相關(guān)。用定時器T1T1做波特率發(fā)生器時,通常選用定時器做波特率發(fā)生器時,通常選用定時器工作方式工作方式2 2(8 8位自動重裝定時初值),但要禁止位自動重裝定時初值),但要禁止T1T1中斷中斷(ET1=0ET1=0),以免),以免T1T1溢出時產(chǎn)生不必要的中斷。先設(shè)溢出時產(chǎn)生不必要的中斷。先設(shè)T1T1的初值的初值為為X,X,那么每過那么每過(256 - X256 - X)個機(jī)器周期,定時器個機(jī)器周期,定時器T1T1就會溢出一就會溢出

41、一次。溢出周期為:次。溢出周期為:1212(256-X256-X)/ /fosc。而而T1T1的溢出率為溢出的溢出率為溢出周期之倒數(shù)。所以波特率周期之倒數(shù)。所以波特率=2=2SMOD/32/32f foscosc/12/(256-X)/12/(256-X)。 2. 方式方式1和方式和方式3波特率f(MHz)SMOD定 時 器 1C/T方式重置裝入值方式0最大值:1MHz 12 X X X X方式2最大值:375Kz 12 1 X X X方式1、3: 62.5 Kz 19.2 Kz 9.6 Kz 4.8 Kz2.4 Kz1.2 Kz137.6Hz110 Hz110 Hz 1211.0592 11

42、.059211.059211.059211.059211.969 6 12 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 2 1FFHFDHFDHFAHF4HE8H1DH27HFEEBH9.3.1 雙機(jī)通信硬件電路雙機(jī)通信硬件電路圖圖9.16 雙機(jī)異步通信接口電路雙機(jī)異步通信接口電路RXDTXD8051應(yīng)用系統(tǒng)(甲機(jī))RXDTXD8051應(yīng)用系統(tǒng)(乙機(jī))9.3 MCS-51串行口的應(yīng)用串行口的應(yīng)用1. 1. 查詢方式查詢方式 1) 1) 甲機(jī)發(fā)送甲機(jī)發(fā)送 編程將甲機(jī)片外編程將甲機(jī)片外1000H1000H101FH101FH單元的數(shù)據(jù)塊從串行

43、口輸單元的數(shù)據(jù)塊從串行口輸出。定義方式出。定義方式2 2發(fā)送,發(fā)送,TB8TB8為奇偶校驗(yàn)位。發(fā)送波特率為奇偶校驗(yàn)位。發(fā)送波特率375 375 kb/skb/s,晶振為,晶振為12 MHz, 12 MHz, 因此,因此,SMOD=1SMOD=1。9.3.2 雙機(jī)通信軟件編程雙機(jī)通信軟件編程注意區(qū)分:注意區(qū)分:TMOD SMOD 參考發(fā)送子程序如下:參考發(fā)送子程序如下: MOV MOV SCONSCON,#80H #80H ;設(shè)置串行口為方式;設(shè)置串行口為方式2 2 MOV MOV PCONPCON,#80H #80H ;SMOD=1SMOD=1 MOV MOV DPTRDPTR,#1000H

44、#1000H ;設(shè)數(shù)據(jù)塊指針;設(shè)數(shù)據(jù)塊指針 MOV MOV R7R7,#20H #20H ;設(shè)數(shù)據(jù)塊長度;設(shè)數(shù)據(jù)塊長度STARTSTART:MOVX AMOVX A,DPTR DPTR ;取數(shù)據(jù)給;取數(shù)據(jù)給A A MOV MOV C,P C,P MOV MOV TB8,C TB8,C ;奇偶位;奇偶位P P送給送給TB8TB8 MOV MOV SBUF,A SBUF,A ;數(shù)據(jù)送;數(shù)據(jù)送SBUFSBUF,啟動發(fā)送,啟動發(fā)送WAIT:JBC TI,CONT WAIT:JBC TI,CONT ;判斷一幀是否發(fā)送完。;判斷一幀是否發(fā)送完。若發(fā)送完,清若發(fā)送完,清TITI,取下一個數(shù)據(jù),取下一個數(shù)據(jù)

45、AJMP WAIT AJMP WAIT ;未完等待;未完等待CONTCONT:INC INC DPTR DPTR ;更新數(shù)據(jù)單元;更新數(shù)據(jù)單元 DJNZ R7,START DJNZ R7,START ;循環(huán)發(fā)送至結(jié)束;循環(huán)發(fā)送至結(jié)束 RETRET 2) 2) 乙機(jī)接收乙機(jī)接收 編程使乙機(jī)接收甲機(jī)發(fā)送過來的數(shù)據(jù)塊,并存入片內(nèi)編程使乙機(jī)接收甲機(jī)發(fā)送過來的數(shù)據(jù)塊,并存入片內(nèi)50H50H6FH6FH單元。接收過程要求判斷單元。接收過程要求判斷RB8RB8,若出錯置,若出錯置F0F0標(biāo)志為標(biāo)志為1 1,正確則置正確則置F0F0標(biāo)志為標(biāo)志為0 0,然后返回。,然后返回。 在進(jìn)行雙機(jī)通信時,兩機(jī)應(yīng)采用相同的

46、工作方式和波特率。在進(jìn)行雙機(jī)通信時,兩機(jī)應(yīng)采用相同的工作方式和波特率。參考接收子程序如下:參考接收子程序如下: MOV SCONMOV SCON,#80H #80H ;設(shè)置串行口為方式;設(shè)置串行口為方式2 2 MOV PCON MOV PCON,#80H #80H ;SMOD=1SMOD=1 MOV R0 MOV R0,#50H #50H ;設(shè)置數(shù)據(jù)塊指針;設(shè)置數(shù)據(jù)塊指針 MOV R7MOV R7,#20H #20H ;設(shè)置數(shù)據(jù)塊長度;設(shè)置數(shù)據(jù)塊長度 SETB REN SETB REN ;啟動接收;啟動接收WAITWAIT:JBC RIJBC RI,READ READ ;判斷是否接收完一幀。若

47、完,清;判斷是否接收完一幀。若完,清RIRI,讀入數(shù)據(jù)讀入數(shù)據(jù) AJMP WAIT AJMP WAIT ;未完等待;未完等待READREAD:MOV AMOV A,SBUF SBUF ;讀入一幀數(shù)據(jù);讀入一幀數(shù)據(jù) JNB PSW.0,PZ JNB PSW.0,PZ ;奇偶位為;奇偶位為0 0則轉(zhuǎn)則轉(zhuǎn) JNB RB8, ERR JNB RB8, ERR ;P=1P=1,RB8=0RB8=0,則出錯,則出錯 SJMP RIGHT SJMP RIGHT ;二者全為;二者全為1 1,則正確,則正確PZ: JB RB8, ERR PZ: JB RB8, ERR ;P=0P=0,RB8=1RB8=1,則出

48、錯,則出錯RIGHT: MOV R0, A RIGHT: MOV R0, A ;正確,存放數(shù)據(jù);正確,存放數(shù)據(jù) INC R0 INC R0 ;更新地址指針;更新地址指針 DJNZ R7, WAIT DJNZ R7, WAIT ;判斷數(shù)據(jù)塊是否接收完;判斷數(shù)據(jù)塊是否接收完 CLR PSW.5 CLR PSW.5 ;接收正確,且接收完清;接收正確,且接收完清F0F0標(biāo)志標(biāo)志 RET RET ;返回;返回ERR: SETB PSW.5 ERR: SETB PSW.5 ;出錯,置;出錯,置F0F0標(biāo)志為標(biāo)志為1 1 RET RET ;返回;返回 在上述查詢方式的雙機(jī)通信中,因?yàn)榘l(fā)送雙方單片機(jī)的串行口在

49、上述查詢方式的雙機(jī)通信中,因?yàn)榘l(fā)送雙方單片機(jī)的串行口均按方式均按方式2 2工作,所以幀格式是工作,所以幀格式是1111位的,收發(fā)雙方均是采用奇偶位位的,收發(fā)雙方均是采用奇偶位TB8TB8來進(jìn)行校驗(yàn)的。傳送數(shù)據(jù)的波特率與定時器無關(guān),所以程序中來進(jìn)行校驗(yàn)的。傳送數(shù)據(jù)的波特率與定時器無關(guān),所以程序中沒有涉及定時器的編程。沒有涉及定時器的編程。 2. 2. 中斷方式中斷方式 在很多應(yīng)用中,雙機(jī)通信的接收方都采用中斷的方式來接收數(shù)在很多應(yīng)用中,雙機(jī)通信的接收方都采用中斷的方式來接收數(shù)據(jù),以提高據(jù),以提高CPUCPU的工作效率;發(fā)送方仍然采用查詢方式發(fā)送。的工作效率;發(fā)送方仍然采用查詢方式發(fā)送。 1) 1

50、) 甲機(jī)發(fā)送甲機(jī)發(fā)送 上面的通信程序,收發(fā)雙方是采用奇偶位上面的通信程序,收發(fā)雙方是采用奇偶位TB8TB8來進(jìn)行校驗(yàn)的,來進(jìn)行校驗(yàn)的,這里介紹一種用累加和進(jìn)行校驗(yàn)的方法。這里介紹一種用累加和進(jìn)行校驗(yàn)的方法。 編程將甲機(jī)片內(nèi)編程將甲機(jī)片內(nèi)60H60H6FH6FH單元的數(shù)據(jù)塊從串行口發(fā)送,在發(fā)單元的數(shù)據(jù)塊從串行口發(fā)送,在發(fā)送之前將數(shù)據(jù)塊長度發(fā)送給乙機(jī),當(dāng)發(fā)送完送之前將數(shù)據(jù)塊長度發(fā)送給乙機(jī),當(dāng)發(fā)送完1616個字節(jié)后,再發(fā)送個字節(jié)后,再發(fā)送一個累加校驗(yàn)和。定義雙機(jī)串行口按方式一個累加校驗(yàn)和。定義雙機(jī)串行口按方式1 1工作,晶振為工作,晶振為11.059 11.059 MHzMHz,波特率為,波特率為2

51、400 b/s2400 b/s,定時器,定時器1 1按方式按方式2 2工作。經(jīng)計(jì)算或查表工作。經(jīng)計(jì)算或查表8.28.2得到定時器預(yù)置值為得到定時器預(yù)置值為0F4H0F4H,SMOD=0SMOD=0。 參考發(fā)送子程序如下:參考發(fā)送子程序如下: MOV TMOD MOV TMOD,#20H #20H ;設(shè)置定時器;設(shè)置定時器1 1為方式為方式2 2 MOV TL1 MOV TL1,#0F4H #0F4H ;設(shè)置預(yù)置值;設(shè)置預(yù)置值 MOV TH1MOV TH1,#0F4H#0F4H SETB TR1 SETB TR1 ;啟動定時器;啟動定時器1 1 MOV SCON MOV SCON,#50H #5

52、0H ;設(shè)置串行口為方式;設(shè)置串行口為方式1 1,允許接收,允許接收STARTSTART:MOV R0MOV R0,#60H #60H ;設(shè)置數(shù)據(jù)指針;設(shè)置數(shù)據(jù)指針 MOV R5MOV R5,#10H #10H ;設(shè)置數(shù)據(jù)長度;設(shè)置數(shù)據(jù)長度 MOV R4MOV R4,#00H #00H ;累加校驗(yàn)和初始化;累加校驗(yàn)和初始化 MOV SBUFMOV SBUF,R5 R5 ;發(fā)送數(shù)據(jù)長度;發(fā)送數(shù)據(jù)長度WAIT1WAIT1:JBC TIJBC TI,TRS TRS ;等待發(fā)送;等待發(fā)送 AJMP WAIT1AJMP WAIT1TRSTRS: MOV AMOV A,R0 R0 ;讀取數(shù)據(jù);讀取數(shù)據(jù) M

53、OV SBUFMOV SBUF,A A ;發(fā)送數(shù)據(jù);發(fā)送數(shù)據(jù) ADD AADD A,R4R4 MOV R4 MOV R4,A A ;形成累加和;形成累加和 INC R0 INC R0 ;修改數(shù)據(jù)指針;修改數(shù)據(jù)指針WAIT2WAIT2:JBC TIJBC TI,CONT CONT ;等待發(fā)送一幀數(shù)據(jù);等待發(fā)送一幀數(shù)據(jù) AJMP WAIT2AJMP WAIT2CONTCONT: DJNZ R5DJNZ R5,TRS TRS ;判斷數(shù)據(jù)塊是否發(fā)送完;判斷數(shù)據(jù)塊是否發(fā)送完 MOV SBUFMOV SBUF,R4 R4 ;發(fā)送累加校驗(yàn)和;發(fā)送累加校驗(yàn)和WAIT3WAIT3:JBC TIJBC TI,WA

54、IT4 WAIT4 ;等待發(fā)送;等待發(fā)送 AJMP WAIT3AJMP WAIT3AIT4AIT4: JBC RIJBC RI,READ READ ;等待乙機(jī)回答;等待乙機(jī)回答 AJMP WAIT4AJMP WAIT4READREAD: MOV AMOV A,SBUF SBUF ;接收乙機(jī)數(shù)據(jù);接收乙機(jī)數(shù)據(jù) JZ RIGHT JZ RIGHT ;00H00H,發(fā)送正確,返回,發(fā)送正確,返回 AJMP START AJMP START ;發(fā)送出錯,重發(fā);發(fā)送出錯,重發(fā)RIGHTRIGHT:RETRET2) 2) 乙機(jī)接收乙機(jī)接收 乙機(jī)接收甲機(jī)發(fā)送的數(shù)據(jù),并存入以乙機(jī)接收甲機(jī)發(fā)送的數(shù)據(jù),并存入以2

55、000H2000H開始的片外數(shù)開始的片外數(shù)據(jù)存儲器中。首先接收數(shù)據(jù)長度,接著接收數(shù)據(jù),當(dāng)接收完據(jù)存儲器中。首先接收數(shù)據(jù)長度,接著接收數(shù)據(jù),當(dāng)接收完1616個字節(jié)后,接收累加和校驗(yàn)碼,進(jìn)行校驗(yàn)。數(shù)據(jù)傳送結(jié)束個字節(jié)后,接收累加和校驗(yàn)碼,進(jìn)行校驗(yàn)。數(shù)據(jù)傳送結(jié)束后,根據(jù)校驗(yàn)結(jié)果向甲機(jī)發(fā)送一個狀態(tài)字,后,根據(jù)校驗(yàn)結(jié)果向甲機(jī)發(fā)送一個狀態(tài)字,00H00H表示正確,表示正確,0FFH0FFH表示出錯,出錯則甲機(jī)重發(fā)。表示出錯,出錯則甲機(jī)重發(fā)。 接收采用中斷方式。設(shè)置兩個標(biāo)志位(接收采用中斷方式。設(shè)置兩個標(biāo)志位(7FH7FH,7EH7EH位)來判斷接收位)來判斷接收到的信息是數(shù)據(jù)塊長度、數(shù)據(jù)還是累加校驗(yàn)和。到的

56、信息是數(shù)據(jù)塊長度、數(shù)據(jù)還是累加校驗(yàn)和。 參考接收程序如下:參考接收程序如下: ORG 0000HORG 0000H LJMP CSH LJMP CSH ;轉(zhuǎn)初始化程序;轉(zhuǎn)初始化程序 ORG 0023HORG 0023H LJMP INTS LJMP INTS ;轉(zhuǎn)串行口中斷程序;轉(zhuǎn)串行口中斷程序 ORG 0100HORG 0100HCSHCSH:MOV TMODMOV TMOD,#20H #20H ;設(shè)置定時器;設(shè)置定時器1 1為方式為方式2 2 MOV TL1 MOV TL1,#0F4H #0F4H ;設(shè)置預(yù)置值;設(shè)置預(yù)置值 MOV TH1MOV TH1,#0F4H#0F4H SETB TR1 SETB T

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論