




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第七章串行通信第1頁(yè),課件共41頁(yè),創(chuàng)作于2023年2月7.1串行通信的基本概念7.1.1通信數(shù)據(jù)的傳輸方式傳輸方式并行方式串行方式同步方式異步方式單工方式半雙工方式全雙工方式多工方式NEXTHOME7.1.2串行通信的通信標(biāo)準(zhǔn)串行通信的通信標(biāo)準(zhǔn)主要是指通信的電氣和硬件標(biāo)準(zhǔn),常用的有RS-232;RS-485/422等。8051單片機(jī)的通訊方式有兩種,并行通訊:數(shù)據(jù)的各位同時(shí)發(fā)送或接收。串行通訊:數(shù)據(jù)一位一位順序發(fā)送或接收。
第2頁(yè),課件共41頁(yè),創(chuàng)作于2023年2月BACKNEXTHOMERS-232標(biāo)準(zhǔn)電氣特性:邏輯“1”=-3V~-15V;邏輯“0”=+3V~+15V。在與TTL標(biāo)準(zhǔn)連接時(shí)必須進(jìn)行電平轉(zhuǎn)換,常用芯片有MC1488、MC1489及MAX202~MAX232等。機(jī)械特性:常用DB-9和DB-25兩種連接器,經(jīng)常只使用其中的9個(gè)引腳。接口信號(hào):標(biāo)準(zhǔn)RS-232接口定義了25條線,包括4條數(shù)據(jù)線、11條控制線、3條定時(shí)線、7條備用和未定義線,一般只用其中的9條。而在實(shí)際控制系統(tǒng)中,為了盡量減少連接線的數(shù)量,只使用其中的3條線,即:發(fā)送數(shù)據(jù)(TXD)、接收數(shù)據(jù)(RXD)、地線(GND)。RS-485/422標(biāo)準(zhǔn)電氣特性:邏輯“1”=0.2V~7(12)V;邏輯“0”=-0.2V~-7(-12)V。在與TTL標(biāo)準(zhǔn)連接時(shí)同樣必須進(jìn)行電平轉(zhuǎn)換,常用芯片有MC1485等。機(jī)械特性:通常采用雙線制(雙絞線)平衡方式傳輸。第3頁(yè),課件共41頁(yè),創(chuàng)作于2023年2月BACKNEXTHOME7.1.3串行通信的通信方式串行通信又可分為異步通信和同步通信。異步通信的接受器和發(fā)送器使用各自的時(shí)鐘,每次只傳送一字節(jié)數(shù)據(jù),允許時(shí)鐘產(chǎn)生誤差;同步通信每次傳送的數(shù)據(jù)量較大,要求精度高,因此接受器和發(fā)送器使用同一時(shí)鐘。異步通訊以字符為傳送單位用起始位和停止位標(biāo)識(shí)每個(gè)字符的開(kāi)始和結(jié)束字符間隔不固定,只需字符傳送時(shí)同步。異步通訊數(shù)據(jù)常用一幀為單位,一幀字符位數(shù)的規(guī)定:起始位,數(shù)據(jù)位,校驗(yàn)位和停止位,校驗(yàn)位緊跟在數(shù)據(jù)位后,也可以省略。下圖為省略校驗(yàn)位后一幀數(shù)據(jù)的示意圖。D0D1D2D3D4D5D6D7停止位起始位優(yōu)點(diǎn)是硬件要求低,可靠性高,傳送距離遠(yuǎn),但速度較慢。第4頁(yè),課件共41頁(yè),創(chuàng)作于2023年2月BACKNEXTHOME同步通信以一串字符為一個(gè)傳送單位,字符間不加標(biāo)識(shí)位,在一串字符開(kāi)始用同步字符標(biāo)識(shí),硬件要求高,通訊雙方須嚴(yán)格同步。【提示】:在單片機(jī)與外設(shè)進(jìn)行數(shù)據(jù)通信時(shí),多采用異步串行通信。7.1.4串行通信數(shù)據(jù)的傳送速率數(shù)據(jù)傳送的速率又稱為波特率,其定義是每秒鐘傳送的二進(jìn)制數(shù)的位數(shù)。例如,數(shù)據(jù)傳送的速率是120字符/s,而每個(gè)字符如上述規(guī)定包含10數(shù)位,則傳送波特率為1200波特。數(shù)據(jù)在單片機(jī)中都是以并行的方式處理和存儲(chǔ)的,要進(jìn)行串行數(shù)據(jù)通信時(shí),就必須將并行數(shù)據(jù)轉(zhuǎn)換成串行數(shù)據(jù),這部分工作由單片機(jī)中的串行通訊口來(lái)完成。7.1.5串行通信數(shù)據(jù)的校驗(yàn)數(shù)據(jù)傳送的過(guò)程中經(jīng)常會(huì)出現(xiàn)錯(cuò)誤,因而必須對(duì)數(shù)據(jù)的正確性進(jìn)行校驗(yàn),常分為橫向校驗(yàn)和縱向校驗(yàn)。第5頁(yè),課件共41頁(yè),創(chuàng)作于2023年2月7.2串行口的工作方式7.2.1串行口控制寄存器控制單片機(jī)串行口工作的寄存器有兩個(gè),即串行口控制寄存器SCON和特殊功能寄存器PCON。串行口控制寄存器SCON,字節(jié)地址98H串行口控制寄存器用于定義串行口的工作方式及實(shí)施接收和發(fā)送控制。字節(jié)地址為98H,其各位定義如下表:RITIRB8TB8RENSM2SM1SM0模式選擇多機(jī)通訊位允許接收位發(fā)送、接收第9位發(fā)送、接收標(biāo)志BACKNEXTHOME第6頁(yè),課件共41頁(yè),創(chuàng)作于2023年2月SM0、SM1:串行口工作方式選擇位,其定義如下:可變1+9+1位異步通信UART311Fosc/64或/321+9+1位異步通信UART210可變1+8+1位異步通信UART101Fosc/12同步移位寄存器模式000波特率功能模式SM0SM1其中fosc為晶振頻率SM2:多機(jī)通訊控制位。在方式0時(shí),SM2一定要等于0。在方式1中,當(dāng)(SM2)=1時(shí),只有接收到有效停止位時(shí),RI才置1。在方式2或方式3當(dāng)(SM2)=1且接收到的第九位數(shù)據(jù)RB8=1時(shí),RI才置1。
BACKNEXTHOME第7頁(yè),課件共41頁(yè),創(chuàng)作于2023年2月BACKNEXTHOMEREN:接收允許控制位。由軟件置位以允許接收,又由軟件清0來(lái)禁止接收。TB8:是要發(fā)送數(shù)據(jù)的第9位。在方式2或方式3中,作為要發(fā)送的第9位數(shù)據(jù),根據(jù)需要由軟件置1或清0。例如,可約定作為奇偶校驗(yàn)位,或在多機(jī)通訊中作為區(qū)別地址幀或數(shù)據(jù)幀的標(biāo)志位。RB8:接收到的數(shù)據(jù)的第9位。在方式0中不使用RB8。在方式1中,若(SM2)=0,RB8為接收到的停止位。在方式2或方式3中,RB8為接收到的第9位數(shù)據(jù)。TI:發(fā)送中斷標(biāo)志。在方式0中,第8位發(fā)送結(jié)束時(shí),由硬件置位。在其它方式的發(fā)送停止位前,由硬件置位。TI置位既表示一幀信息發(fā)送結(jié)束,同時(shí)也是申請(qǐng)中斷,可根據(jù)需要,用軟件查詢的方法獲得數(shù)據(jù)已發(fā)送完畢的信息,或用中斷的方式來(lái)發(fā)送下一個(gè)數(shù)據(jù)。TI必須用軟件清0。RI:接收中斷標(biāo)志位。在方式0,當(dāng)接收完第8位數(shù)據(jù)后,由硬件置位。在其它方式中,在接收到停止位的中間時(shí)刻由硬件置位(例外情況見(jiàn)于SM2的說(shuō)明)。RI置位表示一幀數(shù)據(jù)接收完畢,可用查詢的方法獲知或者用中斷的方法獲知。RI也必須用軟件清0。第8頁(yè),課件共41頁(yè),創(chuàng)作于2023年2月BACKNEXTHOME特殊功能寄存器PCON,字節(jié)地址87H特殊功能寄存器PCON中只有最高位D7(SMOD位)作為波特率選擇位使用,其余位與串行通信無(wú)關(guān)。PCON只能字節(jié)尋址,因此須用字節(jié)尋址指令對(duì)其進(jìn)行賦值,SMOD=1:波特率加倍;SMOD=0:波特率不變。7.2.2工作方式0方式0為移位寄存器輸入/輸出方式??赏饨右莆患拇嫫饕詳U(kuò)展I/O口,也可以外接同步輸入/輸出設(shè)備。8位串行數(shù)據(jù)者是從RXD輸入或輸出,TXD用來(lái)輸出同步脈沖。輸出:串行數(shù)據(jù)從RXD引腳輸出,TXD引腳輸出移位脈沖。CPU將數(shù)據(jù)寫(xiě)入發(fā)送寄存器時(shí),立即啟動(dòng)發(fā)送,將8位數(shù)據(jù)以fos/12的固定波特率從RXD輸出,低位在前,高位在后。發(fā)送完一幀數(shù)據(jù)后,發(fā)送中斷標(biāo)志TI由硬件置位,必須由軟件復(fù)位。輸入:當(dāng)串行口以方式0接收時(shí),先置位允許接收控制位REN。此時(shí),RXD為串行數(shù)據(jù)輸入端,TXD仍為同步脈沖移位輸出端。當(dāng)(RI)=0和(REN)=1同時(shí)滿足時(shí),開(kāi)始接收。當(dāng)接收到第8位數(shù)據(jù)時(shí),將數(shù)據(jù)移入接收寄存器,并由硬件置位RI,同樣必須由軟件復(fù)位。第9頁(yè),課件共41頁(yè),創(chuàng)作于2023年2月下圖是方式0擴(kuò)展輸出和輸入的接線圖。focs/12方式0串行口的波特率BB=focs/12發(fā)送、接收控制器BACKNEXTHOME方式0時(shí),波特率為固定的focs/12。第10頁(yè),課件共41頁(yè),創(chuàng)作于2023年2月BACKNEXTHOME7.2.3工作方式1方式1為波特率可變的10位異步通訊接口方式。發(fā)送或接收一幀信息,包括1個(gè)起始位0,8個(gè)數(shù)據(jù)位和1個(gè)停止位1。輸出:當(dāng)CPU執(zhí)行一條指令將數(shù)據(jù)寫(xiě)入發(fā)送緩沖SBUF時(shí),就啟動(dòng)發(fā)送。串行數(shù)據(jù)從TXD引腳輸出,發(fā)送完一幀數(shù)據(jù)后,就由硬件置位TI。輸入:在(REN)=1時(shí),串行口采樣RXD引腳,當(dāng)采樣到1至0的跳變時(shí),確認(rèn)是開(kāi)始位0,就開(kāi)始接收一幀數(shù)據(jù)。只有當(dāng)(RI)=0且停止位為1或者(SM2)=0時(shí),停止位才進(jìn)入RB8,8位數(shù)據(jù)才能進(jìn)入接收寄存器,并由硬件置位中斷標(biāo)志RI;否則信息丟失。所以在方式1接收時(shí),應(yīng)先用軟件清零RI和SM2標(biāo)志。1/161/2T1溢出10SMOD方式1、3時(shí)串行口的波特率BB=1/32×T1溢出率或=1/16×T1溢出率發(fā)送、接收控制器方式1時(shí),波特率是可變的,由定時(shí)/計(jì)數(shù)器T1的溢出率決定,如左圖所示:第11頁(yè),課件共41頁(yè),創(chuàng)作于2023年2月7.2.4工作方式2方式2為可選定波特率的11位UART方式。它比方式1增加了一位可程控為1或0的第9位數(shù)據(jù)。輸出:發(fā)送的串行數(shù)據(jù)由TXD端輸出一幀信息為11位,附加的第9位來(lái)自SCON寄存器的TB8位,用軟件置位或復(fù)位。它可作為多機(jī)通訊中地址/數(shù)據(jù)信息的標(biāo)志位,也可以作為數(shù)據(jù)的奇偶校驗(yàn)位。當(dāng)CPU執(zhí)行一條數(shù)據(jù)寫(xiě)入SUBF的指令時(shí),就啟動(dòng)發(fā)送器發(fā)送。發(fā)送一幀信息后,置位中斷標(biāo)志TI。輸入:在(REN)=1時(shí),串行口采樣RXD引腳,當(dāng)采樣到1至0的跳變時(shí),確認(rèn)是開(kāi)始位0,就開(kāi)始接收一幀數(shù)據(jù)。在接收到附加的第9位數(shù)據(jù)后,當(dāng)(RI)=0且(SM2)=0時(shí),接收完停止位后,第9位數(shù)據(jù)進(jìn)入RB8,8位數(shù)據(jù)進(jìn)入接收寄存器,并由硬件置位中斷標(biāo)志RI;否則信息丟失。且不置位RI。再過(guò)一位傳送時(shí)間后,不管上述條件是否滿足,接收電路即行復(fù)位,并重新檢測(cè)RXD上從1到0的跳變。當(dāng)(SM2)=1時(shí),若第9位數(shù)據(jù)為0,則不置位RI,只有第9位數(shù)據(jù)為1,才激活RI。波特率的計(jì)算公式為:波特率=2SMOD×(振蕩器頻率)/64BACKNEXTHOME第12頁(yè),課件共41頁(yè),創(chuàng)作于2023年2月7.2.5工作方式3方式3為波特率可變的11位UART方式。除波特率外,其余與方式2相同。1/2focs/210SMOD方式2串行口的波特率B1/16B=focs/32或=fosc/64發(fā)送、接收控制器BACKNEXTHOME方式2時(shí),波特率是可選擇的,由PCON中的SMOD位決定,如左圖所示:第13頁(yè),課件共41頁(yè),創(chuàng)作于2023年2月BACKNEXTHOME7.2.6工作方式1、3時(shí)波特率的計(jì)算定時(shí)器T1作為波特率發(fā)生器,其公式如下: 波特率=2SMOD/32×定時(shí)器T1溢出率 T1溢出率=T1計(jì)數(shù)率/產(chǎn)生溢出所需的周期數(shù)式中T1計(jì)數(shù)率取決于它工作在定時(shí)器狀態(tài)還是計(jì)數(shù)器狀態(tài)。當(dāng)工作于定時(shí)器狀態(tài)時(shí),T1計(jì)數(shù)率為fosc/12;當(dāng)工作于計(jì)數(shù)器狀態(tài)時(shí),T1計(jì)數(shù)率為外部輸入頻率,此頻率應(yīng)小于fosc/24。產(chǎn)生溢出所需周期與定時(shí)器T1的工作方式、T1的預(yù)置值有關(guān)。 定時(shí)器T1工作于方式0:溢出所需周期數(shù)=8192-x 定時(shí)器T1工作于方式1:溢出所需周期數(shù)=65536-x 定時(shí)器T1工作于方式2:溢出所需周期數(shù)=256-x因?yàn)榉绞?為自動(dòng)重裝入初值的8位定時(shí)器/計(jì)數(shù)器模式,所以用它來(lái)做波特率發(fā)生器最恰當(dāng)。當(dāng)時(shí)鐘頻率選用11.0592MHZ時(shí),極易獲得標(biāo)準(zhǔn)的波特率,所以很多單片機(jī)系統(tǒng)選用這個(gè)看起來(lái)“怪”的晶振就是這個(gè)道理。第14頁(yè),課件共41頁(yè),創(chuàng)作于2023年2月下表列出了定時(shí)器T1工作于方式2常用波特率及初值:常用波特率Fosc(MHZ)SMODTH1初值1920011.05921FDH960011.05920FDH480011.05920FAH240011.05920F4h120011.05920E8hBACKNEXTHOME第15頁(yè),課件共41頁(yè),創(chuàng)作于2023年2月BACKNEXTHOME方式發(fā)送條件接收條件接收方式主要應(yīng)用0TI=0RI=0,REN=1查詢、中斷同步移位,系統(tǒng)擴(kuò)并口1TI=0RI=0,REN=1查詢、中斷8位數(shù)據(jù)異步傳送2、3TI=0RI=0,REN=1,SM2=0查詢(無(wú)中斷)8位數(shù)據(jù)+奇偶位的異步收發(fā)UARTRI=0,REN=1,RB8=1若SM2=0時(shí)查詢。若SM2=1時(shí)引發(fā)中斷8位數(shù)據(jù)+控制位的異步收發(fā)UART四種模式的接收、發(fā)送條件第16頁(yè),課件共41頁(yè),創(chuàng)作于2023年2月7.2.7應(yīng)用舉例1.工作方式0應(yīng)用舉例
8051單片機(jī)串行口方式0為移位寄存器方式,外接一個(gè)串入并出的移位寄存器,就可以擴(kuò)展一個(gè)并行口。【例】:用8051串行口外接CD4094擴(kuò)展8位并行輸出口,如圖所示,8位并行口的各位都接一個(gè)發(fā)光二極管,要求發(fā)光管呈流水燈狀態(tài)。串行口方式0的數(shù)據(jù)傳送可采用中斷方式,也可采用查詢方式,無(wú)論哪種方式,都要借助于TI或RI標(biāo)志。串行發(fā)送時(shí),可以靠TI置位(發(fā)完一幀數(shù)據(jù)后)引起中斷申請(qǐng),在中斷服務(wù)程序中發(fā)送下一幀數(shù)據(jù),或者通過(guò)查詢TI的狀態(tài),只要TI為0就繼續(xù)查詢,TI為1就結(jié)束查詢,發(fā)送下一幀數(shù)據(jù)。在串行接收時(shí),則由RI引起中斷或?qū)I查詢來(lái)確定何時(shí)接收下一幀數(shù)據(jù)。無(wú)論采用什么方式,在開(kāi)始通訊之前,都要先對(duì)控制寄存器SCON進(jìn)行初始化。在方式0中將00H送SCON就可以了。BACKNEXTHOME第17頁(yè),課件共41頁(yè),創(chuàng)作于2023年2月【解】:程序清單如下 ORG 2000HSTART: MOV SCON,#00H ;置串行口工作方式0 MOV A,#80H ;最高位燈先亮 CLR P1.0 ;關(guān)閉并行輸出(避免傳輸過(guò)程 ;中,各LED的"暗紅"現(xiàn)象) CLR TI ;清TI標(biāo)志OUT0: MOV SBUF,A ;開(kāi)始串行輸出OUT1: JNB TI,$ ;輸出完否 CLR TI ;完了,清TI標(biāo)志,以備下次 ;發(fā)送 SETB P1.0 ;打開(kāi)并行口輸出 ACALL DELAY ;延時(shí)一段時(shí)間 RR A ;循環(huán)右移 CLR P1.0 ;關(guān)閉并行輸出 JMP OUT0 ;循環(huán)BACKNEXTHOME第18頁(yè),課件共41頁(yè),創(chuàng)作于2023年2月2.工作方式1應(yīng)用舉例
發(fā)送程序(查詢方式):T1初始化啟動(dòng)T1串行口初始化輸入數(shù)據(jù)到A發(fā)送一幀數(shù)據(jù)MOVSBUF,ATI=1?軟件清TIYNBACKNEXTHOME編寫(xiě)發(fā)送程序的一般方法是:先初始化串行口和T1,然后將發(fā)送數(shù)據(jù)送入SBUF,查詢TI位,當(dāng)TI為1后,復(fù)位TI并立即發(fā)送下一幀數(shù)據(jù),直至數(shù)據(jù)發(fā)送完畢??驁D如右圖所示:M0M1C/TGATEM0M1C/TGATE設(shè)定定時(shí)器T1的工作模式00100000BRITIRB8TB8RENSM2SM1SM0設(shè)定串行口模式寄存器SCON為01000000B第19頁(yè),課件共41頁(yè),創(chuàng)作于2023年2月BACKNEXTHOME程序清單如下: org 0000h ljmp 0100h org 0100hStart: mov tmod,#20h ;設(shè)定定時(shí)器T1為模式2 mov tl1,#0f4h ;送定時(shí)初值(fosc=11.059) mov th1,#0f4h ;波特率B=2400 setb tr1 ;啟動(dòng)定時(shí)器T1 mov scon,#40h ;設(shè)定串行口為模式1 mov pcon,#00h ;PCON中的SMOD=0 clr tiLoop2: mov p1,#0ffh mov a,p1 ;從P1口輸入數(shù)據(jù) mov sbuf,a ;數(shù)據(jù)送SBUF發(fā)送Loop1: jnb ti,loop1 ;判斷數(shù)據(jù)是否發(fā)送完畢? clr ti ;發(fā)送完一幀后清標(biāo)志 sjmp loop2 ;返回繼續(xù) end第20頁(yè),課件共41頁(yè),創(chuàng)作于2023年2月接收程序(查詢方式):M0M1C/TGATEM0M1C/TGATE定時(shí)器TMOD(89H)的工作模式00100000BRITIRB8TB8RENSM2SM1SM0串行口模式寄存器SCON(98H)為01010000BT1初始化啟動(dòng)T1串行口初始化輸出數(shù)據(jù)到P1數(shù)據(jù)送AMOVA,SBUFRI=1?軟件清TIYN編寫(xiě)接收程序與發(fā)送程序類似:先初始化串行口和T1,然后查詢RI位,當(dāng)RI為1后,復(fù)位RI并立即接收一幀數(shù)據(jù),直至數(shù)據(jù)接收完畢。框圖如右圖所示:BACKNEXTHOME第21頁(yè),課件共41頁(yè),創(chuàng)作于2023年2月程序清單如下: org 0000h ljmp 0100h org 0100hStart: mov tmod,#20h ;選定T1為模式2(自動(dòng)重裝) mov tl1,#0f4h ;設(shè)定初值 mov th1,#0f4h ;同上 mov pcon,#00h ;PCON的SMOD=0 setb tr1 ;啟動(dòng)T1定時(shí)器 clr ri ;清接收標(biāo)志 mov scon,#50h ;設(shè)定串行口為方式1Loop1: jnb ri,loop1 ;判斷是否接收到數(shù)據(jù)? clr ri ;接收到數(shù)據(jù)后清接收標(biāo)志 mov a,sbuf ;數(shù)據(jù)送累加器A mov p1,a ;從P1口輸出 sjmp loop1 ;繼續(xù) endBACKNEXTHOME【習(xí)題】:將上述程序用中斷方式編寫(xiě)。第22頁(yè),課件共41頁(yè),創(chuàng)作于2023年2月3.工作方式2、3應(yīng)用舉例
與模式1相比,模式2、3的主要特點(diǎn):1,9位數(shù)據(jù)的傳送格式:發(fā)送時(shí)第9位在TB8;接收時(shí)第9位在RB8中。2,SM2:多機(jī)通訊位:在模式0、1中:SM2=0。當(dāng)RI=1時(shí)便可以引發(fā)中斷。 在模式2、3中:如果SM2=0,TI和RI可以被激活,并引發(fā)中斷!如果SM2=1,且RB8=1時(shí),RI被激活時(shí)可以引發(fā)中斷!根據(jù)上面特點(diǎn),模式2、3可以: 1,利用第9位數(shù)據(jù)來(lái)傳送、接收每一字節(jié)的“奇偶效驗(yàn)位”。 2,利用SM2、RB8實(shí)現(xiàn)多機(jī)通訊功能。BACKNEXTHOME第23頁(yè),課件共41頁(yè),創(chuàng)作于2023年2月利用模式2,3進(jìn)行帶奇校驗(yàn)的串行通訊程序流程圖數(shù)據(jù)送累加器APSW.P=1?SETSCON.TB8CLRSCON.TB8MOVSBUF,ATI=1?CLRSCON.TIYESNONOYES發(fā)送端程序RI=1?MOVA,SBUFPSW.P⊕RB8=0?出錯(cuò)處理CLRSCON.RIYESNO接收端程序NY數(shù)據(jù)送內(nèi)存BACKNEXTHOME第24頁(yè),課件共41頁(yè),創(chuàng)作于2023年2月7.3串行口的多機(jī)通信主機(jī)從機(jī)N從機(jī)4從機(jī)3從機(jī)2從機(jī)1串行數(shù)據(jù)線(2條)BACKNEXTHOME第25頁(yè),課件共41頁(yè),創(chuàng)作于2023年2月1、主從式多機(jī)通訊原理1,主機(jī)發(fā)送的數(shù)據(jù)可以傳送到各個(gè)從機(jī),從機(jī)發(fā)送的數(shù)據(jù)只能為主機(jī)接收,從機(jī)之間不能直接通訊。2,主機(jī)和從機(jī)的設(shè)置為模式2或3,其中:主機(jī)的SM2=0(單機(jī)方式);從機(jī)的SM2=1(多機(jī)方式)。3,主機(jī)發(fā)送地址碼來(lái)尋找從機(jī)(地址碼特征是第9位數(shù)據(jù)為“1”),所有從機(jī)都接收主機(jī)發(fā)出的地址碼(因?yàn)镽B8=1),既RI=1引發(fā)中斷。在中斷服務(wù)程序中,將接收到地址碼與自己的地址進(jìn)行比較,被選中的從機(jī)將自己的SM2=0,并維持在中斷服務(wù)程序中保持與主機(jī)的聯(lián)系。而未被選中的從機(jī)仍保持SM2=1,并退出中斷服務(wù)程序。4,當(dāng)主機(jī)找到從機(jī)后,開(kāi)始向從機(jī)發(fā)數(shù)據(jù)、命令(其特征為第9位=0)。由于選中的從機(jī)SM2=0,從機(jī)仍可以使用查詢或中斷的方式接收主機(jī)發(fā)出的數(shù)據(jù)或命令(而未選中的從機(jī)因RB8=0不會(huì)引發(fā)它們的中斷)。當(dāng)主機(jī)與從機(jī)的通訊完成后,該從機(jī)再將其SM2=1并退出中斷服務(wù)程序。主機(jī)重新發(fā)出另一個(gè)從機(jī)的地址,所有從機(jī)可以馬上響應(yīng)并接收地址信息。BACKNEXTHOME第26頁(yè),課件共41頁(yè),創(chuàng)作于2023年2月2、多機(jī)通訊中主機(jī)與從機(jī)之間的控制、狀態(tài)信息主機(jī)發(fā)送的通信請(qǐng)求命令:主機(jī)發(fā)送,從機(jī)接收;從機(jī)回送通信應(yīng)答命令:主機(jī)接收,從機(jī)發(fā)送。從機(jī)狀態(tài)字:從機(jī)向主機(jī)發(fā)送的用于表征從機(jī)工作狀態(tài)的信息(如下圖)。BACKNEXTHOMETB8=1地址碼主機(jī)發(fā)送的地址碼RRDYTRDYERR0:合法命令0:發(fā)送未就緒0:接收未就緒1:非法命令1:發(fā)送就緒1:接收就緒從機(jī)返回的狀態(tài)字TB8=0第27頁(yè),課件共41頁(yè),創(chuàng)作于2023年2月主機(jī)程序框圖T1為定時(shí),模式2B=1200,啟動(dòng)T1設(shè)串口為模式3REN=1,SM2=0TB8=1設(shè)定程序數(shù)據(jù):R0~R5調(diào)用MCOMMU停機(jī)MCOMMU發(fā)送從機(jī)地址從機(jī)應(yīng)答?地址相符?發(fā)送命令字TB8=0從機(jī)應(yīng)答?命令正確?命令分類接收數(shù)據(jù)塊發(fā)送數(shù)據(jù)塊從機(jī)接收就緒?從機(jī)發(fā)送就緒?RET命令從機(jī)復(fù)位NNYYNNYYNNYY接收發(fā)送BACKNEXTHOME第28頁(yè),課件共41頁(yè),創(chuàng)作于2023年2月從機(jī)程序框圖T1為定時(shí),模式2B=1200,啟動(dòng)T1設(shè)串口為模式3REN=1,SM2=0TB8=1設(shè)定程序參數(shù):R0~R3開(kāi)串行口中斷停機(jī)主程序BACKNEXTHOME第29頁(yè),課件共41頁(yè),創(chuàng)作于2023年2月保護(hù)現(xiàn)場(chǎng)接收地址符合本機(jī)?回送本機(jī)地址接收下一字符是命令嗎?命令分類本機(jī)發(fā)送準(zhǔn)備就緒?本機(jī)接收準(zhǔn)備就緒?發(fā)TRDY=1狀態(tài)字發(fā)RRDY=1狀態(tài)字發(fā)送數(shù)據(jù)接收數(shù)據(jù)發(fā)送完?接收完?保護(hù)現(xiàn)場(chǎng)返回NNYY發(fā)送命令接收命令非法命令送TRDY=0送RRDY=0NNNY中斷服務(wù)程序BACKNEXTHOME第30頁(yè),課件共41頁(yè),創(chuàng)作于2023年2月7.4串行口的編程與應(yīng)用7.4.1常規(guī)編程方式串行口初始化編程格式:SIO: MOV SCON,#控制狀態(tài)字 ;寫(xiě)方式字且TI=RI=0 MOV PCON,#X0H ;選擇波特率 MOV TMOD,#20H ;T1作波特率發(fā)生器 MOV TH1,#X ;選定波特率 MOV TL1,#X SETB TR1 SETB ES ;開(kāi)串行口中斷 SETB EA ;開(kāi)中斷【注意】:若采用查詢方式,最后兩條指令可以省略。BACKNEXTHOME第31頁(yè),課件共41頁(yè),創(chuàng)作于2023年2月發(fā)送程序:先發(fā)送一個(gè)字符,等待TI=1后再發(fā)送下一個(gè)字符。1.查詢方式:TRAM: MOV A,@R0 ;取數(shù)據(jù) MOV SBUF,A ;發(fā)送一個(gè)字符WAIT: JBC TI,NEXT ;等待發(fā)送結(jié)束 SJMP WAITNEXT: INC R0 ;準(zhǔn)備下一次發(fā)送 SJMP TRAM2.中斷方式: ORG 0023H ;串行口中斷入口 AJMP SINTMAIN: … ;初始化編程TRAM: MOV A,@R0 ;取數(shù)據(jù) MOV SBUF,A ;發(fā)送第一個(gè)字符H: SJMP H ;其它工作SINT: CLR TI ;中斷服務(wù)程序 INC R0 MOV A,@R0 ;取數(shù)據(jù) MOV SBUF,A ;發(fā)送下一個(gè)字符 RETIBACKNEXTHOME第32頁(yè),課件共41頁(yè),創(chuàng)作于2023年2月BACKNEXTHOME接收程序:REN=1、RI=0等待接收,當(dāng)RI=1,從SBUF讀取數(shù)據(jù)1.查詢方式:WAIT: JBC RI,NEXT ;查詢等待 SJMP WAITNEXT: MOV A,SBUF ;讀取接收數(shù)據(jù) MOV @R0,A ;保存數(shù)據(jù) INC R0 ;準(zhǔn)備下一次接收 SJMP WAIT2.中斷方式: ORG 0023H AJMP RINTMAIN: … ;初始化編程H: SJMP H ;其它任務(wù)RINT: CLR RI ;清中斷標(biāo)志 MOV A,SBUF ;讀取接收數(shù)據(jù) MOV @R0,A ;保存數(shù)據(jù) INC R0 RETI第33頁(yè),課件共41頁(yè),創(chuàng)作于2023年2月7.4.2編程舉例【例】:設(shè)有兩單片機(jī)進(jìn)行異步通信,發(fā)送方將片內(nèi)RAM50H起始單元的16個(gè)數(shù)由串行口發(fā)送,接收方以查詢和中斷兩種方式進(jìn)行接收。要求串行口波特率為2400(設(shè)晶振為11.0592MHz),并進(jìn)行奇偶校驗(yàn)?!窘狻浚焊鶕?jù)題目要求,通信波特率可變,且需進(jìn)行奇偶校驗(yàn),因此選擇工作方式3,先進(jìn)行初始化,發(fā)送方和接收方相同,程序如下:BACKNEXTHOME ORG 0000H LJMP MAINMAIN: MOV SCON,#0B0H ;寫(xiě)方式字且TI=RI=0 MOV PCON,#00H ;選擇波特率 MOV TMOD,#20H ;T1作波特率發(fā)生器 MOV TH1,#0F4H ;選定波特率 MOV TL1,#0F4H SETB TR1
LCALL
TXD ;調(diào)用發(fā)送子程序
SJMP $ ;CPU轉(zhuǎn)去執(zhí)行其它任務(wù)第34頁(yè),課件共41頁(yè),創(chuàng)作于2023年2月BACKNEXTHOME發(fā)送方程序。1,查詢方式:
TXD: MOV R0,#50H ;設(shè)數(shù)據(jù)指針 MOV R7,#10H ;數(shù)據(jù)長(zhǎng)度LOOP: MOV A,@R0 ;取一個(gè)字符
MOV C,P ;加奇偶校驗(yàn) MOV TB8,C MOV SBUF,A ;啟動(dòng)一次發(fā)送LOOP1: JBC TI,LOOP2 ;查詢是否發(fā)送完成 LJMP LOOP1LOOP2: INC R0 ;數(shù)據(jù)地址指針加1 DJNZ R7,LOOP ;全部數(shù)據(jù)發(fā)送完成則返回 RET第35頁(yè),課件共41頁(yè),創(chuàng)作于2023年2月發(fā)送方程序。2,中斷方式:
ORG 0023H LJMP TINTMAIN: 。 SETB ES ;開(kāi)串行口中斷 SETB EA ;開(kāi)中斷 MOV R0,#50H ;設(shè)數(shù)據(jù)指針 MOV R7,#10H ;數(shù)據(jù)長(zhǎng)度 CLR TI ;復(fù)位發(fā)送標(biāo)志 MOV A,@R0 ;取一個(gè)字符 MOV C,P ;加奇偶校驗(yàn) MOV TB8,C MOV SBUF,A ;啟動(dòng)一次發(fā)送 SJMP $ ;CPU執(zhí)行其它任務(wù)BACKNEXTHOME第36頁(yè),課件共41頁(yè),創(chuàng)作于2023年2月中斷服務(wù)子程序:TINT: PUSH A ;保護(hù)現(xiàn)場(chǎng) PUSH PSW CLR TI ;清發(fā)送標(biāo)志 DJNZ R7,NEXT ;是否發(fā)送完? CLR ES ;發(fā)送完,關(guān)閉串行口中斷 SJMP TENDNEXT: INC R0 ;未發(fā)送完,修改指針 MOV A,@R0 ;取下一個(gè)字符 MOV C,P ;加奇偶校驗(yàn) MOV TB8,C MOV
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 出門演出合同范本
- 低價(jià)改造廠房合同范本
- 農(nóng)家葡萄售賣合同范本
- 保險(xiǎn)分銷服務(wù)合同范本
- 個(gè)人過(guò)橋資金合同范本
- 協(xié)議酒店價(jià)格合同范本
- 保險(xiǎn)變更合同范本
- 企業(yè)對(duì)外投資合同范本
- 個(gè)人門店裝修合同范本
- 醫(yī)療公司供貨合同范本
- 《國(guó)際金融》課件國(guó)際金融導(dǎo)論
- 各種el34名膽電子管評(píng)測(cè)
- 超分子化學(xué)-杯芳烴課件
- 車標(biāo)識(shí)別 課講義件課件
- 一年級(jí)下學(xué)期安全教育教案
- 哈薩克斯坦共和國(guó)勞動(dòng)法解讀
- 送達(dá)地址確認(rèn)書(shū)(樣本)
- 甘肅省酒泉市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名明細(xì)
- 壓力容器考試審核考試題庫(kù)(容標(biāo)委-氣體協(xié)會(huì)聯(lián)合)
- 學(xué)校食堂操作流程圖
- DB13 2795-2018 大清河流域水污染物排放標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論