日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

您好,歡迎來(lái)電子發(fā)燒友網(wǎng)! ,新用戶(hù)?[免費(fèi)注冊(cè)]

當(dāng)前位置:電子發(fā)燒友網(wǎng) > 圖書(shū)頻道 > 電子 > 《單片機(jī)原理與應(yīng)用》 > 第5章 MCS-51單片機(jī)內(nèi)部資源

第3節(jié) 兩臺(tái)單片機(jī)數(shù)據(jù)互傳

       5.3.1 硬件電路與工作原理

  1. 硬件電路

  圖 5.12

  2. 工作原理

  單片機(jī)掃描到S1(P3.2)鍵合上后,即啟動(dòng)串行發(fā)送,將01H這個(gè)數(shù)發(fā)送給對(duì)方單片機(jī),對(duì)方單片機(jī)收到數(shù)據(jù)后,再?gòu)腜1口送出來(lái)顯示。

  5.3.2 控制程序

  1. 程序流程圖

圖 5.13 串行發(fā)送程序流程                                        圖 5.14 串行接收程序流程

  2. 控制程序

  ;發(fā)送程序段

  ORG 0000H

  LJMP MAIN

  ORG 0030H

  MAIN: MOV SCON,#40H ;串口初始化,設(shè)置工作方式1

  MOV PCON,#80H ;波特率加倍

  MOV TMOD,#20H ;定時(shí)器1工作在方式2

  MOV TH1,#0FDH ;設(shè)置波特率為9600

  SETB TR1

  LOOP: JB P3.2,$ ;判鍵是否合上?

  LCALL DELAY ;延時(shí)10MS去抖

  JB P3.2,LOOP

  MOV SBUF,#01H ;啟動(dòng)串行發(fā)送

  JNB TI,$ ;判斷是否發(fā)送完畢?

  CLR TI

  SJMP $

  DELAY: MOV R3,#100

  DEL: MOV R4,#50

  DJNZ R4,$

  DJNZ R3,DEL

  RET

  END

  ;接收程序段

  ORG 0000H

  LJMP MAIN

  ORG 0030H

  MAIN: MOV SCON,#40H ;串口初始化,設(shè)置工作方式1

  MOV PCON,#80H ;波特率加倍

  MOV TMOD,#20H ;定時(shí)器1工作在方式2

  MOV TH1,#0FDH ;設(shè)置波特率為9600

  SETB TR1

  SETB REN ;允許接收

  LOOP: JB RI,$ ;判鍵是否合上?

  CLR RI ;延時(shí)10MS去抖

  MOV P1,SBUF

  SJMP $

  END

  5.3.3 源程序的編輯、編譯、下載

  5.3.4 相關(guān)知識(shí)

  1. 單片機(jī)如何能收、發(fā)數(shù)據(jù)?

  MCS-51單片機(jī)內(nèi)部有一個(gè)全雙工的串行通信口,即串行接收和發(fā)送緩沖器(SBUF),這兩個(gè)在物理上獨(dú)立的接收發(fā)送器,既可以接收數(shù)據(jù)也可以發(fā)送數(shù)據(jù)。但接收緩沖器只能讀出不能寫(xiě)入,而發(fā)送緩沖器則只能寫(xiě)入不能讀出,它們的地址為99H。這個(gè)通信口既可以用于網(wǎng)絡(luò)通信,亦可實(shí)現(xiàn)串行異步通信,還可以構(gòu)成同步移位寄存器使用。如果在傳行口的輸入輸出引腳上加上電平轉(zhuǎn)換器,就可方便地構(gòu)成標(biāo)準(zhǔn)的RS-232接口。下面我們分別介紹。

  (1) 基本概念

  1) 數(shù)據(jù)通信的傳輸方式

  常用于數(shù)據(jù)通信的傳輸方式有單工、半雙工、全雙工和多工方式。

  【單工方式】 : 數(shù)據(jù)僅按一個(gè)固定方向傳送。因而這種傳輸方式的用途有限,常用于串行口的打印數(shù)據(jù)傳輸與簡(jiǎn)單系統(tǒng)間的數(shù)據(jù)采集。

  【半雙工方式】:數(shù)據(jù)可實(shí)現(xiàn)雙向傳送,但不能同時(shí)進(jìn)行,實(shí)際的應(yīng)用采用某種協(xié)議實(shí)現(xiàn)收/發(fā)開(kāi)關(guān)轉(zhuǎn)換。

  【全雙工方式】:允許雙方同時(shí)進(jìn)行數(shù)據(jù)雙向傳送,但一般全雙工傳輸方式的線(xiàn)路和設(shè)備較復(fù)雜。

  【多工方式】: 以上三種傳輸方式都是用同一線(xiàn)路傳輸一種頻率信號(hào),為了充分地利用線(xiàn)路資源,可通過(guò)使用多路復(fù)用器或多路集線(xiàn)器,采用頻分、時(shí)分或碼分復(fù)用技術(shù),即可實(shí)現(xiàn)在同一線(xiàn)路上資源共享功能,我們盛之為多工傳輸方式。

  2) 串行數(shù)據(jù)通信兩種形式

  【異步通信】

  在這種通信方式中,接收器和發(fā)送器有各自的時(shí)鐘,它們的工作是非同步的,異步通信用一幀來(lái)表示一個(gè)字符,其內(nèi)容如下:一個(gè)起始位,僅接著是若干個(gè)數(shù)據(jù)位,見(jiàn)圖5.15。

  【同步通信】

  同步通信格式中,發(fā)送器和接收器由同一個(gè)時(shí)鐘源控制,為了克服在異步通信中,每傳輸一幀字符都必須加上起始位和停止位,占用了傳輸時(shí)間,在要求傳送數(shù)據(jù)量較大的場(chǎng)合,速度就慢得多。同步傳輸方式去掉了這些起始位和停止位,只在傳輸數(shù)據(jù)塊時(shí)先送出一個(gè)同步頭(字符)標(biāo)志即可。

  同步傳輸方式比異步傳輸方式速度快,這是它的優(yōu)勢(shì)。但同步傳輸方式也有其缺點(diǎn),即它必須要用一個(gè)時(shí)鐘來(lái)協(xié)調(diào)收發(fā)器的工作,所以它的設(shè)備也較復(fù)雜。

  圖5.15

  3) 串行數(shù)據(jù)通信的傳輸速率

  串行數(shù)據(jù)傳輸速率有兩個(gè)概念,即每秒轉(zhuǎn)送的位數(shù)bps(Bit per second)和每秒符號(hào)數(shù)—波特率(Band rate),在具有調(diào)制解調(diào)器的通信中,波特率與調(diào)制速率有關(guān)。

  (2) MCS-51的串行口和控制寄存器

  1) 串行口控制寄存器

  MCS-51單片機(jī)串行口寄存器結(jié)構(gòu)如圖5.16所示。SBUF為串行口的收發(fā)緩沖器,它是一個(gè)可尋址的專(zhuān)用寄存器,其中包含了接收器和發(fā)送器寄存器,可以實(shí)現(xiàn)全雙工通信。但這兩個(gè)寄存器具有同一地址(99H)。MCS-51的串行數(shù)據(jù)傳輸很簡(jiǎn)單,只要向發(fā)送緩沖器寫(xiě)入數(shù)據(jù)即可發(fā)送數(shù)據(jù)。而從接收緩沖器讀出數(shù)據(jù)即可接收數(shù)據(jù)。

  此外,從圖中可看出,接收緩沖器前還加上一級(jí)輸入移位寄存器,MCS-51這種結(jié)構(gòu)目的在于接收數(shù)據(jù)時(shí)避免發(fā)生數(shù)據(jù)幀重疊現(xiàn)象,以免出錯(cuò),部分文獻(xiàn)稱(chēng)這種結(jié)構(gòu)為雙緩沖器結(jié)構(gòu)。而發(fā)送數(shù)據(jù)時(shí)就不需要這樣設(shè)置,因?yàn)榘l(fā)送時(shí),CPU是主動(dòng)的,不可能出現(xiàn)這種現(xiàn)象。

  圖5.16串行口寄存器結(jié)構(gòu)

  2) 串行通信控制寄存器

  在上一節(jié)我們已經(jīng)分析了SCON控制寄存器,它是一個(gè)可尋址的專(zhuān)用寄存器,用于串行數(shù)據(jù)的通信控制,單元地址是98H,其結(jié)構(gòu)格式如下:

  

  表5.6 SCON寄存器結(jié)構(gòu)

  下面我們對(duì)各控制位功能介紹如下:

 ?、?SM0、SM1:串行口工作方式控制位。

  SM0,SM1 工作方式

  00 方式0

  01 方式1

  10 方式2

  11 方式3

 ?、?SM2:多機(jī)通信控制位。

  多機(jī)通信是工作于方式2和方式3,SM2位主要用于方式2和方式3。接收狀態(tài),當(dāng)串行口工作于方式2或3,以及SM2=1時(shí),只有當(dāng)接收到第9位數(shù)據(jù)(RB8)為1時(shí),才把接收到的前8位數(shù)據(jù)送入SBUF,且置位RI發(fā)出中斷申請(qǐng),否則會(huì)將接受到的數(shù)據(jù)放棄。當(dāng)SM2=0時(shí),就不管第位數(shù)據(jù)是0還是1,都難得數(shù)據(jù)送入SBUF,并發(fā)出中斷申請(qǐng)。

  工作于方式0時(shí),SM2必須為0。

 ?、?REN:允許接收位。

  REN用于控制數(shù)據(jù)接收的允許和禁止,REN=1時(shí),允許接收,REN=0時(shí),禁止接收。

 ?、?TB8:發(fā)送接收數(shù)據(jù)位8。

  在方式2和方式3中,TB8是要發(fā)送的——即第9位數(shù)據(jù)位。在多機(jī)通信中同樣亦要傳輸這一位,并且它代表傳輸?shù)牡刂愤€是數(shù)據(jù),TB8=0為數(shù)據(jù),TB8=1時(shí)為地址。

  ⑤ RB8:接收數(shù)據(jù)位8。

  在方式2和方式3中,RB8存放接收到的第9位數(shù)據(jù),用以識(shí)別接收到的數(shù)據(jù)特征。

 ?、?TI:發(fā)送中斷標(biāo)志位。

  可尋址標(biāo)志位。方式0時(shí),發(fā)送完第8位數(shù)據(jù)后,由硬件置位,其它方式下,在發(fā)送或停止位之前由硬件置位,因此,TI=1表示幀發(fā)送結(jié)束,TI可由軟件清“0”。

 ?、?RI:接收中斷標(biāo)志位。

  可尋址標(biāo)志位。接收完第8位數(shù)據(jù)后,該位由硬件置位,在其他工作方式下,該位由硬件置位,RI=1表示幀接收完成。

  3) 電源管理寄存器PCON

  PCON主要是為CHMOS型單片機(jī)的電源控制而設(shè)置的專(zhuān)用寄存器,單元地址是87H,其結(jié)構(gòu)格式如下:

  

  表5.7 PCON電源管理寄存器結(jié)構(gòu)

  在CHMOS型單片機(jī)中,除SMOD位外,其他位均為虛設(shè)的,SMOD是串行口波特率倍增位,當(dāng)SMOD=1時(shí),串行口波特率加倍。系統(tǒng)復(fù)位默認(rèn)為SMOD=0。

  4) 中斷允許寄存器IE

  中斷允許寄存器在前一節(jié)中已闡述,這里重述一下對(duì)串行口有影響的位ES。ES為串行中斷允許控制位,ES=1允許串行中斷,ES=0,禁止串行中斷。

  表5.8 IE中斷允許控制寄存器結(jié)構(gòu)

  2. 單片機(jī)怎樣通過(guò)程序控制收發(fā)數(shù)據(jù)?

  串口程序的編制和定時(shí)、計(jì)數(shù)器以及中斷程序編制一樣,首先也應(yīng)該初始化,

  (1) 先設(shè)定SCON,設(shè)定好串口工作方式

  如:任務(wù)程序中的 MOV SCON,#40H 設(shè)定串口工作方式一。

  (2) 如果用到中斷的,還必須設(shè)定IE或IP。

  如:任務(wù)中的接收程序可以改成:

  ……

  ORG 0023H

  LJMP P_JS

  ORG 0030H

  ……

  SETB EA

  SETB ES

  P_JS: CLR RI

  ……

  RETI

  (3) 然后設(shè)定波特率,即根據(jù)工作方式設(shè)置定時(shí)計(jì)數(shù)器T1、以及PCON寄存器。

  如任務(wù)中的 MOV PCON,#80H ;波特率加倍

  MOV TMOD,#20H ;定時(shí)器1工作在方式2

  MOV TH1,#0FDH ;設(shè)置波特率為9600

  值得注意的是,由于串行發(fā)送、接收標(biāo)志不能硬件自動(dòng)清除,所以,不管是中斷方式還是查詢(xún)方式編程時(shí)都必須用軟件方式清除TI、RI。

?
巢湖市| 沂南县| 鹿邑县| 双鸭山市| 蛟河市| 台中市| 西城区| 深水埗区| 濉溪县| 霸州市| 沧源| 巨野县| 宁德市| 滦南县| 澄江县| 济阳县| 延川县| 锦州市| 车险| 马公市| 裕民县| 太和县| 沁阳市| 衡南县| 奉化市| 柘荣县| 岳阳县| 枣强县| 利津县| 米易县| 神农架林区| 汕头市| 庄浪县| 台前县| 江口县| 青冈县| 阳信县| 武陟县| 永善县| 崇信县| 吴桥县|