單片機第8章-AT89S51單片機串行通信技術(shù)課件_第1頁
單片機第8章-AT89S51單片機串行通信技術(shù)課件_第2頁
單片機第8章-AT89S51單片機串行通信技術(shù)課件_第3頁
單片機第8章-AT89S51單片機串行通信技術(shù)課件_第4頁
單片機第8章-AT89S51單片機串行通信技術(shù)課件_第5頁
已閱讀5頁,還剩95頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

單片機原理、應(yīng)用與仿真第8章AT89S51單片機串行通信接口技術(shù)單片機原理、應(yīng)用與仿真第8章AT89S51單片機串行通信單片機原理、應(yīng)用與仿真第8章AT89S51單片機串行通信接口技術(shù)【知識目標(biāo)】1.掌握串行口的工作原理及相關(guān)的特殊功能寄存器。2.熟悉標(biāo)準(zhǔn)串行接口的硬件接口設(shè)計。3.掌握串行通信程序的設(shè)計?!炯寄苣繕?biāo)】1.掌握串行口的硬件接口電路設(shè)計及軟件驅(qū)動程序設(shè)計。2.掌握基于PROTEUS的串行通信接口電路的仿真調(diào)試。單片機原理、應(yīng)用與仿真第8章AT89S51單片機串行通信單片機原理、應(yīng)用與仿真8.1串行口的結(jié)構(gòu)AT89S51單片機內(nèi)部有一個功能強大的全雙工的異步通信串口。全雙工就是雙機之間串行接收、發(fā)送數(shù)據(jù)可同時進行。異步通信是指通信雙方?jīng)]有同步時鐘來控制收、發(fā)雙方的傳送,而是靠雙方各自的時鐘來控制數(shù)據(jù)的異步傳送。單片機中使用的數(shù)據(jù)都是并行數(shù)據(jù),所以在發(fā)送端將并行數(shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù),而在接收端要將串行數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù)。這是由串行接口電路實現(xiàn),這種電路也稱之為通用異步接收發(fā)送器(UART)。AT89S51單片機的串口由2個數(shù)據(jù)緩沖器、1個移位寄存器和1個串行控制寄存器等組成。數(shù)據(jù)緩沖器由串行接收緩沖器和發(fā)送緩沖器構(gòu)成,它們在物理上是獨立的,既可以接收數(shù)據(jù)也可以發(fā)送數(shù)據(jù),還可以同時發(fā)送和接收數(shù)據(jù)。接收緩沖器只能讀出,不能寫入,而發(fā)送緩沖器則只能寫入,不能讀出。它們共用一個地址(99H)。單片機原理、應(yīng)用與仿真8.1串行口的結(jié)構(gòu)AT89S51單單片機原理、應(yīng)用與仿真8.1.1串行口控制寄存器SCONSCON是AT89S51單片機可位尋址的特殊功能寄存器,主要用于控制串口的串行數(shù)據(jù)通信。單元地址是98H,復(fù)位后位00H。各位的定義如下:位名稱SM0SM1SM2RENTB8RB8TIRI位地址9FH9EH9DH9CH9BH9AH99H98H位號SCON.7SCON.6SCON.5SCON.4SCON.3SCON.2SCON.1SCON.0單片機原理、應(yīng)用與仿真8.1.1串行口控制寄存器SCONS單片機原理、應(yīng)用與仿真8.1.1串行口控制寄存器SCONSM0SM1:串行口4種工作方式的選擇位。如表8-1所示。SM0SM1工作方式功能簡述00工作方式0移位寄存器工作方式,波特率為/1201工作方式18位數(shù)據(jù)異步收發(fā),波特率可變10工作方式29位數(shù)據(jù)異步收發(fā),波特率為/32或/6411工作方式39位數(shù)據(jù)異步收發(fā),波特率可變表8-1串行通信工作方式單片機原理、應(yīng)用與仿真8.1.1串行口控制寄存器SCONS單片機原理、應(yīng)用與仿真8.1.1串行口控制寄存器SCONSM2:多機級通信控制位。因為多機通信是在方式2和方式3下進行的,因此,SM2位主要用于方式2和方式3中。當(dāng)串行口以方式2或方式3接收時,如果SM2=1,則只有當(dāng)接收到的第9位數(shù)據(jù)(RB8)為1時,才將接收到的前8位數(shù)據(jù)送入SBUF,并置1RI,產(chǎn)生中斷請求;當(dāng)接收到的第9位數(shù)據(jù)(RB8)為0時,則將接收到的前8位數(shù)據(jù)丟棄。而當(dāng)SM2=0時,則不論第9位數(shù)據(jù)是1還是0,都將前8位數(shù)據(jù)送入SBUF中,并將RI置1,產(chǎn)生中斷請求。在方式1時,如果SM2=1,則只有收到有效的停止位時才會激活RI。在方式0時,SM2必須為0。單片機原理、應(yīng)用與仿真8.1.1串行口控制寄存器SCONS單片機原理、應(yīng)用與仿真8.1.1串行口控制寄存器SCONREN:允許串行接收位。由軟件置1或清0。若REN=1,允許串行口接收數(shù)據(jù);若REN=0,禁止串行口接收數(shù)據(jù)。TB8:發(fā)送的第9位數(shù)據(jù)。在方式2和3時,TB8是要發(fā)送的第9位數(shù)據(jù)。其值由軟件置1或清0。在雙機通信時,TB8一般作為奇偶校驗位使用;在多機通信中用來表示主機發(fā)送的是地址幀還是數(shù)據(jù)幀,TB8=1為地址幀,TB8=0為數(shù)據(jù)幀。RB8:接收到的第9位數(shù)據(jù)。在方式2和3時,TB8存放接收到的第9位數(shù)據(jù)。在方式1,如果SM2=0,RB8是接收到的停止位。在方式0,不使用RB8。單片機原理、應(yīng)用與仿真8.1.1串行口控制寄存器SCONR單片機原理、應(yīng)用與仿真8.1.1串行口控制寄存器SCONTI:發(fā)送中斷標(biāo)志位。串行口工作在方式0時,串行發(fā)送第8位數(shù)據(jù)結(jié)束時由硬件置1,在其他工作方式,串行口發(fā)送停止位的開始時置1。TI=1,表示一幀數(shù)據(jù)發(fā)送結(jié)束,可供軟件查詢,也可申請中斷。CPU響應(yīng)中斷后,在中斷服務(wù)程序中向SBUF寫入要發(fā)送的下一幀數(shù)據(jù)。TI必須由軟件清0。RI:接收中斷標(biāo)志位。串行口在工作方式0時,接收完第8位數(shù)據(jù)時,RI由硬件置1。在其它工作方式中,串行口接收到停止位時,該位置1。RI=1,表示一幀數(shù)據(jù)接收完畢,并申請中斷,要求CPU從接收SBUF取走數(shù)據(jù)。該位的狀態(tài)也可供軟件查詢。RI必須由軟件清0。單片機原理、應(yīng)用與仿真8.1.1串行口控制寄存器SCONT單片機原理、應(yīng)用與仿真8.1.2電源控制寄存器PCONPCON,不能位尋址。地址為87H。各位的定義如下其中,與串行通信相關(guān)的位是SMOD。SMOD:串行口波特率系數(shù)控制位。若SMOD=1,方式1、方式2和方式3的波特率加倍。若SMOD=0,各工作方式的波特率保持不變。位稱SMOD

———GF1GF0PDIDL單片機原理、應(yīng)用與仿真8.1.2電源控制寄存器PCONPC單片機原理、應(yīng)用與仿真8.1.3數(shù)據(jù)緩沖寄存器SBUF數(shù)據(jù)緩沖寄存器SBUF用于保存要發(fā)送的數(shù)據(jù)或者從串口接收到的數(shù)據(jù),在特殊功能寄存器區(qū)的地址是99H。CPU執(zhí)行寫

MOVSBUF,A指令便開始觸發(fā)串口數(shù)據(jù)的發(fā)送。SBUF便一位一位地發(fā)送數(shù)據(jù),發(fā)送完成后置標(biāo)志TI=1;在CPU允許接收串行數(shù)據(jù)的時,外部串行數(shù)據(jù)經(jīng)RXD送入SBUF時,電路便自動啟動接收,第9位則裝入SCON寄存器的RB8位,直至完成一幀數(shù)據(jù)后將RI置1,當(dāng)串口接收緩沖器接收到一幀數(shù)據(jù)時,可以執(zhí)行MOVA,SBUF指令進行讀取。單片機原理、應(yīng)用與仿真8.1.3數(shù)據(jù)緩沖寄存器SBUF數(shù)單片機原理、應(yīng)用與仿真8.2串行口的工作方式AT89S51單片機的串行接口有4種工作模式,可通過對SCON中的SM0、SM1位的設(shè)置選擇。1.工作方式0串行數(shù)據(jù)通過RXD輸入輸出,TXD輸出時鐘。每次發(fā)送或者接收8位數(shù)據(jù)。波特率為

/12。當(dāng)以中斷方式傳送數(shù)據(jù)時,CPU響應(yīng)中斷并不會自動清除TI、RI標(biāo)志,所以在中斷服務(wù)程序中必須由指令清0。單片機原理、應(yīng)用與仿真8.2串行口的工作方式AT89S51單片機原理、應(yīng)用與仿真2.工作方式1串行數(shù)據(jù)通過TXD發(fā)送,RXD接收。一幀數(shù)據(jù)是10位,包括1位起始位,8位數(shù)據(jù)為和1位停止位。波特率是可變的,由定時器1溢出率和SMOD共同決定。方式1的波特率由下式確定:

方式1波特率=當(dāng)一幀數(shù)據(jù)發(fā)送結(jié)束時,將串行控制寄存器SCON中的TI置1,通知CPU數(shù)據(jù)發(fā)送已經(jīng)結(jié)束,可以發(fā)送下一幀數(shù)據(jù)。若REN處于允許接收狀態(tài),當(dāng)一幀數(shù)據(jù)接收完畢后,將SCON中的RI置1,通知CPU從SBUF取走接收到的數(shù)據(jù)。單片機原理、應(yīng)用與仿真2.工作方式1串行數(shù)據(jù)通過TXD發(fā)送單片機原理、應(yīng)用與仿真3.工作方式2串行數(shù)據(jù)通過TXD發(fā)送,RXD接收。每幀數(shù)據(jù)均為11位,包括1位起始位,8位數(shù)據(jù)位,1位可程控為1或0的第9位及1位停止位。波特率由下式確定:方式2的波特率=第9位數(shù)據(jù)可以自己定義,一般在雙機通信時作為奇偶校驗位,多機通信時作為地址/數(shù)據(jù)的標(biāo)志位。在發(fā)送一幀數(shù)據(jù)時,CPU除了要把8位數(shù)據(jù)送SBUF外,要先將第9位數(shù)據(jù)送到SCON的TB8中。單片機原理、應(yīng)用與仿真3.工作方式2串行數(shù)據(jù)通過TXD發(fā)送單片機原理、應(yīng)用與仿真4.工作方式3除了波特率外,工作方式3和方式2相同,方式3的波特率由下式確定:方式3波特率=單片機原理、應(yīng)用與仿真4.工作方式3除了波特率外,工作方單片機原理、應(yīng)用與仿真8.3波特率的設(shè)定AT89S51單片機的串行口以方式0工作時,波特率為

/12。串行口工作于方式2時,若SMOD=1,波特率為振蕩頻率的1/32;若SMOD=0,波特率為振蕩頻率的1/64。串行口以方式1或方式3工作時,波特率是可變的。波特率的計算公式為:波特率=單片機原理、應(yīng)用與仿真8.3波特率的設(shè)定AT89S51單片單片機原理、應(yīng)用與仿真如果定時器T1用作波特率發(fā)生器,則就不能用作中斷。在典型的應(yīng)用中T1以定時器方式工作,并處于定時方式2即自動重新裝載的模式下,設(shè)置完后啟動定時器1。則波特率為:溢出率=波特率=單片機原理、應(yīng)用與仿真如果定時器T1用作波特率發(fā)生器,則就單片機原理、應(yīng)用與仿真時鐘頻率波特率常

數(shù)SMOD=1SMOD=01228800FEHFFH19200FDH--14400FCHFEH9600F9HFDH4800F3HF9H2400E6HF3H1200CCHE6H11.059228800FEHFFH19200FDH--14400FCHFEH9600FAHFDH4800F4HFAH2400E8HF4H1200D0HE8H單片機原理、應(yīng)用與仿真時鐘頻率波特率常數(shù)SM單片機原理、應(yīng)用與仿真8.4單片機的串行通信接口技術(shù)AT89S51單片機串行口的輸入、輸出均為TTL電平。使用TTL電平進行串行數(shù)據(jù)的傳送,傳輸距離短,抗干擾能力差。為了提高通信的可靠性,增大串行通信的距離,通常采用標(biāo)準(zhǔn)串行接口,如RS-232、RS-422以及RS-485等標(biāo)準(zhǔn)接口。RS-232是美國電子工業(yè)協(xié)會(EIA)的推薦標(biāo)準(zhǔn),適用于短距離或帶調(diào)制解調(diào)器的串行通信場合。為了提高串行數(shù)據(jù)傳輸率和通信距離以及抗干擾能力,EIA又公布了RS-422和RS-485串行總線接口標(biāo)準(zhǔn)。單片機原理、應(yīng)用與仿真8.4單片機的串行通信接口技術(shù)AT8單片機原理、應(yīng)用與仿真8.4.1標(biāo)準(zhǔn)串行通信接口1.RS-232C接口RS-232C是異步串行通信中應(yīng)用最廣的標(biāo)準(zhǔn)串行接口,它定義了數(shù)據(jù)終端設(shè)備和數(shù)據(jù)通信設(shè)備之間的串行接口標(biāo)準(zhǔn)。(1)RS-232信號引腳定義RS-232C標(biāo)準(zhǔn)規(guī)定了25針連接器,但許多信號是為了通信業(yè)務(wù)聯(lián)系或信息控制而定義的,所以PC機配置的都是9針“D”型連接器。圖8-3為RS-232C的“D”型9針插頭的引腳定義。單片機原理、應(yīng)用與仿真8.4.1標(biāo)準(zhǔn)串行通信接口1.RS-單片機原理、應(yīng)用與仿真(2)電氣特性RS-232C上傳送的數(shù)字量采用負邏輯,且與地對稱。邏輯1:-3~-15V;邏輯0:+3~+15V。RS-232C標(biāo)準(zhǔn)的信號傳輸?shù)淖畲箅娎|長度為30m,最高數(shù)據(jù)傳輸速率位20kb/s。單片機原理、應(yīng)用與仿真(2)電氣特性RS-232C上傳送的單片機原理、應(yīng)用與仿真(3)電平轉(zhuǎn)換由于AT89S51單片機串行口的輸入、輸出都是TTL電平,TTL電平和RS-232C電平互不兼容,所以必須進行電平轉(zhuǎn)換,常用的芯片是美國MAXIM公司的產(chǎn)品MAX232芯片。

MAX232是RS-232C雙工發(fā)送器/接收器電路芯片,其外部引腳如圖8-4所示,使用MAX232實現(xiàn)TTL/RS-232C之間的電平轉(zhuǎn)換電路如圖8-5所示。單片機原理、應(yīng)用與仿真(3)電平轉(zhuǎn)換由于AT89S51單片單片機原理、應(yīng)用與仿真MAX232芯片引腳圖及RS-232C接口的電平轉(zhuǎn)換電路單片機原理、應(yīng)用與仿真MAX232芯片引腳圖及RS-232單片機原理、應(yīng)用與仿真2.RS-422A接口

由于RS-232C傳輸?shù)乃俾实?、通信距離短、抗干擾能力差等,所以EIA又制定了RS-422A標(biāo)準(zhǔn)。(1)電氣特性RS-422A的全稱是“平衡電壓數(shù)字接口電路的電氣特性”,全雙工,傳輸信號為兩對平衡差分信號線,因此RS-422A的傳輸距離長,最大傳輸距離可達到1200m,最大傳輸速率位10Mb/s。單片機原理、應(yīng)用與仿真2.RS-422A接口

單片機原理、應(yīng)用與仿真(2)電平轉(zhuǎn)換TTL電平轉(zhuǎn)換成RS-422A電平的常用芯片有MC3487、SN75174等;RS-422A電平轉(zhuǎn)換成TTL電平的常用芯片有MC3486、SN75175等。典型的轉(zhuǎn)換電路如圖8-6所示。

單片機原理、應(yīng)用與仿真(2)電平轉(zhuǎn)換TTL電平轉(zhuǎn)換成RS-單片機原理、應(yīng)用與仿真3.RS-485接口RS-485是RS-422A的變形,它與RS-422A的區(qū)別是RS-485為半雙工,采用1對平衡差分信號線。(1)電氣特性RS-485的信號傳輸采用兩線間的電壓來表示邏輯1和邏輯0,數(shù)據(jù)采用差分傳輸,抗干擾能力強,傳輸距離可達到1200m,傳輸速率可達10Mb/s。驅(qū)動器輸出電平在-1.5V以下時為邏輯1,在+1.5V以上時為邏輯0。接收器輸入電平在-0.2V以下時為邏輯1,在+0.2V以上為邏輯0。單片機原理、應(yīng)用與仿真3.RS-485接口RS-485是R單片機原理、應(yīng)用與仿真(2)電平轉(zhuǎn)換適用于RS-422A標(biāo)準(zhǔn)中所用的驅(qū)動器和接收器芯片,在RS-485中均可以使用。普通的PC機一般不帶RS-485接口,因此要使用RS-232/RS-485轉(zhuǎn)換器。RS-485接口電平轉(zhuǎn)換電路如圖8-7所示。單片機原理、應(yīng)用與仿真(2)電平轉(zhuǎn)換適用于RS-422A標(biāo)單片機原理、應(yīng)用與仿真8.4.2串口轉(zhuǎn)換為并口輸出74LS164為

8位移位寄存器,引腳如圖8-8所示。CLOCK:時鐘輸入端。CLEAR:同步清除輸入端,低電平有效。A,B:串行數(shù)據(jù)輸入端。Q0~Q7:數(shù)據(jù)輸出端。單片機原理、應(yīng)用與仿真8.4.2串口轉(zhuǎn)換為并口輸出74單片機原理、應(yīng)用與仿真【例8-1】用AT89S51單片機串行口外接74LS164擴展并行輸出口,8位并行口的各位分別接一個發(fā)光二極管,要求發(fā)光二極管輪流點亮。單片機原理、應(yīng)用與仿真【例8-1】用AT89S51單片機單片機原理、應(yīng)用與仿真解:

1.硬件電路的設(shè)計

單片機原理、應(yīng)用與仿真解:

1.硬件電路的設(shè)計

單片機原理、應(yīng)用與仿真2.程序設(shè)計

ORG0000HAJMPMAIN ORG0030HMAIN:MOVSCON,#00H;設(shè)置方式0 MOVA,#80H;最高位先亮OUT:MOVSBUF,A;開始串行輸出JNBTI,$;輸出是否完畢? CLRTI;清TI ACALLDELAY;延時 RRA;循環(huán)右移 SJMPOUT;循環(huán)單片機原理、應(yīng)用與仿真2.程序設(shè)計ORG0000H單片機原理、應(yīng)用與仿真

DELAY:MOVR7,#5;延時程序D1:MOVR6,#250D2:MOVR5,#250DJNZR5,$DJNZR6,D2DJNZR7,D1RETEND單片機原理、應(yīng)用與仿真DELAY:MOVR7,#5單片機原理、應(yīng)用與仿真8.4.3多機串行通信接口單片機的多機通信是指一臺主機和多臺從機之間的通信,在多機通信中,使用單片機構(gòu)成分布式系統(tǒng),主機與各從機可實現(xiàn)全雙工通信,各從機之間只能通過主機交換信息?!纠?-2】甲乙丙三機相距1m進行串行通信,要求:甲機是主機,乙機和丙機是從機,乙機的編號是1,丙機的編號是2;主機將要發(fā)送的10個數(shù)據(jù)存放在內(nèi)部數(shù)據(jù)存儲器30H開始的單元中,從機將接收到的數(shù)據(jù)放入內(nèi)部數(shù)據(jù)存儲器30H開始的單元中;主機和從機時鐘振蕩頻率為11.0592MHZ單片機原理、應(yīng)用與仿真8.4.3多機串行通信接口單片機的多單片機原理、應(yīng)用與仿真解:

1.接口電路單片機原理、應(yīng)用與仿真解:

1.接口電路單片機原理、應(yīng)用與仿真2.通信協(xié)議在單片機多機通信中,要確保主機與從機之間可靠的通信,必須保證通信接口具有識別功能,串行口控制器SCON的SM2就可以滿足這一要求。當(dāng)串行口以方式2或方式3工作時,發(fā)送和接收的每一幀信息都是11位,其中第9位數(shù)據(jù)是可編程的,通過對SCON中的TB8置“1”或清零,以區(qū)分發(fā)送的是地址還是數(shù)據(jù),若TB8為1發(fā)送的是地址幀,否則發(fā)送的是數(shù)據(jù)幀。如果從機的控制位SM2=1,則當(dāng)接收的是地址幀時,數(shù)據(jù)裝入SBUF,并置RI=1;如果接收的是數(shù)據(jù)幀時,則從機不予理睬,數(shù)據(jù)丟棄。若SM2=0,則無論接收地址幀還是數(shù)據(jù)幀都將RI置1,數(shù)據(jù)裝入SBUF。因此,我們可以擬定多機通信的編程要求如下:單片機原理、應(yīng)用與仿真2.通信協(xié)議在單片機多機通信中,要確單片機原理、應(yīng)用與仿真①

將所有從機的SM2置1,只接收地址幀。②

主機發(fā)送一幀地址信息,第9位為1。③

當(dāng)從機接收到地址幀后,與自己的地址相比較。若相同,則從機將SM2清零,否則從機維持SM2=1不變。④

主機將第9位清零,發(fā)送數(shù)據(jù)或控制信息。對于已經(jīng)被尋址的從機,因為SM2=0,故可以接收主機的信息;而其他從機因為SM2=1,對主機發(fā)來的信息不予理睬。⑤

從機接收數(shù)據(jù)結(jié)束后,恢復(fù)其SM2=1。⑥

當(dāng)主機改為與另外從機聯(lián)系時,再發(fā)出地址幀尋址其他從機。單片機原理、應(yīng)用與仿真①將所有從機的SM2置1,只接收地單片機原理、應(yīng)用與仿真3.程序設(shè)計主機程序:ORG0000HLJMPMAINORG0100HMAIN:CLREAMOVSP,#75H ;設(shè)置堆棧指針MOVTMOD,#20H;定時器1工作方式2MOVTH1,#0F4H;2400bps的時間常數(shù),時鐘頻率11.0592MHZMOVTL1,#0F4HMOVPCON,#00H;SMOD=0MOV20H,#01H;置下位機編號單片機原理、應(yīng)用與仿真3.程序設(shè)計主機程序:單片機原理、應(yīng)用與仿真 MOV22H,#02H;置下位機個數(shù)MAIN1:SETBTR1;啟動定時器CLRES ;使用查詢方式,關(guān)中斷CLRET1 CLRRIMOVSCON,#0F0H;串行口工作方式3,允許接收MOVR0,#30H;設(shè)置數(shù)據(jù)塊起始地址 MOV21H,#0AH;置要發(fā)送的數(shù)據(jù)個數(shù)CONNECT:SETBTB8;多機通信,置TB8 MOVA,20H MOVSBUF,A ;發(fā)送地址編號 JNBTI,$ CLRTICLRTB8;與尋址的下位機通信,清TB8單片機原理、應(yīng)用與仿真 MOV22H,#02單片機原理、應(yīng)用與仿真SEND:MOVA,@R0;取數(shù)據(jù) MOVSBUF,A;送數(shù)據(jù) JNBTI,$ CLRTI LCALLDELAY INCR0DJNZ21H,SEND INC20H;地址號加1 DJNZ22H,MAIN1 SJMP$DELAY:MOVR6,#20H;延時程序DELAY1:MOVR5,#255 DJNZR5,$ DJNZR6,DELAY1 RETEND單片機原理、應(yīng)用與仿真SEND:MOVA,@R0單片機原理、應(yīng)用與仿真從機程序: ORG0000H LJMPMAIN ORG0023H LJMPSINT ORG0100HMAIN:MOVSP,#70H ;設(shè)置堆棧指針MOVTMOD,#20H;定時器1工作方式2MOVTH1,#0F4H;2400bps的時間常數(shù),時鐘頻率11.0592MHZMOVTL1,#0F4HMOVPCON,#00H;SMOD=0 MOVR0,#30H;設(shè)置數(shù)據(jù)起始地址CLRRI單片機原理、應(yīng)用與仿真從機程序: ORG0單片機原理、應(yīng)用與仿真MAIN1:MOVSCON,#0F0H;串行口工作方式3,允許接收MOV21H,#0AH;置要接收的數(shù)據(jù)個數(shù)SETBES SETBEA SETBTR1;啟動定時器 SJMP$SINT:CLREA;關(guān)中斷MOVC,RB8;判斷是地址還是數(shù)據(jù) JNCDATA1 MOVA,SBUF CLRRI CJNEA,#02H,SRET;判斷地址編號 CLRSM2;清SM2 LJMPSRET

單片機原理、應(yīng)用與仿真MAIN1:MOVSCON,#0單片機原理、應(yīng)用與仿真DATA1:MOVA,SBUF;接收數(shù)據(jù) CLRRI MOV@R0,A INCR0 DJNZ21H,SRET SETBSM2;數(shù)據(jù)接收完,置SM2 MOV21H,#0AHCLRP1.7;數(shù)據(jù)傳輸完畢,點亮P1.7 LCALLDELAY SETBP1.7SRET:SETBEA;開中斷RETIEND單片機原理、應(yīng)用與仿真DATA1:MOVA,SBUF單片機原理、應(yīng)用與仿真8.5任務(wù)11雙機通信【任務(wù)目的】理解AT89S51單片機串行通信原理,掌握雙機串行通信的軟件設(shè)計。用Proteus設(shè)計、仿真AT89S51單片機雙機通信過程?!救蝿?wù)描述】該任務(wù)用甲乙兩臺AT89S51單片機完成雙機串行通信。兩機相距1m;甲機將P1口指撥開關(guān)數(shù)據(jù)傳送給乙機,乙機將接收的數(shù)據(jù)輸出至P1口,點亮相應(yīng)端口的LED,然后乙機將接收的數(shù)據(jù)加1后發(fā)送給甲機,甲機將數(shù)據(jù)輸出至P2口,點亮對應(yīng)的LED。要求:使用串口方式3,波特率為9600bps。單片機原理、應(yīng)用與仿真8.5任務(wù)11雙機通信【任務(wù)目的單片機原理、應(yīng)用與仿真1.硬件電路設(shè)計在小工具欄中單擊虛擬儀器按鈕

,然后在對象選擇器中選擇VIRTUALTERMINAL(虛擬終端),如圖8-11所示。單片機AT51發(fā)光二極管LED-YELLOWDIPSW-9開關(guān)電阻RES單片機原理、應(yīng)用與仿真1.硬件電路設(shè)計單片機AT51發(fā)光二單片機原理、應(yīng)用與仿真硬件電路單片機原理、應(yīng)用與仿真硬件電路單片機原理、應(yīng)用與仿真2.程序設(shè)計單片機原理、應(yīng)用與仿真2.程序設(shè)計單片機原理、應(yīng)用與仿真②匯編源程序甲機程序:ORG0000HLJMPMAINORG0100HMAIN:CLREAMOVSP,#75H ;設(shè)置堆棧指針MOVTMOD,#20H;定時器1工作方式2MOVTH1,#0FDH;9600BPS的時間常數(shù),時鐘頻率11.0592MHZMOVTL1,#0FDHMOVPCON,#00H;SMOD=0MAIN1:SETBTR1;啟動定時器CLRES ;使用查詢方式,關(guān)中斷CLRET1CLRRIMOVSCON,#0F0H;串行口工作方式3,允許接收MOV30H,#0FFH單片機原理、應(yīng)用與仿真②匯編源程序甲機程序:單片機原理、應(yīng)用與仿真CONNECT:MOVP1,#0FFH MOVA,P1;讀P1口狀態(tài) CJNEA,30H,CONNECT1 AJMPCONNECTCONNECT1:MOV30H,A SETBTB8 MOVSBUF,A ;發(fā)送數(shù)據(jù)

JNBTI,$ CLRTIJNBRI,$

MOVA,SBUF CLRRI MOVP2,A LJMPCONNECTEND單片機原理、應(yīng)用與仿真CONNECT:MOVP1,#0單片機原理、應(yīng)用與仿真乙機程序:

ORG0000H LJMPMAIN ORG0023H LJMPSINT ORG0100HMAIN:MOVSP,#70H ;設(shè)置堆棧指針MOVTMOD,#20H;定時器1工作方式2MOVTH1,#0FDH;9600BPS的時間常數(shù),時鐘頻率11.0592MHZMOVTL1,#0FDHMOVPCON,#00H;SMOD=0CLRRI單片機原理、應(yīng)用與仿真乙機程序:

ORG00單片機原理、應(yīng)用與仿真MAIN1:MOVSCON,#0F0H;串行口工作方式3,允許接收SETBES SETBEA SETBTR1;啟動定時器 SJMP$SINT:JBRI,REC CLRTI LJMPSRETREC:MOVA,SBUF;讀取數(shù)據(jù) CLRRI MOVP1,A;將數(shù)據(jù)送P1口 INCA SETBTB8 MOVSBUF,A;發(fā)送數(shù)據(jù)SRET:RETIEND單片機原理、應(yīng)用與仿真MAIN1:MOVSCON,#0單片機原理、應(yīng)用與仿真8.6實訓(xùn)8單片機之間的通信接口技術(shù)8.6.1實訓(xùn)目的1.熟悉單片機與單片機之間接口技術(shù)的硬件、軟件設(shè)計。2.進一步熟悉Keil軟件和ISP在線編程的使用技術(shù)。8.6.2實訓(xùn)內(nèi)容1.根據(jù)圖8-12所示電路圖,在兩臺單片機課程教學(xué)實驗板(或面包板、實驗PCB等)上安裝好線路。2.讀懂單片機之間通信接口程序設(shè)計。求用Keil建立“甲機.asm”、“乙機.asm”源程序文件,并分別生成目標(biāo)代碼“甲機.hex”、“乙機.hex”文件。3.用ISP在線編程將目標(biāo)代碼分別固化到AT89S51單片機中,裝入電路板后,上電運行。進行按鍵操作,觀察并解釋現(xiàn)象。單片機原理、應(yīng)用與仿真8.6實訓(xùn)8單片機之間的通信接單片機原理、應(yīng)用與仿真第8章AT89S51單片機串行通信接口技術(shù)單片機原理、應(yīng)用與仿真第8章AT89S51單片機串行通信單片機原理、應(yīng)用與仿真第8章AT89S51單片機串行通信接口技術(shù)【知識目標(biāo)】1.掌握串行口的工作原理及相關(guān)的特殊功能寄存器。2.熟悉標(biāo)準(zhǔn)串行接口的硬件接口設(shè)計。3.掌握串行通信程序的設(shè)計?!炯寄苣繕?biāo)】1.掌握串行口的硬件接口電路設(shè)計及軟件驅(qū)動程序設(shè)計。2.掌握基于PROTEUS的串行通信接口電路的仿真調(diào)試。單片機原理、應(yīng)用與仿真第8章AT89S51單片機串行通信單片機原理、應(yīng)用與仿真8.1串行口的結(jié)構(gòu)AT89S51單片機內(nèi)部有一個功能強大的全雙工的異步通信串口。全雙工就是雙機之間串行接收、發(fā)送數(shù)據(jù)可同時進行。異步通信是指通信雙方?jīng)]有同步時鐘來控制收、發(fā)雙方的傳送,而是靠雙方各自的時鐘來控制數(shù)據(jù)的異步傳送。單片機中使用的數(shù)據(jù)都是并行數(shù)據(jù),所以在發(fā)送端將并行數(shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù),而在接收端要將串行數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù)。這是由串行接口電路實現(xiàn),這種電路也稱之為通用異步接收發(fā)送器(UART)。AT89S51單片機的串口由2個數(shù)據(jù)緩沖器、1個移位寄存器和1個串行控制寄存器等組成。數(shù)據(jù)緩沖器由串行接收緩沖器和發(fā)送緩沖器構(gòu)成,它們在物理上是獨立的,既可以接收數(shù)據(jù)也可以發(fā)送數(shù)據(jù),還可以同時發(fā)送和接收數(shù)據(jù)。接收緩沖器只能讀出,不能寫入,而發(fā)送緩沖器則只能寫入,不能讀出。它們共用一個地址(99H)。單片機原理、應(yīng)用與仿真8.1串行口的結(jié)構(gòu)AT89S51單單片機原理、應(yīng)用與仿真8.1.1串行口控制寄存器SCONSCON是AT89S51單片機可位尋址的特殊功能寄存器,主要用于控制串口的串行數(shù)據(jù)通信。單元地址是98H,復(fù)位后位00H。各位的定義如下:位名稱SM0SM1SM2RENTB8RB8TIRI位地址9FH9EH9DH9CH9BH9AH99H98H位號SCON.7SCON.6SCON.5SCON.4SCON.3SCON.2SCON.1SCON.0單片機原理、應(yīng)用與仿真8.1.1串行口控制寄存器SCONS單片機原理、應(yīng)用與仿真8.1.1串行口控制寄存器SCONSM0SM1:串行口4種工作方式的選擇位。如表8-1所示。SM0SM1工作方式功能簡述00工作方式0移位寄存器工作方式,波特率為/1201工作方式18位數(shù)據(jù)異步收發(fā),波特率可變10工作方式29位數(shù)據(jù)異步收發(fā),波特率為/32或/6411工作方式39位數(shù)據(jù)異步收發(fā),波特率可變表8-1串行通信工作方式單片機原理、應(yīng)用與仿真8.1.1串行口控制寄存器SCONS單片機原理、應(yīng)用與仿真8.1.1串行口控制寄存器SCONSM2:多機級通信控制位。因為多機通信是在方式2和方式3下進行的,因此,SM2位主要用于方式2和方式3中。當(dāng)串行口以方式2或方式3接收時,如果SM2=1,則只有當(dāng)接收到的第9位數(shù)據(jù)(RB8)為1時,才將接收到的前8位數(shù)據(jù)送入SBUF,并置1RI,產(chǎn)生中斷請求;當(dāng)接收到的第9位數(shù)據(jù)(RB8)為0時,則將接收到的前8位數(shù)據(jù)丟棄。而當(dāng)SM2=0時,則不論第9位數(shù)據(jù)是1還是0,都將前8位數(shù)據(jù)送入SBUF中,并將RI置1,產(chǎn)生中斷請求。在方式1時,如果SM2=1,則只有收到有效的停止位時才會激活RI。在方式0時,SM2必須為0。單片機原理、應(yīng)用與仿真8.1.1串行口控制寄存器SCONS單片機原理、應(yīng)用與仿真8.1.1串行口控制寄存器SCONREN:允許串行接收位。由軟件置1或清0。若REN=1,允許串行口接收數(shù)據(jù);若REN=0,禁止串行口接收數(shù)據(jù)。TB8:發(fā)送的第9位數(shù)據(jù)。在方式2和3時,TB8是要發(fā)送的第9位數(shù)據(jù)。其值由軟件置1或清0。在雙機通信時,TB8一般作為奇偶校驗位使用;在多機通信中用來表示主機發(fā)送的是地址幀還是數(shù)據(jù)幀,TB8=1為地址幀,TB8=0為數(shù)據(jù)幀。RB8:接收到的第9位數(shù)據(jù)。在方式2和3時,TB8存放接收到的第9位數(shù)據(jù)。在方式1,如果SM2=0,RB8是接收到的停止位。在方式0,不使用RB8。單片機原理、應(yīng)用與仿真8.1.1串行口控制寄存器SCONR單片機原理、應(yīng)用與仿真8.1.1串行口控制寄存器SCONTI:發(fā)送中斷標(biāo)志位。串行口工作在方式0時,串行發(fā)送第8位數(shù)據(jù)結(jié)束時由硬件置1,在其他工作方式,串行口發(fā)送停止位的開始時置1。TI=1,表示一幀數(shù)據(jù)發(fā)送結(jié)束,可供軟件查詢,也可申請中斷。CPU響應(yīng)中斷后,在中斷服務(wù)程序中向SBUF寫入要發(fā)送的下一幀數(shù)據(jù)。TI必須由軟件清0。RI:接收中斷標(biāo)志位。串行口在工作方式0時,接收完第8位數(shù)據(jù)時,RI由硬件置1。在其它工作方式中,串行口接收到停止位時,該位置1。RI=1,表示一幀數(shù)據(jù)接收完畢,并申請中斷,要求CPU從接收SBUF取走數(shù)據(jù)。該位的狀態(tài)也可供軟件查詢。RI必須由軟件清0。單片機原理、應(yīng)用與仿真8.1.1串行口控制寄存器SCONT單片機原理、應(yīng)用與仿真8.1.2電源控制寄存器PCONPCON,不能位尋址。地址為87H。各位的定義如下其中,與串行通信相關(guān)的位是SMOD。SMOD:串行口波特率系數(shù)控制位。若SMOD=1,方式1、方式2和方式3的波特率加倍。若SMOD=0,各工作方式的波特率保持不變。位稱SMOD

———GF1GF0PDIDL單片機原理、應(yīng)用與仿真8.1.2電源控制寄存器PCONPC單片機原理、應(yīng)用與仿真8.1.3數(shù)據(jù)緩沖寄存器SBUF數(shù)據(jù)緩沖寄存器SBUF用于保存要發(fā)送的數(shù)據(jù)或者從串口接收到的數(shù)據(jù),在特殊功能寄存器區(qū)的地址是99H。CPU執(zhí)行寫

MOVSBUF,A指令便開始觸發(fā)串口數(shù)據(jù)的發(fā)送。SBUF便一位一位地發(fā)送數(shù)據(jù),發(fā)送完成后置標(biāo)志TI=1;在CPU允許接收串行數(shù)據(jù)的時,外部串行數(shù)據(jù)經(jīng)RXD送入SBUF時,電路便自動啟動接收,第9位則裝入SCON寄存器的RB8位,直至完成一幀數(shù)據(jù)后將RI置1,當(dāng)串口接收緩沖器接收到一幀數(shù)據(jù)時,可以執(zhí)行MOVA,SBUF指令進行讀取。單片機原理、應(yīng)用與仿真8.1.3數(shù)據(jù)緩沖寄存器SBUF數(shù)單片機原理、應(yīng)用與仿真8.2串行口的工作方式AT89S51單片機的串行接口有4種工作模式,可通過對SCON中的SM0、SM1位的設(shè)置選擇。1.工作方式0串行數(shù)據(jù)通過RXD輸入輸出,TXD輸出時鐘。每次發(fā)送或者接收8位數(shù)據(jù)。波特率為

/12。當(dāng)以中斷方式傳送數(shù)據(jù)時,CPU響應(yīng)中斷并不會自動清除TI、RI標(biāo)志,所以在中斷服務(wù)程序中必須由指令清0。單片機原理、應(yīng)用與仿真8.2串行口的工作方式AT89S51單片機原理、應(yīng)用與仿真2.工作方式1串行數(shù)據(jù)通過TXD發(fā)送,RXD接收。一幀數(shù)據(jù)是10位,包括1位起始位,8位數(shù)據(jù)為和1位停止位。波特率是可變的,由定時器1溢出率和SMOD共同決定。方式1的波特率由下式確定:

方式1波特率=當(dāng)一幀數(shù)據(jù)發(fā)送結(jié)束時,將串行控制寄存器SCON中的TI置1,通知CPU數(shù)據(jù)發(fā)送已經(jīng)結(jié)束,可以發(fā)送下一幀數(shù)據(jù)。若REN處于允許接收狀態(tài),當(dāng)一幀數(shù)據(jù)接收完畢后,將SCON中的RI置1,通知CPU從SBUF取走接收到的數(shù)據(jù)。單片機原理、應(yīng)用與仿真2.工作方式1串行數(shù)據(jù)通過TXD發(fā)送單片機原理、應(yīng)用與仿真3.工作方式2串行數(shù)據(jù)通過TXD發(fā)送,RXD接收。每幀數(shù)據(jù)均為11位,包括1位起始位,8位數(shù)據(jù)位,1位可程控為1或0的第9位及1位停止位。波特率由下式確定:方式2的波特率=第9位數(shù)據(jù)可以自己定義,一般在雙機通信時作為奇偶校驗位,多機通信時作為地址/數(shù)據(jù)的標(biāo)志位。在發(fā)送一幀數(shù)據(jù)時,CPU除了要把8位數(shù)據(jù)送SBUF外,要先將第9位數(shù)據(jù)送到SCON的TB8中。單片機原理、應(yīng)用與仿真3.工作方式2串行數(shù)據(jù)通過TXD發(fā)送單片機原理、應(yīng)用與仿真4.工作方式3除了波特率外,工作方式3和方式2相同,方式3的波特率由下式確定:方式3波特率=單片機原理、應(yīng)用與仿真4.工作方式3除了波特率外,工作方單片機原理、應(yīng)用與仿真8.3波特率的設(shè)定AT89S51單片機的串行口以方式0工作時,波特率為

/12。串行口工作于方式2時,若SMOD=1,波特率為振蕩頻率的1/32;若SMOD=0,波特率為振蕩頻率的1/64。串行口以方式1或方式3工作時,波特率是可變的。波特率的計算公式為:波特率=單片機原理、應(yīng)用與仿真8.3波特率的設(shè)定AT89S51單片單片機原理、應(yīng)用與仿真如果定時器T1用作波特率發(fā)生器,則就不能用作中斷。在典型的應(yīng)用中T1以定時器方式工作,并處于定時方式2即自動重新裝載的模式下,設(shè)置完后啟動定時器1。則波特率為:溢出率=波特率=單片機原理、應(yīng)用與仿真如果定時器T1用作波特率發(fā)生器,則就單片機原理、應(yīng)用與仿真時鐘頻率波特率常

數(shù)SMOD=1SMOD=01228800FEHFFH19200FDH--14400FCHFEH9600F9HFDH4800F3HF9H2400E6HF3H1200CCHE6H11.059228800FEHFFH19200FDH--14400FCHFEH9600FAHFDH4800F4HFAH2400E8HF4H1200D0HE8H單片機原理、應(yīng)用與仿真時鐘頻率波特率常數(shù)SM單片機原理、應(yīng)用與仿真8.4單片機的串行通信接口技術(shù)AT89S51單片機串行口的輸入、輸出均為TTL電平。使用TTL電平進行串行數(shù)據(jù)的傳送,傳輸距離短,抗干擾能力差。為了提高通信的可靠性,增大串行通信的距離,通常采用標(biāo)準(zhǔn)串行接口,如RS-232、RS-422以及RS-485等標(biāo)準(zhǔn)接口。RS-232是美國電子工業(yè)協(xié)會(EIA)的推薦標(biāo)準(zhǔn),適用于短距離或帶調(diào)制解調(diào)器的串行通信場合。為了提高串行數(shù)據(jù)傳輸率和通信距離以及抗干擾能力,EIA又公布了RS-422和RS-485串行總線接口標(biāo)準(zhǔn)。單片機原理、應(yīng)用與仿真8.4單片機的串行通信接口技術(shù)AT8單片機原理、應(yīng)用與仿真8.4.1標(biāo)準(zhǔn)串行通信接口1.RS-232C接口RS-232C是異步串行通信中應(yīng)用最廣的標(biāo)準(zhǔn)串行接口,它定義了數(shù)據(jù)終端設(shè)備和數(shù)據(jù)通信設(shè)備之間的串行接口標(biāo)準(zhǔn)。(1)RS-232信號引腳定義RS-232C標(biāo)準(zhǔn)規(guī)定了25針連接器,但許多信號是為了通信業(yè)務(wù)聯(lián)系或信息控制而定義的,所以PC機配置的都是9針“D”型連接器。圖8-3為RS-232C的“D”型9針插頭的引腳定義。單片機原理、應(yīng)用與仿真8.4.1標(biāo)準(zhǔn)串行通信接口1.RS-單片機原理、應(yīng)用與仿真(2)電氣特性RS-232C上傳送的數(shù)字量采用負邏輯,且與地對稱。邏輯1:-3~-15V;邏輯0:+3~+15V。RS-232C標(biāo)準(zhǔn)的信號傳輸?shù)淖畲箅娎|長度為30m,最高數(shù)據(jù)傳輸速率位20kb/s。單片機原理、應(yīng)用與仿真(2)電氣特性RS-232C上傳送的單片機原理、應(yīng)用與仿真(3)電平轉(zhuǎn)換由于AT89S51單片機串行口的輸入、輸出都是TTL電平,TTL電平和RS-232C電平互不兼容,所以必須進行電平轉(zhuǎn)換,常用的芯片是美國MAXIM公司的產(chǎn)品MAX232芯片。

MAX232是RS-232C雙工發(fā)送器/接收器電路芯片,其外部引腳如圖8-4所示,使用MAX232實現(xiàn)TTL/RS-232C之間的電平轉(zhuǎn)換電路如圖8-5所示。單片機原理、應(yīng)用與仿真(3)電平轉(zhuǎn)換由于AT89S51單片單片機原理、應(yīng)用與仿真MAX232芯片引腳圖及RS-232C接口的電平轉(zhuǎn)換電路單片機原理、應(yīng)用與仿真MAX232芯片引腳圖及RS-232單片機原理、應(yīng)用與仿真2.RS-422A接口

由于RS-232C傳輸?shù)乃俾实汀⑼ㄐ啪嚯x短、抗干擾能力差等,所以EIA又制定了RS-422A標(biāo)準(zhǔn)。(1)電氣特性RS-422A的全稱是“平衡電壓數(shù)字接口電路的電氣特性”,全雙工,傳輸信號為兩對平衡差分信號線,因此RS-422A的傳輸距離長,最大傳輸距離可達到1200m,最大傳輸速率位10Mb/s。單片機原理、應(yīng)用與仿真2.RS-422A接口

單片機原理、應(yīng)用與仿真(2)電平轉(zhuǎn)換TTL電平轉(zhuǎn)換成RS-422A電平的常用芯片有MC3487、SN75174等;RS-422A電平轉(zhuǎn)換成TTL電平的常用芯片有MC3486、SN75175等。典型的轉(zhuǎn)換電路如圖8-6所示。

單片機原理、應(yīng)用與仿真(2)電平轉(zhuǎn)換TTL電平轉(zhuǎn)換成RS-單片機原理、應(yīng)用與仿真3.RS-485接口RS-485是RS-422A的變形,它與RS-422A的區(qū)別是RS-485為半雙工,采用1對平衡差分信號線。(1)電氣特性RS-485的信號傳輸采用兩線間的電壓來表示邏輯1和邏輯0,數(shù)據(jù)采用差分傳輸,抗干擾能力強,傳輸距離可達到1200m,傳輸速率可達10Mb/s。驅(qū)動器輸出電平在-1.5V以下時為邏輯1,在+1.5V以上時為邏輯0。接收器輸入電平在-0.2V以下時為邏輯1,在+0.2V以上為邏輯0。單片機原理、應(yīng)用與仿真3.RS-485接口RS-485是R單片機原理、應(yīng)用與仿真(2)電平轉(zhuǎn)換適用于RS-422A標(biāo)準(zhǔn)中所用的驅(qū)動器和接收器芯片,在RS-485中均可以使用。普通的PC機一般不帶RS-485接口,因此要使用RS-232/RS-485轉(zhuǎn)換器。RS-485接口電平轉(zhuǎn)換電路如圖8-7所示。單片機原理、應(yīng)用與仿真(2)電平轉(zhuǎn)換適用于RS-422A標(biāo)單片機原理、應(yīng)用與仿真8.4.2串口轉(zhuǎn)換為并口輸出74LS164為

8位移位寄存器,引腳如圖8-8所示。CLOCK:時鐘輸入端。CLEAR:同步清除輸入端,低電平有效。A,B:串行數(shù)據(jù)輸入端。Q0~Q7:數(shù)據(jù)輸出端。單片機原理、應(yīng)用與仿真8.4.2串口轉(zhuǎn)換為并口輸出74單片機原理、應(yīng)用與仿真【例8-1】用AT89S51單片機串行口外接74LS164擴展并行輸出口,8位并行口的各位分別接一個發(fā)光二極管,要求發(fā)光二極管輪流點亮。單片機原理、應(yīng)用與仿真【例8-1】用AT89S51單片機單片機原理、應(yīng)用與仿真解:

1.硬件電路的設(shè)計

單片機原理、應(yīng)用與仿真解:

1.硬件電路的設(shè)計

單片機原理、應(yīng)用與仿真2.程序設(shè)計

ORG0000HAJMPMAIN ORG0030HMAIN:MOVSCON,#00H;設(shè)置方式0 MOVA,#80H;最高位先亮OUT:MOVSBUF,A;開始串行輸出JNBTI,$;輸出是否完畢? CLRTI;清TI ACALLDELAY;延時 RRA;循環(huán)右移 SJMPOUT;循環(huán)單片機原理、應(yīng)用與仿真2.程序設(shè)計ORG0000H單片機原理、應(yīng)用與仿真

DELAY:MOVR7,#5;延時程序D1:MOVR6,#250D2:MOVR5,#250DJNZR5,$DJNZR6,D2DJNZR7,D1RETEND單片機原理、應(yīng)用與仿真DELAY:MOVR7,#5單片機原理、應(yīng)用與仿真8.4.3多機串行通信接口單片機的多機通信是指一臺主機和多臺從機之間的通信,在多機通信中,使用單片機構(gòu)成分布式系統(tǒng),主機與各從機可實現(xiàn)全雙工通信,各從機之間只能通過主機交換信息。【例8-2】甲乙丙三機相距1m進行串行通信,要求:甲機是主機,乙機和丙機是從機,乙機的編號是1,丙機的編號是2;主機將要發(fā)送的10個數(shù)據(jù)存放在內(nèi)部數(shù)據(jù)存儲器30H開始的單元中,從機將接收到的數(shù)據(jù)放入內(nèi)部數(shù)據(jù)存儲器30H開始的單元中;主機和從機時鐘振蕩頻率為11.0592MHZ單片機原理、應(yīng)用與仿真8.4.3多機串行通信接口單片機的多單片機原理、應(yīng)用與仿真解:

1.接口電路單片機原理、應(yīng)用與仿真解:

1.接口電路單片機原理、應(yīng)用與仿真2.通信協(xié)議在單片機多機通信中,要確保主機與從機之間可靠的通信,必須保證通信接口具有識別功能,串行口控制器SCON的SM2就可以滿足這一要求。當(dāng)串行口以方式2或方式3工作時,發(fā)送和接收的每一幀信息都是11位,其中第9位數(shù)據(jù)是可編程的,通過對SCON中的TB8置“1”或清零,以區(qū)分發(fā)送的是地址還是數(shù)據(jù),若TB8為1發(fā)送的是地址幀,否則發(fā)送的是數(shù)據(jù)幀。如果從機的控制位SM2=1,則當(dāng)接收的是地址幀時,數(shù)據(jù)裝入SBUF,并置RI=1;如果接收的是數(shù)據(jù)幀時,則從機不予理睬,數(shù)據(jù)丟棄。若SM2=0,則無論接收地址幀還是數(shù)據(jù)幀都將RI置1,數(shù)據(jù)裝入SBUF。因此,我們可以擬定多機通信的編程要求如下:單片機原理、應(yīng)用與仿真2.通信協(xié)議在單片機多機通信中,要確單片機原理、應(yīng)用與仿真①

將所有從機的SM2置1,只接收地址幀。②

主機發(fā)送一幀地址信息,第9位為1。③

當(dāng)從機接收到地址幀后,與自己的地址相比較。若相同,則從機將SM2清零,否則從機維持SM2=1不變。④

主機將第9位清零,發(fā)送數(shù)據(jù)或控制信息。對于已經(jīng)被尋址的從機,因為SM2=0,故可以接收主機的信息;而其他從機因為SM2=1,對主機發(fā)來的信息不予理睬。⑤

從機接收數(shù)據(jù)結(jié)束后,恢復(fù)其SM2=1。⑥

當(dāng)主機改為與另外從機聯(lián)系時,再發(fā)出地址幀尋址其他從機。單片機原理、應(yīng)用與仿真①將所有從機的SM2置1,只接收地單片機原理、應(yīng)用與仿真3.程序設(shè)計主機程序:ORG0000HLJMPMAINORG0100HMAIN:CLREAMOVSP,#75H ;設(shè)置堆棧指針MOVTMOD,#20H;定時器1工作方式2MOVTH1,#0F4H;2400bps的時間常數(shù),時鐘頻率11.0592MHZMOVTL1,#0F4HMOVPCON,#00H;SMOD=0MOV20H,#01H;置下位機編號單片機原理、應(yīng)用與仿真3.程序設(shè)計主機程序:單片機原理、應(yīng)用與仿真 MOV22H,#02H;置下位機個數(shù)MAIN1:SETBTR1;啟動定時器CLRES ;使用查詢方式,關(guān)中斷CLRET1 CLRRIMOVSCON,#0F0H;串行口工作方式3,允許接收MOVR0,#30H;設(shè)置數(shù)據(jù)塊起始地址 MOV21H,#0AH;置要發(fā)送的數(shù)據(jù)個數(shù)CONNECT:SETBTB8;多機通信,置TB8 MOVA,20H MOVSBUF,A ;發(fā)送地址編號 JNBTI,$ CLRTICLRTB8;與尋址的下位機通信,清TB8單片機原理、應(yīng)用與仿真 MOV22H,#02單片機原理、應(yīng)用與仿真SEND:MOVA,@R0;取數(shù)據(jù) MOVSBUF,A;送數(shù)據(jù) JNBTI,$ CLRTI LCALLDELAY INCR0DJNZ21H,SEND INC20H;地址號加1 DJNZ22H,MAIN1 SJMP$DELAY:MOVR6,#20H;延時程序DELAY1:MOVR5,#255 DJNZR5,$ DJNZR6,DELAY1 RETEND單片機原理、應(yīng)用與仿真SEND:MOVA,@R0單片機原理、應(yīng)用與仿真從機程序: ORG0000H LJMPMAIN ORG0023H LJMPSINT ORG0100HMAIN:MOVSP,#70H ;設(shè)置堆棧指針MOVTMOD,#20H;定時器1工作方式2MOVTH1,#0F4H;2400bps的時間常數(shù),時鐘頻率11.0592MHZMOVTL1,#0F4HMOVPCON,#00H;SMOD=0 MOVR0,#30H;設(shè)置數(shù)據(jù)起始地址CLRRI單片機原理、應(yīng)用與仿真從機程序: ORG0單片機原理、應(yīng)用與仿真MAIN1:MOVSCON,#0F0H;串行口工作方式3,允許接收MOV21H,#0AH;置要接收的數(shù)據(jù)個數(shù)SETBES SETBEA SETBTR1;啟動定時器 SJMP$SINT:CLREA;關(guān)中斷MOVC,RB8;判斷是地址還是數(shù)據(jù) JNCDATA1 MOVA,SBUF CLRRI CJNEA,#02H,SRET;判斷地址編號 CLRSM2;清SM2 LJMPSRET

單片機原理、應(yīng)用與仿真MAIN1:MOVSCON,#0單片機原理、應(yīng)用與仿真DATA1:MOVA,SBUF;接收數(shù)據(jù) CLRRI MOV@R0,A INCR0 DJNZ21H,SRET SETBSM2;數(shù)據(jù)接收完,置SM2 MOV21H,#0AHCLRP1.7;數(shù)據(jù)傳輸完畢,點亮P1.7 LCALLDELAY SETBP1.7SRET:SETBEA

溫馨提示

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

評論

0/150

提交評論