在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 從零開始51單片機(jī)教程 —— 22 單片機(jī)串口介紹

            從零開始51單片機(jī)教程 —— 22 單片機(jī)串口介紹

            作者: 時(shí)間:2012-02-16 來源:網(wǎng)絡(luò) 收藏

            與外界進(jìn)行信息交換的工具。

            8051的通信方式有兩種:

            并行通信:數(shù)據(jù)的各位同時(shí)發(fā)送或接收。 串行通信:數(shù)據(jù)一位一位次序發(fā)送或接收。參看下圖:

            點(diǎn)擊瀏覽下一頁(yè)

            串行通信的方式:

            異步通信:它用一個(gè)起始位表示字符的開始,用停止位表示字符的結(jié)束。其每幀的格式如下:

            在一幀格式中,先是一個(gè)起始位0,然后是8個(gè)數(shù)據(jù)位,規(guī)定低位在前,高位在后,接下來是奇偶校驗(yàn)位(能省略),最后是停止位1。用這種格式表示字符,則字符能一個(gè)接一個(gè)地傳送。

            在異步通信中,CPU與外設(shè)之間必須有兩項(xiàng)規(guī)定,即字符格式和波特率。字符格式的規(guī)定是雙方能夠在對(duì)同一種0和1的串理解成同一種意義。原則上字符格式能由通信的雙方自由制定,但從通用、方便的角度出發(fā),一般還是使用一些標(biāo)準(zhǔn)為好,如采用ASCII標(biāo)準(zhǔn)。

            波特率即數(shù)據(jù)傳送的速率,其定義是每秒鐘傳送的二進(jìn)制數(shù)的位數(shù)。例如,數(shù)據(jù)傳送的速率是120字符/s,而每個(gè)字符如上述規(guī)定包含10數(shù)位,則傳送波特率為1200波特。

            同步通信:在同步通信中,每個(gè)字符要用起始位和停止位作為字符開始和結(jié)束的標(biāo)志,占用了時(shí)間;所以在數(shù)據(jù)塊傳遞時(shí),為了提高速度,常去掉這些標(biāo)志,采用同步傳送。由于數(shù)據(jù)塊傳遞開始要用同步字符來指示,同時(shí)要求由時(shí)鐘來實(shí)現(xiàn)發(fā)送端與接收端之間的同步,故硬件較復(fù)雜。

            通信方向:在串行通信中,把通信接口只能發(fā)送或接收的單向傳送辦法叫單工傳送;而把數(shù)據(jù)在甲乙兩機(jī)之間的雙向傳遞,稱之為雙工傳送。在雙工傳送方式中又分為半雙工傳送和全雙工傳送。半雙工傳送是兩機(jī)之間不能同時(shí)進(jìn)行發(fā)送和接收,任一時(shí)該,只能發(fā)或者只能收信息。

            2.8051的串行接口結(jié)構(gòu)

            8051單片機(jī)串行接口是一個(gè)可編程的全雙工串行通信接口。它可用作異步通信方式(UART),與串行傳送信息的外部設(shè)備相連接,或用于通過標(biāo)準(zhǔn)異步通信協(xié)議進(jìn)行全雙工的8051多機(jī)系統(tǒng)也能通過同步方式,使用TTL或CMOS移位寄存器來擴(kuò)充I/O口。

            8051單片機(jī)通過管腳RXD(P3.0,串行數(shù)據(jù)接收端)和管腳TXD(P3.1,串行數(shù)據(jù)發(fā)送端)與外界通信。SBUF是串行口緩沖寄存器,包括發(fā)送寄存器和接收寄存器。它們有相同名字和地址空間,但不會(huì)出現(xiàn)沖突,因?yàn)樗鼈儍蓚€(gè)一個(gè)只能被CPU讀出數(shù)據(jù),一個(gè)只能被CPU寫入數(shù)據(jù)。

            串行口的控制與狀態(tài)寄存器

            串行口控制寄存器SCON

            它用于定義串行口的工作方式及實(shí)施接收和發(fā)送控制。字節(jié)地址為98H,其各位定義如下表:

            D7
            D6
            D5
            D4
            D3
            D2
            D1
            D0
            SM0
            SM1
            SM2
            REN
            TB8
            RB8
            TI
            RI

            SM0、SM1:串行口工作方式選擇位,其定義如下:

            SM0、SM1
            工作方式
            功能描述
            波特率
            0 0
            方式0
            8位移位寄存器
            Fosc/12
            0 1
            方式1
            10位UART
            可變
            1 0
            方式2
            11位UART
            Fosc/64或fosc/32
            1 1
            方式3
            11位UART
            可變

            其中fosc為晶體震蕩器頻率

            SM2:多機(jī)通信控制位。在方式0時(shí),SM2一定要等于0。在方式1中,當(dāng)(SM2)=1則只有接收到有效停止位時(shí),RI才置1。在方式2或方式3當(dāng)(SM2)=1且接收到的第九位數(shù)據(jù)RB8=0時(shí),RI才置1。

            REN:接收允許控制位。由軟件置位以允許接收,又由軟件清0來禁止接收。

            TB8: 是要發(fā)送數(shù)據(jù)的第9位。在方式2或方式3中,要發(fā)送的第9位數(shù)據(jù),根據(jù)需要由軟件置1或清0。例如,可約定作為奇偶校驗(yàn)位,或在多機(jī)通信中作為區(qū)別地址幀或數(shù)據(jù)幀的標(biāo)志位。

            RB8:接收到的數(shù)據(jù)的第9位。在方式0中不使用RB8。在方式1中,若(SM2)=0,RB8為接收到的停止位。在方式2或方式3中,RB8為接收到的第9位數(shù)據(jù)。

            TI:發(fā)送中斷標(biāo)志。在方式0中,第8位發(fā)送結(jié)束時(shí),由硬件置位。在其它方式的發(fā)送停止位前,由硬件置位。TI置位既表示一幀信息發(fā)送結(jié)束,同時(shí)也是申請(qǐng)中斷,可根據(jù)需要,用軟件查詢的辦法獲得數(shù)據(jù)已發(fā)送完畢的信息,或用中斷的方式來發(fā)送下一個(gè)數(shù)據(jù)。TI必須用軟件清0。

            RI:接收中斷標(biāo)志位。在方式0,當(dāng)接收完第8位數(shù)據(jù)后,由硬件置位。在其它方式中,在接收到停止位的中間時(shí)刻由硬件置位(例外情況見于SM2的說明)。RI置位表示一幀數(shù)據(jù)接收完畢,可用查詢的辦法獲知或者用中斷的辦法獲知。RI也必須用軟件清0。

            特殊功能寄存器PCON

            PCON是為了在CHMOS的80C51單片機(jī)上實(shí)現(xiàn)電源控制而附加的。其中最高位是SMOD。

            的工作方式

            8051單片機(jī)的全雙工串行口可編程為4種工作方式,現(xiàn)分述如下:

            方式0為移位寄存器輸入/輸出方式??赏饨右莆患拇嫫饕詳U(kuò)展I/O口,也能外接同步輸入/輸出設(shè)備。8位串行數(shù)據(jù)者是從RXD輸入或輸出,TXD用來輸出同步脈沖。

            輸出 串行數(shù)據(jù)從RXD管腳輸出,TXD管腳輸出移位脈沖。CPU將數(shù)據(jù)寫入發(fā)送寄存器時(shí),立即啟動(dòng)發(fā)送,將8位數(shù)據(jù)以fos/12的固定波特率從RXD輸出,低位在前,高位在后。發(fā)送完一幀數(shù)據(jù)后,發(fā)送中斷標(biāo)志TI由硬件置位。

            輸入 當(dāng)串行口以方式0接收時(shí),先置位允許接收控制位REN。此時(shí),RXD為串行數(shù)據(jù)輸入端,TXD仍為同步脈沖移位輸出端。當(dāng)(RI)=0和(REN)=1同時(shí)滿足時(shí),開始接收。當(dāng)接收到第8位數(shù)據(jù)時(shí),將數(shù)據(jù)移入接收寄存器,并由硬件置位RI。

            下面兩圖分別是方式0擴(kuò)展輸出和輸入的接線圖。

            點(diǎn)擊瀏覽下一頁(yè)
            單片機(jī)串行口接線圖>

            方式1為波特率可變的10位異步通信接口方式。發(fā)送或接收一幀信息,包括1個(gè)起始位0,8個(gè)數(shù)據(jù)位和1個(gè)停止位1。

            輸出 當(dāng)CPU執(zhí)行一條指令將數(shù)據(jù)寫入發(fā)送緩沖SBUF時(shí),就啟動(dòng)發(fā)送。串行數(shù)據(jù)從TXD管腳輸出,發(fā)送完一幀數(shù)據(jù)后,就由硬件置位TI。

            輸入 在(REN)=1時(shí),串行口采樣RXD管腳,當(dāng)采樣到1至0的跳變時(shí),確認(rèn)是開始位0,就開始接收一幀數(shù)據(jù)。只有當(dāng)(RI)=0且停止位為1或者(SM2)=0時(shí),停止位才進(jìn)入RB8,8位數(shù)據(jù)才能進(jìn)入接收寄存器,并由硬件置位中斷標(biāo)志RI;不然信息丟失。所以在方式1接收時(shí),應(yīng)先用軟件清零RI和SM2標(biāo)志。

            方式2

            方式月為固定波特率的11位UART方式。它比方式1增加了一位可程控為1或0的第9位數(shù)據(jù)。

            輸出: 發(fā)送的串行數(shù)據(jù)由TXD端輸出一幀信息為11位,附加的第9位來自SCON寄存器的TB8位,用軟件置位或復(fù)位。它可作為多機(jī)通信中地址/數(shù)據(jù)信息的標(biāo)志位,也能作為數(shù)據(jù)的奇偶校驗(yàn)位。當(dāng)CPU執(zhí)行一條數(shù)據(jù)寫入SUBF的指令時(shí),就啟動(dòng)發(fā)送器發(fā)送。發(fā)送一幀信息后,置位中斷標(biāo)志TI。

            輸入: 在(REN)=1時(shí),串行口采樣RXD管腳,當(dāng)采樣到1至0的跳變時(shí),確認(rèn)是開始位0,就開始接收一幀數(shù)據(jù)。在接收到附加的第9位數(shù)據(jù)后,當(dāng)(RI)=0或者(SM2)=0時(shí),第9位數(shù)據(jù)才進(jìn)入RB8,8位數(shù)據(jù)才能進(jìn)入接收寄存器,并由硬件置位中斷標(biāo)志RI;不然信息丟失。且不置位RI。再過一位時(shí)間后,不管上述條件時(shí)否滿足,接收電路即行復(fù)位,并重新檢測(cè)RXD上從1到0的跳變。

            工作方式3

            方式3為波特率可變的11位UART方式。除波特率外,其余與方式2相同。

            波特率選擇

            如前所述,在串行通信中,收發(fā)雙方的數(shù)據(jù)傳送率(波特率)要有一定的約定。在8051串行口的四種工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可變的,由定時(shí)器T1的溢出率控制。

            方式0

            方式0的波特率固定為主振頻率的1/12。

            方式2

            方式2的波特率由PCON中的選擇位SMOD來決定,可由下式表示:

            波特率=2的SMOD次方除以64再乘一個(gè)fosc,也就是當(dāng)SMOD=1時(shí),波特率為1/32fosc,當(dāng)SMOD=0時(shí),波特率為1/64fosc

            3.方式1和方式3

            定時(shí)器T1作為波特率發(fā)生器,其公式如下:

            波特率=點(diǎn)擊瀏覽下一頁(yè)定時(shí)器T1溢出率

            T1溢出率= T1計(jì)數(shù)率/產(chǎn)生溢出所需的周期數(shù)

            式中T1計(jì)數(shù)率取決于它工作在定時(shí)器狀態(tài)還是計(jì)數(shù)器狀態(tài)。當(dāng)工作于定時(shí)器狀態(tài)時(shí),T1計(jì)數(shù)率為fosc/12;當(dāng)工作于計(jì)數(shù)器狀態(tài)時(shí),T1計(jì)數(shù)率為外部輸入頻率,此頻率應(yīng)小于fosc/24。產(chǎn)生溢出所需周期與定時(shí)器T1的工作方式、T1的預(yù)置值有關(guān)。

            定時(shí)器T1工作于方式0:溢出所需周期數(shù)=8192-x

            定時(shí)器T1工作于方式1:溢出所需周期數(shù)=65536-x

            定時(shí)器T1工作于方式2:溢出所需周期數(shù)=256-x

            因?yàn)榉绞?為自動(dòng)重裝入初值的8位定時(shí)器/計(jì)數(shù)器模式,所以用它來做波特率發(fā)生器最恰當(dāng)。

            當(dāng)時(shí)鐘頻率選用11.0592MHZ時(shí),取易獲得標(biāo)準(zhǔn)的波特率,所以很多單片機(jī)系統(tǒng)選用這個(gè)看起來“怪”的晶體震蕩器就是這個(gè)道理。

            下表列出了定時(shí)器T1工作于方式2常用波特率及初值。

            常用波特率
            Fosc(MHZ)
            SMOD
            TH1初值
            19200
            11.0592
            1
            FDH
            9600
            11.0592
            0
            FDH
            4800
            11.0592
            0
            FAH
            2400
            11.0592
            0
            F4h
            1200
            11.0592
            0
            E8h

            51單片機(jī)相關(guān)文章:51單片機(jī)教程


            單片機(jī)相關(guān)文章:單片機(jī)教程


            單片機(jī)相關(guān)文章:單片機(jī)視頻教程


            單片機(jī)相關(guān)文章:單片機(jī)工作原理




            關(guān)鍵詞: 單片機(jī) 串口

            評(píng)論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉