版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、4.3 串行通信接口 4.3.1 串行通信的根本知識(shí) 1.并行通信與串行通信在實(shí)際應(yīng)用中,不但計(jì)算機(jī)與外部設(shè)備之間常常要進(jìn)行信息交換,而且計(jì)算機(jī)之間也需要交換信息,所有這些信息的交換均稱為“通信。 通信的根本方式分為并行通信和串行通信兩種。并行通信是構(gòu)成1組數(shù)據(jù)的各位同時(shí)進(jìn)行傳送,例如8位數(shù)據(jù)或16位數(shù)據(jù)并行傳送。其特點(diǎn)是傳輸速度快,但當(dāng)距離較遠(yuǎn)、位數(shù)又多時(shí)導(dǎo)致了通信線路復(fù)雜且本錢高。1串行通信是數(shù)據(jù)一位接一位地順序傳送。其特點(diǎn)是通信線路簡(jiǎn)單,只要一對(duì)傳輸線就可以實(shí)現(xiàn)通信(如 線),從而大大地降低了本錢,特別適用于遠(yuǎn)距離通信。缺點(diǎn)是傳送速度慢。圖410為以上兩種通信方式的示意圖。由圖410可知
2、,假設(shè)并行傳送N位數(shù)據(jù)所需時(shí)間為T,那么串行傳送的時(shí)間至少為NT,實(shí)際上總是大于NT的。 2 圖410通信的兩種根本方式(a)并行通信; (b)串行通信3 串行通信可分為異步傳送和同步傳送兩種根本方式。 1)異步傳送方式 異步傳送的特點(diǎn)是數(shù)據(jù)在線路上的傳送不連續(xù)。在傳送時(shí),數(shù)據(jù)是以一個(gè)字符為單位進(jìn)行傳送的。它用一個(gè)起始位表示字符的開始,用停止位表示字符的結(jié)束。異步傳送的字符格式如圖411(a)所示。4 一個(gè)字符由起始位、數(shù)據(jù)位、奇偶校驗(yàn)位和停止位4個(gè)局部組成(一幀數(shù)據(jù))。起始位為0信號(hào)占1位;其后接著的就是數(shù)據(jù)位,它可以是5位、6位、7位或8位,傳送時(shí)低位在先、高位在后;再后面的1位為奇偶校驗(yàn)
3、位,可要也可以不要;最后是停止位,它用信號(hào)1來表示字符的結(jié)束,可以是1位、1位半或2位。5 圖411串行異步傳送的字符格式(a)字符格式; (b)有空閑位的字符格式 6 例如,采用串行異步通信方式傳送ASCII碼字符5,規(guī)定為7位數(shù)據(jù)位,1位偶校驗(yàn)位,1位停止位,無空閑位。 由于5的ASCII碼為35H,其對(duì)應(yīng)7位數(shù)據(jù)位為0110101,如按低位在前、高位在后順序排列應(yīng)為1010110。前面加1位起始位,后面配上偶校驗(yàn)位1位0,最后面加1位停止位1,因此傳送的字符格式為0101011001,其對(duì)應(yīng)的波形如圖412所示。7圖412 傳送ASCII碼字符5的波形圖 8 在串行異步傳送中,CPU與外
4、設(shè)之間事先必須約定(協(xié)議):字符格式。 雙方要事先約定字符的編碼形式、奇偶校驗(yàn)形式及起始位和停止位的規(guī)定。例如用ASCII碼通信,有效數(shù)據(jù)為7位,加1個(gè)奇偶校驗(yàn)位、1個(gè)起始位和1個(gè)停止位共10位。當(dāng)然停止位也可大于1位。 波特率(Baudrate)。 波特率就是數(shù)據(jù)的傳送速率,即每秒鐘傳送的二進(jìn)制位數(shù),單位為位/秒。它與字符的傳送速率(字符/秒)之間存在如下關(guān)系:波特率=(位/字符)(字符/秒)=位/秒 要求發(fā)送端與接收端的波特率必須一致。9例如,假設(shè)字符傳送的速率為120字符/秒,而每1個(gè)字符為10位,那么傳送的波特率為 10位/字符120字符/秒=1200位/秒=1200波特 每1位二進(jìn)制
5、位的傳送時(shí)間Td就是波特率的倒數(shù),例如上例中 Td=1/1200=0.833ms2) 同步傳送 在異步傳送中,每1個(gè)字符都要用起始位和停止位作為字符開始和結(jié)束的標(biāo)志,占用了一定的時(shí)間。為了提高傳送速度,有時(shí)就去掉這些標(biāo)志,而采用同步傳送,即1次傳送1組數(shù)據(jù)。在這1組數(shù)據(jù)的開始處要用同步字符SYN來加以指示,如圖413所示。10 圖413 同步傳送 11 2.數(shù)據(jù)傳送方向串行通信的數(shù)據(jù)傳送方向有3種形式。 (1)單工方式。 如圖414(a)所示,A端為發(fā)送站,B端為接收站,數(shù)據(jù)僅能從A站發(fā)至B站。 (2)半雙工方式。 如圖414(b)所示,數(shù)據(jù)既可從A站發(fā)送到B站,也可以由B站發(fā)送到A站。不過在
6、同一時(shí)間只能作1個(gè)方向的傳送。 (3)全雙工方式。 如圖414(c)所示,每個(gè)站(A、B)既可同時(shí)發(fā)送,也可同時(shí)接收。 12 圖514串行通信的三種方式(a)單工方式;(b)半雙工方式;(c)全雙工方式單工方式半雙方式全雙工方式13 3.信號(hào)的調(diào)制和解調(diào) 計(jì)算機(jī)通信是1種數(shù)字信號(hào)的通信,如圖415所示。 它要求傳送線的頻帶很寬,而在長(zhǎng)距離通訊時(shí),通常是利用 線來傳送的,該線不可能有這樣寬的頻帶。如果用數(shù)字信號(hào)經(jīng)過傳送線直接通訊,信號(hào)就會(huì)畸變,如圖416所示。圖415 通訊信號(hào)示意圖 14圖516 數(shù)字信號(hào)通過電話線傳送產(chǎn)生的畸變15 因此要在發(fā)送端用調(diào)制器(Modulator)把數(shù)字信號(hào)轉(zhuǎn)換為
7、模擬信號(hào),在接收端用解調(diào)器(Demodulator)檢測(cè)此模擬信號(hào),再把它轉(zhuǎn)換成數(shù)字信號(hào),如圖417所示。 FSK(Frequency Shift Keying)是1種常用的調(diào)制方法,它把數(shù)字信號(hào)的“1與“0調(diào)制成不同頻率的模擬信號(hào),其工作原理如圖418所示。 圖417 調(diào)制與解調(diào)示意圖 16圖418 FSK調(diào)制法原理圖 17 4.數(shù)據(jù)終端與調(diào)制器的接口調(diào)制后的信號(hào)與數(shù)據(jù)終端連接時(shí),經(jīng)常使用EIARS-232C接口。它是目前最常用的1種串行通信接口。這是1種有25(或9個(gè))個(gè)管腳的D型連接器,不但它的每一個(gè)管腳的規(guī)定是標(biāo)準(zhǔn)的,而且對(duì)各種信號(hào)的電平規(guī)定也是標(biāo)準(zhǔn)的,因而便于互相連接。其最根本的最常
8、用的信號(hào)規(guī)定如圖419所示。 18圖419 RS-232C的引腳圖 19 其次,標(biāo)準(zhǔn)的另1個(gè)重要的含義是這些信號(hào)的電氣性能也是標(biāo)準(zhǔn)的。對(duì)各種信號(hào)的規(guī)定如下: (1) 在TXD和RXD線上: MARK(即表示為1)=-3-25V SPACE(即表示為0)=+3+25V (2)在 等線上: ON=+3+25V OFF=-3-25V20圖420 接收器和發(fā)送器電路 21 4.3.2 51系列單片機(jī)的串行接口 51系列單片機(jī)內(nèi)部有1個(gè)功能很強(qiáng)的全雙工串行口,可同時(shí)發(fā)送和接收數(shù)據(jù)。它有4種工作方式,可供不同場(chǎng)合使用。波特率可由軟件設(shè)置,通過片內(nèi)的定時(shí)器/計(jì)數(shù)器產(chǎn)生。接收、發(fā)送均可工作在查詢方式或中斷方式
9、,使用十分靈活。MCS-51的串行口除了用于數(shù)據(jù)通信外,還可以非常方便地構(gòu)成1個(gè)或多個(gè)并行輸入/輸出口,或作串并轉(zhuǎn)換,用來驅(qū)動(dòng)鍵盤與顯示器。22圖422 51單片機(jī)串行口的原理結(jié)構(gòu)圖 231.串行接口的特殊功能存放器 1) 串行口數(shù)據(jù)緩沖器SBUF接收緩沖器SBUF發(fā)送緩沖器SBUF SBUF是兩個(gè)在物理上獨(dú)立的接收、發(fā)送緩沖器,可同時(shí)發(fā)送、接收數(shù)據(jù)。兩個(gè)緩沖器只用一個(gè)字節(jié)地址99H,可通過指令對(duì)SBUF的讀寫來區(qū)別是對(duì)接收緩沖器的操作還是對(duì)發(fā)送緩沖器的操作。CPU寫SBUF,就是寫發(fā)送緩沖器;讀SBUF,就是讀接收緩沖器。串行口對(duì)外也有兩條獨(dú)立的收、發(fā)信號(hào)線RXD(P3.0)和TXD(P3.
10、1),因此可以同時(shí)發(fā)送、接收數(shù)據(jù),實(shí)現(xiàn)全雙工傳送。24 2) 串行口控制存放器SCON SCON存放器用來控制串行口的工作方式和狀態(tài),它可以是位尋址。在復(fù)位時(shí)所有位被清0,字地址為98H。SCON的格式為 RITIRB8TB8RENSM2SM1SM0 D7 D6 D5 D4 D3 D2 D1 D0 SM0、SM1:串行口工作方式選擇位(具體內(nèi)容參閱工作方式一節(jié))。25SM2:多機(jī)通信控制位。主要用于工作方式2和方式3。在方式2和方式3中,如SM2=1,則接收到的第9位數(shù)據(jù)(RB8)為0時(shí)不啟動(dòng)接收中斷標(biāo)志RI(即RI=0),并且將接收到的前8位數(shù)據(jù)丟棄;RB8為1時(shí),才將接收到的前8位數(shù)據(jù)送入
11、SBUF,并置位RI產(chǎn)生中斷請(qǐng)求。當(dāng)SM2=0時(shí),則不管第9位數(shù)據(jù)為0或1,都將前8位數(shù)據(jù)裝入SBUF中,并產(chǎn)生中斷請(qǐng)求。在方式0時(shí),SM2必須為0。REN:允許串行接收控制位。假設(shè)REN=0,則禁止接收;假設(shè)REN=1,則允許接收。該位由軟件置位或復(fù)位。26TB8:發(fā)送數(shù)據(jù)位8。在方式2和方式3時(shí),TB8為所要發(fā)送的第9位數(shù)據(jù)。在多機(jī)通信中,以TB8位的狀態(tài)表示主機(jī)發(fā)送的是地址還是數(shù)據(jù):TB8=0為數(shù)據(jù),TB8=1為地址;也可用作數(shù)據(jù)的奇偶校驗(yàn)位。該位由軟件置位或復(fù)位。RB8:接收數(shù)據(jù)位8。TI:發(fā)送中斷標(biāo)志位。 在方式0時(shí),當(dāng)發(fā)送到的第8位結(jié)束后,由內(nèi)部硬件使TI置位,向CPU請(qǐng)求中斷。在
12、其它方式時(shí),在發(fā)送到停止位開始時(shí)由硬件置位TI,必須在響應(yīng)中斷后,由軟件使其復(fù)位。TI也可供軟件查詢使用。27 RI:接收中斷標(biāo)志位。在方式0時(shí),當(dāng)接收到的第8位結(jié)束后,由內(nèi)部硬件使RI置位,向CPU請(qǐng)求中斷。在其它方式時(shí),接收到停止位的中間便由硬件置位RI,同樣,也必須在響應(yīng)中斷后,由軟件使其復(fù)位。RI也可供軟件查詢使用。 3)特殊功能存放器PCON PCON主要是電源控制而設(shè)置的專用存放器,單元地址為87H,不能位尋址。其內(nèi)容如下:IDLPDGF0GF1SMOD D7 D6 D5 D4 D3 D2 D1 D0 PCON 87H 28最高位SMOD為串行口波特率系數(shù)控制位,當(dāng)SMOD=1時(shí),
13、方式1、2、3的波特率加倍。2.串行接口的工作方式串行口有4種工作方式,它是由SCON中的SM0、SM1來定義的,如表45所示。表45 串行口的工作方式 29 1)方式0 串行接口的工作方式0為8位的同步移位存放器方式,其波特率是固定的,為fosc(振蕩頻率)的1/12。用于擴(kuò)展并行I/O接口,一幀8位,無起始位和停止位。 方式0發(fā)送: 數(shù)據(jù)從RXD引腳串行輸出,TXD(P3.1)引腳輸出同步脈沖。當(dāng)1個(gè)數(shù)據(jù)寫入串行口發(fā)送緩沖器時(shí),串行口將8位數(shù)據(jù)以fosc/12的固定波特率從RXD引腳輸出,從低位到高位。發(fā)送完后置中斷標(biāo)志TI為1,呈中斷請(qǐng)求狀態(tài),在再次發(fā)送數(shù)據(jù)之前,必須用軟件將TI清0。
14、30 發(fā)送時(shí)序?qū)懭隨BUFRXD輸出TXDTID0D1D2D3D4D5D6D7寫REN=1RI=0RXD輸入RI 接收時(shí)序(a)(b)圖423 串行口方式0的發(fā)送、接收時(shí)序圖 31 方式0接收 在滿足REN=1和RI=0的條件下,串行口處于方式0輸入。此時(shí),RXD為數(shù)據(jù)輸入端,TXD為同步信號(hào)輸出端,接收器也以fosc/12的波特率采樣RXD引腳輸入的數(shù)據(jù)信息。當(dāng)接收器接收完8位數(shù)據(jù)后,置中斷標(biāo)志RI=1請(qǐng)求中斷,在再次接收之前,必須用軟件將RI清0。32 在方式0工作時(shí),必須使SCON存放器中的SM2位為“0。方式0發(fā)送或接收完8位數(shù)據(jù)后由硬件置位TI或RI中斷請(qǐng)求標(biāo)志,CPU在響應(yīng)中斷后要
15、用軟件去除TI或RI標(biāo)志。假設(shè)串行口要作為并行口輸入輸出擴(kuò)展,這時(shí)必須設(shè)置“串入并出“或并入串出的移位存放器來配合使用(如CD4094或CD4014等)。例如將串行口作為并行輸出口使用時(shí),可采用如圖423、24所示的方法。33圖423 一種串行轉(zhuǎn)換為并行的方法 34圖424 一種串行轉(zhuǎn)換為并行的方法 35 2) 方式1 在方式1時(shí),串行口被設(shè)置為波特率可變的8位異步通信接口。 方式1發(fā)送: 串行口以方式1發(fā)送時(shí),數(shù)據(jù)位由TXD端輸出,發(fā)送1幀信息為10位,其中1位起始位、8位數(shù)據(jù)位(先低位后高位)和一個(gè)停止位“1。CPU執(zhí)行1條數(shù)據(jù)寫入發(fā)送緩沖器SBUF的指令(如指令MOV SBUF,A),就
16、啟動(dòng)發(fā)送器發(fā)送。當(dāng)發(fā)送完數(shù)據(jù),就置中斷標(biāo)志TI為1。方式1所傳送的波特率取決于定時(shí)器T1的溢出率和特殊功能存放器PCON中SMOD的值,即方式1的波特率=(2SMOD /32)定時(shí)器T1的溢出率。36 方式1接收: 數(shù)據(jù)從RXD端輸入。當(dāng)允許輸入位REN置1后,接收器便以波特率的16倍速率采樣RXD端電平,當(dāng)采樣到1至0的跳變時(shí),啟動(dòng)接收器接收,并復(fù)位內(nèi)部的16分頻計(jì)數(shù)器,以實(shí)現(xiàn)同步。計(jì)數(shù)器的16個(gè)狀態(tài)把1位時(shí)間等分成16份,并在第7、8、9個(gè)計(jì)數(shù)狀態(tài)時(shí),采樣RXD電平。因此,每一位的數(shù)值采樣三次,至少兩次相同的值才被確認(rèn)。在起始位,如果接收到的值不是0,則起始位無效,復(fù)位接收電路。在檢測(cè)到一
17、個(gè)1到0的跳變時(shí),再重新啟動(dòng)接收器,如果接收值為0,起始位有效,則開始接收本幀的其余信息。在RI=0的情況下,接收到停止位為1時(shí)(或SM2=0) ,將停止位送入RB8,8位數(shù)據(jù)進(jìn)入接收緩沖器SBUF,并置RI=1中斷標(biāo)志。37在方式1的能將接收的數(shù)據(jù)送入接收數(shù)據(jù)緩沖器SBUF和RB8,且置位RI的條件是:(1)RI=0;(2)SM2=0或接收到的停止位=1。以上兩個(gè)條件任一條件不滿足,將不可恢復(fù)地喪失所接收到的這一幀數(shù)據(jù)。在同時(shí)滿足RI=0;SM2=0或接收到的停止位=1兩個(gè)條件時(shí),接收數(shù)據(jù)有效,實(shí)現(xiàn)裝載SBUF、RB8及RI置1。接收一幀之后,不管上述兩個(gè)條件是否滿足,接收控制器再次采樣RX
18、D的負(fù)跳變,以便接收下一幀數(shù)據(jù)。 383)方式2、3 串行口工作在方式2、3時(shí),為9位異步通信口,發(fā)送、接收一幀信息由11位組成:即起始位1位(0)、數(shù)據(jù)8位(低位在先)、1位可編程位(第9位)和1位停止位(1)。發(fā)送時(shí),可編程位(TB8)可設(shè)置0或1,接收時(shí),可編程位送入SCON中的RB8。方式2、3的區(qū)別在于:方式2的波特率為fosc/32或fosc/64,即fosc/(64/2smod)。而方式3的波特率可變。附加的第9位數(shù)據(jù)為SCON中的TB8,它由軟件置位或清0,可作為多機(jī)通信中地址/數(shù)據(jù)信息的標(biāo)志位,也可作為數(shù)據(jù)的奇偶校驗(yàn)位。39發(fā)送:CPU執(zhí)行一條寫入SBUF的指令后,便立即啟動(dòng)
19、發(fā)送器發(fā)送,送完一幀住信息時(shí),置中斷標(biāo)志TI=1。其時(shí)序如圖a 所示。40接收:與方式1類似。當(dāng)REN=1時(shí),CPU開始不斷地對(duì)RXD采樣,采樣速率為波特率的16倍,當(dāng)檢測(cè)到負(fù)跳變后啟動(dòng)接收器,位檢測(cè)器對(duì)每位采集3個(gè)值,用采3取2的方法來確定每位狀態(tài)。當(dāng)采至最后一位時(shí),將8位數(shù)據(jù)裝入SBUF,第9位數(shù)據(jù)裝入RB8并置RI=1。其時(shí)序如圖b所示。 同樣,方式2、3中能將接收的數(shù)據(jù)送入接收數(shù)據(jù)緩沖器SBUF和RB8,且置位RI的條件是:(1)RI=0;(2)SM2=0或接收到的第9位 =1。413.串行通信的波特率串行通信的4種工作方式對(duì)應(yīng)著3種波特率。(1)對(duì)于方式0,波特率是固定的,為單片機(jī)時(shí)
20、鐘的十二分之一,即fosc/12。 (2)對(duì)于方式2,波特率有兩種可供選擇,即fosc/32和fosc/64。對(duì)應(yīng)于以下公式:42 (3)對(duì)于方式1和方式3,波特率都由定時(shí)器T1的溢出率來決定,對(duì)應(yīng)于以下公式:波特率=(2SMOD /32)(定時(shí)器T1的溢出率) 而定時(shí)器T1的溢出率則和所采用的定時(shí)器工作方式有關(guān),并可用以下公式表示:定時(shí)器T1的溢出率=fosc/(12(2n-X) 其中X為定時(shí)器T1的計(jì)數(shù)初值,n為定時(shí)器T1的位數(shù),對(duì)于定時(shí)器方式0,取n=13;對(duì)于定時(shí)器方式1,取n=16;對(duì)于定時(shí)器方式2、3,取n=8。43 表46 常用波特率和定時(shí)器T1初值 444.4.2 多機(jī)通信方式
21、2、3中能將接收的數(shù)據(jù)送入接收數(shù)據(jù)緩沖器SBUF和RB8,且置位RI的條件是:(1)RI=0;(2)SM2=0或(SM2=1和接收到的第9位 =1。)利用這一特點(diǎn)可用于多機(jī)通信中45多機(jī)通信的過程:系統(tǒng)初始化時(shí),將所有從機(jī)的SM2均置1,并處于允許串行口(中斷)接收的狀態(tài)。對(duì)于主機(jī):主機(jī)欲與某從機(jī)通信,先向所有從機(jī)發(fā)出從機(jī)的地址,接著才發(fā)送命令或數(shù)據(jù)。在主機(jī)發(fā)送地址時(shí),置第9位數(shù)據(jù)(TB8)為1,表示主機(jī)發(fā)送的是地址幀;然后將第9位數(shù)據(jù)(RB8)清0,再發(fā)送命令或數(shù)據(jù)。對(duì)于從機(jī):由于SM2=1,所有將響應(yīng)主機(jī)發(fā)來的第9位數(shù)據(jù)(RB8)為1的地址信息。假設(shè)從機(jī)接收的地址與本從機(jī)的地址相同,則地址
22、相同的從機(jī)將SM2置0,繼續(xù)接收主機(jī)送來的命令或數(shù)據(jù)。假設(shè)從機(jī)的地址與主機(jī)送來地址不相同,則該從機(jī)SM2繼續(xù)為1,不接收主機(jī)送來的命令或數(shù)據(jù)。46 4.4.3 串行通信應(yīng)用舉例 串行口方式1和方式3都是異步通信方式,方式1為8位數(shù)據(jù)位,方式3為9位數(shù)據(jù)位,兩種方式的波特率都是受定時(shí)器T1的溢出率控制。在用方式1或方式3實(shí)現(xiàn)串行異步通信時(shí),初始化程序要設(shè)定串行口的工作方式,并對(duì)定時(shí)器T1實(shí)現(xiàn)初始化,即設(shè)定定時(shí)器方式和定時(shí)器初值。此外,還要編寫發(fā)送子程序和接收子程序。47 例1:串行口按雙工方式收發(fā)ASCII碼字符,最高1位用來作奇偶校驗(yàn)位,采用奇校驗(yàn)方式,要求傳送的波特率為1200波特。假設(shè)發(fā)送
23、緩沖區(qū)首址為20H,長(zhǎng)度為10H;接收緩沖區(qū)首址為40H,時(shí)鐘頻率fosc=6MHz,試編寫有關(guān)的通信程序。 解:7位ASCII碼加1位奇校驗(yàn)共8位數(shù)據(jù),故可采用串行口工作方式1。51單片機(jī)的奇偶校驗(yàn)位P是當(dāng)累加器A中“1的個(gè)數(shù)為奇數(shù)時(shí)P=1;為偶數(shù)時(shí)P=0。如果直接把P的值放入ASCII碼的最高位(奇偶校驗(yàn)位),恰好成了偶校驗(yàn),與要求不符。因此要把P值取反后再放入ASCII碼的最高位,才是要求的奇校驗(yàn)。 48定時(shí)器T1采用工作方式2,可以防止計(jì)數(shù)溢出后用軟件重裝定時(shí)初值。先計(jì)算定時(shí)器T1的初值,取SMOD=0,可算出: 定時(shí)器T1的溢出率=波特率32/2SMOD =120032/20 =38
24、400然后:定時(shí)器T1的溢出率=fosc/(12(2n-X) 可求出其對(duì)應(yīng)的計(jì)數(shù)初值為 X=2n-(fosc/T1的溢出率12) =28-(6106/3840012) =243=0F3H (TH1)=0F3H,(TL1)=0F3H確定特殊功能存放器SCON的值:SM0、SM1=01時(shí)為方式1,在SM2=0和REN=1條件下,允許接收數(shù)據(jù),其余各位均取0。則 SCON=01010000B=50H 49圖424 全雙工串行連接圖50 對(duì)于PCON: 于SMOD=0,所以PCON=00H(同系統(tǒng)復(fù)位以后的狀態(tài),可不賦值)。 對(duì)于TMOD: 由于只用T1,且為定時(shí)方式2,所以 TMOD=0010000
25、0B=20H 主程序: MOV TMOD,20H ;定時(shí)器T1設(shè)為方式2 MOV TL1,0F3H ;裝入定時(shí)器初值 MOV TH1,0F3H ;8位重裝值51SETB TR1 ;啟動(dòng)定時(shí)器T1MOV SCON,50H ;串行口設(shè)為方式1;REN=1MOV R0,20H ;發(fā)送緩沖區(qū)首址MOV R1,40H ;接收緩沖區(qū)首址SETB EA ;開中斷SETB ES ;允許串行口中斷LCALL SOUT ;先輸出1個(gè)字符SJMP $ ;等待中斷 52中斷效勞程序: ORG 0023H ;串行中斷入口 LJMP SBR1 ;轉(zhuǎn)至中斷效勞程序SBR1: JNB R1,SEND ;不是接收則轉(zhuǎn) LCAL
26、L SIN ;是接收,則調(diào)用接收子程序 SJMP NEXT ;轉(zhuǎn)至統(tǒng)一出口SEND: LCALL SOUT ;是發(fā)送,則調(diào)用發(fā)送子程序NEXT: RETI ;中斷返回 53發(fā)送子程序: SOUT:MOV A,R0 ;取發(fā)送數(shù)據(jù)到A MOV C,P ;奇偶校驗(yàn)位賦于C CPL C;奇校驗(yàn) MOV A.7,C ;送入ASCII碼最高位中MOV SBUF,A ;發(fā)送數(shù)據(jù) INC R0 ;修改發(fā)送數(shù)據(jù)指針CJNE R0,#30H,S01MOV R0,#20HS01: CLR TI ;清發(fā)送中斷標(biāo)志 RET ;返回54接收子程序: SIN: MOV A,SUBF ;讀入接收緩沖區(qū)內(nèi)容 MOV C,P ;
27、取出奇偶校驗(yàn)位 CPL C ;奇校驗(yàn)應(yīng)該為0 ANL A,7FH ;刪去奇偶校驗(yàn)位 MOV R1,A ;存入接收緩沖區(qū) INC R1 ;修改接收緩沖區(qū)指針 CJNE R1,#50H,S02S02: MOV R1,#40H CLR RI ;清接收中斷標(biāo)志 RET ;返回55 例2:設(shè)有如圖424所示的甲、乙兩臺(tái)單片機(jī),以工作方式2、全雙工串行通信、每幀為11位、可程控的第9位數(shù)據(jù)位用于奇偶校驗(yàn)的補(bǔ)偶位(偶校驗(yàn))。編出能實(shí)現(xiàn)如下功能的程序:甲機(jī):每發(fā)送1幀信息,乙機(jī)對(duì)接收的每幀數(shù)據(jù)進(jìn)行奇偶校驗(yàn),假設(shè)補(bǔ)偶正確,則乙機(jī)向甲機(jī)發(fā)出“數(shù)據(jù)發(fā)送正確的信息(例中以00H作為答復(fù)信號(hào)),甲機(jī)接收到該答復(fù)信號(hào)后再
28、發(fā)送下1字節(jié);假設(shè)奇偶校驗(yàn)錯(cuò),則乙機(jī)發(fā)出“數(shù)據(jù)發(fā)送不正確的信息(例中以AAH作為答復(fù)信號(hào))給甲機(jī),要求甲機(jī)再次發(fā)送原數(shù)據(jù),直至發(fā)送正確。甲機(jī)發(fā)送128個(gè)字節(jié)后就停止發(fā)送。 56 乙機(jī):接收甲機(jī)發(fā)送來的數(shù)據(jù)并進(jìn)行奇偶校驗(yàn),與此同時(shí)發(fā)出相應(yīng)的答復(fù)信息(即00H或AAH),直到接收完128個(gè)字節(jié)為止。 解:能實(shí)現(xiàn)上述通信要求的甲、乙機(jī)的流程圖如圖425所示。57 圖525雙工串行口應(yīng)答式通信流程圖 (a)甲機(jī)發(fā)送流程圖; (b)乙機(jī)發(fā)送流程圖 58 圖525雙工串行口應(yīng)答式通信流程圖(a)甲機(jī)發(fā)送流程圖; (b)乙機(jī)發(fā)送流程圖 59 相應(yīng)的程序如下:甲機(jī)主程序: ORG 0000H LJMP MAI
29、NT ;轉(zhuǎn)至主程序入口處 ORG 0023H ;串行中斷入口 LJMP INTSE1 ;轉(zhuǎn)至中斷效勞程序 ORG 0030H60MAINT: MOV PCON,00H ;波特率不加倍 MOV SCON,90H ;置工作方式2并允許接收 MOV DPTR,ADDR1 ;置數(shù)據(jù)塊指針 MOV R0,80H ;設(shè)置發(fā)送字節(jié)數(shù)初值 SETB EA ;CPU開中斷 SETB ES ;允許串行口中斷 MOVX A,DPTR ;取第1個(gè)發(fā)送數(shù)據(jù) MOV C,P ;奇偶標(biāo)志位送C MOV TB8,C ;奇偶標(biāo)志位送TB8 MOV SUBF,A ;發(fā)送數(shù)據(jù) SJMP $ ;等待中斷61中斷效勞程序:INTSE1: JB RI,LOOP1 ;檢測(cè)是否接收口中斷,是則轉(zhuǎn) CLR TI ;是發(fā)送中斷,則先去除該標(biāo)志 SJMP ENDT1 ;轉(zhuǎn)至ENDT1處LOOP1:CLR RI ;是接收中斷,則先去除該標(biāo)志 MOV A,SBUF ;取乙機(jī)的應(yīng)答信息 CJNE A,00H,LOOP2 ;發(fā)送不正確轉(zhuǎn) INC DPTR ;修改地址指針
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024隗蓉與科技公司關(guān)于專利授權(quán)的合同
- 2025年度水電工程財(cái)務(wù)審計(jì)與稅務(wù)籌劃合同匯編4篇
- 2025年度學(xué)校宿舍窗簾定制、安裝與售后保障合同4篇
- 2025年度夜間社區(qū)文化活動(dòng)安全保衛(wèi)打更服務(wù)協(xié)議范本4篇
- 基于2025年度標(biāo)準(zhǔn)的招投標(biāo)合同管理與合同糾紛預(yù)防3篇
- 二零二五年度校園食堂承包與營(yíng)養(yǎng)改善計(jì)劃合同4篇
- 2025年度存款居間擔(dān)保金融科技研發(fā)合同4篇
- 2025年度窗簾設(shè)計(jì)專利授權(quán)與使用合同范本3篇
- 2024美發(fā)店勞務(wù)合同范本
- 二零二五年度銷售代理合同:西瓜銷售代理與分銷商之間的權(quán)利義務(wù)規(guī)定3篇
- 漆畫漆藝 第三章
- CB/T 615-1995船底吸入格柵
- 光伏逆變器一課件
- 貨物供應(yīng)、運(yùn)輸、包裝說明方案
- (完整版)英語高頻詞匯800詞
- 《基礎(chǔ)馬來語》課程標(biāo)準(zhǔn)(高職)
- IEC61850研討交流之四-服務(wù)影射
- 《兒科學(xué)》新生兒窒息課件
- 材料力學(xué)壓桿穩(wěn)定
- 人教版小升初英語知識(shí)點(diǎn)匯總
- 靜態(tài)爆破專項(xiàng)施工方案
評(píng)論
0/150
提交評(píng)論