<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > AVR單片機(jī)(學(xué)習(xí)ing)-ATMEGA16的USART與PC機(jī)串行通信

          AVR單片機(jī)(學(xué)習(xí)ing)-ATMEGA16的USART與PC機(jī)串行通信

          作者: 時(shí)間:2016-11-27 來(lái)源:網(wǎng)絡(luò) 收藏

          3)USART控制和狀態(tài)寄存器B



          • Bit 7 – RXCIE: 接收結(jié)束中斷使能
          置位后使能RXC 中斷。當(dāng)RXCIE 為1,全局中斷標(biāo)志位SREG 置位, UCSRA 寄存器
          的RXC 亦為1 時(shí)可以產(chǎn)生USART 接收結(jié)束中斷。

          • Bit 6 – TXCIE: 發(fā)送結(jié)束中斷使能
          置位后使能TXC 中斷。當(dāng)TXCIE 為1,全局中斷標(biāo)志位SREG 置位,UCSRA 寄存器的
          TXC 亦為1 時(shí)可以產(chǎn)生USART 發(fā)送結(jié)束中斷。
          • Bit 5 – UDRIE: USART 數(shù)據(jù)寄存器空中斷使能
          置位后使能UDRE 中斷。當(dāng)UDRIE 為1,全局中斷標(biāo)志位SREG 置位,UCSRA 寄存器
          的UDRE 亦為1 時(shí)可以產(chǎn)生USART 數(shù)據(jù)寄存器空中斷。
          • Bit 4 – RXEN: 接收使能
          置位后將啟動(dòng)USART 接收器。RxD 引腳的通用端口功能被USART 功能所取代。禁止
          接收器將刷新接收緩沖器,并使 FE、DOR 及PE 標(biāo)志無(wú)效。
          • Bit 3 – TXEN: 發(fā)送使能
          置位后將啟動(dòng)將啟動(dòng)USART 發(fā)送器。TxD 引腳的通用端口功能被USART 功能所取代。
          TXEN 清零后,只有等到所有的數(shù)據(jù)發(fā)送完成后發(fā)送器才能夠真正禁止,即發(fā)送移位寄存
          器與發(fā)送緩沖寄存器中沒(méi)有要傳送的數(shù)據(jù)。發(fā)送器禁止后,TxD引腳恢復(fù)其通用I/O功能。
          • Bit 2 – UCSZ2: 字符長(zhǎng)度
          UCSZ2與UCSRC寄存器的UCSZ1:0結(jié)合在一起可以設(shè)置數(shù)據(jù)幀所包含的數(shù)據(jù)位數(shù)(字符
          長(zhǎng)度)。
          • Bit 1 – RXB8: 接收數(shù)據(jù)位 8
          對(duì)9 位串行幀進(jìn)行操作時(shí),RXB8 是第9 個(gè)數(shù)據(jù)位。讀取UDR 包含的低位數(shù)據(jù)之前首先
          要讀取RXB8。
          • Bit 0 – TXB8: 發(fā)送數(shù)據(jù)位8
          對(duì)9 位串行幀進(jìn)行操作時(shí),TXB8 是第9 個(gè)數(shù)據(jù)位。寫UDR 之前首先要對(duì)它進(jìn)行寫操作。

          4)USART控制和轉(zhuǎn)臺(tái)寄存器C



          • Bit 7 – URSEL: 寄存器選擇
          通過(guò)該位選擇訪問(wèn)UCSRC 寄存器或UBRRH 寄存器。當(dāng)讀UCSRC 時(shí),該位為1 ;當(dāng)
          寫UCSRC 時(shí), URSEL 為1。
          • Bit 6 – UMSEL: USART 模式選擇
          通過(guò)這一位來(lái)選擇同步或異步工作模式。



          • Bit 5:4 – UPM1:0: 奇偶校驗(yàn)?zāi)J?br />這兩位設(shè)置奇偶校驗(yàn)的模式并使能奇偶校驗(yàn)。如果使能了奇偶校驗(yàn),那么在發(fā)送數(shù)據(jù),發(fā)
          送器都會(huì)自動(dòng)產(chǎn)生并發(fā)送奇偶校驗(yàn)位。對(duì)每一個(gè)接收到的數(shù)據(jù),接收器都會(huì)產(chǎn)生一奇偶
          值,并與UPM0 所設(shè)置的值進(jìn)行比較。如果不匹配,那么就將UCSRA 中的PE 置位。



          • Bit 3 – USBS: 停止位選擇
          通過(guò)這一位可以設(shè)置停止位的位數(shù)。接收器忽略這一位的設(shè)置。

          • Bit 2:1 – UCSZ1:0: 字符長(zhǎng)度
          UCSZ1:0與UCSRB寄存器的 UCSZ2結(jié)合在一起可以設(shè)置數(shù)據(jù)幀包含的數(shù)據(jù)位數(shù)(字符長(zhǎng)
          度)。



          • Bit 0 – UCPOL: 時(shí)鐘極性
          這一位僅用于同步工作模式。使用異步模式時(shí),將這一位清零。UCPOL 設(shè)置了輸出數(shù)據(jù)
          的改變和輸入數(shù)據(jù)采樣,以及同步時(shí)鐘XCK 之間的關(guān)系。

          5)USART波特率寄存器



          • Bit 15 – URSEL: 寄存器選擇
          通過(guò)該位選擇訪問(wèn)UCSRC 寄存器或UBRRH 寄存器。當(dāng)讀UBRRH 時(shí),該位為0 ;當(dāng)
          寫UBRRH 時(shí), URSEL 為0。
          • Bit 14:12 – 保留位
          這些位是為以后的使用而保留的。為了與以后的器件兼容,寫UBRRH 時(shí)將這些位清零。
          • Bit 11:0 – UBRR11:0: USART 波特率寄存器
          這個(gè)12 位的寄存器包含了USART 的波特率信息。其中UBRRH 包含了USART 波特率
          高4 位,UBRRL 包含了低8 位。波特率的改變將造成正在進(jìn)行的數(shù)據(jù)傳輸受到破壞。寫
          UBRRL 將立即更新波特率分頻器。

          不同晶振的波特率還是去看datasheet吧~~我看了看好多啊~~~

          6、USART的初始化

          進(jìn)行通信之前首先要對(duì)USART 進(jìn)行初始化。初始化過(guò)程通常包括波特率的設(shè)定,幀結(jié)構(gòu)
          的設(shè)定,以及根據(jù)需要使能接收器或發(fā)送器。對(duì)于中斷驅(qū)動(dòng)的USART 操作,在初始化時(shí)
          首先要清零全局中斷標(biāo)志位( 全局中斷被屏蔽)。
          重新改變USART 的設(shè)置應(yīng)該在沒(méi)有數(shù)據(jù)傳輸?shù)那闆r下進(jìn)行。TXC 標(biāo)志位可以用來(lái)檢驗(yàn)
          一個(gè)數(shù)據(jù)幀的發(fā)送是否已經(jīng)完成, RXC 標(biāo)志位可以用來(lái)檢驗(yàn)接收緩沖器中是否還有數(shù)據(jù)
          未讀出。在每次發(fā)送數(shù)據(jù)之前( 在寫發(fā)送數(shù)據(jù)寄存器UDR 前)TXC 標(biāo)志位必須清零。
          以下是USART 初始化程序示例。例程采用了輪詢( 中斷被禁用) 的異步操作,而且?guī)Y(jié)
          構(gòu)是固定的。波特率作為函數(shù)參數(shù)給出。在匯編程序里波特率參數(shù)保存于寄存器r17:r16。
          當(dāng)寫入U(xiǎn)CSRC 寄存器時(shí),由于UBRRH 與UCSRC 共用I/O 地址,URSEL 位(MSB) 必
          須置位。

          void USART_Init( unsigned int baud )
          {

          UBRRH = (unsigned char)(baud>>8);
          UBRRL = (unsigned char)baud;

          UCSRB = (1<
          UCSRC = (1<}

          更高級(jí)的初始化程序可將幀格式作為參數(shù)、禁止中斷等等。然而許多應(yīng)用程序使用固定的
          波特率與控制寄存器。此時(shí)初始化代碼可以直接放在主程序中,或與其它I/O 模塊的初始
          化代碼組合到一起。



          評(píng)論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();