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

下載本文檔

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

文檔簡(jiǎn)介

第7章

串行通信及其接口

7.1概述7.2AT89S51的串行口7.3波特率的制定方法7.4多機(jī)通信7.5串行口的編程和應(yīng)用7.1概述串行通信是將數(shù)據(jù)的各位一位一位地依次傳送。適合于計(jì)算機(jī)之間、計(jì)算機(jī)與外部設(shè)備之間的遠(yuǎn)距離通信。串行通信從傳輸方式分為:?jiǎn)喂し绞?、半雙工方式、全雙工方式。串行通信從接收方式有兩種方式:異步通信方式、同步通信方式。返回本章首頁(yè)接收器圖7-1單工方式示意圖發(fā)送器接收器接收器發(fā)送器發(fā)送器數(shù)據(jù)流

圖7-2半雙工方式示意圖接收和發(fā)送不能同時(shí)進(jìn)行,只能分時(shí)發(fā)送和接收發(fā)送器接收器數(shù)據(jù)流接收器發(fā)送器圖7-3全雙工方式示意圖數(shù)據(jù)的發(fā)送和接收可以同時(shí)進(jìn)行總結(jié):

不管哪種形式的串行通信,在兩機(jī)之間均應(yīng)有共地線。異步通信ASYNC

在異步通信方式中,接收器和發(fā)送器有各自的時(shí)鐘,它們的工作是非同步的。

在異步通信中數(shù)據(jù)或字符是以幀形式傳送的。最常見的幀格式一般是先用一位起始位“0”表示字符的開始;然后是5~8位數(shù)據(jù),低位在前,高位在后;其后是校驗(yàn)位,此位用于判別字符傳送的正確性;最后是停止位,用以表示字符的結(jié)束,停止位可以是1~2個(gè)停止位。圖7-4異步串行通信數(shù)據(jù)格式從起始位開始到停止位結(jié)束就構(gòu)成了完整的一幀。異步通信時(shí)可能會(huì)出現(xiàn)幀格式錯(cuò)、超時(shí)錯(cuò)等傳輸錯(cuò)誤。在具有串行口的單片機(jī)的開發(fā)中,應(yīng)考慮在通信過程中對(duì)數(shù)據(jù)差錯(cuò)進(jìn)行校驗(yàn),因?yàn)椴铄e(cuò)校驗(yàn)是保證準(zhǔn)確無誤通信的關(guān)鍵。

1)奇偶校驗(yàn)2)和校驗(yàn)3)循環(huán)冗余碼校驗(yàn)同步通信SYNC

在同步通信中,發(fā)送器和接收器由同一個(gè)時(shí)鐘源控制。數(shù)據(jù)或字符開始處是用一同步字符來指示,以實(shí)現(xiàn)發(fā)送端和接收端同步,一旦檢測(cè)到約定同步字符,就連續(xù)按順序接收數(shù)據(jù)。圖7-5同步通信方式及數(shù)據(jù)格式思考題:同步通信和異步通信來傳送數(shù)據(jù)塊,一般來說哪個(gè)速度快,為什么?

同步通信數(shù)據(jù)塊傳送時(shí)去掉了字符開始和結(jié)束的標(biāo)志,所以其速度高于異步傳送,但這種方式對(duì)硬件結(jié)構(gòu)要求較高。7.2AT89S51單片機(jī)的串行口 7.2.1串行口的結(jié)構(gòu)7.2.2串行口的工作方式返回本章首頁(yè)7.2.1串行口的結(jié)構(gòu)

AT89S51單片機(jī)內(nèi)部的串行口,有兩個(gè)物理上獨(dú)立地接收、發(fā)送緩沖器SBUF,可同時(shí)接收、發(fā)送數(shù)據(jù),發(fā)送緩沖器只能寫入不能讀出,接收緩沖器只能讀出不能寫入。結(jié)構(gòu)圖

這兩個(gè)緩沖器共用一個(gè)字節(jié)地址99H.

例:

判斷使用的是發(fā)送SBUF還是接收SBUF?MOVA,SBUF

MOVSBUF,A接收SBUF發(fā)送SBUF

1.串行口控制寄存器SCON該寄存器的字節(jié)地址為98H,可位尋址。SCON格式如圖7-6所示。圖7-6SCON格式SCON.7和SCON.6SM0和SM1

串行方式選擇位。SCON.5SM2在方式2和方式3中主要用于多機(jī)通信控制。方式2和方式3

i)若SM2=1,且接收到第9位RB8=“0”時(shí),RI不置“1”,不接收主機(jī)發(fā)來的數(shù)據(jù);

ii)SM2=1,RB8=1,RI置“1”。產(chǎn)生中斷請(qǐng)求,將接收到的8位數(shù)據(jù)送入SBUF.

iii)SM2=0,不論RB8為“0”還是為“1”,都將接收到的8位數(shù)據(jù)送入SBUF中,置RI=1并中斷。

方式0,SM2應(yīng)置“0”。方式1,接收時(shí),若SM2=1,則只有收到有效的停止位時(shí),RI才置“1”SCON.4REN允許串行接收位。由軟件置位或清除。REN=1允許接收REN=0禁止接收SCON.3TB8發(fā)送數(shù)據(jù)的第9位。雙機(jī)通信時(shí)可作奇偶校驗(yàn)位。多機(jī)通信時(shí)可作區(qū)別地址幀或數(shù)據(jù)幀的標(biāo)識(shí)位。

約定:地址幀時(shí)TB8為“1”,數(shù)據(jù)幀時(shí)為“0”SCON.2RB8接收數(shù)據(jù)的第9位。方式2和3,RB8存放接收到第9位數(shù)據(jù),

方式1,如SM2=0,RB8接收到停止位,

方式0,不使用RB8.SCON.1TI發(fā)送中斷標(biāo)志位方式0,發(fā)送完8位數(shù)據(jù)后,硬件置“1”其它方式,在發(fā)送停止位之初由硬件置位TI=1,可申請(qǐng)中斷,也可供軟件查詢用但任何方式都必須由軟件清除

CLRTISCON.0RI接收中斷標(biāo)志位方式0,接收完8位數(shù)據(jù)后,硬件置位其它方式,在接收停止位時(shí),由硬件置位。表示一幀數(shù)據(jù)接收完畢,此時(shí)可要求CPU從接收SBUF取走數(shù)據(jù)。RI=1,可申請(qǐng)中斷,也可供軟件查詢用但任何方式都必須由軟件清除

CLRRI2.特殊功能寄存器PCON其字節(jié)地址為87H,沒有位尋址功能。PCON的格式如圖7-7所示,其中與串行接口有關(guān)的只有D7位。SMOD是串行口波特率倍增位。其他各位的功能已在第2章的節(jié)電工作方式一節(jié)中作過介紹。圖7-7PCON格式返回本節(jié) 方式1波特率

=

定時(shí)器T1的溢出率7.2.2串行口的工作方式 表7-1串行口工作方式返回1.方式0

該方式并不用于兩個(gè)AT89S51單片機(jī)之間的異步串行通信,而是用于串行口外接移位寄存器,擴(kuò)展并行I/O口。此方式下,串行口作同步移位寄存器用,以8位數(shù)據(jù)為一幀,先發(fā)送或接收最低位,每個(gè)機(jī)器周期發(fā)送或接收一位,故其波特率是固定的。

這種方式常用于擴(kuò)展I/O口.舉例proteus

程序串行數(shù)據(jù)由RXD(P3.0)輸入或輸出同步移位脈沖由TXD(P3.1)輸出方式0發(fā)送時(shí)序.機(jī)器周期寫SBUFRXD(數(shù)據(jù))D6D0D2D5D4D3D7D1TXD(移位脈沖)TI方式0發(fā)送時(shí)序.機(jī)器周期寫SBUFRXD(數(shù)據(jù))D0D1D2D3D4D5D6D7TXD(移位脈沖)TI方式0接收時(shí)序.機(jī)器周期寫SCONRXD(數(shù)據(jù))D6D0D2D5D4D3D7D1TXD(移位脈沖)RI方式0接收時(shí)序.機(jī)器周期寫SCONRXD(數(shù)據(jù))D0D1D2D3D4D5D6D7TXD(移位脈沖)RI2.方式1方式1為雙機(jī)串行通信方式,如圖7-9所示。串行口為8位通用異步接口。發(fā)送或接收一幀數(shù)據(jù),包括一位起始位“0”、8位數(shù)據(jù)位和1位停止位“1”,其傳送波特率可調(diào)。

方式1的幀格式:D1D2D3D4D5D6D7TXDD0起始停止方式1波特率=

定時(shí)器T1的溢出率發(fā)送時(shí),數(shù)據(jù)從TXD端輸出,當(dāng)數(shù)據(jù)寫入發(fā)送緩沖器SBUF時(shí),就啟動(dòng)發(fā)送器發(fā)送。發(fā)送完一幀數(shù)據(jù)后,TI置“1”,申請(qǐng)中斷,通知CPU可以發(fā)送下一個(gè)數(shù)據(jù)。方式1發(fā)送時(shí)序(TX時(shí)鐘的頻率就是發(fā)送的波特率).寫SBUFTXDTITX時(shí)鐘D1D2D3D4D5D6D7D0起始停止SEND有效方式1發(fā)送時(shí)序.寫SBUFD1D2D3D4D5D6D7TXDTITX時(shí)鐘D0SEND起始停止

接收時(shí),數(shù)據(jù)從RXD(P3.1)引腳輸入。使REN置“1”允許接收,串行口采樣引腳RXD.當(dāng)采樣到1至0的跳變時(shí),確認(rèn)是起始位“0”,就開始接收一幀數(shù)據(jù)。當(dāng)停止位到來之后把停止位送入RB8位,則置位中斷標(biāo)志RI,并申請(qǐng)中斷,通知CPU從SBUF取走接收到的一個(gè)數(shù)據(jù)。接收時(shí),定時(shí)控制信號(hào)有兩種,一種是接收移位時(shí)鐘(RX時(shí)鐘),它的頻率和傳送的波特率相同,另一種是位檢測(cè)器采樣脈沖,頻率是RX時(shí)鐘的16倍。以波特率的16倍速率采樣RXD腳狀態(tài)。當(dāng)采樣到RXD端從1到0的負(fù)跳變時(shí)就啟動(dòng)檢測(cè)器,接收的值是3次連續(xù)采樣(第7、8、9個(gè)脈沖時(shí)采樣)取兩次相同的值,以確認(rèn)起始位(負(fù)跳變)的開始,較好地消除干擾引起的影響。當(dāng)一幀數(shù)據(jù)接收完畢后,同時(shí)滿足以下兩條件,最后一次移位脈沖才能將前8位數(shù)據(jù)裝入SBUF和RB8,并置位RI=1。(1)RI=0,即上一幀數(shù)據(jù)接收完成時(shí),RI

=

1發(fā)出的中斷請(qǐng)求已被響應(yīng),SBUF中的數(shù)據(jù)已被取走,說明“接收SBUF”已空。(2)SM2=0或接收到的第9位數(shù)據(jù)為1若兩條不同時(shí)滿足,則接收到的數(shù)據(jù)全部丟失,且不置位RI。方式1接收時(shí)序.RIRX時(shí)鐘D1D2D3D4D5D6D7TXDD0起始停止位檢測(cè)采樣3.方式2串行口為9位異步通信接口。發(fā)送或接收一幀信息包括1位起始位“0”、8位數(shù)據(jù)位、1位可編程位和1位停止位“1”。其信息傳送波特率與SMOD有關(guān)。發(fā)送前,先根據(jù)通信協(xié)議由軟件設(shè)置TB8,然后將要發(fā)送的數(shù)據(jù)寫入SBUF即能啟動(dòng)發(fā)送器。

方式2,方式3的幀格式TXDD4D5D6D7D0D1D2D3起始停止D8方式2波特率=(2SMOD/64)

fosc方式2,方式3發(fā)送時(shí)序.寫SBUFSENDTXDD4D5D6D7D0D1D2D3起始停止D8TX時(shí)鐘TI

下面為發(fā)送中斷服務(wù)程序,在雙機(jī)通信中,以TB8為奇偶校驗(yàn)位,處理方法為數(shù)據(jù)寫入SBUF之前,先將數(shù)據(jù)的奇偶校驗(yàn)位寫入TB8(設(shè)工作寄存器區(qū)2的R0作為發(fā)送數(shù)據(jù)區(qū)地址指針).偶檢驗(yàn)

例7.1方式2發(fā)送在雙機(jī)通信中的應(yīng)用PIPT1:PUSHPSWPUSHAccSETBRS1CLRRS0CLRTIMOVA,@R0

MOVC,PMOVTB8,CMOVSBUF,AINCR0POPAccPOPPSWRETI

方式2和方式3的接收:數(shù)據(jù)由RXD端輸入,REN=1時(shí)接收器開始采樣RXD的電平,檢測(cè)到RXD由高到低的負(fù)跳變時(shí),啟動(dòng)接收器接收。若滿足以下兩條件,最后一次移位脈沖才能將前8位數(shù)據(jù)裝入SBUF和RB8,并置位RI=1。(1)RI=0(2)SM2=0或接收到的第9位數(shù)據(jù)為1若兩條不同時(shí)滿足,則接收到的數(shù)據(jù)全部丟失,且不置位RI。方式2,方式3接收時(shí)序.RXDD4D5D6D7D0D1D2D3起始停止RB8TX時(shí)鐘RI位檢測(cè)采樣例7.2方式2接收在雙機(jī)通信中的應(yīng)用若附加的第9位數(shù)據(jù)為校驗(yàn)位,在接收程序中作偶校驗(yàn)處理,可采用如下程序(設(shè)3組寄存器區(qū)的R0為數(shù)據(jù)緩沖器指針).PITI:PUSH PSWPUSHAccSETB RS0SETB RS1CLR RIMOV A,SBUF

MOV C,PJNC L1JNB RB8,ERPAJMPL2L1:JB RB8,ERPL2:MOV@R0,A;數(shù)據(jù)→數(shù)據(jù)緩沖器

INCR0POPAccPOPPSWERP:… ;出錯(cuò)處理程序段入口

RETI…4.方式3當(dāng)SM0SM1=11時(shí),串行口工作在方式3。方式3為波特率可變的9位異步通信方式,除了波特率外,方式3和方式2相同。方式3的波特率由下式確定:

方式3波特率=(2SMOD/32)×定時(shí)器T1的溢出率返回本節(jié)7.3波特率的制定方法波特率的定義:串行口每秒鐘發(fā)送(或接收)的位數(shù)。SYNC數(shù)據(jù)傳送速率的單位返回本章首頁(yè)例:數(shù)據(jù)傳送速率120個(gè)字符每秒,每個(gè)字符由1個(gè)起始位、8?jìng)€(gè)數(shù)據(jù)位和1個(gè)停止位組成,問波特率為多少?

120×(1+8+1)=1200b/s=1200波特每一位的傳送時(shí)間為波特率的倒數(shù):

t=1/1200=0.833ms

異步通信的傳送速度一般為50~9600波特。

方式0,每個(gè)機(jī)器周期發(fā)送或接收一位數(shù)據(jù),因此波特率固定為時(shí)鐘頻率的1/12。方式2,波特率取決于SMOD.

方式2的波特率=×fosc

1.方式0和方式2的波特率

2SMOD642.方式1和方式3的波特率

串行口方式1和方式3的波特率由定時(shí)器T1的溢出率與SMOD的值決定。

方式1和方式3的波特率=×T1溢出率

2SMOD

32

T1溢出率取決于計(jì)數(shù)速率和定時(shí)器的預(yù)置值

計(jì)數(shù)速率與C/T(TMOD)的狀態(tài)有關(guān)

C/T=0,計(jì)數(shù)速率=fosc/12

C/T=1,計(jì)數(shù)速度取決于外部輸入時(shí)鐘頻率2SMOD

32

當(dāng)定時(shí)器T1作波特率發(fā)生器使用時(shí),通常是選用自動(dòng)重裝載方式。在方式2中,TL1作計(jì)數(shù)用,而自動(dòng)重裝載的值放在TH1內(nèi)。設(shè)計(jì)數(shù)初值為X,那么每過“256–X”個(gè)機(jī)器周期,T1產(chǎn)生一次溢出。

溢出周期=

×(256-X)

溢出率為溢出周期的倒數(shù)

fosc

fosc12

fosc波特率=×

則定時(shí)器T1方式2的初始值為:

X=256-2SMOD32fosc12×(256-X)384×波特率fosc×(SMOD+1)例:已知AT89S51單片機(jī)時(shí)鐘振蕩頻率為11.0592MHZ,選用T1工作方式2作波特率發(fā)生器,波特率為2400b/s,求初值。解:設(shè)SMOD=0X=256-

=244=F4HTH1=TL1=F4H384×240011.0592×106(0+1)表7-2波特率計(jì)算公式表7-3常用的波特率及計(jì)算器初值返回本節(jié)波

率foscSMOD位方式初值X62.5kbit/s12MHz12FFH19.2kbit/s11.0592MHz12FDH9.6kbit/s11.0592MHz02FDH4.8kbit/s11.0592MHz02FAH2.4kbit/s11.0592MHz02F4H1.2kbit/s11.0592MHz02E8H對(duì)表7-4有兩點(diǎn)需要注意:(1)在使用的時(shí)鐘振蕩頻率fosc為12MHz或6MHz時(shí),將初值X和fosc帶入計(jì)算出的波特率有一定誤差。消除誤差可采用時(shí)鐘頻率11.0592MHz。(2)如果選用很低的波特率,可將定時(shí)器T1設(shè)置為方式1定時(shí)。但在這種情況下,T1溢出時(shí),需在中斷服務(wù)程序中重新裝入初值。中斷響應(yīng)時(shí)間和執(zhí)行指令時(shí)間會(huì)使波特率產(chǎn)生一定的誤差,可用改變初值的方法加以調(diào)整。7.3多機(jī)通信7.3.1主從機(jī)間的通信7.3.2多機(jī)通信接口返回本章首頁(yè)7.3.1主從機(jī)間的通信 1.雙機(jī)串行異步通信l

單片機(jī)與單片機(jī)間的串行異步通信接口設(shè)計(jì)l

單片機(jī)與PC系列微機(jī)間的異步串行通信接口設(shè)計(jì)返回本節(jié)單片機(jī)與單片機(jī)間的串行異步通信接口設(shè)計(jì)

AT89S51串行口的輸入、輸出均為TTL電平。抗干擾性差,傳輸距離短,傳輸速率低。為提高串行通信的可靠性,增大串行通信的距離和提高傳輸速率,都采用標(biāo)準(zhǔn)串行接口,如RS-232、RS-422A、RS-485等。根據(jù)通信距離和抗干擾性要求,可選擇TTL電平傳輸、RS-232C、RS-422A、RS-485串口進(jìn)行串行數(shù)據(jù)傳輸。TTL電平通信接口

如果兩個(gè)單片機(jī)相距在1.5m之內(nèi),它們的串行口可直接相連,接口如所示。甲機(jī)RXD與乙機(jī)TXD端相連,乙機(jī)RXD與甲機(jī)TXD端相連。RS-232C雙機(jī)通信接口如果雙機(jī)通信距離在1.5~15m之間時(shí),可用RS-232C標(biāo)準(zhǔn)接口實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)的雙機(jī)通信,接口如圖所示。圖中MAX232A是美國(guó)MAXIM(美信)公司生產(chǎn)的RS-232C雙工發(fā)送器/接收器電路芯片。RS-232C有明顯缺點(diǎn):傳輸速率低、通信距離短、接口處信號(hào)容易產(chǎn)生串?dāng)_等。RS-422A與RS-232C的主要區(qū)別是,收發(fā)雙方的信號(hào)地不再共地,RS-422A采用了平衡驅(qū)動(dòng)和差分接收的方法。用于數(shù)據(jù)傳輸?shù)氖莾蓷l平衡導(dǎo)線,這相當(dāng)于兩個(gè)單端驅(qū)動(dòng)器。兩條線上傳輸?shù)男盘?hào)電平,當(dāng)一個(gè)表示邏輯“1”時(shí),另一條一定為邏輯“0”。若傳輸中,信號(hào)中混入干擾和噪聲(共模形式),由于差分接收器的作用,就能識(shí)別有用信號(hào)并正確接收傳輸?shù)男畔?,并使干擾和噪聲相互抵消。

RS-422A能在長(zhǎng)距離、高速率下傳輸數(shù)據(jù)。它的最大傳輸率為10Mbit/s,電纜允許長(zhǎng)度為12m,如果采用較低傳輸速率時(shí),最大傳輸距離可達(dá)1219m。為了增加通信距離,可采用光電隔離,利用RS-422A標(biāo)準(zhǔn)進(jìn)行雙機(jī)通信的接口電路RS-485雙機(jī)通信接口

RS-422A雙機(jī)通信需四芯傳輸線,這對(duì)長(zhǎng)距離通信很不經(jīng)濟(jì),故在工業(yè)現(xiàn)場(chǎng),通常采用雙絞線傳輸?shù)腞S-485串行通信接口,很容易實(shí)現(xiàn)多機(jī)通信。

RS-485是RS-422A的變型,它與RS-422A的區(qū)別:RS-422A為全雙工,采用兩對(duì)平衡差分信號(hào)線;RS-485為半雙工,采用一對(duì)平衡差分信號(hào)線。RS-485對(duì)于多站互連是十分方便的,很容易實(shí)現(xiàn)多機(jī)通信。RS-485允許最多并聯(lián)32臺(tái)驅(qū)動(dòng)器和32臺(tái)接收器。圖7-19為RS-485通信接口電路。與RS-422A一樣,最大傳輸距離約為1219m,最大傳輸速率為10Mbit/s。7.3.2多機(jī)通信接口1.多機(jī)通信原理串行口控制寄存器SCON中的SM2為多機(jī)通信接口控制位.串行口以方式2或3接收時(shí),若SM2=1,表示置多機(jī)通信功能位,這時(shí)出現(xiàn)兩種可能情況.(1)接收到的第9位數(shù)據(jù)RB8為1時(shí),數(shù)據(jù)才裝入SBUF,并置位RI=1,向CPU發(fā)中斷請(qǐng)求;(2)接收到的第9位數(shù)據(jù)RB8為0時(shí),則不產(chǎn)生中斷,信息拋棄.若SM2=0時(shí),則接收到第9位數(shù)據(jù)RB8無論是0還是1,都將數(shù)據(jù)裝入接收緩沖器SBUF并置位中斷標(biāo)志RI,請(qǐng)求CPU處理。應(yīng)用51單片機(jī)串行口的這個(gè)功能,便可實(shí)現(xiàn)AT89S51的多機(jī)通信。多機(jī)通信系統(tǒng)示意圖SM2=0,RB8=0或1,RI=1,發(fā)中斷申請(qǐng)SM2=1RB8=1,RI=1,發(fā)中斷申請(qǐng)RB8=0,RI=0,不發(fā)中斷申請(qǐng)多機(jī)通信系統(tǒng)示意圖TXDTXDTXDRXDRXDRXDTXDRXD主機(jī)從機(jī)1從機(jī)2從機(jī)3返回多機(jī)通信系統(tǒng)示意圖TXDTXDTXDRXDRXDRXDTXDRXD主機(jī)從機(jī)1從機(jī)2從機(jī)3從機(jī)地址:01H02H03H1)各從機(jī)初始化:MOV SCON,#0B0H;或#0F0HTXDRXD主機(jī)TXDRXD從機(jī)1TXDRXD從機(jī)2TXDRXD從機(jī)32)主機(jī)發(fā)送信息:其中地址:TB8=1,數(shù)據(jù):TB8=0,例如:主機(jī)發(fā)送地址:02HSBUFRB81)各從機(jī)初始化:MOV SCON,#0B0H;或#0F0HTXDRXD主機(jī)TXDRXD從機(jī)1TXDRXD從機(jī)2TXDRXD從機(jī)32)主機(jī)發(fā)送信息:其中地址:TB8=1,數(shù)據(jù):TB8=00SBUF10000001RB81)各從機(jī)初始化:MOV SCON,#0B0H;或#0F0HTXDRXD主機(jī)TXDRXD從機(jī)1TXDRXD從機(jī)2TXDRXD從機(jī)32)主機(jī)發(fā)送信息:其中地址:TB8=1,數(shù)據(jù):TB8=0SBUFRB8102H1)各從機(jī)初始化:MOV SCON,#0B0H;或#0F0HTXDRXD主機(jī)TXDRXD從機(jī)1TXDRXD從機(jī)2TXDRXD從機(jī)32)主機(jī)發(fā)送信息:其中地址:TB8=1,數(shù)據(jù):TB8=03)各從機(jī)響應(yīng)中斷,在中斷程序中判斷接收到地址與本機(jī)相符?相符,SM2=0,不符,保持SM2=14)發(fā)送的數(shù)據(jù)幀,因RB8=0,只有SM2=0的從機(jī)可接收,進(jìn)入中斷處理.SBUFRB8102HSM2=1SM2=1SM2=0串行通信設(shè)計(jì)需要考慮的問題單片機(jī)的串行通信接口設(shè)計(jì)時(shí),需考慮如下問題。(1)首先確定通信雙方的數(shù)據(jù)傳輸速率。(2)由數(shù)據(jù)傳輸速率確定采用的串行通信接口標(biāo)準(zhǔn)。(3)在通信接口標(biāo)準(zhǔn)允許的范圍內(nèi)確定通信的波特率。為減小波特率的誤差,通常選用11.0592MHz的晶振頻率。(4)根據(jù)任務(wù)需要,確定收發(fā)雙方使用的通信協(xié)議。(5)通信線的選擇,這是要考慮的一個(gè)很重要的因素。通信線一般選用雙絞線較好,并根據(jù)傳輸?shù)木嚯x選擇纖芯的直徑。如果空間的干擾較多,還要選擇帶有屏蔽層的雙絞線。(6)通信協(xié)議確定后,進(jìn)行通信軟件編程,請(qǐng)見下面介紹。7.5串行口編程和應(yīng)用例7.3串行口方式1應(yīng)用編程(雙機(jī)通訊)串行口發(fā)送/接收共10位信息(方式1),第0位起始位,1~8是數(shù)據(jù)位,最后是停止位。甲機(jī):把以78H,77H內(nèi)容為首地址,以76H,75H中內(nèi)容減1為末地址的數(shù)據(jù)塊內(nèi)容,通過串行口向乙機(jī)發(fā)送。設(shè)8031內(nèi)部RAM中

78H:20首地址為2000H77H:0076H:20末地址為2020H75H:20解:下面的程序把2000H~201FH中內(nèi)容輸出到串行口中,甲機(jī)fosc=6MHZ,波特率2400b/s,T1的工作方式為1.甲機(jī)發(fā)送清單:

ORG 0000HRESET:LJMP MAINORG 001BHLJMP TINTORG 0023HLJMP SINT

ORG 0100HMAIN:MOV SP,#60HMOV 78H,#20HMOV 77H,#00HMOV 76H,#20HMOV 75H,#20HACALL TRANSHERE:AJMP HERERETTRANS:ANLTMOD,#0FH;T1為方式1ORLTMOD,#10HMOVTL1,#0FAHMOVTH1,#0FFHMOVPCON,#80H;SMOD=1SETBEA;允許總中斷

CLRES;關(guān)串行口中斷

SETBET1

SETBPT1;T1中斷高于串行口中斷

CLRPSSETBTR1;啟動(dòng)T1重計(jì)數(shù)

CLRTICLRF0MOVSCON,#40H;置串行口為方式1MOVSBUF,78H;輸出高位地址WAIT1:JNBTI,WAIT1CLRTIMOVSBUF,77HWAIT2:JNBTI,WAIT2CLRTIMOVSBUF,76H;輸出末位地址WAIT3:JNBTI,WAIT3

CLRTIMOVSBUF,75HSETBES;允許串行口中斷WAIT4:JNBF0,WAIT4 CLR TIRET

…T1INT:CLRTR1MOVTL1,#0FAHMOVTH1,#0FFHSETBTR1RETI

SINT:PUSHDPLPUSHDPHPUSHAMOVDPH,78HMOVDPL,77HMOVXA,@DPTRCLRTIMOVSBUF,A

MOVA,DPHCJNEA,76H,END1;結(jié)束否?是末地址嗎?MOVA,DPLCJNEA,75H,END1CLR ESCLR RT1CLR TR1POP APOP DPHPOP DPL

RETIEND1:INC 77HMOVA,77HJNZ END2INC 78HEND2:SJMP ESCOM串行口方式3應(yīng)用編程(雙機(jī)通信)【例7.4】

下面程序中,T1作為波特率發(fā)生器,選擇為方式2.串行口選擇工作方式3進(jìn)行發(fā)送和接收.甲機(jī)用查詢方式發(fā)地址,中斷方式發(fā)數(shù)據(jù).已機(jī)接收采用中斷方式.甲機(jī)使用晶振為6MHZ,波特率2400b/s.甲機(jī)發(fā)送程序:甲機(jī)首先發(fā)送地址,該地址高位存放在78H中,低位存放在77H中,然后發(fā)送00H,01H,02H,…,FEH,共255個(gè)數(shù)據(jù),最后結(jié)束.

ORG 0000HLJMP TRANSORG 0023HLJMP SINTORG 0100HTRANS:MOV A,#20HMOV TMOD,AMOV TL1,#F3HMOV TH1,#F3HMOV PCON,#80H

SETB EACLR ESCLR ET1SETB TR1MOV SCON,#0E0HSETB TB8MOV SBUF,78HWAIT1:JNB TI,WAIT1CLR TIMOV SBUF,#77H

MOVIE,#90HCLR TB8MO

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論