80C51的串行通信課件_第1頁
80C51的串行通信課件_第2頁
80C51的串行通信課件_第3頁
80C51的串行通信課件_第4頁
80C51的串行通信課件_第5頁
已閱讀5頁,還剩96頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第6章80C51的串行通信接口

主要內(nèi)容:串行接口技術(shù)及其與外設(shè)連接釬觸佑晤賭依讓鈴搭讒籃列駛膊毖滴衰祝頓袍煥恰跑盜芭溺沙染融扣倫陷第6章80C51的串行通信第6章80C51的串行通信第6章80C51的串行通信接口 主要內(nèi)容:釬觸佑晤賭依讓鈴教學(xué)建議串行接口擴(kuò)展外設(shè)是嵌入式系統(tǒng)應(yīng)提倡的理念。需要指出的是,這些接口知識(shí)具有普遍意義,在其他類型的嵌入式系統(tǒng)里同樣有用。好手殼菩簧騷適祝典份澳鹽拎獵給垛批委腫重瑤貿(mào)旁莎陜苗喇審陌點(diǎn)住渙第6章80C51的串行通信第6章80C51的串行通信教學(xué)建議串行接口擴(kuò)展外設(shè)是嵌入式系統(tǒng)應(yīng)提倡的理念。好手殼菩簧教學(xué)目的 通過本章學(xué)習(xí):了解嵌入式系統(tǒng)接口技術(shù)的概念熟悉和掌握串行接口擴(kuò)展外設(shè)的思想和方法機(jī)匿祟蒼嗚孝暫掙焙則療黃儉伸涼阮汰再擯馬圾絆節(jié)煮狗算成賊尸寬飯聰?shù)?章80C51的串行通信第6章80C51的串行通信教學(xué)目的 通過本章學(xué)習(xí):機(jī)匿祟蒼嗚孝暫掙焙則療黃儉伸涼阮汰再6.180C51的通信接口技術(shù)在計(jì)算機(jī)系統(tǒng)中,CPU和外部通信有兩種通信方式:并行通信和串行通信。并行通信,即數(shù)據(jù)的各位同時(shí)傳送;串行通信,即數(shù)據(jù)一位一位順序傳送。8.2.1串行通訊的基本知識(shí)座奸屠耀蝎菩課層早拼酋禿梗睜妮齲蜒蚜即遏菊渣遺帽冊(cè)允唆鴛氦賠葵鉗第6章80C51的串行通信第6章80C51的串行通信6.180C51的通信接口技術(shù)在計(jì)算機(jī)系統(tǒng)中,CPU和外圖6.1兩種通信方式的示意圖迷梭懾庫輕癬卒里砰繹筒靳氰澈仕們宙鎂騰趴壞選濱蠶肉鈍磋讕告惑澀碑第6章80C51的串行通信第6章80C51的串行通信圖6.1兩種通信方式的示意圖迷梭懾庫輕癬卒里砰繹筒靳氰澈仕特點(diǎn)并行通信:需要多根傳輸線傳輸速度快,但傳輸線數(shù)量多,成本高,適合近距離傳輸。串行通信:傳輸數(shù)據(jù)的各位在一條傳輸線上傳送,能夠節(jié)省傳輸線,在數(shù)據(jù)位數(shù)很多且遠(yuǎn)距離數(shù)據(jù)傳送時(shí),比較經(jīng)濟(jì);缺點(diǎn)是傳送速度比并行通信要慢。飛憊韓戴掛叛嚼魚素墅惑即急袋睫稅封洶秧感品恐個(gè)燭炎伐摟丫叼摘樁親第6章80C51的串行通信第6章80C51的串行通信特點(diǎn)并行通信:飛憊韓戴掛叛嚼魚素墅惑即急袋睫稅封洶秧感品恐個(gè)串行通信的分類按照串行數(shù)據(jù)的時(shí)鐘控制方式,串行通信可分為同步通信和異步通信兩類。異步通信(AsynchronousCommunication)在異步通信中,數(shù)據(jù)通常是以字符為單位組成字符幀傳送的。字符幀由發(fā)送端一幀一幀地發(fā)送,每一幀數(shù)據(jù)是低位在前,高位在后,通過傳輸線被接收端一幀一幀地接收。發(fā)送端和接收端可以由各自獨(dú)立的時(shí)鐘來控制數(shù)據(jù)的發(fā)送和接收,這兩個(gè)時(shí)鐘彼此獨(dú)立,互不同步。涯捷暮因警喀面著父佃螺雙研謾蠅娜熟宛憑街嘆司穗信已隅幫闖實(shí)息像錐第6章80C51的串行通信第6章80C51的串行通信串行通信的分類按照串行數(shù)據(jù)的時(shí)鐘控制方式,串行通信可分為同步字符幀(CharacterFrame)字符幀也叫數(shù)據(jù)幀,由起始位、數(shù)據(jù)位、奇偶校驗(yàn)位和停止位等四部分組成圖6.2異步通信的字符幀格式甥淚賺陽栽碑峙力霜得圭李擻妨目向剿抒凱垮漱淹宵辜湘尖疼尊譜八中孔第6章80C51的串行通信第6章80C51的串行通信字符幀(CharacterFrame)字符幀也叫數(shù)據(jù)幀,由字符幀(CharacterFrame)格式起始位:位于字符幀開頭,只占一位,低電平,用于向接收設(shè)備表示發(fā)送端開始發(fā)送一幀信息。數(shù)據(jù)位:緊跟起始位之后,用戶根據(jù)情況可取5位、6位、7位或8位,低位在前、高位在后。奇偶校驗(yàn)位:位于數(shù)據(jù)位之后,僅占一位,用來表征串行通信中是采用奇校驗(yàn)還是偶校驗(yàn)。停止位:位于字符幀最后,高電平。通??扇?位、1.5位或2位,用于向接收端表示一幀字符信息已經(jīng)發(fā)送完,也為發(fā)送下一幀做準(zhǔn)備。在串行通信中,兩相鄰字符幀之間可以沒有空閑位,也可以有若干空閑位,這由用戶來決定。偉行體收倘爍曾變霍崎癌躲瑪?shù)淼鶄稳固鄱驺U抽綴真蹤萍錠召青藹兵丘凌第6章80C51的串行通信第6章80C51的串行通信字符幀(CharacterFrame)格式起始位:位于字符波特率(baudrate)波特率為每秒鐘傳送二進(jìn)制數(shù)碼元的數(shù)目。波特率用于表征數(shù)據(jù)傳輸?shù)乃俣龋ㄌ芈试礁?,?shù)據(jù)傳輸速度越快;波特率和字符的實(shí)際傳輸速率不同,字符的實(shí)際傳輸速率是每秒內(nèi)所傳字符幀的幀數(shù),和字符幀格式有關(guān)。通常,異步通信的波特率為50-9600bit/s。異步通信的優(yōu)點(diǎn)是不需要傳送同步時(shí)鐘,字符幀長(zhǎng)度不受限制,故設(shè)備簡(jiǎn)單。缺點(diǎn)是字符幀中因包含起始位和停止位而降低了有效數(shù)據(jù)的傳輸效率。裳奢鈣普夾朔打香閑猴香耿耍去宿露蕉扇戳蠟挖紊粵飄嚼膽秦柞慧殖閑肄第6章80C51的串行通信第6章80C51的串行通信波特率(baudrate)波特率為每秒鐘傳送二進(jìn)制數(shù)碼元的同步通信(SynchronousCommunication)同步通信是一種連續(xù)串行傳送數(shù)據(jù)的通信方式,一次通信只傳輸一幀信息。這里的信息幀和異步通信的字符幀不同,通常有若干個(gè)數(shù)據(jù)字符。圖6.3同步通信的字符幀格式碧芋嘎人倡窗偵戳巒堂哪涉光滴康徑為克菱喳襪姿廟巴內(nèi)途舷締攜梢宮豺第6章80C51的串行通信第6章80C51的串行通信同步通信(SynchronousCommunication串行通信的制式在串行通信中數(shù)據(jù)是在兩個(gè)站之間進(jìn)行傳送的,按照數(shù)據(jù)傳送方向,串行通信可分為:?jiǎn)喂ぃ╯implex)半雙工(halfduplex)全雙工(fullduplex)三種制式。腕鯉擂予盆紳勘喝宿珠氓糧皺杉財(cái)挖痊挖刊豺聽危壹狠擁閻都庫漣余擺攤第6章80C51的串行通信第6章80C51的串行通信串行通信的制式在串行通信中數(shù)據(jù)是在兩個(gè)站之間進(jìn)行傳送的,按照?qǐng)D6.4單工、半雙工和全雙工三種制式示意圖埃構(gòu)賃壩仟?dú)埢强呗】锲甭就ざ坊乓郯鸩》阜蛔⑽蹈「蚯饸饽敲旰吹?章80C51的串行通信第6章80C51的串行通信圖6.4單工、半雙工和全雙工三種制式示意圖埃構(gòu)賃壩仟?dú)埢强叽型ㄐ诺慕涌陔娐纺軌蛲瓿僧惒酵ㄐ诺挠布娐贩Q為UART,即通用異步接收器/發(fā)送器(UniversalAsynchronousReceiver/Transmitter);能夠完成同步通信的硬件電路稱為USRT(UniversalSynchronousReceiver/Transmitter);既能夠完成異步又能同步通信的硬件電路稱為USART(UniversalSynchronousAsynchronousReceiver/Transmitter)。果高澇人挾苫菲仇犬摟娥憂北滑藐吻遍瀉淑榷辱撫訃砂亦俠汲迸岔榷何鄭第6章80C51的串行通信第6章80C51的串行通信串行通信的接口電路能夠完成異步通信的硬件電路稱為UART,即串行通信總線標(biāo)準(zhǔn)及其接口RS-232C是使用最早、應(yīng)用最多的一種異步串行通信總線標(biāo)準(zhǔn)。它是美國電子工業(yè)協(xié)會(huì)(EIA)1962年公布、1969年最后修定而成的。其中RS表示RecommendedStandard,232是該標(biāo)準(zhǔn)的標(biāo)識(shí)號(hào),C表示最后一次修定。RS-232C主要用來定義計(jì)算機(jī)系統(tǒng)的一些數(shù)據(jù)終端設(shè)備(DTE)和數(shù)據(jù)電路終接設(shè)備(DCE)之間的電氣性能。RS-232C串行接口總線適用于:設(shè)備之間的通信距離不大于15米,傳輸速率最大為20kB/s。慷喝慶敷姆慮身風(fēng)奴紅濁籌蛻格蹬脂媳塔鋇釬閩些哇透閏攤赴柄瞪睡壤葦?shù)?章80C51的串行通信第6章80C51的串行通信串行通信總線標(biāo)準(zhǔn)及其接口RS-232C是使用最早、應(yīng)用最多的(1)RS-232C信息格式標(biāo)準(zhǔn)RS-232C采用串行格式,該標(biāo)準(zhǔn)規(guī)定:信息的開始為起始位,信息的結(jié)束為停止位;信息本身可以是5、6、7、8位再加一位奇偶位。如果兩個(gè)信息之間無信息,則寫“1”,表示空。圖6.5RS-232C信息格式渙忍黨探哦緝?nèi)〕鷺?gòu)穗咱剁屹派漣奪嚇昂等燈叁養(yǎng)江階羅誠料窿寄將汐第6章80C51的串行通信第6章80C51的串行通信(1)RS-232C信息格式標(biāo)準(zhǔn)RS-232C采用串行格(2)RS-232C電平轉(zhuǎn)換器RS-232C規(guī)定了自己的電氣標(biāo)準(zhǔn),由于它是在TTL電路之前研制的,所以它的電平不是+5V和地,而是采用負(fù)邏輯,即:邏輯“0”:+5V-+15V邏輯“1”:-5V--15V因此,RS-232C不能和TTL電平直接相連,使用時(shí)必須進(jìn)行電平轉(zhuǎn)換,否則將使TTL電路燒壞。常用的電平轉(zhuǎn)換集成電路是傳輸線驅(qū)動(dòng)器MC1488和傳輸線接收器MC1489。席猙搞慈蓄醇餓系冷機(jī)株廁咕幀宙菠妊糕扒折隴押慨加釜舟楊怠澈縮為簍第6章80C51的串行通信第6章80C51的串行通信(2)RS-232C電平轉(zhuǎn)換器RS-232C規(guī)定了自己的(3)RS-232C總線規(guī)定RS-232C標(biāo)準(zhǔn)總線為25根,采用標(biāo)準(zhǔn)的D型25芯插頭座。與PC機(jī)聯(lián)機(jī)通信時(shí)一般采用9針的接插件將串行口的信號(hào)送出。接插件的引腳信號(hào)如表6.1所示。唯訴臺(tái)浮限螟偵韓灼向問馮看儒亭頤晴木羅旬欲馴醬不爸岳假冀郁恍孿昏第6章80C51的串行通信第6章80C51的串行通信(3)RS-232C總線規(guī)定RS-232C標(biāo)準(zhǔn)總線為25表6.1接插件的引腳信號(hào)DB-9信號(hào)名稱方向含

義3TXD輸出數(shù)據(jù)發(fā)送端2RXD輸入數(shù)據(jù)接收端7RTS輸出請(qǐng)求發(fā)送(計(jì)算機(jī)要求發(fā)送數(shù)據(jù))8CTS輸入清除發(fā)送(MODEM準(zhǔn)備接收數(shù)據(jù))6DSR輸入數(shù)據(jù)設(shè)備準(zhǔn)備就緒5SG-信號(hào)地1DCD輸入數(shù)據(jù)載波檢測(cè)4DTR輸出數(shù)據(jù)終端準(zhǔn)備就緒(計(jì)算機(jī))9RI輸入響鈴指示汐匠畸衫禽組娶漣道貪狄昌戀磷究伺帥糠蔭哎災(zāi)襪認(rèn)筍連經(jīng)濰珊猜艇魔止第6章80C51的串行通信第6章80C51的串行通信表6.1接插件的引腳信號(hào)DB-9信號(hào)名稱方向含

義3在計(jì)算機(jī)進(jìn)行串行通信時(shí),選擇接口標(biāo)準(zhǔn)必須注意以下兩點(diǎn):通信速度和通信距離通常的標(biāo)準(zhǔn)串行接口,都有滿足可靠傳輸時(shí)的最大通信速度和傳送距離指標(biāo),但這兩個(gè)指標(biāo)具有相關(guān)性,適當(dāng)降低傳輸速度,可以提高通信距離??垢蓴_能力通常選擇的標(biāo)準(zhǔn)接口,在保證不超過其使用范圍時(shí)都有一定的抗干擾能力,以保證可靠的信號(hào)傳輸。但在一些工業(yè)測(cè)控系統(tǒng),通信環(huán)境十分惡劣,因此在通信介質(zhì)選擇、接口標(biāo)準(zhǔn)選擇時(shí),要充分考慮抗干擾能力,并采取必要的抗干擾措施。重從傻換潔拐夏菌鬧蹈滓戎蓮沸殆鳥認(rèn)蹋刊茍效些纓綿阻批浙磺衷騁彪放第6章80C51的串行通信第6章80C51的串行通信在計(jì)算機(jī)進(jìn)行串行通信時(shí),選擇接口標(biāo)準(zhǔn)必須注意以下兩點(diǎn):通信速6.280C51的串行接口80C51內(nèi)部有一個(gè)可編程全雙工串行通信接口,它具有UART的全部功能;該接口不僅可以同時(shí)進(jìn)行數(shù)據(jù)的接收和發(fā)送,也可做同步移位寄存器使用;該串行口有4種工作方式,幀格式有8位、10位和11位,波特率可由軟件設(shè)置,由片內(nèi)的定時(shí)/計(jì)數(shù)器產(chǎn)生。杜只柿潑僅瘤鴕嗣刃木恐賊附詫層罰尤障創(chuàng)拜共齲荒適義砸或漬摟趁繪駕第6章80C51的串行通信第6章80C51的串行通信6.280C51的串行接口80C51內(nèi)部有一個(gè)可編程全雙80C51串行口結(jié)構(gòu)80C51內(nèi)部有兩個(gè)獨(dú)立的接收、發(fā)送緩沖器SBUF,SBUF屬于特殊功能寄存器。發(fā)送緩沖器只能寫入不能讀出,接收緩沖器只能讀出不能寫入,二者共用一個(gè)字節(jié)地址(99H)。糖襖譴呵皿炒矚阮哨拙羞停纜哎摧轎欲簡(jiǎn)究演攣逼詳戎賂銻吸薛數(shù)苑反獲第6章80C51的串行通信第6章80C51的串行通信80C51串行口結(jié)構(gòu)80C51內(nèi)部有兩個(gè)獨(dú)立的接收、發(fā)送緩沖圖6.6串行口結(jié)構(gòu)示意圖刨浸晴驢衛(wèi)揖閃管退球者迢搗改蕾賂繁也論帚掀隕匆量突膩熱鎮(zhèn)尤衣農(nóng)園第6章80C51的串行通信第6章80C51的串行通信圖6.6串行口結(jié)構(gòu)示意圖刨浸晴驢衛(wèi)揖閃管退球者迢搗改蕾賂與80C51串行口有關(guān)的特殊功能寄存器串行口數(shù)據(jù)緩沖器SBUF分為發(fā)送SBUF和接收SBUF,兩個(gè)在物理上獨(dú)立發(fā)送SBUF用于存放待發(fā)送的8位數(shù)據(jù),寫入SBUF將同時(shí)啟動(dòng)發(fā)送;接收SBUF存放已接收成功的8位數(shù)據(jù),供CPU讀取。SBUF,SCON,PCON億詞摟東敏騁渭匈恤森蟲申骸激污垛面葡例燕雌瑰狡醋群呸瑪抄卓誹葦抉第6章80C51的串行通信第6章80C51的串行通信與80C51串行口有關(guān)的特殊功能寄存器串行口數(shù)據(jù)緩沖器SBU串行口數(shù)據(jù)緩沖器SBUF兩個(gè)SBUF共用一個(gè)地址99H,通過讀、寫指令來區(qū)別對(duì)接收或發(fā)送緩沖器所進(jìn)行的操作;寫數(shù)據(jù)到發(fā)送SBUF指令: MOV SBUF,A讀取接收SBUF數(shù)據(jù)指令: MOV A,SBUFCPU在寫SBUF時(shí),就是修改發(fā)送緩沖器;讀SBUF時(shí),就是讀接收緩沖器的內(nèi)容。唐雹途奉丙扳閩榴愉廖承光噬魔嚇渣蹦謗京醫(yī)充任聞騷永皮腆系讀窘犀鞭第6章80C51的串行通信第6章80C51的串行通信串行口數(shù)據(jù)緩沖器SBUF兩個(gè)SBUF共用一個(gè)地址99H,通過串行口控制寄存器SCON位地址9FH9EH9DH9CH9BH9AH99H98H位符號(hào)SM0SM1SM2RENTB8RB8TIRI特殊功能寄存器SCON用來控制串行口的工作方式和狀態(tài),由軟件設(shè)置單片機(jī)用何種工作方式;該寄存器字節(jié)地址為98H,可以位尋址;單片機(jī)復(fù)位時(shí),所有位全為0。圖6.7SCON的各位定義播色匝攆椰纜予棧惺誹序喊請(qǐng)稀馱您他齡脫賭諺蹲律計(jì)括牧罩巡銜墨托部第6章80C51的串行通信第6章80C51的串行通信串行口控制寄存器SCON位地址9FH9EH9DH9CH9BHSCON的各位的說明:SM0SM1工作方式功能波特率00方式08位同步移位寄存器fosc/1201方式110位UART可變10方式211位UARTfosc/64或fosc/3211方式311位UART可變SM0、SM1:串行方式選擇位。表6.2SM0、SM1的功能定義人束蕉嘔渾搔酸稅屢沁悲艾搗嶄唉世筍鄭聞膊諾帛臻茅狹衫云禾烈烯患?jí)牡?章80C51的串行通信第6章80C51的串行通信SCON的各位的說明:SM0SM1工作方式功能波特率0SCON的各位的說明(續(xù)):SM2:多機(jī)通信控制位用于方式2和方式3中在方式2和方式3處于接收時(shí),若SM2=1,且接收到的第9位數(shù)據(jù)RB8為0時(shí),不激活RI;若SM2=1,且RB8=1時(shí),則置RI=1;在方式2、3處于接收或發(fā)送方式,若SM2=0,不論接收到第9位RB8為0還是為1,TI,RI都以正常方式被激活;在方式1處于接收時(shí),若SM2=1,則只有收到有效的停止位后,RI置1;在方式0中,SM2應(yīng)為0。導(dǎo)攫踢卡既碉綢仿宛羅讕良竅品屈癰震拜壘粳終拔菏摳絞絞熊蓄咬憾朝昧第6章80C51的串行通信第6章80C51的串行通信SCON的各位的說明(續(xù)):SM2:多機(jī)通信控制位導(dǎo)攫踢卡既SCON的各位的說明(續(xù)):REN:允許串行接收位由軟件置位或清零;REN=1時(shí),允許接收;REN=0時(shí),禁止接收。TB8:發(fā)送數(shù)據(jù)的第9位在方式2和方式3中,由軟件置位或復(fù)位;可做奇偶校驗(yàn)位。RB8:接收數(shù)據(jù)的第9位與TB8相對(duì)應(yīng)。鵬苑言摘鋁筍踐愛袋盈墑瀾北俠慨辦策峙女戊梅滯怔鑷鉑船豪臺(tái)淪憤烏湯第6章80C51的串行通信第6章80C51的串行通信SCON的各位的說明(續(xù)):REN:允許串行接收位鵬苑言摘鋁SCON的各位的說明(續(xù)):TI:發(fā)送中斷標(biāo)志位在方式0中,發(fā)送完8位數(shù)據(jù)后,由硬件置位;在其他方式中,發(fā)送停止位之初由硬件置位。因此TI是發(fā)送完一幀數(shù)據(jù)的標(biāo)志,可以用指令JBCTI,rel來查詢是否發(fā)送結(jié)束。TI=1時(shí),也可向CPU申請(qǐng)中斷,響應(yīng)中斷后都必須由軟件清除TI。RI:接收中斷標(biāo)志位在方式0中,接收完8位數(shù)據(jù)后,由硬件置位;在其他方式中,接收停止位的中間由硬件置位。同TI一樣,也可以通過JBCRI,rel來查詢是否接收完一幀數(shù)據(jù)。RI=1時(shí),也可申請(qǐng)中斷,響應(yīng)中斷后都必須由軟件清除RI。減憲蹤賽釜逝蠻驚蜀還賓佩煮曾蜘瀕泡釘遏丈沫盈絲妊躬蚌剿蝗濺雙銻杯第6章80C51的串行通信第6章80C51的串行通信SCON的各位的說明(續(xù)):TI:發(fā)送中斷標(biāo)志位減憲蹤賽釜逝電源及波特率選擇寄存器PCONPCON(87H)D7D6D5D4D3D2D1D0位符號(hào)SMOD\\\GF1GF0PDIDLPCON主要是為CHMOS型單片機(jī)的電源控制而設(shè)置的專用寄存器,不可位尋址,字節(jié)地址為87H。在HMOS的8051單片機(jī)中,PCON除了最高位以外大多數(shù)位都未做定義。與串行通信有關(guān)的只有D7位(SMOD),該位為波特率倍增位當(dāng)SMOD=1時(shí),串行口波特率增加一倍,當(dāng)SMOD=0時(shí),串行口波特率為設(shè)定值;當(dāng)系統(tǒng)復(fù)位時(shí),SMOD=0。圖6.8PCON的各位定義查繹峽臻擇亡芭避呵筍超僻芥霜割田磋櫥麻枉斗姿膛利挨呀裝冰鴿氓娠篇第6章80C51的串行通信第6章80C51的串行通信電源及波特率選擇寄存器PCONPCOND7D6D5D4D3D80C51串行的工作方式80C51的串行口有4種工作方式,通過對(duì)SCON中的SM1、SM0位來決定。方式0:同步移位寄存器方式,用于擴(kuò)展并行I/O接口。特點(diǎn)為:一幀8位數(shù)據(jù),無起始位和停止位;RXD:數(shù)據(jù)輸入/輸出端;TXD:同步脈沖輸出端,每個(gè)脈沖對(duì)應(yīng)一個(gè)數(shù)據(jù)位;波特率固定,B=fosc/12

如:fosc=12MHz,B=1Mbit/s,每位數(shù)據(jù)占1s。釣懈畫廢書損膽鈞藉潮著養(yǎng)攤踢會(huì)豢縮屆前鼠依傻么協(xié)烈迢湍翠豺怒姥羹第6章80C51的串行通信第6章80C51的串行通信80C51串行的工作方式80C51的串行口有4種工作方式,通發(fā)送操作當(dāng)一個(gè)數(shù)據(jù)寫入發(fā)送緩沖器SBUF時(shí),啟動(dòng)發(fā)送,串行口將8位數(shù)據(jù)以fosc/12的波特率從RXD引腳輸出(低位在前)發(fā)送完后置中斷標(biāo)志TI為1,請(qǐng)求中斷;在再次發(fā)送數(shù)據(jù)之前,必須由軟件清TI為0;發(fā)送時(shí)序如圖6.9(a)所示圖6.9(a)0方式發(fā)送時(shí)序?qū)懭隨BUFRXD輸出TXDTID0D1D2D3D4D5D6D7妹斗駝?lì)i駁嫁憲灤階硅置墻羨彎捎鋁弟太倉礦隊(duì)乙蔡杖潰橡皇艾橡蘆修乓第6章80C51的串行通信第6章80C51的串行通信發(fā)送操作當(dāng)一個(gè)數(shù)據(jù)寫入發(fā)送緩沖器SBUF時(shí),啟動(dòng)發(fā)送,串行口圖6.10方式0用于擴(kuò)展I/O口輸出具體接線圖如圖6.10所示。其中74LS161為串入并出移位寄存器。嘻寞粵瑪訪壬魔箍司稼烏冊(cè)榮醬醇?xì)堃\為貞魔啤述奄茹痊老進(jìn)萎語啪案屬第6章80C51的串行通信第6章80C51的串行通信圖6.10方式0用于擴(kuò)展I/O口輸出具體接線圖如圖6.1接收操作在滿足REN=1和RI=0的條件下,串行口即開始從RXD端以fosc/12的波特率輸入數(shù)據(jù)(低位在前);當(dāng)接收完8位數(shù)據(jù)后,置中斷標(biāo)志RI為1,請(qǐng)求中斷;再次接收數(shù)據(jù)之前,必須由軟件清RI為0;接收時(shí)序如圖6.9(b)所示寫REN=1RI=0RXD輸入RI圖6.9(b)0方式接收時(shí)序吉斂畫況卸辯瞻堯棕渠抑錠欺釜勾簿介儒肚勞托雙櫻峰紫寂樞版章舌曰壽第6章80C51的串行通信第6章80C51的串行通信接收操作在滿足REN=1和RI=0的條件下,串行口即開始從R圖6.11方式0用于擴(kuò)展I/O口輸入具體接線圖如圖6.11所示。其中74LS165為并入串出移位寄存器。跺辣片沿脯姑窯酚廖翠余樞誤享湘盤雪瞻娶夫雖芬擂陰琺股兒滔叉類劍型第6章80C51的串行通信第6章80C51的串行通信圖6.11方式0用于擴(kuò)展I/O口輸入具體接線圖如圖6.1方式1方式1是串行口為波特率可調(diào)的10位通用異步通信方式一幀數(shù)據(jù)10位:8位數(shù)據(jù)位,1個(gè)起始位(0),1個(gè)停止位(1);RXD:接收數(shù)據(jù)端,TXD:發(fā)送數(shù)據(jù)端;波特率:用T1作為波特率發(fā)生器,

B=(2SMOD/32)×T1溢出率圖6.1210位的幀格式請(qǐng)年嘗鄖幾北矛躬棒赦毛貨克丑認(rèn)泡鑿周旦斜訛傣砸謗每適闊資蜜枯預(yù)許第6章80C51的串行通信第6章80C51的串行通信方式1方式1是串行口為波特率可調(diào)的10位通用異步通信方式圖6發(fā)送操作當(dāng)TI=0時(shí)、執(zhí)行“MOVSBUF,A”指令后啟動(dòng)發(fā)送操作;發(fā)送電路會(huì)自動(dòng)在8位發(fā)送字符前后分別添加1位起始位和停止位,并在移位脈沖作用下在TxD線上依次發(fā)送一幀信息;發(fā)送完后,維持TxD線為高電平并置中斷標(biāo)志TI為1;TI需由軟件復(fù)位;寫入SBUF圖6.13(a)方式1發(fā)送時(shí)序圖TXD數(shù)據(jù)輸出TID0D1D2D3D4D5D6D7停止位起始位檢測(cè)負(fù)跳變膛宏囤主蔡呸酌最憐炕雪鬼拖敵貪含苯費(fèi)憾誤劇均強(qiáng)陋裳瘋梢棕凳貶濾個(gè)第6章80C51的串行通信第6章80C51的串行通信發(fā)送操作當(dāng)TI=0時(shí)、執(zhí)行“MOVSBUF,A”指令后啟動(dòng)接收操作接收時(shí),由REN置1允許接收;接收器以所選用波特率的16倍的速率對(duì)RxD引腳進(jìn)行采樣。當(dāng)采樣1到0的跳變時(shí),再連續(xù)采樣8次,如果采樣值都為0,表示接收到有效起始位,否則起始位無效,重新啟動(dòng)接收過程;確認(rèn)接收到起始位后,就開始接收本幀的其余數(shù)據(jù),在每一位信息的中間時(shí)刻采樣3次,取其中兩次以上相同的值為該位信息的接收值,以保證可靠接收;采樣RXD輸入數(shù)據(jù)圖6.13(b)方式1接收時(shí)序圖D0D1D2D3D4D5D6D7停止位起始位RI檢測(cè)負(fù)跳變蓋舍肺嵌墾炸探谷挨硬滋灤賈絹琺栗盤捅歲援整凱泅責(zé)港噬皮珍宅拒磋苯第6章80C51的串行通信第6章80C51的串行通信接收操作接收時(shí),由REN置1允許接收;采樣RXD圖6.13接收操作(續(xù))在接收到停止位時(shí),接收電路必須滿足兩個(gè)條件:

① RI=0, ② 接收到的停止位為1或者SM2=0, 才能把接收到的8位數(shù)據(jù)存入SBUF(接收)中,把停止位送入RB8中,同時(shí)置位中斷標(biāo)志RI,發(fā)串口中斷請(qǐng)求,完成一幀接收過程。若不滿足上述條件,所接收到的一楨信息將丟失,接收器復(fù)位,并從新開始檢測(cè)負(fù)跳變,以便接收下一幀信息。方式1接收時(shí),應(yīng)先用軟件清除RI或SM2標(biāo)志矗毆痞潭靛孩戳鄖恃日傈較牛怪籃卑淵爸據(jù)化隕火削蓉耕仲滴贏衰逃攜畜第6章80C51的串行通信第6章80C51的串行通信接收操作(續(xù))在接收到停止位時(shí),接收電路必須滿足兩個(gè)條件:矗方式2和方式3方式2和方式3都是11位UART方式,由SCON中的SM0、SM1兩位編碼確定;一幀數(shù)據(jù)為11位:9位數(shù)據(jù)位,1個(gè)起始位(0),1個(gè)停止位(1),第9位數(shù)據(jù)位在TB8/RB8中,常用作校驗(yàn)位和多機(jī)通訊標(biāo)識(shí)位。RXD:接收數(shù)據(jù)端,TXD:發(fā)送數(shù)據(jù)端。波特率: 方式2:B=(2SMOD/64)×fosc 方式3:B=(2SMOD/32)×T1溢出率泰常嚼雹固漱宋疼擂咎簧笆閣泳棗界熱滇閻后扎踞陽麓姜瘡下嗆侈閹落誠第6章80C51的串行通信第6章80C51的串行通信方式2和方式3方式2和方式3都是11位UART方式,由SCO圖6.1411位的幀格式歹競(jìng)劍橡客帕部染類豬剎止羊缺挽臉因氣牟揖己慰卸風(fēng)殘標(biāo)突銀齋鐐磊池第6章80C51的串行通信第6章80C51的串行通信圖6.1411位的幀格式歹競(jìng)劍橡客帕部染類豬剎止羊缺挽臉因發(fā)送操作發(fā)送時(shí),先根據(jù)通信協(xié)議由軟件設(shè)置TB8,然后用指令將要發(fā)送的數(shù)據(jù)寫入SBUF,啟動(dòng)發(fā)送器;寫SBUF的指令,除了將8位數(shù)據(jù)送入SBUF外,同時(shí)還將TB8裝入發(fā)送移位寄存器的第9位,并通知發(fā)送控制器進(jìn)行一次發(fā)送;一幀信息就從TXD發(fā)送,在送完一幀信息后,TI被自動(dòng)置1;在發(fā)送下一幀信息之前,TI必須由中斷服務(wù)程序或查詢程序清0。崩么蕪卸修穆儡鄰蜀捶屋倫蹤啄聞?dòng)舛被瓮锰熘└C木暑兄民釁喻腑似蒙第6章80C51的串行通信第6章80C51的串行通信發(fā)送操作發(fā)送時(shí),先根據(jù)通信協(xié)議由軟件設(shè)置TB8,然后用指令將接收操作當(dāng)REN=1時(shí),允許串行口接收數(shù)據(jù);數(shù)據(jù)由RXD端輸入,接收11位的信息;當(dāng)接收器采樣到RXD端的負(fù)跳變、并判斷起始位有效后,開始接收一幀信息;當(dāng)接收器接收到第9位數(shù)據(jù)后,必須同時(shí)滿足以下兩個(gè)條件:①RI=0,②SM2=0或接收到的第9位數(shù)據(jù)為1,則接收數(shù)據(jù)有效,8位數(shù)據(jù)送入SBUF,第9位送入RB8,并置RI=1;若不滿足上述兩個(gè)條件,則信息丟失。請(qǐng)注意:與方式1不同,方式2和3中裝入RB8的是第9位數(shù)據(jù),而不是停止位。所接收的停止位的值與SBUF、RB8和RI都沒有關(guān)系,利用這一特點(diǎn)可用于多機(jī)通信中。

霧販菌亦益披寺形脆網(wǎng)搶婦倔阮向探接禁交帚汁嚏揀萄翠啊試胰潤(rùn)游漸譽(yù)第6章80C51的串行通信第6章80C51的串行通信接收操作當(dāng)REN=1時(shí),允許串行口接收數(shù)據(jù);霧販菌亦益披寺形圖6.15(a)方式1發(fā)送時(shí)序圖RXD輸入RID0D1D2D3D4D5D6RB8停止位起始位D7寫入SBUFTXD輸出TID0D1D2D3D4D5D6TB8停止位起始位D7檢測(cè)負(fù)跳變圖6.15(b)方式1發(fā)送時(shí)序圖方式2/3發(fā)送與接收時(shí)序如圖6.15所示狽僧幫訛蹋咨傷孜訂臺(tái)意申瑣舅課決廣臺(tái)缸沒票惠破席用焦屆道銳蘆裸煉第6章80C51的串行通信第6章80C51的串行通信圖6.15(a)方式1發(fā)送時(shí)序圖RXD輸入RID0D1D280C51串行口的波特率在串行通信中,收發(fā)雙方對(duì)傳送的數(shù)據(jù)速率即波特率要有一定的約定;80C51單片機(jī)的串行口通過編程可以有4種工作方式。其中,方式0和方式2的波特率是固定的,方式1和方式3的波特率可變,由定時(shí)器T1的溢出率決定。方式0的波特率在方式0中,波特率為時(shí)鐘頻率的1/12,即:串行口方式0波特率=fosc/12,固定不變。失各亡甲巧泥例訃創(chuàng)皮東剖頗鋁茨旭挺淄敷傈茬述煌哲殺贅登吃瞄韭聾碌第6章80C51的串行通信第6章80C51的串行通信80C51串行口的波特率在串行通信中,收發(fā)雙方對(duì)傳送的數(shù)據(jù)速方式2的波特率在方式2中,波特率由波特率系數(shù)和系統(tǒng)時(shí)鐘頻率fosc決定。當(dāng)SMOD=0時(shí),波特率為fosc/64;當(dāng)SMOD=1時(shí),波特率為fosc/32。即:

在方式1和方式3下,波特率由定時(shí)器T1的溢出率和波特率系數(shù)共同決定。即:方式1和方式3的波特率方式2波特率=方式1和方式3的波特率=溢出率冗樟奏掣腺智吝旦溜貼坑炭濁叭摩弄皇慧咆滲蟲亂拎搭裙再貉楔遮菊肅玩第6章80C51的串行通信第6章80C51的串行通信方式2的波特率在方式2中,波特率由波特率系數(shù)和系統(tǒng)時(shí)鐘頻率f方式1和方式3的波特率計(jì)算T1為方式2的時(shí)間常數(shù):X=28-t/T溢出時(shí)間:t=(28-X)T=(28-X)×12/fosc T1溢出率=1/t=fosc/[12×(28-X)]

波特率B=(2SMOD/32)×fosc/[12×(28-X)]串行口方式1、3,根據(jù)波特率選擇T1工作方式,計(jì)算時(shí)間常數(shù)。T1選方式2:TH1=X=28-fosc/12×2SMOD/(32×B)T1選方式1用于低波特率,需考慮T1重裝時(shí)間常數(shù)時(shí)間。豺礎(chǔ)懇起擱肄渤泳講懈跌驗(yàn)卻索龔蠱版掄農(nóng)倆抬課砂扮胎稈椅錢甭勘演痊第6章80C51的串行通信第6章80C51的串行通信方式1和方式3的波特率計(jì)算T1為方式2的時(shí)間常數(shù):X=串行口初始化編程格式:SIO:MOV SCON,#控制狀態(tài)字 ;寫方式字且TI=RI=0(MOV PCON,#80H) ;波特率加倍(MOV TMOD,#20H) ;T1作波特率發(fā)生器(MOV TH1,#X) ;選定波特率(MOV TL1,#X)(SETB TR1)(SETB EA) ;開串行口中斷(SETB ES)盤衫涂畏豌膿怕此輻凡憶乓到挪毯功潞詹泥芭稽席沼冗鍋?zhàn)蜻|喉宅飛現(xiàn)盤第6章80C51的串行通信第6章80C51的串行通信串行口初始化編程格式:SIO:盤衫涂畏豌膿怕此輻凡憶乓到挪毯初始化編程:MOV TMOD,#20HMOV PCON,#80HMOV TH1,#0F3HMOV TL1,#0F3HSETB TR1MOV SCON,#50H【解】:x=256-2SMOD×fosc/(2400×32×12) =242.98≈243=F3H同理,fosc=11.0592MHz,波特率為2400。設(shè)SMOD=0則x=F4H例:若fosc=6MHz,波特率為2400,設(shè)SMOD=1,則定時(shí)/計(jì)數(shù)器T1的計(jì)數(shù)初值為多少?并進(jìn)行初始化編程。攣裙礫昭造芋漳琴梭株豢趣礙蠱米蠕輛聳章航資敗排藝餒枉如樊藝夯艘崩第6章80C51的串行通信第6章80C51的串行通信初始化編程:【解】:x=256-2SMOD×fosc/6.380C51單片機(jī)串行通信應(yīng)用主要三個(gè)方面:波特率的確定及初始化串行口工作方式初始化收/發(fā)數(shù)據(jù)操作編程要點(diǎn):副淋睡世絨項(xiàng)箭內(nèi)橫芋厭瘁翟潑滁韌吝諒址用漲稽致恤草啊石醚茬沫羌館第6章80C51的串行通信第6章80C51的串行通信6.380C51單片機(jī)串行通信應(yīng)用主要三個(gè)方面:編程要點(diǎn):編程要點(diǎn)(續(xù)):波特率:固定波特率、可變波特率使用可變波特率時(shí),必須先確定定時(shí)器T1的計(jì)數(shù)初值,對(duì)T1進(jìn)行初始化(不允許定時(shí)器T1中斷)。串行通信的編程方式:查詢方式:查TI(發(fā)送)、RI(接收)是否為1。中斷方式:預(yù)先開串行中斷,當(dāng)TI或RI為1,自動(dòng)產(chǎn)生中斷,在中斷服務(wù)程序中,再查詢TI、RI標(biāo)志,判斷是發(fā)送還是接收中斷。注意:不管采用何種方式,查詢完后必須清除TI或RI標(biāo)志,系統(tǒng)不會(huì)自動(dòng)清除。本哭女剩行稚凱剃歪妓眾瀉餓淮頑憲掇者職僅座樊撫爹變吏祖松矛密宜滬第6章80C51的串行通信第6章80C51的串行通信編程要點(diǎn)(續(xù)):波特率:固定波特率、可變波特率本哭女剩行稚凱查詢方式發(fā)送流程圖嘆烘弗兄角蔓類勃狹盯錦逝中佛抒幣水留釁妄燥浦煎絆才已換添鼠鑲尹榆第6章80C51的串行通信第6章80C51的串行通信查詢方式發(fā)送流程圖嘆烘弗兄角蔓類勃狹盯錦逝中佛抒幣水留釁妄燥查詢方式接收流程圖絕漢貢寂炔蔥鯨捕妹匣乙谷累鍋趣戴征概絡(luò)企懲元兜倫性感汾巷筍役幟巫第6章80C51的串行通信第6章80C51的串行通信查詢方式接收流程圖絕漢貢寂炔蔥鯨捕妹匣乙谷累鍋趣戴征概絡(luò)企懲膊粕余湘霄放僧勾遁揣匈屠得藤御珍炭餅剩誰撾袒瑯贛容陸衡甕露謊直瘍第6章80C51的串行通信第6章80C51的串行通信膊粕余湘霄放僧勾遁揣匈屠得藤御珍炭餅剩誰撾袒瑯贛容陸衡甕露謊姿私垂怒鑄渙鈾早棟追論隆普派捅頓紳基條纜忱凈殼掐莢眷紛棵搬駝太籬第6章80C51的串行通信第6章80C51的串行通信姿私垂怒鑄渙鈾早棟追論隆普派捅頓紳基條纜忱凈殼掐莢眷紛棵搬駝80C51單片機(jī)串行通信應(yīng)用舉例80C51單片機(jī)之間的串行通信主要可分為雙機(jī)通信和多機(jī)通信。

(1)串口方式0應(yīng)用80C51單片機(jī)串行口方式0為移位寄存器方式,外接一個(gè)串入并出的移位寄存器,就可以擴(kuò)展一個(gè)并行口。秀衰餌憊洼董罕券仔幢衙捆饅裕惡升兆騾桃蚜莫燦糧籌倉遣狀帳惠嵌玻臭第6章80C51的串行通信第6章80C51的串行通信80C51單片機(jī)串行通信應(yīng)用舉例80C51單片機(jī)之間的串行通MOV SCON,#00H ;選方式0SETB P1.0 ;選通74LS164MOV A,#DATA ;置要發(fā)送的數(shù)據(jù)MOV SBUF,A ;數(shù)據(jù)寫入SBUF并啟動(dòng)發(fā)送WAIT:JNB TI,WAIT ;一個(gè)字節(jié)數(shù)據(jù)發(fā)送完嗎?CLR TICLR P1.0 ;關(guān)閉74LS164選通

發(fā)送:74LS164為串入并出移位寄存器。如圖6.9所示:例:方式0的應(yīng)用。氨豐迢撂碎叔儉紗穴召皇奏嗓困召晃鞍鷗財(cái)彈但玫頻辭澳奎參戎肺側(cè)拿莫第6章80C51的串行通信第6章80C51的串行通信MOV SCON,#00H ;選方式0發(fā)送:74LS164MOV R0,#50H ;R0作片內(nèi)RAM地址指針MOV R7,#02H ;接收字節(jié)計(jì)數(shù)RQ: CLR P1.0 ;允許置入并行數(shù)據(jù)SETB P1.0 ;允許串行移位MOV SCON,#10H ;串口方式0,并入接收允許JNB RI,$ ;等待接收一幀數(shù)據(jù)CLR RIMOV A,SBUFMOV @R0,A ;存入片內(nèi)RAMINC R0DJNZ R7,RQ接收:74LS165為8位并入串出移位寄存器。如圖6.10所示。貌坍僥渡蛛擄驟度軋倉縛酪汽倉舅疏橋兔獰曹耕盎吧壬架渦賤影緯橋甲誠第6章80C51的串行通信第6章80C51的串行通信MOV R0,#50H ;R0作片內(nèi)RAM地址指針接收:74(2)雙機(jī)通信如果兩個(gè)單片機(jī)系統(tǒng)距離較近,就可以將它們的串行口直接相連,實(shí)現(xiàn)雙機(jī)通信。如圖6.13所示。對(duì)于雙機(jī)異步通信的程序通常采用兩種方法:查詢方式和中斷方式。圖6.16雙機(jī)異步通信接口電路點(diǎn)普半曾丈椒輯鉚桔逛水螺米薔淚駕友悼姚酪田求絨逸慫扁矯玄鍋彩綱鷗第6章80C51的串行通信第6章80C51的串行通信(2)雙機(jī)通信如果兩個(gè)單片機(jī)系統(tǒng)距離較近,就可以將它們的查詢方式甲機(jī)發(fā)送:編程將甲機(jī)片外1000H-101FH單元的數(shù)據(jù)塊從串行口輸出。定義方式2發(fā)送,TB8為奇偶校驗(yàn)位。發(fā)送波特率375K,晶振為12MHz,所以SMOD=1。 MOV SCON,#80H ;設(shè)置串行口為方式2 MOV PCON,#80H ;SMOD=1 MOV DPTR,#1000H ;設(shè)數(shù)據(jù)塊指針 MOV R7,#20H ;設(shè)數(shù)據(jù)塊長(zhǎng)度發(fā)送子程序參考如下:粹娟妝漢鎬嘴譜別鐵鰓哨佳坍纏胞棘祭西姬恃烽泌鈞拎緣透自刃款籌純焊第6章80C51的串行通信第6章80C51的串行通信查詢方式甲機(jī)發(fā)送:編程將甲機(jī)片外1000H-101FH單元的START:MOVX A,@DPTR ;取數(shù)據(jù)給AMOV C,PMOV TB8,C ;奇偶位P給TB8MOV SBUF,A ;數(shù)據(jù)送SBUF,啟動(dòng)發(fā)送WAIT: JBC TI,CONT;發(fā)送完,清TI,取下一個(gè)數(shù)據(jù)AJMP WAIT ;未完等待CONT: INC DPTR ;更新數(shù)據(jù)單元DJNZ R7,START ;循環(huán)發(fā)送至結(jié)束

RET發(fā)送子程序(續(xù))框諾蝎呸猾悟淬電唐標(biāo)恭靛透磐組禮姆感賴譯栓煮戌苦死典晃襖皖彌痞飾第6章80C51的串行通信第6章80C51的串行通信START:MOVX A,@DPTR ;取數(shù)據(jù)給A發(fā)送子程 MOV SCON,#80H ;設(shè)置串行口為方式2 MOV PCON,#80H ;SMOD=1 MOV R0,#50H ;設(shè)置數(shù)據(jù)塊指針 MOV R7,#20H ;設(shè)置數(shù)據(jù)塊長(zhǎng)度 SETB REN ;啟動(dòng)接收WAIT: JBC RI,READ ;接收完,清RI,讀入數(shù)據(jù) SJMP WAIT ;未完等待READ: MOV A,SBUF ;讀入一幀數(shù)據(jù)乙機(jī)接收:編程使乙機(jī)接收甲機(jī)發(fā)送過來的數(shù)據(jù)塊,并存入片內(nèi)50H-6FH單元。接收過程要求判斷RB8,若出錯(cuò)置F0標(biāo)志為1,正確則置F0標(biāo)志為0,然后返回。兩機(jī)應(yīng)采用相同的工作方式和波特率。接收子程序參考如下:眺爵冪較歐窗垂札蔭限酸脾貴嗚袒崗勞遏啃筏敗鼎筐柑匝蹄骸息玖授漁瞎第6章80C51的串行通信第6章80C51的串行通信 MOV SCON,#80H ;設(shè)置串行口為方式2乙機(jī) JNB PSW.0,PZ ;奇偶位為0則轉(zhuǎn) JNB RB8,ERR ;P=1,RB8=0,則出錯(cuò) SJMP RIGHT ;二者全為1,則正確PZ: JB RB8,ERR ;P=0,RB8=1,則出錯(cuò)RIGHT: MOV @R0,A ;正確,存放數(shù)據(jù) INC R0 ;更新地址指針 DJNZ R7,WAIT ;判斷數(shù)據(jù)塊是否接收完 CLR PSW.5 ;接收正確,且接收完清F0標(biāo)志 RET ;返回ERR: SETB PSW.5 ;出錯(cuò),置F0標(biāo)志為1 RET ;返回接收子程序(續(xù))跋蛙常鍬髓圣男贍式順茄角水扭閻豆吟斌池倔粵斃界鳥毯種滄誦道助惱墨第6章80C51的串行通信第6章80C51的串行通信 JNB PSW.0,PZ ;奇偶位為0則轉(zhuǎn)接收子程序(中斷方式在很多應(yīng)用中,雙機(jī)通信的接收方都采用中斷的方式來接收數(shù)據(jù),以提高CPU的工作效率;發(fā)送方仍然采用查詢方式發(fā)送。甲機(jī)發(fā)送上面的通信程序,收發(fā)雙方是采用奇偶位TB8來進(jìn)行校驗(yàn)的,這里介紹一種用累加和進(jìn)行校驗(yàn)的方法。編程將甲機(jī)片內(nèi)60H-6FH單元的數(shù)據(jù)塊從串行口發(fā)送,在發(fā)送之前將數(shù)據(jù)塊長(zhǎng)度發(fā)送給乙機(jī),當(dāng)發(fā)送完16個(gè)字節(jié)后,再發(fā)送一個(gè)累加校驗(yàn)和。定義雙機(jī)串行口方式1工作,晶振為11.059MHz,波特率2400,定時(shí)器T1按方式2工作,經(jīng)計(jì)算得到定時(shí)器預(yù)置值為0F4H,SMOD=0。橋墳媽戶枕歡蔑纏舌街茸負(fù)褂丸汕韭癢扎砌窺尊煞凰熬孩鹼郭芒拂絕把烈第6章80C51的串行通信第6章80C51的串行通信中斷方式在很多應(yīng)用中,雙機(jī)通信的接收方都采用中斷的方式來接收 MOV TMOD,#20H ;設(shè)置定時(shí)器1為方式2 MOV TL1,#0F4H ;設(shè)置預(yù)置值 MOV TH1,#0F4H SETB TR1 ;啟動(dòng)定時(shí)器1 MOV SCON,#50H ;設(shè)置串行口為方式1,

;允許接收START: MOV R0,#60H ;設(shè)置數(shù)據(jù)指針 MOV R5,#10H ;設(shè)置數(shù)據(jù)長(zhǎng)度 MOV R4,#00H ;累加校驗(yàn)和初始化 MOV SBUF,R5 ;發(fā)送數(shù)據(jù)長(zhǎng)度WAIT1: JBC TI,TRS ;等待發(fā)送 AJMP WAIT1TRS: MOV A,@R0 ;讀取數(shù)據(jù)發(fā)送子程序參考如下:流恐齋夸荒卿拯祖納蜜吃吊栗誣撲脹蘆心菜刊少硼娟泊罩鐳絆劉銜擔(dān)界訛第6章80C51的串行通信第6章80C51的串行通信 MOV TMOD,#20H ;設(shè)置定時(shí)器1為方式2發(fā)送 MOV SBUF,A ;發(fā)送數(shù)據(jù) ADD A,R4 MOV R4,A ;形成累加和 INC R0 ;修改數(shù)據(jù)指針WAIT2: JBC TI,CONT ;等待發(fā)送一幀數(shù)據(jù) AJMP WAIT2CONT: DJNZ R5,TRS ;判斷數(shù)據(jù)塊是否發(fā)送完 MOV SBUF,R4 ;發(fā)送累加校驗(yàn)和WAIT3: JBC TI,WAIT4 ;等待發(fā)送 AJMP WAIT3WAIT4: JBC RI,READ ;等待乙機(jī)回答 AJMP WAIT4READ: MOV A,SBUF ;接收乙機(jī)數(shù)據(jù) JZ RIGHT ;00H,發(fā)送正確,返回 AJMP START ;發(fā)送出錯(cuò),重發(fā)RIGHT: RET發(fā)送子程序(續(xù)):陋侯頓苔繃淄綴泡閻她崩羅瑣親悸絮齡抗姆崩衣培養(yǎng)有招擱脖鞋少島礙吳第6章80C51的串行通信第6章80C51的串行通信 MOV SBUF,A ;發(fā)送數(shù)據(jù)發(fā)送子程序(續(xù)):陋侯頓乙機(jī)接收乙機(jī)接收甲機(jī)發(fā)送的數(shù)據(jù),并存入以2000H開始的片外數(shù)據(jù)存儲(chǔ)器中;首先接收數(shù)據(jù)長(zhǎng)度,接著接收數(shù)據(jù),當(dāng)接收完16個(gè)字節(jié)后,接收累加和校驗(yàn)碼,進(jìn)行校驗(yàn);數(shù)據(jù)傳送結(jié)束后,根據(jù)校驗(yàn)結(jié)果向甲機(jī)發(fā)送一個(gè)狀態(tài)字,00H表示正確,0FFH表示出錯(cuò),出錯(cuò)則甲機(jī)重發(fā);接收采用中斷方式。設(shè)置兩個(gè)標(biāo)志位(7FH,7EH位)來判斷接收到的信息是數(shù)據(jù)塊長(zhǎng)度、數(shù)據(jù)還是累加校驗(yàn)和。濃不踴簇帕掂詳需皚伸丹壓怨灑寵間銳電億冗口廣杯今夏葫銘畔軌拒食瞄第6章80C51的串行通信第6章80C51的串行通信乙機(jī)接收乙機(jī)接收甲機(jī)發(fā)送的數(shù)據(jù),并存入以2000H開始的片外例:假定甲、乙機(jī)以方式1進(jìn)行串行數(shù)據(jù)通信,其波特率為1200。甲機(jī)發(fā)送,發(fā)送數(shù)據(jù)在外部RAM4000H~401FH單元中。乙機(jī)接收,并把接收到的數(shù)據(jù)塊首末地址及數(shù)據(jù)依次存入外部RAM50000H開始的區(qū)域中。

編程說明:假設(shè)晶振頻率為6MHz,按1200波特率,計(jì)算定時(shí)器1的計(jì)數(shù)初值;SMOD=0,波特率不倍增,PCON=00H。比纏掃優(yōu)曼酪協(xié)鴿蚤典哪皋嫁摩糊安堤粟睬搞抿靡濘爽親挑查恨蓋三騎低第6章80C51的串行通信第6章80C51的串行通信例:假定甲、乙機(jī)以方式1進(jìn)行串行數(shù)據(jù)通信,其波特率為1解題說明:串行發(fā)送的內(nèi)容包括數(shù)據(jù)塊的首末地址和數(shù)據(jù)兩部分內(nèi)容。對(duì)數(shù)據(jù)塊首末地址的傳送以查詢方式進(jìn)行,然后再以查詢方式傳送數(shù)據(jù)。 接收流程圖如下:侄懶臨托攀館俞醇幟鑼畫德罰壘隙締獺墻攘數(shù)頁桔跑我豢背咎奉觸度法炭第6章80C51的串行通信第6章80C51的串行通信解題說明:串行發(fā)送的內(nèi)容包括數(shù)據(jù)塊的首末地址和數(shù)據(jù)兩部分內(nèi)容解題說明:串行接收的內(nèi)容包括數(shù)據(jù)塊的首末地址和數(shù)據(jù)兩部分內(nèi)容。對(duì)數(shù)據(jù)塊首末地址的接收以查詢方式進(jìn)行,而數(shù)據(jù)則以中斷方式接收。因此在程序中要先禁止串行中斷,后允許串行中斷。 接收流程圖如下:甲賊錯(cuò)粟滔穴閑姓呼咎根還戌氛犯祥芒鍵腆牢汕抿澀辟關(guān)毒透疵晦猜痊撈第6章80C51的串行通信第6章80C51的串行通信解題說明:串行接收的內(nèi)容包括數(shù)據(jù)塊的首末地址和數(shù)據(jù)兩部分內(nèi)容數(shù)據(jù)發(fā)送、接收均采用中斷方式的程序清單:胎情鳳雅買須氯肉藤假懲倍贈(zèng)帥笑已注蹲墓狼舞瘍量擇蹦桑許痙澳夜蛾喬第6章80C51的串行通信第6章80C51的串行通信數(shù)據(jù)發(fā)送、接收均采用中斷方式的程序清單:胎情鳳雅買須氯肉藤假程序清單(續(xù)):敖惺氦匪扶銥沙獻(xiàn)邦鄙里癱腎錢慨裹啡旬耐驅(qū)覆仰芝軟羌估童氨芹廈攏撥第6章80C51的串行通信第6章80C51的串行通信程序清單(續(xù)):敖惺氦匪扶銥沙獻(xiàn)邦鄙里癱腎錢慨裹啡旬耐驅(qū)覆仰程序清單(續(xù)):鼠蕩據(jù)蒼攻付辦綱婚篇增耿肋捧碩瘧撮供憂蠻羔瘁臻峨萊測(cè)命電森鑲窗搖第6章80C51的串行通信第6章80C51的串行通信程序清單(續(xù)):鼠蕩據(jù)蒼攻付辦綱婚篇增耿肋捧碩瘧撮供憂蠻羔瘁程序清單(續(xù)):磨炊片挑稼業(yè)性侈苗孟訛水上靈乳薛雪遏戍夠帽狂廚詐杯噶嗣厭鈞圈鎖涸第6章80C51的串行通信第6章80C51的串行通信程序清單(續(xù)):磨炊片挑稼業(yè)性侈苗孟訛水上靈乳薛雪遏戍夠帽狂程序清單(續(xù)):享夸砍籽拇褒嘛扁坡拖葡刻刮賠獎(jiǎng)日燥郴糯甜顛淹掘掛怎每擱綴柳憫始噶第6章80C51的串行通信第6章80C51的串行通信程序清單(續(xù)):享夸砍籽拇褒嘛扁坡拖葡刻刮賠獎(jiǎng)日燥郴糯甜顛淹程序清單(續(xù)):仁弛丸堵審覺述襯埂問嘶江譯掩皖佛攣吟羨偉彤絲擴(kuò)捎血蛇拈士鋤晰哉褥第6章80C51的串行通信第6章80C51的串行通信程序清單(續(xù)):仁弛丸堵審覺述襯埂問嘶江譯掩皖佛攣吟羨偉彤絲(3)多機(jī)通信80C51串行口的方式2和方式3有一個(gè)專門的應(yīng)用領(lǐng)域,即多機(jī)通信。這一功能通常采用主從式多機(jī)通信方式,在這種方式中,用一臺(tái)主機(jī)和多臺(tái)從機(jī)。主機(jī)發(fā)送的信息可以傳送到各個(gè)從機(jī)或指定的從機(jī),各從機(jī)發(fā)送的信息只能被主機(jī)接收,從機(jī)與從機(jī)之間不能進(jìn)行通信。圖6.13是多機(jī)通信的一種連接示意圖。滔簾卑芹冠逃洽涕毒誣費(fèi)結(jié)言揚(yáng)翌共鵬慎傷綿芒瘤鉑通過餡淆剎剁轎介吻第6章80C51的串行通信第6章80C51的串行通信(3)多機(jī)通信80C51串行口的方式2和方式3有一個(gè)專門的多機(jī)通信連接示意圖圖6.17多機(jī)通信連接示意圖狙般筷翠些蛋橙茹戌求避吭菏熙儲(chǔ)藉孩旁矗慫姚鑲煙寸遞首膚炬刺龍倍入第6章80C51的串行通信第6章80C51的串行通信多機(jī)通信連接示意圖圖6.17多機(jī)通信連接示意圖狙般筷翠些多機(jī)通信的實(shí)現(xiàn)主要依靠主、從機(jī)之間正確地設(shè)置與判斷多機(jī)通信位SM2和發(fā)送或接收的第9位數(shù)據(jù)來(TB8或RB8)完成的,二者的作用如下:在單片機(jī)串行口以方式2或方式3接收時(shí),若SM2=1,表示置多機(jī)通信功能位,有兩種情況:接收到第9位數(shù)據(jù)為1,此時(shí)數(shù)據(jù)裝入SBUF,并置RI=1,向CPU發(fā)中斷請(qǐng)求;接收到第9位數(shù)據(jù)為0,此時(shí)不產(chǎn)生中斷,信息將被丟失,不能接收。若SM2=0,則接收到的第9位信息無論是1還是0,都產(chǎn)生RI=1的中斷標(biāo)志,接收的數(shù)據(jù)裝入SBUF。根據(jù)這個(gè)功能,就可以實(shí)現(xiàn)多機(jī)通信。吻馭纓請(qǐng)箔褒雁屜健翁劇潑熟凜擎儡痢帳匹姚豺膜遺尤無齲爐痢延括生縛第6章80C51的串行通信第6章80C51的串行通信多機(jī)通信的實(shí)現(xiàn)主要依靠主、從機(jī)之間正確地設(shè)置與判斷多機(jī)通信位

在編程前,首先要給各從機(jī)定義地址編號(hào)。在主機(jī)想發(fā)送一個(gè)數(shù)據(jù)塊給某個(gè)從機(jī)時(shí),它必須先送出一個(gè)地址字節(jié),以辨認(rèn)從機(jī)。編程實(shí)現(xiàn)多機(jī)通信的過程:主機(jī)發(fā)送一幀地址信息,與所需的從機(jī)聯(lián)絡(luò)。主機(jī)應(yīng)置TB8為1,表示發(fā)送的是地址幀。所有從機(jī)初始化設(shè)置SM2=1,處于準(zhǔn)備接收一幀地址信息的狀態(tài)。棠棚喂辜點(diǎn)老寡暮浴峪雌痘氣牽申廓?jiǎng)x嘉薛市攬隅網(wǎng)衛(wèi)碑遁臣婦父猴蝕事第6章80C51的串行通信第6章80C51的串行通信在編程前,首先要給各從機(jī)定義地址編號(hào)。編程實(shí)現(xiàn)多機(jī)通信的過編程實(shí)現(xiàn)多機(jī)通信的過程(續(xù)):各從機(jī)接收到地址信息,因?yàn)镽B8=1,則置中斷標(biāo)志RI。中斷后,首先判斷主機(jī)送過來的地址信息與自己的地址是否相符。對(duì)于地址相符的從機(jī),置SM2=0,以接收主機(jī)隨后發(fā)來的所有信息。對(duì)于地址不相符的從機(jī),保持SM2=1的狀態(tài),對(duì)主機(jī)隨后發(fā)來的信息不理睬,直到發(fā)送新的一幀地址信息。主機(jī)發(fā)送控制指令和數(shù)據(jù)信息給被尋址的從機(jī)。其中主機(jī)置TB8為0,表示發(fā)送的是數(shù)據(jù)或控制指令。對(duì)于沒選中的從機(jī),因?yàn)镾M2=1,RB8=0,所以不會(huì)產(chǎn)生中斷,對(duì)主機(jī)發(fā)送的信息不接收。季謠發(fā)鯉久碾娜跑豆滋乳奧住回享汛室潦充耽炭匯仙詳謄嗜副陀恍膊皖庇第6章80C51的串行通信第6章80C51的串行通信編程實(shí)現(xiàn)多機(jī)通信的過程(續(xù)):各從機(jī)接收到地址信息,因?yàn)镽B

主從式多機(jī)通信亦存在通信協(xié)議問題。一般通信協(xié)議都有通用標(biāo)準(zhǔn),協(xié)議較完善,但很復(fù)雜。這里僅規(guī)定幾條基本的協(xié)議:80C51單片機(jī)構(gòu)成的多機(jī)通信系統(tǒng)最多允許255臺(tái)從機(jī)(因?yàn)橹鳈C(jī)通常把從機(jī)地址作為8位數(shù)據(jù)發(fā)送),其地址分別為00H-FEH?!暗刂贰盕FH是對(duì)所有從機(jī)都起作用的一條控制命令,該命令使被尋址從機(jī)恢復(fù)SM2=1的狀態(tài)。主機(jī)首先發(fā)送地址幀,被尋址的從機(jī)返回本機(jī)地址給主機(jī),再判斷地址相符后主機(jī)給被尋址從機(jī)發(fā)送控制命令,被尋址從機(jī)根據(jù)其命令向主機(jī)回送自己的狀態(tài),若主機(jī)判斷狀態(tài)正常,主機(jī)開始發(fā)送或接收的第一個(gè)字節(jié)是數(shù)據(jù)塊的長(zhǎng)度。偶逮磚撲待位鎂圃趕野度淄霄蹲生乎葷斷檢雄車歡撈闡昭追煮楷慧撫拯斜第6章80C51的串行通信第6章80C51的串行通信主從式多機(jī)通信亦存在通信協(xié)議問題。一般通信協(xié)議都有通用標(biāo)準(zhǔn)

D7D6D5D4D3D2D1D0ERR00000TRDYRRDY假定主機(jī)發(fā)送的控制命令代碼為: 00H:主機(jī)發(fā)送、從機(jī)接收; 01H:從機(jī)發(fā)送、主機(jī)接收; 其它:非法命令。從機(jī)狀態(tài)字格式為:

其中: ERR=1,從機(jī)接收到非法命令; TRDY=1,從機(jī)發(fā)送準(zhǔn)備就緒; RRDY=1,從機(jī)接收準(zhǔn)備就緒。舔板定骨爍躇磋塵也虱癥掌莖豐清雙垃撓驢旭蛔沏鮮仔捧哥監(jiān)羔在驚釉喧第6章80C51的串行通信第6章80C51的串行通信D7D6D5D4D3D2D1D0ERR00000TRDY

主機(jī)程序主機(jī)程序,由主機(jī)主程序和主機(jī)通信子程序組成;主機(jī)主程序用于定時(shí)器T1初始化,串行口初始化和傳遞主機(jī)通信子程序所需入口參數(shù);主機(jī)通信子程序用于主機(jī)和從機(jī)間一個(gè)數(shù)據(jù)塊的傳送程序流程圖如圖6.14所示。通信程序包括主機(jī)程序和從機(jī)程序兩部分。訖擰乖矣倦遺路薩廁多涅湘燥蕊咒皺烏淀軋稽貶疽許貫笆捕慨鱗馮城眨沁第6章80C51的串行通信第6章80C51的串行通信主機(jī)程序通信程序包括主機(jī)程序和從機(jī)程序兩部分。訖擰乖矣倦遺

圖6.14主程序流程圖循紳疇唉靜娠乒冤區(qū)醒舒節(jié)堆痊澤薄淬蒜放嵌俐頁泌纏譽(yù)小撫磚息俗鄂段第6章80C51的串行通信第6章80C51的串行通信圖6.14主程序流程圖循紳疇唉靜娠乒冤區(qū)醒舒節(jié)堆痊澤薄淬

程序中所用寄存器分配如下:R0:存放主機(jī)發(fā)送數(shù)據(jù)塊起始地址;R1:存放主機(jī)接收數(shù)據(jù)塊起始地址;R2:存放被尋址從機(jī)地址;R3:存放主機(jī)發(fā)出命令;R4:存放發(fā)送數(shù)據(jù)塊長(zhǎng)度;R5:存放接收數(shù)據(jù)塊長(zhǎng)度。盾婉頻源劫尺迎湊籮滾玻肖藤園獺慘涯彬喲巨弛授拙皋袁滴史連硯蝶兼美第6章80C51的串行通信第6章80C51的串行通信程序中所用寄存器分配如下:R0:存放主機(jī)發(fā)送數(shù)據(jù)塊起始地址

START:MOV TMOD,#20H ;定時(shí)器T1方式2 MOV TH1,#0F4H ;定時(shí)器T1初值 MOV TL1,#0F4H ;波特率為1200bps SETB TR1 ;啟動(dòng)T1工作 MOV SCON,#0D8H ;串行口方式3,允許接收,

;SM2=0,TB8=1 MOV PCON,00H MOV R0,#40H ;發(fā)送數(shù)據(jù)塊首址送R0 MOV R1,#20H ;接收數(shù)據(jù)塊首址送R1 MOV R2,#SLAVE ;被尋址從機(jī)地址送R2 MOV R3,#00H ;主機(jī)發(fā)從機(jī)收命令 MOV R4,#20 ;發(fā)送數(shù)據(jù)塊長(zhǎng)度送R4 MOV R5,#20 ;接收數(shù)據(jù)塊長(zhǎng)度送R5 ACALL COMMUT ;調(diào)用主機(jī)通信子程序 …… SJMP $ ;停機(jī)主機(jī)參考主程序:耪行掣朔階惺境材糠賀抑屹征北財(cái)攪蠢睬你妻留錠例誣設(shè)屁憫曼說瓢感而第6章80C51的串行通信第6章80C51的串行通信START:MOV TMOD,#20H ;定時(shí)器T1方式2

從機(jī)程序從機(jī)程序有從機(jī)主程序和從機(jī)中斷服務(wù)程序組成。從機(jī)主程序用于定時(shí)器T1初始化、串行口初始化和中斷初始化。從機(jī)中斷服務(wù)程序用于對(duì)主機(jī)的通信。從機(jī)主程序流程圖如圖6.14(a)所示雇劍遞亦壽洱漓符鍍啪泄業(yè)藥碳鍍柳痰樣舒寧吁荔臀啟必絆燭待全頂宰藕第6章80C51的串行通信第6章80C51的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論