第06章單片機(jī)串行通信系統(tǒng)_第1頁(yè)
第06章單片機(jī)串行通信系統(tǒng)_第2頁(yè)
第06章單片機(jī)串行通信系統(tǒng)_第3頁(yè)
第06章單片機(jī)串行通信系統(tǒng)_第4頁(yè)
第06章單片機(jī)串行通信系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩47頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、授課教師:左敬龍授課教師:左敬龍電話:電話:1382868066013828680660短號(hào):短號(hào):6801268012郵箱:郵箱:?jiǎn)纹瑱C(jī)原理及應(yīng)用單片機(jī)原理及應(yīng)用單片機(jī)串行通信系統(tǒng)單片機(jī)串行通信系統(tǒng)串行通信接口概述串行通信接口概述1 1串行通信工作方式串行通信工作方式3 3串行通信波特率設(shè)置串行通信波特率設(shè)置4 4串行通信應(yīng)用舉例串行通信應(yīng)用舉例5 5串行通信接口概述串行通信接口概述1 1串行通信接口串行通信接口2 2 串行通信優(yōu)點(diǎn):便于長(zhǎng)距離傳送 缺點(diǎn):傳送速度較慢計(jì)算機(jī)與外界信息交換稱為通信。通信的基本方式可分為并行通信和串行通信:并行通信是數(shù)據(jù)的各位同時(shí)發(fā)送或同時(shí)接收;串行通信是數(shù)據(jù)的

2、各位依次逐位發(fā)送或接收。并行通信優(yōu)點(diǎn):傳送速度快 缺點(diǎn):不便長(zhǎng)距離傳送一、串行通信接口概述一、串行通信接口概述串行通信按同步方式可分為異步通信和同步通信。串行通信的通信方式異步通信是指發(fā)送方和接收方采用獨(dú)立的時(shí)鐘,即雙方?jīng)]有一個(gè)相同的參考時(shí)鐘作為基準(zhǔn)。在同步通信中,每個(gè)數(shù)據(jù)塊的開頭以同步字符SYN加以指示,使發(fā)送與接受雙方取得同步。數(shù)據(jù)塊的各字符之間沒有起始位和停止位,提高了通信的速度。但為了能保持同步傳送,在同步通信中須用一個(gè)時(shí)鐘來協(xié)調(diào)收發(fā)器的工作,這就增加了設(shè)備的復(fù)雜性。 ) )字符格式字符格式雙方要事先約定字符的編碼形式、奇偶校驗(yàn)形式及起始位和停止位的規(guī)定。雙方要事先約定字符的編碼形式、

3、奇偶校驗(yàn)形式及起始位和停止位的規(guī)定。例如用例如用ASCIIASCII碼通信,有效數(shù)據(jù)為碼通信,有效數(shù)據(jù)為7 7位,加一個(gè)奇偶校驗(yàn)位、一個(gè)起始位和一位,加一個(gè)奇偶校驗(yàn)位、一個(gè)起始位和一個(gè)停止位共個(gè)停止位共1010位。位。 ) )波特率波特率波特率就是數(shù)據(jù)的傳送速率,即每秒鐘傳送的二進(jìn)制位數(shù),單位為位波特率就是數(shù)據(jù)的傳送速率,即每秒鐘傳送的二進(jìn)制位數(shù),單位為位/ /秒。秒。它與字符的傳送速率它與字符的傳送速率( (字符字符/ /秒秒) )之間有以下關(guān)系:之間有以下關(guān)系:波特率波特率=1=1個(gè)字符的二進(jìn)制編碼位數(shù)個(gè)字符的二進(jìn)制編碼位數(shù)字符字符/ /秒秒注:在異步通信中,通信雙方必須事先約定字符格式和

4、波特率注:在異步通信中,通信雙方必須事先約定字符格式和波特率) )串行通信的三種數(shù)據(jù)傳輸模式串行通信的三種數(shù)據(jù)傳輸模式(1)單工方式:數(shù)據(jù)僅按一個(gè)固定方向傳送。常用于串行口的打印數(shù)據(jù)傳輸與簡(jiǎn)單系統(tǒng)間的數(shù)據(jù)采集。 ()半雙工方式:使用同一根傳輸線,數(shù)據(jù)可雙向傳送,但不能同時(shí)進(jìn)行,實(shí)際應(yīng)用中采用某種協(xié)議實(shí)現(xiàn)收/發(fā)開關(guān)轉(zhuǎn)換。 ()全雙工方式:數(shù)據(jù)的發(fā)送和接收可同時(shí)進(jìn)行,通信雙方都能在同一時(shí)刻進(jìn)行發(fā)送和接收操作,但一般全雙工傳輸方式的線路和設(shè)備比較復(fù)雜。 發(fā)送端接受端數(shù)據(jù)線地線單工知式發(fā)送/接收端接收/發(fā)送端數(shù)據(jù)線地線半雙工制式發(fā)送/接收器接收/發(fā)送端數(shù)據(jù)線地線全雙工方式單片機(jī)串行通信系統(tǒng)單片機(jī)串行通

5、信系統(tǒng)串行通信接口概述串行通信接口概述1 1串行通信工作方式串行通信工作方式3 3串行通信波特率設(shè)置串行通信波特率設(shè)置4 4串行通信應(yīng)用舉例串行通信應(yīng)用舉例5 5串行通信接口串行通信接口2 2串行通信接口串行通信接口2 2 80C5180C51系列單片機(jī)有系列單片機(jī)有一個(gè)一個(gè)全雙工全雙工的串行口,的串行口,這個(gè)口既可以用于網(wǎng)絡(luò)通信,也可以實(shí)現(xiàn)串行異這個(gè)口既可以用于網(wǎng)絡(luò)通信,也可以實(shí)現(xiàn)串行異步通信,還可以作為同步移位寄存器使用。步通信,還可以作為同步移位寄存器使用。二、二、80C5180C51串行通信接口串行通信接口指令清指令清0 RI/TI波特率發(fā)生器下降沿表示“0”起始位開始波特率因子:16

6、波特率加倍80C5180C51串行通信接口串行通信接口 發(fā)送時(shí),只需將發(fā)送數(shù)據(jù)輸入SBUF,CPU將自動(dòng)啟動(dòng)和完成串行數(shù)據(jù)的發(fā)送; 接收時(shí),CPU將自動(dòng)把接收到的數(shù)據(jù)存入SBUF,用戶只需從SBUF中讀出接收數(shù)據(jù)。串行口特殊功能寄存器1、串行數(shù)據(jù)緩沖器SBUF 在邏輯上只有一個(gè),既表示發(fā)送寄存器,又表示接收寄存器,具有同一個(gè)單元地址99H,用同一寄存器名SBUF。 在物理上有兩個(gè),一個(gè)是發(fā)送緩沖寄存器,另一個(gè)是接收緩沖寄存器。2、串行控制寄存器SCONSCOND7D6D5D4D3D2D1D0位名稱SM0SM1SM2RENTB8RB8TIRI位地址9FH9EH9DH9CH9BH9AH99H98H

7、功能工作方式選擇多機(jī)通信控制接收 允許發(fā)送 第9位接收 第9位發(fā)送 中斷接收 中斷 SM0 SM1 串行口工作方式選擇位。 SM2 多機(jī)通信控制位。 REN 允許接收控制位。REN=1,允許接收。 TB8 方式2和方式3中要發(fā)送的第9位數(shù)據(jù)。 RB8 方式2和方式3中要接收的第9位數(shù)據(jù)。 TI 發(fā)送中斷標(biāo)志。 RI 接收中斷標(biāo)志。SM0SM0、SM1SM1:串行口工作方式選擇位。:串行口工作方式選擇位。 用于選擇四種工作方式用于選擇四種工作方式SM0SM0SM1SM1方式方式功能功能波特率波特率0 00 0方式方式0 0移位寄存器方式移位寄存器方式f foscosc/12/120 01 1方式

8、方式1 18 8位異步通信方式位異步通信方式可變可變1 10 0方式方式2 29 9位異步通信方式位異步通信方式f foscosc/32/32或或f foscosc/64/641 11 1方式方式3 39 9位異步通信方式位異步通信方式可變可變3 3、電源控制寄存器、電源控制寄存器PCONPCONPCONPCOND7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0位名稱位名稱SMODSMODGF1GF1GF0GF0PDPDIDLIDLSMOD=1SMOD=1,串行口波特率加倍。,串行口波特率加倍。PCONPCON寄存器不能進(jìn)行位尋址。寄存器不能進(jìn)行位尋址。一一 雨后,一只蜘蛛艱難地

9、向墻上已經(jīng)支離破碎的網(wǎng)爬去,由于墻壁潮濕,它爬到一定的高度,就會(huì)掉下來,它一次次地向上爬,一次次地又掉下來 第一個(gè)人看到了,他嘆了一口氣,自言自語:“我的一生不正如這只蜘蛛嗎?忙忙碌碌而無所得?!庇谑?,他日漸消沉。 第二個(gè)人看到了,他說:這只蜘蛛真愚蠢,為什么不從旁邊干燥的地方繞一下爬上去?我以后可不能像它那樣愚蠢。于是,他變得聰明起來。 第三個(gè)人看到了,他立刻被蜘蛛屢敗屢戰(zhàn)的精神感動(dòng)了。于是,他變得堅(jiān)強(qiáng)起來。 秘訣:有成功心態(tài)者處處都能發(fā)覺成功的力量。秘訣:有成功心態(tài)者處處都能發(fā)覺成功的力量。優(yōu)秀是一種習(xí)慣單片機(jī)串行通信系統(tǒng)單片機(jī)串行通信系統(tǒng)串行通信接口概述串行通信接口概述1 1串行通信工作

10、方式串行通信工作方式3 3串行通信波特率設(shè)置串行通信波特率設(shè)置4 4串行通信應(yīng)用舉例串行通信應(yīng)用舉例5 5串行通信工作方式串行通信工作方式3 3串行通信接口串行通信接口2 280C51串行通信共有4種工作方式,由串行控制寄存器SCON中SM0 SM1決定。 1、串行工作方式0(同步移位寄存器工作方式) 以RXD(P3.0)端作為數(shù)據(jù)移位的輸入/輸出端, 以TXD(P3.1)端輸出移位脈沖。 移位數(shù)據(jù)的發(fā)送和接收以8位為一幀,不設(shè)起始位和停止位,無論輸入/輸出,均低位在前高位在后。 其幀格式為: D0D1D2D3D4D5D6D7 方式0可將串行輸入輸出數(shù)據(jù)轉(zhuǎn)換成并行輸入輸出數(shù)據(jù)。三、 串行通信工

11、作方式 數(shù)據(jù)發(fā)送 將數(shù)據(jù)寫入發(fā)送緩沖器SBUF后,TXD端輸出移位脈沖,串行口把SBUF中的數(shù)據(jù)依次由低到高以fosc/12波特率從RXD端輸出,一幀數(shù)據(jù)發(fā)送完畢后硬件置發(fā)送中斷標(biāo)志位TI為1。若要再次發(fā)送數(shù)據(jù),必須用指令將TI清零。 發(fā)送: SBUF= 0 x55; /啟動(dòng)發(fā)送 while(!TI);/等待發(fā)送結(jié)束 TI =0;/清發(fā)送中斷標(biāo)志 接收: while(1)/不停地等待接收if(RI) RI=0;/清接收中斷標(biāo)志ACC=SBUF; /將接收數(shù)據(jù)送累加器A 在RI=0的條件下,用指令置REN=1即可開始串行接收。TXD端輸出移位脈沖,數(shù)據(jù)依次由低到高以fosc/12波特率經(jīng)RXD端

12、接收到SBUF中,一幀數(shù)據(jù)接收完成后硬件置接收中斷標(biāo)志位RI為1。若要再次接收一幀數(shù)據(jù),應(yīng)該用指令MOV A,SBUF將上一幀數(shù)據(jù)取走,并用指令將RI清零。用方式0通信時(shí),多用查詢方式。 數(shù)據(jù)接收接收: while(RI);等待接收 RI=0;;清接收中斷標(biāo)志table=SBUF;將接收數(shù)據(jù)送累加器A 接收: while(1)/不停地等待接收if(RI) ACC=SBUF; /將接收數(shù)據(jù)送累加器ARI=0;/清接收中斷標(biāo)志復(fù)位時(shí),SCON被清零,因此,工作方式的缺省值為方式0。接收前,務(wù)必先置位REN=1方允許接收數(shù)據(jù)。 在RI=0的條件下,用指令置REN=1即可開始串行接收。TXD端輸出移位

13、脈沖,數(shù)據(jù)依次由低到高以fosc/12波特率經(jīng)RXD端接收到SBUF中,一幀數(shù)據(jù)接收完成后硬件置接收中斷標(biāo)志位RI為1。若要再次接收一幀數(shù)據(jù),應(yīng)該用指令MOV A,SBUF將上一幀數(shù)據(jù)取走,并用指令將RI清零。用方式0通信時(shí),多用查詢方式。 數(shù)據(jù)接收2、串行工作方式1起始D0D1D2D3D4D5D6D7停止1) 數(shù)據(jù)發(fā)送 發(fā)送時(shí)只要將數(shù)據(jù)寫入SBUF,在串行口由硬件自動(dòng)加入起始位和停止位,構(gòu)成一個(gè)完整的幀格式。然后在移位脈沖的作用下,由TXD端串行輸出。一幀數(shù)據(jù)發(fā)送完畢后硬件自動(dòng)置TI=1。再次發(fā)送數(shù)據(jù)前,用指令將TI清零。方式1是一幀10位的異步串行通信方式,包括1個(gè)起始位,8個(gè)數(shù)據(jù)位和一個(gè)

14、停止位。波特率可變,由定時(shí)器/計(jì)數(shù)器T1的溢出率和SMOD(PCON.7)決定。其幀格式如下:2) 數(shù)據(jù)接收 接收時(shí),在REN=1前提下,當(dāng)采樣到RXD從1向0跳變狀態(tài)時(shí),就認(rèn)定為已接收到起始位。隨后在移位脈沖的控制下,數(shù)據(jù)從RXD端輸入。 在方式1接收數(shù)據(jù)時(shí),必須同時(shí)滿足以下兩個(gè)條件:RI=0,SM2=0或接收到的停止位=1。若有任一條件不滿足,則所接收的數(shù)據(jù)幀就會(huì)丟失。在滿足上述接收條件時(shí),接收到的8位數(shù)據(jù)位進(jìn)入接收緩沖器SBUF,停止位送入RB8,并置中斷標(biāo)志位RI=1。再次接收數(shù)據(jù)前,需用指令將RI清零。 3 3、串行工作方式、串行工作方式2 2起始位起始位 數(shù)據(jù)位數(shù)據(jù)位停止位停止位0

15、 0D0D0D1D1D2D2D3D3D4D4D5D5D6D6D7D7TB8TB81 11 1)數(shù)據(jù)發(fā)送)數(shù)據(jù)發(fā)送: : 發(fā)送數(shù)據(jù)前,由指令將發(fā)送數(shù)據(jù)前,由指令將TB8TB8置位或清零,將數(shù)據(jù)寫入發(fā)送置位或清零,將數(shù)據(jù)寫入發(fā)送緩沖器緩沖器SBUFSBUF后,在串行口由硬件自動(dòng)加入起始位和停止位來后,在串行口由硬件自動(dòng)加入起始位和停止位來構(gòu)成完整的字符幀,并在移位脈沖的作用下將其通過構(gòu)成完整的字符幀,并在移位脈沖的作用下將其通過TXDTXD端向端向外串行發(fā)送,發(fā)送完畢后硬件自動(dòng)置外串行發(fā)送,發(fā)送完畢后硬件自動(dòng)置TI=1TI=1。在工作方式在工作方式2 2下,下,波特率只有二種波特率只有二種:SMO

16、DSMOD0 0時(shí),波特率為時(shí),波特率為f f0SC0SC/64/64;SMODSMOD1 1時(shí),波特率為時(shí),波特率為f f0SC0SC/32/32。 串行接口工作方式串行接口工作方式2 2為為9 9位異步通信接口,傳送一幀數(shù)據(jù)有位異步通信接口,傳送一幀數(shù)據(jù)有1111位。位。1 1位起始位位起始位( (低電平信號(hào)低電平信號(hào)) ),8 8位數(shù)據(jù)位位數(shù)據(jù)位( (先低位后高位先低位后高位) ),1 1位可編程位,位可編程位,1 1位停止位位停止位( (高電平信號(hào)高電平信號(hào)) )。其格式如下:。其格式如下:2)數(shù)據(jù)接收 在REN=1的條件下,串行口采樣RXD端,當(dāng)檢測(cè)到有從1向0的狀態(tài)跳變的起始位時(shí),

17、便在移位脈沖的控制下,從RXD端接收數(shù)據(jù)。在方式2的接收中,也必須同時(shí)滿足以下兩個(gè)條件:RI=0,SM2=0或接收到的停止位為1。若有任一條件不滿足,則所接收的數(shù)據(jù)幀就會(huì)被丟失。在滿足上述接收條件時(shí),接收到的8位數(shù)據(jù)位進(jìn)入接收緩沖器SBUF中,第9位數(shù)據(jù)位送入RB8中,并置RI=1。再次接收數(shù)據(jù)時(shí),需用指令將RI清零。 串行接口工作方式3也是9位異步通信接口,傳送一幀數(shù)據(jù)有11位。1位起始位(低電平信號(hào)),8位數(shù)據(jù)位(先低位后高位),1位可編程位,1位停止位(高電平信號(hào))。 但波特率與工作方式1相同,由定時(shí)器/計(jì)數(shù)器T1的溢出率和SMOD(PCON.7)決定。 也就是說方式3的工作機(jī)制與方式2

18、相同,波特率與方式1相同,它是方式1和方式2的綜合運(yùn)用。4、串行工作方式3串行口四種工作方式的比較四種工作方式的區(qū)別主要表現(xiàn)在幀格式及波特率兩個(gè)方面。表6-2 四種工作方式比較工作方式幀 格 式波 特 率方式08位全是數(shù)據(jù)位,沒有起始位、停止位固定,即每個(gè)機(jī)器周期傳送一位數(shù)據(jù)方式110位,其中1位起始位,8位數(shù)據(jù)位,1位停止位不固定,取決于T1溢出率和SMOD方式211位,其中1位起始位,9位數(shù)據(jù)位,1位停止位固定,即2SMODfosc /64方式3同方式2同方式1單片機(jī)串行通信系統(tǒng)單片機(jī)串行通信系統(tǒng)串行通信接口概述串行通信接口概述1 1串行通信工作方式串行通信工作方式3 3串行通信波特率設(shè)置

19、串行通信波特率設(shè)置4 4串行通信應(yīng)用舉例串行通信應(yīng)用舉例5 5串行通信波特率設(shè)置串行通信波特率設(shè)置4 4串行通信接口串行通信接口2 2 MCS-51單片機(jī)的串行通信波特率是隨著串行口的工作方式不同而改變的。波特率除了與單片機(jī)系統(tǒng)的振蕩頻率fosc、電源控制寄存器PCON的SMOD位有關(guān)外,還與定時(shí)器T1的設(shè)置狀態(tài)有關(guān)。只有正確進(jìn)行波特率的設(shè)置才能使單片機(jī)正常工作。四、串行通信波特率設(shè)置1、四種工作方式下的波特率計(jì)算工作方式0:波特率固定不變,它與系統(tǒng)的振蕩頻率fosc的大小有關(guān),其值為fosc/12。工作方式1和方式3:波特率是可變的,波特率=(2SMOD/32)定時(shí)器T1的溢出率工作方式2:

20、波特率有兩種固定值。當(dāng)SM0D=1時(shí),波特率=(2SM0D/64)fosc=fosc/32當(dāng)SM0D=0時(shí),波特率=(2SM0D/64)fosc=fosc/64 定時(shí)器的溢出率是指在1秒鐘內(nèi)產(chǎn)生溢出的次數(shù)。定時(shí)器的溢出率與定時(shí)器的工作模式有關(guān),可以改變單片機(jī)內(nèi)部的特殊功能寄存器TMOD中的T1方式字段中的M1、M0二位,即TM0D.5和TMOD.4位,選擇定時(shí)器工作的四種工作模式中的一種進(jìn)行工作。在串行口通信中,一般都使定時(shí)器T1工作在模式2。 在工作方式2時(shí),T1為8位自動(dòng)裝入定時(shí)器,由TL1進(jìn)行計(jì)數(shù)。 因此定時(shí)器T1的溢出與系統(tǒng)的時(shí)鐘頻率fosc有關(guān),也與每次溢出后TL1重新裝載值N有關(guān)。

21、N值越大,定時(shí)器T1的溢出率也就越大。 當(dāng)N=0FFH時(shí),每隔12個(gè)時(shí)鐘周期,定時(shí)器T1就溢出一次。一般情況下,定時(shí)器T1溢出一次所需要的時(shí)間為: (28N)12時(shí)鐘周期=(28N)12/fosc(秒) 2、定時(shí)器T1的溢出率計(jì)算定時(shí)器每秒所溢出的次數(shù)為: 定時(shí)器T1的溢出率=fosc/(12(28N)。 式中的N為時(shí)間常數(shù),即TH1的預(yù)置初值。 例如:系統(tǒng)的時(shí)鐘頻率fosc=12MHz,TH1的預(yù)置值N=E6H,定時(shí)器T1在工作模式2下的溢出率為: 12106/12/(28E6H)38461.5次/秒。 若SMOD=1,串口傳輸數(shù)據(jù)的波特率是多少? 設(shè)波特率用B表示,計(jì)數(shù)初值用N表示,則波特

22、率B與T1計(jì)數(shù)初值N之間的關(guān)系可以表示為:)256(12322NfBOSCSMODBfBfNOSCSMODOSCSMOD384225612322256【例6-1】若fosc=6MHz,波特率為2400波特,設(shè)SMOD=1,則定時(shí)/計(jì)數(shù)器T1的計(jì)數(shù)初值為多少? N = 256-2SMODfosc /(24003212) = 242.98243 =F3H將N=F3H帶入公式,反過來求B=2403.846,誤差率 0.16%若fosc=11.0592MHz,波特率為2400,設(shè)SMOD=0,則N=F4H。3、波特率與計(jì)數(shù)初值的關(guān)系 解決的方法只有調(diào)整單片機(jī)的時(shí)鐘頻率fosc,通常采用11.0592M

23、Hz晶振。常用波特率及其產(chǎn)生條件 常用波特率通常按規(guī)范取1200、2400、4800、9600、,若采用晶振12MHz和6MHz,則計(jì)算得出的T1定時(shí)初值將不是一個(gè)整數(shù),產(chǎn)生波特率誤差而影響串行通信的同步性能。 財(cái)富是一時(shí)的朋友,而朋友才是永久的財(cái)富; 每個(gè)人都有五個(gè)不停旋轉(zhuǎn)的球:工作、健康、家庭、朋友和靈魂。工作是橡膠球,掉下去會(huì)彈起來;而另外四個(gè)都是玻璃球,掉了-就碎了。單片機(jī)串行通信系統(tǒng)單片機(jī)串行通信系統(tǒng)串行通信接口概述串行通信接口概述1 1串行通信工作方式串行通信工作方式3 3串行通信波特率設(shè)置串行通信波特率設(shè)置4 4串行通信應(yīng)用舉例串行通信應(yīng)用舉例5 5串行通信應(yīng)用舉例串行通信應(yīng)用舉

24、例5 5串行通信接口串行通信接口2 2五、串行通信應(yīng)用舉例1、 串行口的編程 串行口需初始化后,才能完成數(shù)據(jù)的輸入、輸出。初始化過程如下: 按選定串行口的工作方式設(shè)定SCON的SM0、SM1;對(duì)于工作方式2或3,應(yīng)根據(jù)需要在TB8中寫入待發(fā)送的第9位 數(shù)據(jù);若選定的工作方式不是模式0,還需設(shè)定接收/發(fā)送的波特率;設(shè)定SMOD的狀態(tài),以控制波特率是否加倍;若選定工作方式1或3,則應(yīng)對(duì)定時(shí)器T1進(jìn)行初始化操作,即設(shè)定T1的工作方式和初值,以設(shè)定其溢出率。 電路如圖6-8所示,試編制程序輸入K1K8的狀態(tài)信息,并存入內(nèi)RAM 40H。 圖6-8 串行通訊方式0應(yīng)用。圖6-8 串行通訊方式0應(yīng)用2、

25、工作方式0應(yīng)用舉例 4014 是一個(gè)并入串出轉(zhuǎn)換芯片,Q8端為串行數(shù)據(jù)輸出端,CLK為時(shí)鐘脈沖輸入端,P/S為操作控制端,P/S=1:鎖存并行輸入數(shù)據(jù),P/S=0:允許串行移位操作。 要完成題目的要求,應(yīng)先將開關(guān)狀態(tài)鎖存,然后串行輸入單片機(jī)。 C語言參考程序: # include sbit P1_0=P10; /定義P1.0口void main() /主函數(shù)unsigned char i; P1_0=1; /鎖存并行輸入數(shù)據(jù)P1_0=0; /允許串行移位操作SCON=0 x00; /設(shè)定串行口為方式0while (!RI) ; /等待接收完畢i=SBUF; /存入K1K8狀態(tài)數(shù)據(jù)RI=0; /

26、清中斷標(biāo)志【 例 3 】 設(shè) 甲 乙 兩 機(jī) 以 串 行 方 式 1 進(jìn) 行 數(shù) 據(jù) 傳 送 ,fosc=11.0592MHz,波特率為1200b/s。甲機(jī)發(fā)送的16個(gè)字節(jié)數(shù)據(jù)存在內(nèi)RAM40H4FH單元中,乙機(jī)接收后存在內(nèi)RAM 50H為首的地址區(qū)域中。 T1初值 =解:串行方式1波特率取決于T1溢出率(設(shè)SMOD=0),計(jì)算T1定時(shí)初值3、 工作方式1應(yīng)用舉例120012110592003222560= 232 = E8HC語言參考程序:甲機(jī)發(fā)送程序:#include /包含特殊功能寄存器庫(kù)#define uchar unsigned charuchar idata buf16; /要發(fā)送

27、的16個(gè)數(shù)據(jù)uchar i; /變量i, 循環(huán)發(fā)送的次數(shù)記錄void main( ) /主函數(shù)TMOD=0 x20; /置T1定時(shí)器工作方式2TL1=0 xE8; TH1=0 xE8; /置T1計(jì)數(shù)初值PCON=0 x00; /置SMOD=0SCON=0 x40; /工作在方式1,不允許接收 TR1=1; / T1啟動(dòng)計(jì)數(shù)for(i=0;i16;i+) /循環(huán)發(fā)送16個(gè)數(shù)據(jù)SBUF=bufi; /發(fā)送數(shù)據(jù)while(TI= =0); /等待發(fā)送完畢TI=0; /發(fā)送完后清中斷標(biāo)志 乙機(jī)接收程序如下: #include /包含特殊功能寄存器庫(kù)#define uchar unsigned char

28、 /定義uchar為無符號(hào)字符數(shù)據(jù)類型uchar i; /變量i,作為接收數(shù)據(jù)的次數(shù)記錄。void main( ) /主函數(shù)unsigned char *P; P=0 x50; /定義指針變量并賦初值TMOD=0 x20; /置T1定時(shí)器工作方式2TL1=0 xE8; TH1=0 xE8;/置T1計(jì)數(shù)初值PCON=0 x00; /置SMOD=0SCON=0 x50; /工作在方式1,允許接收 TR1=1; / T1啟動(dòng)計(jì)數(shù)for(i=0;i16;i+) /循環(huán)體(連續(xù)接收16個(gè)數(shù)據(jù))while(RI= =0); /等待接收數(shù)據(jù)*P =SBUF; /接收數(shù)據(jù),送指定單元RI=0; /收完一個(gè)字節(jié)

29、的數(shù)據(jù)后清中斷標(biāo)志P+; /地址加1,準(zhǔn)備存放下一個(gè)數(shù)據(jù) 【例6-4】設(shè)計(jì)一個(gè)串行方式2收發(fā)程序,設(shè)SMOD=1,波特率固定為fosc/32。甲機(jī)串行發(fā)送片內(nèi)RAM50H-5FH中的數(shù)據(jù),第9位數(shù)據(jù)作為奇偶校驗(yàn)位,接到接收方核對(duì)正確的回復(fù)信號(hào)(用FFH表示)后,再發(fā)送下一字節(jié)數(shù)據(jù),否則再重發(fā)一遍。乙機(jī)將接收到的數(shù)據(jù)存在首址為40H的內(nèi)RAM中,并核對(duì)奇偶校驗(yàn)位。核對(duì)正確,發(fā)出回復(fù)信號(hào)FFH;發(fā)現(xiàn)錯(cuò)誤,發(fā)出回復(fù)信號(hào)00H,并等待重新接收。4、 工作方式2應(yīng)用舉例C語言參考程序:甲機(jī)發(fā)送: #include /包含特殊功能寄存器庫(kù)#define uchar unsigned char /定義uch

30、ar為無符號(hào)字符數(shù)據(jù)類型uchar idata buf16; /發(fā)送的16個(gè)數(shù)據(jù)存放在buf數(shù)組中.uchar dat; uchar i; sbit P=PSW0; /定義PSW0位變量void main( ) /主函數(shù)PCON=0 x80; /置SMOD=1SCON=0 x90; /串行口工作在方式2,允許接收do /循環(huán)體for(i=0;i16;i+) / 連續(xù)發(fā)送16個(gè)數(shù)據(jù)dat = buf i; / 取要發(fā)送的數(shù)據(jù)ACC = dat; /送累加器A,得奇偶位TB8=P; /奇偶位作為第9位輸出SBUF=dat; /發(fā)送數(shù)據(jù)while(TI=0); /等待發(fā)送完畢TI=0; /發(fā)送完后清中斷標(biāo)志while(RI=0); /等待乙機(jī)應(yīng)答if(SBUF!=0 xff) break; /出錯(cuò)則跳出循

溫馨提示

  • 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)論