第七章 串行通信_第1頁
第七章 串行通信_第2頁
第七章 串行通信_第3頁
第七章 串行通信_第4頁
第七章 串行通信_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第七章串行通信第一頁,共四十一頁,2022年,8月28日7.1串行通信的基本概念7.1.1通信數(shù)據(jù)的傳輸方式傳輸方式并行方式串行方式同步方式異步方式單工方式半雙工方式全雙工方式多工方式NEXTHOME7.1.2串行通信的通信標準串行通信的通信標準主要是指通信的電氣和硬件標準,常用的有RS-232;RS-485/422等。8051單片機的通訊方式有兩種,并行通訊:數(shù)據(jù)的各位同時發(fā)送或接收。串行通訊:數(shù)據(jù)一位一位順序發(fā)送或接收。

第二頁,共四十一頁,2022年,8月28日BACKNEXTHOMERS-232標準電氣特性:邏輯“1”=-3V~-15V;邏輯“0”=+3V~+15V。在與TTL標準連接時必須進行電平轉換,常用芯片有MC1488、MC1489及MAX202~MAX232等。機械特性:常用DB-9和DB-25兩種連接器,經常只使用其中的9個引腳。接口信號:標準RS-232接口定義了25條線,包括4條數(shù)據(jù)線、11條控制線、3條定時線、7條備用和未定義線,一般只用其中的9條。而在實際控制系統(tǒng)中,為了盡量減少連接線的數(shù)量,只使用其中的3條線,即:發(fā)送數(shù)據(jù)(TXD)、接收數(shù)據(jù)(RXD)、地線(GND)。RS-485/422標準電氣特性:邏輯“1”=0.2V~7(12)V;邏輯“0”=-0.2V~-7(-12)V。在與TTL標準連接時同樣必須進行電平轉換,常用芯片有MC1485等。機械特性:通常采用雙線制(雙絞線)平衡方式傳輸。第三頁,共四十一頁,2022年,8月28日BACKNEXTHOME7.1.3串行通信的通信方式串行通信又可分為異步通信和同步通信。異步通信的接受器和發(fā)送器使用各自的時鐘,每次只傳送一字節(jié)數(shù)據(jù),允許時鐘產生誤差;同步通信每次傳送的數(shù)據(jù)量較大,要求精度高,因此接受器和發(fā)送器使用同一時鐘。異步通訊以字符為傳送單位用起始位和停止位標識每個字符的開始和結束字符間隔不固定,只需字符傳送時同步。異步通訊數(shù)據(jù)常用一幀為單位,一幀字符位數(shù)的規(guī)定:起始位,數(shù)據(jù)位,校驗位和停止位,校驗位緊跟在數(shù)據(jù)位后,也可以省略。下圖為省略校驗位后一幀數(shù)據(jù)的示意圖。D0D1D2D3D4D5D6D7停止位起始位優(yōu)點是硬件要求低,可靠性高,傳送距離遠,但速度較慢。第四頁,共四十一頁,2022年,8月28日BACKNEXTHOME同步通信以一串字符為一個傳送單位,字符間不加標識位,在一串字符開始用同步字符標識,硬件要求高,通訊雙方須嚴格同步?!咎崾尽浚涸趩纹瑱C與外設進行數(shù)據(jù)通信時,多采用異步串行通信。7.1.4串行通信數(shù)據(jù)的傳送速率數(shù)據(jù)傳送的速率又稱為波特率,其定義是每秒鐘傳送的二進制數(shù)的位數(shù)。例如,數(shù)據(jù)傳送的速率是120字符/s,而每個字符如上述規(guī)定包含10數(shù)位,則傳送波特率為1200波特。數(shù)據(jù)在單片機中都是以并行的方式處理和存儲的,要進行串行數(shù)據(jù)通信時,就必須將并行數(shù)據(jù)轉換成串行數(shù)據(jù),這部分工作由單片機中的串行通訊口來完成。7.1.5串行通信數(shù)據(jù)的校驗數(shù)據(jù)傳送的過程中經常會出現(xiàn)錯誤,因而必須對數(shù)據(jù)的正確性進行校驗,常分為橫向校驗和縱向校驗。第五頁,共四十一頁,2022年,8月28日7.2串行口的工作方式7.2.1串行口控制寄存器控制單片機串行口工作的寄存器有兩個,即串行口控制寄存器SCON和特殊功能寄存器PCON。串行口控制寄存器SCON,字節(jié)地址98H串行口控制寄存器用于定義串行口的工作方式及實施接收和發(fā)送控制。字節(jié)地址為98H,其各位定義如下表:RITIRB8TB8RENSM2SM1SM0模式選擇多機通訊位允許接收位發(fā)送、接收第9位發(fā)送、接收標志BACKNEXTHOME第六頁,共四十一頁,2022年,8月28日SM0、SM1:串行口工作方式選擇位,其定義如下:可變1+9+1位異步通信UART311Fosc/64或/321+9+1位異步通信UART210可變1+8+1位異步通信UART101Fosc/12同步移位寄存器模式000波特率功能模式SM0SM1其中fosc為晶振頻率SM2:多機通訊控制位。在方式0時,SM2一定要等于0。在方式1中,當(SM2)=1時,只有接收到有效停止位時,RI才置1。在方式2或方式3當(SM2)=1且接收到的第九位數(shù)據(jù)RB8=1時,RI才置1。

BACKNEXTHOME第七頁,共四十一頁,2022年,8月28日BACKNEXTHOMEREN:接收允許控制位。由軟件置位以允許接收,又由軟件清0來禁止接收。TB8:是要發(fā)送數(shù)據(jù)的第9位。在方式2或方式3中,作為要發(fā)送的第9位數(shù)據(jù),根據(jù)需要由軟件置1或清0。例如,可約定作為奇偶校驗位,或在多機通訊中作為區(qū)別地址幀或數(shù)據(jù)幀的標志位。RB8:接收到的數(shù)據(jù)的第9位。在方式0中不使用RB8。在方式1中,若(SM2)=0,RB8為接收到的停止位。在方式2或方式3中,RB8為接收到的第9位數(shù)據(jù)。TI:發(fā)送中斷標志。在方式0中,第8位發(fā)送結束時,由硬件置位。在其它方式的發(fā)送停止位前,由硬件置位。TI置位既表示一幀信息發(fā)送結束,同時也是申請中斷,可根據(jù)需要,用軟件查詢的方法獲得數(shù)據(jù)已發(fā)送完畢的信息,或用中斷的方式來發(fā)送下一個數(shù)據(jù)。TI必須用軟件清0。RI:接收中斷標志位。在方式0,當接收完第8位數(shù)據(jù)后,由硬件置位。在其它方式中,在接收到停止位的中間時刻由硬件置位(例外情況見于SM2的說明)。RI置位表示一幀數(shù)據(jù)接收完畢,可用查詢的方法獲知或者用中斷的方法獲知。RI也必須用軟件清0。第八頁,共四十一頁,2022年,8月28日BACKNEXTHOME特殊功能寄存器PCON,字節(jié)地址87H特殊功能寄存器PCON中只有最高位D7(SMOD位)作為波特率選擇位使用,其余位與串行通信無關。PCON只能字節(jié)尋址,因此須用字節(jié)尋址指令對其進行賦值,SMOD=1:波特率加倍;SMOD=0:波特率不變。7.2.2工作方式0方式0為移位寄存器輸入/輸出方式??赏饨右莆患拇嫫饕詳U展I/O口,也可以外接同步輸入/輸出設備。8位串行數(shù)據(jù)者是從RXD輸入或輸出,TXD用來輸出同步脈沖。輸出:串行數(shù)據(jù)從RXD引腳輸出,TXD引腳輸出移位脈沖。CPU將數(shù)據(jù)寫入發(fā)送寄存器時,立即啟動發(fā)送,將8位數(shù)據(jù)以fos/12的固定波特率從RXD輸出,低位在前,高位在后。發(fā)送完一幀數(shù)據(jù)后,發(fā)送中斷標志TI由硬件置位,必須由軟件復位。輸入:當串行口以方式0接收時,先置位允許接收控制位REN。此時,RXD為串行數(shù)據(jù)輸入端,TXD仍為同步脈沖移位輸出端。當(RI)=0和(REN)=1同時滿足時,開始接收。當接收到第8位數(shù)據(jù)時,將數(shù)據(jù)移入接收寄存器,并由硬件置位RI,同樣必須由軟件復位。第九頁,共四十一頁,2022年,8月28日下圖是方式0擴展輸出和輸入的接線圖。focs/12方式0串行口的波特率BB=focs/12發(fā)送、接收控制器BACKNEXTHOME方式0時,波特率為固定的focs/12。第十頁,共四十一頁,2022年,8月28日BACKNEXTHOME7.2.3工作方式1方式1為波特率可變的10位異步通訊接口方式。發(fā)送或接收一幀信息,包括1個起始位0,8個數(shù)據(jù)位和1個停止位1。輸出:當CPU執(zhí)行一條指令將數(shù)據(jù)寫入發(fā)送緩沖SBUF時,就啟動發(fā)送。串行數(shù)據(jù)從TXD引腳輸出,發(fā)送完一幀數(shù)據(jù)后,就由硬件置位TI。輸入:在(REN)=1時,串行口采樣RXD引腳,當采樣到1至0的跳變時,確認是開始位0,就開始接收一幀數(shù)據(jù)。只有當(RI)=0且停止位為1或者(SM2)=0時,停止位才進入RB8,8位數(shù)據(jù)才能進入接收寄存器,并由硬件置位中斷標志RI;否則信息丟失。所以在方式1接收時,應先用軟件清零RI和SM2標志。1/161/2T1溢出10SMOD方式1、3時串行口的波特率BB=1/32×T1溢出率或=1/16×T1溢出率發(fā)送、接收控制器方式1時,波特率是可變的,由定時/計數(shù)器T1的溢出率決定,如左圖所示:第十一頁,共四十一頁,2022年,8月28日7.2.4工作方式2方式2為可選定波特率的11位UART方式。它比方式1增加了一位可程控為1或0的第9位數(shù)據(jù)。輸出:發(fā)送的串行數(shù)據(jù)由TXD端輸出一幀信息為11位,附加的第9位來自SCON寄存器的TB8位,用軟件置位或復位。它可作為多機通訊中地址/數(shù)據(jù)信息的標志位,也可以作為數(shù)據(jù)的奇偶校驗位。當CPU執(zhí)行一條數(shù)據(jù)寫入SUBF的指令時,就啟動發(fā)送器發(fā)送。發(fā)送一幀信息后,置位中斷標志TI。輸入:在(REN)=1時,串行口采樣RXD引腳,當采樣到1至0的跳變時,確認是開始位0,就開始接收一幀數(shù)據(jù)。在接收到附加的第9位數(shù)據(jù)后,當(RI)=0且(SM2)=0時,接收完停止位后,第9位數(shù)據(jù)進入RB8,8位數(shù)據(jù)進入接收寄存器,并由硬件置位中斷標志RI;否則信息丟失。且不置位RI。再過一位傳送時間后,不管上述條件是否滿足,接收電路即行復位,并重新檢測RXD上從1到0的跳變。當(SM2)=1時,若第9位數(shù)據(jù)為0,則不置位RI,只有第9位數(shù)據(jù)為1,才激活RI。波特率的計算公式為:波特率=2SMOD×(振蕩器頻率)/64BACKNEXTHOME第十二頁,共四十一頁,2022年,8月28日7.2.5工作方式3方式3為波特率可變的11位UART方式。除波特率外,其余與方式2相同。1/2focs/210SMOD方式2串行口的波特率B1/16B=focs/32或=fosc/64發(fā)送、接收控制器BACKNEXTHOME方式2時,波特率是可選擇的,由PCON中的SMOD位決定,如左圖所示:第十三頁,共四十一頁,2022年,8月28日BACKNEXTHOME7.2.6工作方式1、3時波特率的計算定時器T1作為波特率發(fā)生器,其公式如下: 波特率=2SMOD/32×定時器T1溢出率 T1溢出率=T1計數(shù)率/產生溢出所需的周期數(shù)式中T1計數(shù)率取決于它工作在定時器狀態(tài)還是計數(shù)器狀態(tài)。當工作于定時器狀態(tài)時,T1計數(shù)率為fosc/12;當工作于計數(shù)器狀態(tài)時,T1計數(shù)率為外部輸入頻率,此頻率應小于fosc/24。產生溢出所需周期與定時器T1的工作方式、T1的預置值有關。 定時器T1工作于方式0:溢出所需周期數(shù)=8192-x 定時器T1工作于方式1:溢出所需周期數(shù)=65536-x 定時器T1工作于方式2:溢出所需周期數(shù)=256-x因為方式2為自動重裝入初值的8位定時器/計數(shù)器模式,所以用它來做波特率發(fā)生器最恰當。當時鐘頻率選用11.0592MHZ時,極易獲得標準的波特率,所以很多單片機系統(tǒng)選用這個看起來“怪”的晶振就是這個道理。第十四頁,共四十一頁,2022年,8月28日下表列出了定時器T1工作于方式2常用波特率及初值:常用波特率Fosc(MHZ)SMODTH1初值1920011.05921FDH960011.05920FDH480011.05920FAH240011.05920F4h120011.05920E8hBACKNEXTHOME第十五頁,共四十一頁,2022年,8月28日BACKNEXTHOME方式發(fā)送條件接收條件接收方式主要應用0TI=0RI=0,REN=1查詢、中斷同步移位,系統(tǒng)擴并口1TI=0RI=0,REN=1查詢、中斷8位數(shù)據(jù)異步傳送2、3TI=0RI=0,REN=1,SM2=0查詢(無中斷)8位數(shù)據(jù)+奇偶位的異步收發(fā)UARTRI=0,REN=1,RB8=1若SM2=0時查詢。若SM2=1時引發(fā)中斷8位數(shù)據(jù)+控制位的異步收發(fā)UART四種模式的接收、發(fā)送條件第十六頁,共四十一頁,2022年,8月28日7.2.7應用舉例1.工作方式0應用舉例

8051單片機串行口方式0為移位寄存器方式,外接一個串入并出的移位寄存器,就可以擴展一個并行口?!纠浚河?051串行口外接CD4094擴展8位并行輸出口,如圖所示,8位并行口的各位都接一個發(fā)光二極管,要求發(fā)光管呈流水燈狀態(tài)。串行口方式0的數(shù)據(jù)傳送可采用中斷方式,也可采用查詢方式,無論哪種方式,都要借助于TI或RI標志。串行發(fā)送時,可以靠TI置位(發(fā)完一幀數(shù)據(jù)后)引起中斷申請,在中斷服務程序中發(fā)送下一幀數(shù)據(jù),或者通過查詢TI的狀態(tài),只要TI為0就繼續(xù)查詢,TI為1就結束查詢,發(fā)送下一幀數(shù)據(jù)。在串行接收時,則由RI引起中斷或對RI查詢來確定何時接收下一幀數(shù)據(jù)。無論采用什么方式,在開始通訊之前,都要先對控制寄存器SCON進行初始化。在方式0中將00H送SCON就可以了。BACKNEXTHOME第十七頁,共四十一頁,2022年,8月28日【解】:程序清單如下 ORG 2000HSTART: MOV SCON,#00H ;置串行口工作方式0 MOV A,#80H ;最高位燈先亮 CLR P1.0 ;關閉并行輸出(避免傳輸過程 ;中,各LED的"暗紅"現(xiàn)象) CLR TI ;清TI標志OUT0: MOV SBUF,A ;開始串行輸出OUT1: JNB TI,$ ;輸出完否 CLR TI ;完了,清TI標志,以備下次 ;發(fā)送 SETB P1.0 ;打開并行口輸出 ACALL DELAY ;延時一段時間 RR A ;循環(huán)右移 CLR P1.0 ;關閉并行輸出 JMP OUT0 ;循環(huán)BACKNEXTHOME第十八頁,共四十一頁,2022年,8月28日2.工作方式1應用舉例

發(fā)送程序(查詢方式):T1初始化啟動T1串行口初始化輸入數(shù)據(jù)到A發(fā)送一幀數(shù)據(jù)MOVSBUF,ATI=1?軟件清TIYNBACKNEXTHOME編寫發(fā)送程序的一般方法是:先初始化串行口和T1,然后將發(fā)送數(shù)據(jù)送入SBUF,查詢TI位,當TI為1后,復位TI并立即發(fā)送下一幀數(shù)據(jù),直至數(shù)據(jù)發(fā)送完畢??驁D如右圖所示:M0M1C/TGATEM0M1C/TGATE設定定時器T1的工作模式00100000BRITIRB8TB8RENSM2SM1SM0設定串行口模式寄存器SCON為01000000B第十九頁,共四十一頁,2022年,8月28日BACKNEXTHOME程序清單如下: org 0000h ljmp 0100h org 0100hStart: mov tmod,#20h ;設定定時器T1為模式2 mov tl1,#0f4h ;送定時初值(fosc=11.059) mov th1,#0f4h ;波特率B=2400 setb tr1 ;啟動定時器T1 mov scon,#40h ;設定串行口為模式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ā)送完一幀后清標志 sjmp loop2 ;返回繼續(xù) end第二十頁,共四十一頁,2022年,8月28日接收程序(查詢方式):M0M1C/TGATEM0M1C/TGATE定時器TMOD(89H)的工作模式00100000BRITIRB8TB8RENSM2SM1SM0串行口模式寄存器SCON(98H)為01010000BT1初始化啟動T1串行口初始化輸出數(shù)據(jù)到P1數(shù)據(jù)送AMOVA,SBUFRI=1?軟件清TIYN編寫接收程序與發(fā)送程序類似:先初始化串行口和T1,然后查詢RI位,當RI為1后,復位RI并立即接收一幀數(shù)據(jù),直至數(shù)據(jù)接收完畢??驁D如右圖所示:BACKNEXTHOME第二十一頁,共四十一頁,2022年,8月28日程序清單如下: org 0000h ljmp 0100h org 0100hStart: mov tmod,#20h ;選定T1為模式2(自動重裝) mov tl1,#0f4h ;設定初值 mov th1,#0f4h ;同上 mov pcon,#00h ;PCON的SMOD=0 setb tr1 ;啟動T1定時器 clr ri ;清接收標志 mov scon,#50h ;設定串行口為方式1Loop1: jnb ri,loop1 ;判斷是否接收到數(shù)據(jù)? clr ri ;接收到數(shù)據(jù)后清接收標志 mov a,sbuf ;數(shù)據(jù)送累加器A mov p1,a ;從P1口輸出 sjmp loop1 ;繼續(xù) endBACKNEXTHOME【習題】:將上述程序用中斷方式編寫。第二十二頁,共四十一頁,2022年,8月28日3.工作方式2、3應用舉例

與模式1相比,模式2、3的主要特點:1,9位數(shù)據(jù)的傳送格式:發(fā)送時第9位在TB8;接收時第9位在RB8中。2,SM2:多機通訊位:在模式0、1中:SM2=0。當RI=1時便可以引發(fā)中斷。 在模式2、3中:如果SM2=0,TI和RI可以被激活,并引發(fā)中斷!如果SM2=1,且RB8=1時,RI被激活時可以引發(fā)中斷!根據(jù)上面特點,模式2、3可以: 1,利用第9位數(shù)據(jù)來傳送、接收每一字節(jié)的“奇偶效驗位”。 2,利用SM2、RB8實現(xiàn)多機通訊功能。BACKNEXTHOME第二十三頁,共四十一頁,2022年,8月28日利用模式2,3進行帶奇校驗的串行通訊程序流程圖數(shù)據(jù)送累加器APSW.P=1?SETSCON.TB8CLRSCON.TB8MOVSBUF,ATI=1?CLRSCON.TIYESNONOYES發(fā)送端程序RI=1?MOVA,SBUFPSW.P⊕RB8=0?出錯處理CLRSCON.RIYESNO接收端程序NY數(shù)據(jù)送內存BACKNEXTHOME第二十四頁,共四十一頁,2022年,8月28日7.3串行口的多機通信主機從機N從機4從機3從機2從機1串行數(shù)據(jù)線(2條)BACKNEXTHOME第二十五頁,共四十一頁,2022年,8月28日1、主從式多機通訊原理1,主機發(fā)送的數(shù)據(jù)可以傳送到各個從機,從機發(fā)送的數(shù)據(jù)只能為主機接收,從機之間不能直接通訊。2,主機和從機的設置為模式2或3,其中:主機的SM2=0(單機方式);從機的SM2=1(多機方式)。3,主機發(fā)送地址碼來尋找從機(地址碼特征是第9位數(shù)據(jù)為“1”),所有從機都接收主機發(fā)出的地址碼(因為RB8=1),既RI=1引發(fā)中斷。在中斷服務程序中,將接收到地址碼與自己的地址進行比較,被選中的從機將自己的SM2=0,并維持在中斷服務程序中保持與主機的聯(lián)系。而未被選中的從機仍保持SM2=1,并退出中斷服務程序。4,當主機找到從機后,開始向從機發(fā)數(shù)據(jù)、命令(其特征為第9位=0)。由于選中的從機SM2=0,從機仍可以使用查詢或中斷的方式接收主機發(fā)出的數(shù)據(jù)或命令(而未選中的從機因RB8=0不會引發(fā)它們的中斷)。當主機與從機的通訊完成后,該從機再將其SM2=1并退出中斷服務程序。主機重新發(fā)出另一個從機的地址,所有從機可以馬上響應并接收地址信息。BACKNEXTHOME第二十六頁,共四十一頁,2022年,8月28日2、多機通訊中主機與從機之間的控制、狀態(tài)信息主機發(fā)送的通信請求命令:主機發(fā)送,從機接收;從機回送通信應答命令:主機接收,從機發(fā)送。從機狀態(tài)字:從機向主機發(fā)送的用于表征從機工作狀態(tài)的信息(如下圖)。BACKNEXTHOMETB8=1地址碼主機發(fā)送的地址碼RRDYTRDYERR0:合法命令0:發(fā)送未就緒0:接收未就緒1:非法命令1:發(fā)送就緒1:接收就緒從機返回的狀態(tài)字TB8=0第二十七頁,共四十一頁,2022年,8月28日主機程序框圖T1為定時,模式2B=1200,啟動T1設串口為模式3REN=1,SM2=0TB8=1設定程序數(shù)據(jù):R0~R5調用MCOMMU停機MCOMMU發(fā)送從機地址從機應答?地址相符?發(fā)送命令字TB8=0從機應答?命令正確?命令分類接收數(shù)據(jù)塊發(fā)送數(shù)據(jù)塊從機接收就緒?從機發(fā)送就緒?RET命令從機復位NNYYNNYYNNYY接收發(fā)送BACKNEXTHOME第二十八頁,共四十一頁,2022年,8月28日從機程序框圖T1為定時,模式2B=1200,啟動T1設串口為模式3REN=1,SM2=0TB8=1設定程序參數(shù):R0~R3開串行口中斷停機主程序BACKNEXTHOME第二十九頁,共四十一頁,2022年,8月28日保護現(xiàn)場接收地址符合本機?回送本機地址接收下一字符是命令嗎?命令分類本機發(fā)送準備就緒?本機接收準備就緒?發(fā)TRDY=1狀態(tài)字發(fā)RRDY=1狀態(tài)字發(fā)送數(shù)據(jù)接收數(shù)據(jù)發(fā)送完?接收完?保護現(xiàn)場返回NNYY發(fā)送命令接收命令非法命令送TRDY=0送RRDY=0NNNY中斷服務程序BACKNEXTHOME第三十頁,共四十一頁,2022年,8月28日7.4串行口的編程與應用7.4.1常規(guī)編程方式串行口初始化編程格式:SIO: MOV SCON,#控制狀態(tài)字 ;寫方式字且TI=RI=0 MOV PCON,#X0H ;選擇波特率 MOV TMOD,#20H ;T1作波特率發(fā)生器 MOV TH1,#X ;選定波特率 MOV TL1,#X SETB TR1 SETB ES ;開串行口中斷 SETB EA ;開中斷【注意】:若采用查詢方式,最后兩條指令可以省略。BACKNEXTHOME第三十一頁,共四十一頁,2022年,8月28日發(fā)送程序:先發(fā)送一個字符,等待TI=1后再發(fā)送下一個字符。1.查詢方式:TRAM: MOV A,@R0 ;取數(shù)據(jù) MOV SBUF,A ;發(fā)送一個字符WAIT: JBC TI,NEXT ;等待發(fā)送結束 SJMP WAITNEXT: INC R0 ;準備下一次發(fā)送 SJMP TRAM2.中斷方式: ORG 0023H ;串行口中斷入口 AJMP SINTMAIN: … ;初始化編程TRAM: MOV A,@R0 ;取數(shù)據(jù) MOV SBUF,A ;發(fā)送第一個字符H: SJMP H ;其它工作SINT: CLR TI ;中斷服務程序 INC R0 MOV A,@R0 ;取數(shù)據(jù) MOV SBUF,A ;發(fā)送下一個字符 RETIBACKNEXTHOME第三十二頁,共四十一頁,2022年,8月28日BACKNEXTHOME接收程序:REN=1、RI=0等待接收,當RI=1,從SBUF讀取數(shù)據(jù)1.查詢方式:WAIT: JBC RI,NEXT ;查詢等待 SJMP WAITNEXT: MOV A,SBUF ;讀取接收數(shù)據(jù) MOV @R0,A ;保存數(shù)據(jù) INC R0 ;準備下一次接收 SJMP WAIT2.中斷方式: ORG 0023H AJMP RINTMAIN: … ;初始化編程H: SJMP H ;其它任務RINT: CLR RI ;清中斷標志 MOV A,SBUF ;讀取接收數(shù)據(jù) MOV @R0,A ;保存數(shù)據(jù) INC R0 RETI第三十三頁,共四十一頁,2022年,8月28日7.4.2編程舉例【例】:設有兩單片機進行異步通信,發(fā)送方將片內RAM50H起始單元的16個數(shù)由串行口發(fā)送,接收方以查詢和中斷兩種方式進行接收。要求串行口波特率為2400(設晶振為11.0592MHz),并進行奇偶校驗?!窘狻浚焊鶕?jù)題目要求,通信波特率可變,且需進行奇偶校驗,因此選擇工作方式3,先進行初始化,發(fā)送方和接收方相同,程序如下:BACKNEXTHOME ORG 0000H LJMP MAINMAIN: MOV SCON,#0B0H ;寫方式字且TI=RI=0 MOV PCON,#00H ;選擇波特率 MOV TMOD,#20H ;T1作波特率發(fā)生器 MOV TH1,#0F4H ;選定波特率 MOV TL1,#0F4H SETB TR1

LCALL

TXD ;調用發(fā)送子程序

SJMP $ ;CPU轉去執(zhí)行其它任務第三十四頁,共四十一頁,2022年,8月28日BACKNEXTHOME發(fā)送方程序。1,查詢方式:

TXD: MOV R0,#50H ;設數(shù)據(jù)指針 MOV R7,#10H ;數(shù)據(jù)長度LOOP: MOV A,@R0 ;取一個字符

MOV C,P ;加奇偶校驗 MOV TB8,C MOV SBUF,A ;啟動一次發(fā)送LOOP1: JBC TI,LOOP2 ;查詢是否發(fā)送完成 LJMP LOOP1LOOP2: INC R0 ;數(shù)據(jù)地址指針加1 DJNZ R7,LOOP ;全部數(shù)據(jù)發(fā)送完成則返回 RET第三十五頁,共四十一頁,2022年,8月28日發(fā)送方程序。2,中斷方式:

ORG 0023H LJMP TINTMAIN: 。 SETB ES ;開串行口中斷 SETB EA ;開中斷 MOV R0,#50H ;設數(shù)據(jù)指針 MOV R7,#10H ;數(shù)據(jù)長度 CLR TI ;復位發(fā)送標志 MOV A,@R0 ;取一個字符 MOV C,P ;加奇偶校驗 MOV TB8,C MOV SBUF,A ;啟動一次發(fā)送 SJMP $ ;CPU執(zhí)行其它任務BACKNEXTHOME第三十六頁,共四十一頁,2022年,8月28日中斷服務子程序:TINT: PUSH A ;保護現(xiàn)場 PUSH PSW CLR TI ;清發(fā)送標志 DJNZ R7,NEXT ;是否發(fā)送完? CLR ES ;發(fā)送完,關閉串行口中斷 SJMP TENDNEXT: INC R0 ;未發(fā)送完,修改指針 MOV A,@R0 ;取下一個字符 MOV C,P ;加奇偶校驗 MOV TB8,C MOV

溫馨提示

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

評論

0/150

提交評論