版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
微控制器技術(shù)應(yīng)用項(xiàng)目八單片機(jī)系統(tǒng)中“通信與聯(lián)絡(luò)”的分析與實(shí)踐【能力目標(biāo)】1.能夠靈活運(yùn)用單片機(jī)中通信方式。2.能夠運(yùn)用單片機(jī)中串行通信的制式。3.能夠靈活地運(yùn)用初始化指令。4.能夠使用WAVE6000軟件對(duì)匯編程序進(jìn)行調(diào)試、編譯等。5.能夠靈活地使用AT89C51單片機(jī)串行通信應(yīng)用于實(shí)踐。6.能夠熟練地使用偉福仿真器。7.能夠熟練地使用編程器。項(xiàng)目八單片機(jī)系統(tǒng)中“通信與聯(lián)絡(luò)”的分析與實(shí)踐【知識(shí)目標(biāo)】1.能夠掌握同步和異步通信的原理。2.能夠掌握單片機(jī)中串行通信的制式。3.能夠掌握AT89C51串行口寄存器結(jié)構(gòu)。4.能夠認(rèn)識(shí)使用串行通信控制寄存器。5.能夠掌握AT89C51單片機(jī)各種串行通信工作方式。6.熟練地掌握AT89C51單片機(jī)串行方法及其通信應(yīng)用。7.熟悉AT89C51單片機(jī)雙機(jī)通信及多機(jī)通信。項(xiàng)目八單片機(jī)系統(tǒng)中“通信與聯(lián)絡(luò)”的分析與實(shí)踐一、項(xiàng)目引入二、相關(guān)理論知識(shí)三、項(xiàng)目實(shí)施四、拓展知識(shí)六、自測(cè)題五、項(xiàng)目小結(jié)項(xiàng)目八單片機(jī)系統(tǒng)中“通信與聯(lián)絡(luò)”的分析與實(shí)踐一、項(xiàng)目引入
本項(xiàng)目通過(guò)單片機(jī)完成“通信與聯(lián)絡(luò)”的分析與實(shí)踐。從這個(gè)簡(jiǎn)單的“通信與聯(lián)絡(luò)”的電路做起,使大家對(duì)單片機(jī)的通信技術(shù)有一個(gè)最基本的認(rèn)識(shí),大致了解單片機(jī)通信的工作過(guò)程,激發(fā)學(xué)習(xí)單片機(jī)應(yīng)用技術(shù)的興趣。二、相關(guān)理論知識(shí)Ⅰ、單片機(jī)系統(tǒng)中的串行接口及特點(diǎn)Ⅱ、AT89C51單片機(jī)串行口的控制Ⅳ、串行口波特率的設(shè)定Ⅲ、AT89C51單片機(jī)串行口的四種工作方式Ⅴ、串行口應(yīng)用舉例串行通訊是實(shí)現(xiàn)遠(yuǎn)距離低成本數(shù)據(jù)傳輸?shù)挠行Х椒āT谇度胧较到y(tǒng)中,與并行接口的總線(xiàn)形式相比:串行通訊又成為簡(jiǎn)化電路結(jié)構(gòu)的新的接口形式而越來(lái)越多的被采用。當(dāng)前嵌入式系統(tǒng)流行的串行接口有:①異步串行UART、同步串行USRT總線(xiàn)接口;
②SPI(Microwire)總線(xiàn)接口---MOTOROAL、NS;③I2C總線(xiàn)接口------PHILIPS;④1-Wire總線(xiàn)接口----Dallas;⑤CAN總線(xiàn)接口---Bosch;⑥USB總線(xiàn)接口---Intel、Compaq等從機(jī)從機(jī)從機(jī)從機(jī)主機(jī)Ⅰ、單片機(jī)系統(tǒng)中的串行接口及特點(diǎn)MCS-51(甲)
MCS-51
(乙)TXDRXDRXDTXDRS-232或485RS-232或485TXDRXDRS-232PC機(jī)2單片機(jī)甲、乙之間近距離的直接通訊單片機(jī)甲乙兩地之間遠(yuǎn)距離通訊單片機(jī)與PC機(jī)之間的數(shù)據(jù)通訊TXDRXDTXDRXDMCS-51內(nèi)部含有一個(gè)可編程全雙工串行通信口,具有UART的全部功能.串行(異步)通訊應(yīng)用示意圖字符幀:也稱(chēng)數(shù)據(jù)幀。由“起始位”+“數(shù)據(jù)位”+“停止位”構(gòu)成(如圖)。波特率:每秒鐘傳輸二進(jìn)制數(shù)的個(gè)數(shù)。波特率使用的單位是:bps(bitpersecond)位/秒。異步通訊:數(shù)據(jù)是以字符或字節(jié)為單位組成字符幀傳送。使用一條數(shù)據(jù)線(xiàn)發(fā)送或接收數(shù)據(jù)。發(fā)送與接收相互獨(dú)立,互不同步,但雙方必須使用相同的波特率和字符幀格式。D0D1D2D3D4D5D6D7起始位停止位01一個(gè)字符幀的格式異步串行通訊中的基本概念:1、數(shù)據(jù)緩沖寄存器SBUF(99H)在MCS-51的串行口電路中,SBUF是用來(lái)存放發(fā)送和接收數(shù)據(jù)的兩個(gè)獨(dú)立的緩沖寄存器,在SFR的地址都是99H。CPU執(zhí)行寫(xiě)SBUF指令便開(kāi)始引發(fā)串口的發(fā)送。
MOVSBUF,A
當(dāng)串口接收緩沖器接收到一幀數(shù)據(jù)時(shí),可以執(zhí)行下面指令進(jìn)行讀?。?/p>
MOVA,SBUFⅡ、AT89C51單片機(jī)串行口的控制MCS51通過(guò)數(shù)據(jù)緩沖寄存器SBUF和控制寄存器SCON、PCON實(shí)現(xiàn)對(duì)串行口的控制接收SBUF移位寄存器發(fā)送SBUF移位寄存器
內(nèi)部總線(xiàn)CPUMCS-51RXDP3.0TXDP3.1SBUF實(shí)際上是一個(gè)能夠獨(dú)立完成數(shù)據(jù)接收和數(shù)據(jù)發(fā)送操作的復(fù)雜的硬件電路;①CPU只要將數(shù)據(jù)送到發(fā)送SBUF(MOVSBUF,A)后,SBUF便一位一位地發(fā)送數(shù)據(jù),發(fā)送完成后標(biāo)志TI=1;②在CPU允許接收串行數(shù)據(jù)的前提下,當(dāng)外部串行數(shù)據(jù)經(jīng)RXD送入SBUF時(shí),電路便自動(dòng)啟動(dòng)接收,直至完成一幀數(shù)據(jù)后標(biāo)志RI=1。由于發(fā)送SBUF與接收SBUF是兩個(gè)獨(dú)立的緩沖器,所以51串行口是一個(gè)可以同時(shí)發(fā)送與接收的“全雙工”接口。SM0SM1:串行口工作模式選擇位。SM0SM1SM2RENTB8RB8TIRISM0SM1模式功能波特率000同步移位寄存器模式fosc/1201110位異步通信UART可變10211位異步通信UARTfosc/64或/3211311位異步通信UART可變2、串行口控制寄存器SCON(SFR地址98H)RI
:完成一幀數(shù)據(jù)接收標(biāo)志,必須由軟件清零,接收完成RI=1并申請(qǐng)中斷(如果中斷開(kāi)放,則引發(fā)中斷);TI
:完成一幀數(shù)據(jù)發(fā)送標(biāo)志,必須由軟件清零,發(fā)送完成TI=1同時(shí)申請(qǐng)中斷(如果中斷開(kāi)放,則引發(fā)中斷);RB8:在9位有效數(shù)據(jù)傳送的模式2、3時(shí),接收到的第9位數(shù)據(jù);TB8:在9位有效數(shù)據(jù)傳送的模式2、3時(shí),將要發(fā)送的第9位數(shù)據(jù);REN:允許接收位,REN=1時(shí)允許接收.由軟件置位或清零。SM2:多機(jī)通信使能位.SM0SM1SM2RENTB8RB8TIRISM2:多機(jī)通信使能位.1,模式0、1時(shí):
SM2不用,應(yīng)設(shè)為0。
2,模式2、3時(shí):
若SM2=0,無(wú)論RB8如何,RI都能被激活(RI=1)。但RI=1不能引發(fā)中斷!只能用查詢(xún)的方式接收數(shù)據(jù)。若SM2=1,收到的第9位(RB8)=0時(shí),則RI不會(huì)被激活; 若SM2=1且RB8=1時(shí),RI才能被激活=1并可引發(fā)中斷。SM0SM1SM2RENTB8RB8TIRIRI(SCON.0):接收完成標(biāo)志當(dāng)SUBF從RXD接收完一個(gè)完整的數(shù)據(jù)幀時(shí)RI=1,如果中斷是開(kāi)放的,則RI=1時(shí)會(huì)自動(dòng)引發(fā)中斷。用戶(hù)可以通過(guò)中斷服務(wù)程序?qū)BUF中的數(shù)據(jù)取出送累加器A。
MOVA,SBUF——在中服程序中接收數(shù)據(jù);也可以使用查詢(xún)的方式對(duì)RI進(jìn)行檢測(cè):
JNBRI,$;如果RI≠1則等待
MOVA,SBUF
;RI=1時(shí),取SBUF中數(shù)據(jù)送A由于SBUF與CPU之間各自獨(dú)立工作,那么:①接收數(shù)據(jù)時(shí)CPU何時(shí)讀取SBUF中的數(shù)據(jù)?②發(fā)送數(shù)據(jù)時(shí),CPU何時(shí)再向SBUF發(fā)送下一個(gè)數(shù)據(jù)? ——雙方只能通過(guò)標(biāo)志進(jìn)行協(xié)調(diào)使用RI、TI標(biāo)志完成數(shù)據(jù)的發(fā)送與接收
當(dāng)CPU執(zhí)行:MOVSBUF,A
指令后,便引發(fā)一次串行通信的過(guò)程。SBUF開(kāi)始通過(guò)TXD向外按位發(fā)送數(shù)據(jù)。當(dāng)完成一幀數(shù)據(jù)的發(fā)送后,TI=1。如果系統(tǒng)中斷是開(kāi)放的,則TI=1會(huì)自動(dòng)引發(fā)中斷。用戶(hù)可以通過(guò)中斷服務(wù)程序向SBUF輸送下一個(gè)數(shù)據(jù):
MOVSBUF,A
;在中斷程序中發(fā)送下一個(gè)數(shù)據(jù);也可以使用查詢(xún)的方式對(duì)TI進(jìn)行檢測(cè):
JNB TI,$
;如果TI≠1則等待
CLRTI;軟件清除標(biāo)志,準(zhǔn)備下次發(fā)送
MOVSBUF,A
;TI=1時(shí)發(fā)送下一個(gè)數(shù)據(jù)TI(SCON.1):發(fā)送完成標(biāo)志CLRSCON.TI數(shù)據(jù)送累加器Amovsbuf,aTI=1?N個(gè)數(shù)據(jù)發(fā)送完?YESNOYESNO發(fā)送數(shù)據(jù)的程序框圖SETBSCON.RENmova,sbufRI=1?N個(gè)數(shù)據(jù)接收完?YESNOYESNOCLRSCON.RIA送數(shù)據(jù)區(qū)接收數(shù)據(jù)程序框圖使用查詢(xún)RI、TI標(biāo)志的方式進(jìn)行發(fā)送與接收N個(gè)數(shù)據(jù)SMOD:串行口波特率倍率控制位
SMOD=1時(shí),方式1、2、3的波特率加倍SMOD——————GF1GF0PDIDL注意:PCON不可位尋址3、控制寄存器PCON(SFR地址87H)特點(diǎn):做同步移位寄存器用。其波特率固定為fosc/12。在這種模式下RXD(P3.0)做數(shù)據(jù)口;TXD(P3.1)做移位脈沖輸出端。在移位過(guò)程中,先移數(shù)據(jù)的低位D0。(注意:移位脈沖的頻率就是模式0的波特率)主要功能:使用串行口擴(kuò)展并行口MCS-51RXDTXDData外部移位寄存器cp移位脈沖串行數(shù)據(jù)并行的數(shù)據(jù)(8位)1、模式0注意:方式0并不是一種同步通信方式Ⅲ、AT89C51單片機(jī)串行口的四種工作方式S1~S6S1~S6S1~S6S1~S6S1~S6S1~S6S1~S6S1~S6S1~S6S1~S6S1~S6寫(xiě)SBUFSENDD1D0D2D3D4D5D6D7RXD端數(shù)據(jù)SHIFTTXD端同步脈沖TI中斷標(biāo)志movsbuf,a指令從發(fā)送到結(jié)束的10個(gè)機(jī)器周期串行口模式0的時(shí)序信號(hào)(發(fā)送)特點(diǎn):①10位傳輸格式(1個(gè)起始位+8個(gè)數(shù)據(jù)位+1個(gè)停止位);用于真正遠(yuǎn)距離的異步通訊方式;②波特率可變(定時(shí)器T1的溢出率來(lái)確定,所以首先要對(duì)T1進(jìn)行初始化以確定串行口的波特率)。發(fā)送操作:在TI=0,執(zhí)行movsbuf,a指令后開(kāi)始,自動(dòng)在8位字符前后分別添加1個(gè)起始位和停止位,并從TXD端開(kāi)始依次發(fā)送一幀數(shù)據(jù)。當(dāng)發(fā)送完后將TI置位。D0D1D2D3D4D5D6D7起始位停止位01從TXD(P3.1)端發(fā)出的一個(gè)字符幀的格式TITXD2、模式1接收操作:在REN=1且RI=0的條件下進(jìn)行。串行口的接收電路對(duì)RXD線(xiàn)進(jìn)行采樣,其采樣頻率是接收時(shí)鐘的16倍。當(dāng)連續(xù)8次采集到RXD線(xiàn)上為低電平時(shí),檢測(cè)電路便認(rèn)定RXD線(xiàn)上有了“起始位”,此后,便開(kāi)始在每次第7、8、9三個(gè)脈沖時(shí)進(jìn)行RXD采樣,采取“三中取二”的原則來(lái)確定接收的數(shù)據(jù)(如圖所示)。D0D1D2D3D4D5D6D7起始位8位數(shù)據(jù)停止位7.8.9RIRXD
當(dāng)連續(xù)8次采集到低電平時(shí),便確認(rèn)起始位到來(lái)N。
在每個(gè)第7,8,9個(gè)脈沖對(duì)RXD采樣并采用“以三取二”來(lái)確定采集的數(shù)據(jù)。串行口模式1時(shí)數(shù)據(jù)幀格式及接收采樣示意圖D0D1D2D3D4D5D6D7起始位8位數(shù)據(jù)停止位7.8.9RIRXD當(dāng)接收到停止位時(shí),必須滿(mǎn)足:RI=0且SM2=0,才能把接收的數(shù)據(jù)送到SBUF中(停止位送SCON的RB8中,并使RI=1),否則數(shù)據(jù)丟失。上面的條件意味著:要想得到接收的數(shù)據(jù),在接收前必須事先清零RI。波特率=2SMOD32×(T1溢出率)方式1下波特率可變:特點(diǎn):模式2、3都是11位傳輸格式1個(gè)起始位+9個(gè)數(shù)據(jù)位+1個(gè)停止位。
模式2、3的區(qū)別僅在波特率上——
模式2:固定為fosc/64或fosc/32。(具體由PCON中的SMOD位來(lái)確定)。模式3:可變,由定時(shí)器T1的溢出波特率來(lái)確定(同方式1一樣,為1/32或1/16倍的T1溢出率)。D0D1D2D3D4D5D6D7D8起始位8+1位數(shù)據(jù)停止位第9位013、模式2、3第9位數(shù)據(jù)可由用戶(hù)安排,可以是奇偶校驗(yàn)位,可以是其他控制位
模式2、3的發(fā)送過(guò)程類(lèi)似于模式1,唯一的區(qū)別在于數(shù)據(jù)幀中數(shù)據(jù)是9位。這樣,在發(fā)送一幀數(shù)據(jù)時(shí),CPU除了要把8位數(shù)據(jù)送SBUF外(movsbuf,a),還要事先將第9位數(shù)據(jù)送到SCON.TB8中。
SETBSCON.TB8
或:
CLRSCON.TB8
例如:
SETBSCON.TB8
或:CLRSCON.TB8
MOVSBUF,A
MOVSBUF,A
SM0SM1SM2RENTB8RB8TIRISCON發(fā)送:接收:RI=0是保證下一個(gè)數(shù)據(jù)的正常接收的重要條件。每次當(dāng)SBUF收到數(shù)據(jù)時(shí),RI自動(dòng)置1。當(dāng)取走數(shù)據(jù)時(shí)必須通過(guò)軟件復(fù)位RI(指令CLRRI),否則外部發(fā)來(lái)的數(shù)據(jù)將丟失!模式2、3的接收過(guò)程類(lèi)似于模式1,不同的是:模式1時(shí),SCON中的RB8是接收到的停止位“1”;而模式2、3時(shí),RB8是接收到的第9位(D8)。發(fā)送時(shí):將SCON中的TB8作為第9位數(shù)據(jù)發(fā)送;接收時(shí):將接收來(lái)的第9位送到SCON中的RB8中。D0D1D2D3D4D5D6D7D8起始位9位數(shù)據(jù)停止位SM0SM1SM2RENTB8RB8TIRI串行口模式2、3時(shí)數(shù)據(jù)幀格式
在串行口的異步通訊中,發(fā)送方與接收方是兩個(gè)互相獨(dú)立的系統(tǒng),它們的系統(tǒng)時(shí)鐘可以各不相同。在這種條件下使通訊正確的條件是:
1,要有相同的字符幀格式;
2,要有相同的波特率。Ⅳ、串行口波特率的設(shè)定SM0SM1模式功能波特率000同步移位寄存器模式fosc/1201110位異步通信UART可變,由T1初值確定10211位異步通信UARTfosc/64或/32*11311位異步通信UART可變,由T1初值確定*當(dāng)SMOD=1時(shí),B=fosc/32;當(dāng)SMOD=0時(shí),B=fosc/64。3、模式1、3的波特率由定時(shí)器T1的溢出率來(lái)決定的(SMOD=1使波特率加倍)。AT89C51單片機(jī)的串行口4種模式其波特率各不相同1、模式0的波特率無(wú)需用戶(hù)干預(yù),其固定值為fosc/122、模式2的波特率為fosc/64或fosc/32,用戶(hù)通過(guò)設(shè)置SMOD來(lái)選擇其一。模式1、3下的波特率計(jì)算公式:所以在編制串行口通訊(模式1、3)程序時(shí),在程序的初始化中,通過(guò)T1進(jìn)行波特率的設(shè)定,即對(duì)T1進(jìn)行初始化。T1初始化的主要任務(wù)就是:
1,設(shè)置T1的工作方式為定時(shí)(C/T=0);
工作模式為模式2:自動(dòng)重裝。
2,計(jì)算定時(shí)常數(shù)并分別送給TH1、TL1。T1溢出率:=(計(jì)數(shù)速率)/[256-(TH1)]=(fosc/12)/[256-(TH1)]波特率=2SMOD32×(T1溢出率)
T=(M-TC)×Tosc×12
其中,T:定時(shí)時(shí)間;Tosc:時(shí)鐘周期;M:模;TC:計(jì)數(shù)初值。模式1、3的波特率設(shè)定B=fosc/[384X(256-TH)];(SMOD=0時(shí))或B=fosc/[192X(256-TH)];(SMOD=1時(shí))其中:fosc為系統(tǒng)時(shí)鐘頻率,TH為定時(shí)器T1的初值。所以可以推出:
TH=256-[fosc/(384XB)];(SMOD=0時(shí))或:TH=256-[fosc/(192XB)];(SMOD=1時(shí))【舉例】設(shè)系統(tǒng)時(shí)鐘為11.059MHz,要求波特率為1200Hz,求TH?!窘狻坑蒙鲜龉接校ㄔO(shè):SMOD=0)TH=256-[11.059MHz/(384X1200)]=232=0E8H
根據(jù)波特率求初值TH的計(jì)算公式在編制串行通訊程序時(shí),通訊雙方必須保證:
1,相同的“波特率”;
2,相同的“字符幀格式”格式。
MCS-51串口的4種模式中:0、2模式的波特率是固定的;1和3模式時(shí)波特率是可變且由定時(shí)器T1來(lái)作波特率發(fā)生器(以模式2的方式工作)。根據(jù)波特率計(jì)算T1的初值TC,串口程序初始化任務(wù)之一。在通訊過(guò)程中,對(duì)標(biāo)志(RI、TI)的判斷是控制通訊全過(guò)程的關(guān)鍵環(huán)節(jié)。Ⅴ、串行口的應(yīng)用舉例模式發(fā)送條件接收條件接收方式主要應(yīng)用0TI=0RI=0,REN=1查詢(xún)、中斷同步移位,系統(tǒng)擴(kuò)并口1TI=0RI=0,REN=1查詢(xún)、中斷8位數(shù)據(jù)異步傳送2、3TI=0RI=0,REN=1,SM2=0查詢(xún)(無(wú)中斷)8位數(shù)據(jù)+奇偶位的異步收發(fā)UARTRI=0,REN=1,SM2=1若RB8=0時(shí)接收無(wú)效;若RB8=1時(shí)引發(fā)中斷。8位數(shù)據(jù)+控制位的異步收發(fā)UART四種模式的接收、發(fā)送條件例1:使用串入/并出移位寄存器CD4094(也可用74LS164)擴(kuò)展8位并行輸出口,8位輸出端的各位都接一個(gè)發(fā)光二極管。要求編程實(shí)現(xiàn):發(fā)光二極管從左到右以一定延遲輪流點(diǎn)亮,并不斷循環(huán)。8051
DataCD4094CLK移位脈沖串行數(shù)據(jù)STBP1.0RXDTXDSTB:輸出允許控制端,STB=1時(shí),允許并行輸出。1、模式0舉例——串并變換8051
Data
CD4094CLKSTBP1.0RXDTXDORG0200HBFS0:MOVSCON,#00H;串口模式0CLRES;禁止串行中斷
MOVA,#80HLOOP:CLRP1.0MOVSBUF,AJNBTI,$SETBP1.0ACALLDELAYCLRTIRRASJMPLOOPRETSM0SM1SM2RENTB8RB8TIRI編程(查詢(xún)方式)MCS-51P3.0P3.1P1.0QAQHA,B74LS164/CLRCLKQAQHA,B74LS164/CLRCLKRXDTXD
共陰極LED數(shù)碼管
.gfedcba
共陰極LED數(shù)碼管
.gfedcba例2:利用串行模式0構(gòu)成的2位LED數(shù)碼管驅(qū)動(dòng)電路
要求實(shí)現(xiàn)如下功能:?jiǎn)纹瑱C(jī)甲將P1口輸入的數(shù)據(jù)通過(guò)串行口發(fā)送給單片機(jī)乙,單片機(jī)乙將收到的數(shù)據(jù)在P1口輸出,并用指示燈顯示當(dāng)前收到的數(shù)據(jù)(設(shè)系統(tǒng)時(shí)鐘為11.0592MHz,要求波特率為1200bps)。MCS-51TXDP1.7P1.0MCS-51RXDP1.7P1.0∶8路開(kāi)關(guān)量輸入∶8路開(kāi)關(guān)量輸出串行口傳輸線(xiàn)乙甲GNDGND思考:可否用模式0或模式2?2、模式1舉例——雙機(jī)通信SM0SM1SM2RENTB8RB8TIRIGATEC/TM1M0GATEC/TM1M0TMOD為00100000B=20HSCON為01000000B=40HT1初始化啟動(dòng)T1串行口初始化輸入數(shù)據(jù)到A發(fā)送一幀數(shù)據(jù)MOVSBUF,ATI=1?軟件清TIYN1、串行口工作在模式12、定時(shí)器T1用作波特率發(fā)生器,工作于模式2(自動(dòng)重裝初值)3、采用查詢(xún)方式發(fā)送數(shù)據(jù)編程——發(fā)送方(單片機(jī)甲)
org0000hljmp0100horg0100hstart:movtmod,#20h ;設(shè)定時(shí)器T1定時(shí)方式、模式2movTL1,#0E8h ;送定時(shí)初值(fosc=11.0592)
movTH1,#0E8h ;波特率B=1200movpcon,#00h ;PCON中的SMOD=0setbTR1 ;啟動(dòng)定時(shí)器T1movscon,#40h ;設(shè)定串行口為模式1loop2:movp1,#0ffhmova,p1 ;從P1口輸入數(shù)據(jù)
movsbuf,a ;數(shù)據(jù)送SBUF發(fā)送loop1:jnbti,loop1 ;判斷數(shù)據(jù)是否發(fā)送完畢?
clrti ;發(fā)送完一幀后清標(biāo)志
sjmploop2 ;返回繼續(xù)
end發(fā)送方程序清單SM0SM1SM2RENTB8RB8TIRIGATEC/TM1M0GATEC/TM1M0定時(shí)器TMOD為00100000B=20HSCON(98H)為01010000B=50HT1初始化啟動(dòng)T1串行口初始化輸出數(shù)據(jù)到P1數(shù)據(jù)送AMOVA,SBUFRI=1?軟件清RIYN1、串行口工作在模式12、定時(shí)器T1用作波特率發(fā)生器,工作于模式2(自動(dòng)重裝初值)3、采用查詢(xún)方式接收數(shù)據(jù)編程——接收方(單片機(jī)乙) org0000h ljmp0100h org0100hstart: movtmod,#20h ;選定T1為模式2(自動(dòng)重裝)
movtl1,#0E8h ;設(shè)定初值
movth1,#0E8h ;同上
movpcon,#00h ;PCON的SMOD=0 setbtr1 ;啟動(dòng)T1定時(shí)器
clrri ;清接收標(biāo)志
movscon,#50h ;設(shè)定串行口為方式1loop1:jnbri,loop1 ;判斷是否接收到數(shù)據(jù)?
clrri ;接收到數(shù)據(jù)后清接收標(biāo)志
mova,sbuf ;數(shù)據(jù)送累加器A movp1,a ;從P1口輸出
sjmploop1 ;回繼續(xù)
end接收方程序清單
org0000h ljmp0100h
org0023h ljmp0200h
org0100hstart: movtmod,#20h;選定T1為模式2(自動(dòng)重裝)
movtl1,#0E8h;設(shè)定初值
movth1,#0E8h;同上
movpcon,#00h;PCON的SMOD=0 setbtr1;啟動(dòng)T1定時(shí)器
clrri ;清接收標(biāo)志
movscon,#50h;設(shè)定串行口為方式1,接收
movie,#90h;開(kāi)串行口中斷
sjmp$;等待一幀數(shù)據(jù)接收完成(中斷)
org0200hrxd1: clrri ;接收到數(shù)據(jù)后清接收標(biāo)志
mova,sbuf;數(shù)據(jù)送累加器A movp1,a;從P1口輸出
reti
endLJMP01H00HLJMP02H00HMOVCLR0000H思考題:用中斷的方式接收數(shù)據(jù)0023H0100H0200HT1初始化并啟動(dòng)T1串行口初始化開(kāi)串行口中斷等待RI中斷輸出數(shù)據(jù)到P1接收一幀數(shù)據(jù)MOVA,SBUF軟件清RIRETI主程序框圖中斷服務(wù)程序框圖EAXXESET1EX1ET0EX0中斷允許寄存器IE為10010000B=90H中斷方式接收程序框圖與模式1相比,模式2、3的主要特點(diǎn):
1,9位數(shù)據(jù)的傳送格式:
其中:發(fā)送時(shí)第9位在TB8中;接收時(shí)第9位在RB8中。
2,SM2:
多機(jī)通訊位:
在模式0、1中:設(shè)SM2=0,RI可以正常的激活并引發(fā)中斷。在模式2、3中:①SM2=0時(shí),RI可以被激活,但不能引發(fā)中斷;②SM2=1時(shí),當(dāng)RB8=1,RI可以激活且引發(fā)中斷;若RB8=0則不能激活RI,不能引發(fā)中斷!根據(jù)上面特點(diǎn),模式2、3可以:1,利用第9位數(shù)據(jù)來(lái)傳送、接收數(shù)據(jù)的“奇偶校驗(yàn)位”(SM2=0)。
2,利用SM2、RB8實(shí)現(xiàn)多機(jī)通訊功能(SM2=1)。3、模式2、3應(yīng)用舉例【例】:收發(fā)雙方約定為奇校驗(yàn)(9位數(shù)據(jù)中1的個(gè)數(shù)為奇),如何編程實(shí)現(xiàn)?【分析】首先發(fā)送方的第9位(存放在TB8中)要根據(jù)前8位數(shù)據(jù)來(lái)確定。
若發(fā)送的8位數(shù)據(jù)是:00011010
,則TB8為0。這樣當(dāng)接收方將SBUF的數(shù)據(jù)送A時(shí)(MOVA,SBUF),A中數(shù)據(jù)是:00011010。這時(shí)PSW.P=1,且RB8=0
;若發(fā)送的8位數(shù)據(jù)是:00011011
,則TB8為1。這樣當(dāng)接收方將SBUF的數(shù)據(jù)送A時(shí)(MOVA,SBUF),A中數(shù)據(jù)是:00011011。這時(shí)PSW.P=0,且RB8=1;因此接收方可以進(jìn)行P⊕RB8運(yùn)算,當(dāng)=1時(shí)表明通信正確,否則發(fā)送錯(cuò)誤。 可見(jiàn)可以用第9位數(shù)據(jù)作為奇校驗(yàn)位,使通信數(shù)據(jù)的正確性得以提高。模式2、3的應(yīng)用——帶奇偶校驗(yàn)位的數(shù)據(jù)傳送數(shù)據(jù)送累加器APSW.P=1?SETSCON.TB8CLRSCON.TB8MOVSBUF,ATI=1?CLRSCON.TIYESNONOYES發(fā)送端程序(原始TI=0)RI=1?MOVA,SBUFPSW.P⊕RB8=1?出錯(cuò)處理CLRSCON.RIYESNO接收端程序(原始RI=0)NY數(shù)據(jù)送內(nèi)存利用模式2,3進(jìn)行帶奇校驗(yàn)的串行通訊程序流程圖功能SM2第9位工作方式帶校驗(yàn)位的9位數(shù)傳送SM2=0校驗(yàn)位以查詢(xún)(RI)的方式接收數(shù)據(jù)多機(jī)通訊主機(jī)SM2=0地址碼:TB8=1數(shù)據(jù)、命令時(shí)=0以查詢(xún)的方式工作從機(jī)SM2=1未選中時(shí)SM2不變以中斷的方式接收地址選中后SM2=0以查詢(xún)的方式與主機(jī)通訊模式2、3使用時(shí)要注意的問(wèn)題
在模式2、3中,可以實(shí)現(xiàn)較為特殊的通訊方式,如帶校驗(yàn)位的9位傳送、多機(jī)通訊。注意:當(dāng)SM2=0時(shí),只能采用查詢(xún)方式。對(duì)于接收操作:
模式1:SM2無(wú)用,令其=0即可。此時(shí)接收數(shù)據(jù)條件是:RI=0且REN=1。單片機(jī)可以利用查詢(xún)或中斷方式為串口服務(wù)。
模式2、3的接收條件是:(除了RI=0、REN=1外)①當(dāng)
SM2=0時(shí):RI可以被激活(但不能引發(fā)中斷);
②當(dāng)SM2=1時(shí):只有接收到RB8=1時(shí),RI不僅能激活,還能引發(fā)中斷。可見(jiàn):當(dāng)SM2=1時(shí),單片機(jī)是否能接收到數(shù)據(jù)取決于外部數(shù)據(jù)的第9位RB8。這樣外部可以通過(guò)第九位數(shù)據(jù)是“0”還是“1”來(lái)控制、決定單片機(jī)的接收狀況。關(guān)于SM2的設(shè)定在模式2、3中:如何利用和設(shè)置SM2和RB8來(lái)控制接收?①當(dāng)數(shù)據(jù)是帶奇偶校驗(yàn)位的9位數(shù)據(jù)時(shí)(校驗(yàn)位是RB8):必須令SM2=0,這樣才能保證所有數(shù)據(jù)的正確接收(無(wú)論RB8如何);②在“多機(jī)通訊”時(shí),所有的從機(jī)都將其SM2=1,這樣作為主機(jī)在向從機(jī)發(fā)送數(shù)據(jù)/命令時(shí),可以通過(guò)所發(fā)數(shù)據(jù)的第9位TB8(對(duì)于從機(jī)來(lái)說(shuō)是RB8)來(lái)決定從機(jī)是否可以接收到此數(shù)據(jù)/命令(取決于RB8)。即RB8=1時(shí)接收有效;RB8=0時(shí)接收無(wú)效。所以,SM2也稱(chēng)“多機(jī)通訊位”,用于多機(jī)通訊。奇偶校驗(yàn):一種防止串行通訊出錯(cuò)的方法。模式2、3的應(yīng)用——多機(jī)通信
如果系統(tǒng)采用多CPU結(jié)構(gòu),并且有一個(gè)做主機(jī),其它為從機(jī)時(shí),它們之間可以通過(guò)多機(jī)通訊的方式進(jìn)行數(shù)據(jù)交換。如:多路數(shù)據(jù)采集系統(tǒng)。選一臺(tái)單片機(jī)作為主機(jī),專(zhuān)門(mén)負(fù)責(zé)接收從機(jī)傳回的數(shù)據(jù),并進(jìn)行數(shù)據(jù)的后期處理(保存、打印和顯示等);從機(jī)則完成對(duì)傳感器的信號(hào)檢測(cè)、A/D轉(zhuǎn)換,最后將數(shù)據(jù)采用串行通訊的形式上傳給主機(jī)。單片機(jī)系統(tǒng)或微型計(jì)算機(jī)系統(tǒng)接口電路引線(xiàn)(模擬信號(hào))
機(jī)房或儀表室傳統(tǒng)方式的多路數(shù)據(jù)采集系統(tǒng)傳感器1傳感器2傳感器3傳感器4傳感器N檢測(cè)現(xiàn)場(chǎng)主機(jī)從機(jī)N從機(jī)4從機(jī)3從機(jī)2從機(jī)1串行數(shù)據(jù)線(xiàn)(2條)RXDTXDTXDRXD從機(jī)做智能傳感器采用“智能傳感器”組成的多路數(shù)據(jù)采集系統(tǒng)主從式多機(jī)通訊原理
主機(jī)發(fā)送的數(shù)據(jù)可以傳送到各個(gè)從機(jī),從機(jī)發(fā)送的數(shù)據(jù)只能為主機(jī)接收,從機(jī)之間不能直接通訊。主機(jī)和從機(jī)的設(shè)置為模式2或3,其中主機(jī)的SM2=0,從機(jī)的SM2=1。從機(jī)的SM2=1時(shí),接收到的第九位數(shù)據(jù)RB8=1時(shí),RI可以激活,如果RB8=0,則RI不能激活。
主機(jī)首先通過(guò)發(fā)送地址碼來(lái)尋找從機(jī)(地址碼的特征是第9位數(shù)據(jù)為“1”),所以所有的從機(jī)都能接收到主機(jī)發(fā)出的地址碼(因?yàn)閺臋C(jī)的RI=0,SM2=1,RB8=1),并使RI=1引發(fā)中斷。從機(jī)在中斷服務(wù)程序中,將接收到地址碼與自己的地址進(jìn)行比較,被選中的從機(jī)將自己的SM2=0;而未被選中的從機(jī)仍保持SM2=1,并退出中斷服務(wù)程序。當(dāng)主機(jī)找到從機(jī)后,開(kāi)始向從機(jī)發(fā)數(shù)據(jù)、命令(其特征為第9位=0)。由于從機(jī)SM2=0,所以盡管接收到的RB8=0,同樣可以激活從機(jī)的RI,使其以查詢(xún)的方式接收主機(jī)發(fā)出的數(shù)據(jù)或命令。當(dāng)主機(jī)與從機(jī)的通訊完成后,從機(jī)再將其SM2=1,并退出中斷服務(wù)程序。主機(jī)重新發(fā)出另一個(gè)從機(jī)的地址,所有從機(jī)可以馬上響應(yīng)并接收地址信息……。主從式多機(jī)通訊原理在模式2、3中,
1,SM2=0時(shí):RB8=1或RB8=0
都可以激活RI,但不能引發(fā)中斷。
2,SM2=1時(shí):RB8=1才能激活RI并引發(fā)中斷。而RB8=0時(shí),RI不能激活。多機(jī)通訊中SM2的設(shè)定1,主機(jī)的SM2=0,從機(jī)的SM2=1;2,主機(jī)向從機(jī)發(fā)送的地址碼(第9位為“1”);3,所有的從機(jī)(SM2=1、RB8=1、RI=0)都接收主機(jī)的地址進(jìn)入中斷服務(wù)程序。在服務(wù)程序中比較、確認(rèn)是否為被尋從機(jī)。4,被尋從機(jī)將SM2清零,以保證能以查詢(xún)的方式接收主機(jī)的數(shù)據(jù)、命令。同時(shí)向主機(jī)返回地址供主機(jī)核實(shí)。沒(méi)有被選中的從機(jī)保持SM2=1并退出服務(wù)程序。5,被尋中的從機(jī)以查詢(xún)RI的方式與主機(jī)之間進(jìn)行數(shù)據(jù)交換(注意:因?yàn)镾M2=0時(shí),RI雖然能被激活,但不能引發(fā)中斷),完成后,重新將SM2置1。多機(jī)通訊小結(jié):中斷源中斷標(biāo)志說(shuō)明撤除方法INT0、INT1IE0、IE1外部邊沿觸發(fā)無(wú)影響INT0、INT1IE0、IE1外部電平觸發(fā)電路、軟件撤除T0、T1TF0、TF1定時(shí)計(jì)數(shù)器中斷自動(dòng)清除標(biāo)志ESRI、TI串行口中斷軟件清除標(biāo)志注:此表指使用中斷服務(wù)程序來(lái)處理中斷事件時(shí)的情況。如果采用查詢(xún)的方法來(lái)處理事件時(shí),都需要軟件來(lái)清除標(biāo)志。MCS-51的中斷請(qǐng)求的撤除方法三、項(xiàng)目實(shí)施(一)硬件電路原理圖設(shè)計(jì)(二)系統(tǒng)所用元器件、設(shè)備及工具三、項(xiàng)目實(shí)施元器件名稱(chēng)主要參數(shù)數(shù)量元器件名稱(chēng)主要參數(shù)數(shù)量單片機(jī)AT89C511電解電容10μF1電阻5.1KΩ2電容1μF1電阻330Ω1面包板—1電阻470Ω8偉福仿真器H51/L1瓷片電容30pF2西爾特編程器SUPERPRO/L+1開(kāi)關(guān)電源+5V3W1仿真頭1LED—8插線(xiàn)—若干晶振11.0592MHz1計(jì)算機(jī)—1萬(wàn)用表數(shù)字式1鉗子尖口1螺釘旋具一字及十字2移位寄存器74LS1641(三)系統(tǒng)所用匯編源程序的編制三、項(xiàng)目實(shí)施(四)硬件及軟件的聯(lián)合調(diào)試三、項(xiàng)目實(shí)施三、項(xiàng)目實(shí)施(五)脫離仿真器后的獨(dú)立運(yùn)行四、拓展知識(shí)(一)RS232C串行接口標(biāo)準(zhǔn)1.RS232C總線(xiàn)標(biāo)準(zhǔn)(1)電氣特性采取不平衡傳輸方式,是為點(diǎn)對(duì)點(diǎn)(即只用一對(duì)收、發(fā)設(shè)備)通信而設(shè)計(jì)的。采用負(fù)邏輯;適用于傳送距離不大于15m,速度不高于20Kb/s的本地設(shè)備之間通信的場(chǎng)合。(2)機(jī)械特性對(duì)于連接的插頭、插座的尺寸、插腳數(shù)、引腳數(shù)、引腳分配、插腳和插孔的尺寸等。(3)電氣信號(hào)特性對(duì)信號(hào)的邏輯電平、最高數(shù)據(jù)率、發(fā)送和接收電路特性的規(guī)定。(4)信號(hào)的功能描述對(duì)各信號(hào)的名稱(chēng)、方向的型號(hào)關(guān)系的說(shuō)明。四、拓展知識(shí)(一)RS232C串行接口標(biāo)準(zhǔn)2.RS232C串口通信接線(xiàn)方法1)9針串口(DB9)信號(hào)引腳如圖9-15a所示。四、拓展知識(shí)(一)RS232C串行接口標(biāo)準(zhǔn)2.RS232C串口通信接線(xiàn)方法2)25針串口(DB25)信號(hào)引腳如圖9-15b所示。四、拓展知識(shí)(一)RS232C串行接口標(biāo)準(zhǔn)3.RS232C9針串口(DB9)標(biāo)準(zhǔn)中主信道重要信號(hào)含義
采取不平衡傳輸方式,是為點(diǎn)對(duì)點(diǎn)(即只用一對(duì)收、發(fā)設(shè)備)通信而設(shè)計(jì)的;采用負(fù)邏輯;適用于傳送距離不大于15m,速度不高于20kb/s的本地設(shè)備之間通信場(chǎng)合。1)數(shù)據(jù)載波檢測(cè)CD。2)接收數(shù)據(jù)RXD。3)發(fā)送數(shù)據(jù)TXD串行數(shù)據(jù)發(fā)送引腳。4)數(shù)據(jù)終端準(zhǔn)備DTR數(shù)據(jù)終端(DTE)就緒信號(hào),輸出。用于DTE向DCE發(fā)送聯(lián)絡(luò),當(dāng)DTR有效時(shí),表示DTE可以接收來(lái)自DCE的數(shù)據(jù)。5)信號(hào)地GND。6)數(shù)據(jù)設(shè)備準(zhǔn)備好DSR。7)請(qǐng)求發(fā)送RTS
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 四川文化單招題目及答案
- c型人格測(cè)試題目及答案
- 養(yǎng)老院藥品管理使用制度
- 養(yǎng)老院老人生活?yuàn)蕵?lè)活動(dòng)組織人員行為規(guī)范制度
- 養(yǎng)老院服務(wù)質(zhì)量評(píng)估制度
- 養(yǎng)老院財(cái)務(wù)公開(kāi)與審計(jì)制度
- 針對(duì)員工頻繁請(qǐng)假的制度
- 酒店規(guī)單制度
- 一升二的數(shù)學(xué)題目及答案
- 企業(yè)品牌提升的策略與實(shí)現(xiàn)路徑探討
- 2026屆山東省濟(jì)南市高三上學(xué)期第一次模擬考試物理試題(原卷+解析)
- 市安全生產(chǎn)例會(huì)制度
- 高新區(qū)服務(wù)規(guī)范制度
- 小程序維護(hù)更新合同協(xié)議2025
- 雨課堂學(xué)堂在線(xiàn)學(xué)堂云《課程與教學(xué)論( 華師)》單元測(cè)試考核答案
- 中國(guó)自有品牌發(fā)展研究報(bào)告2025-2026
- 2025年豆制品千張銷(xiāo)量及餐桌烹飪調(diào)研匯報(bào)
- 地形測(cè)量投標(biāo)標(biāo)書(shū)技術(shù)設(shè)計(jì)書(shū)
- 2025及未來(lái)5年馬桶水箱組合項(xiàng)目投資價(jià)值分析報(bào)告
- 合伙建廠(chǎng)合同協(xié)議書(shū)
- 代建合同安全協(xié)議書(shū)
評(píng)論
0/150
提交評(píng)論