avr單片機USART串口通訊初始化配置說明_第1頁
avr單片機USART串口通訊初始化配置說明_第2頁
avr單片機USART串口通訊初始化配置說明_第3頁
avr單片機USART串口通訊初始化配置說明_第4頁
avr單片機USART串口通訊初始化配置說明_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、avr單片機USART串口通訊初始化配置說明avr atmega16單片機通用同步和異步串行接收器和轉(zhuǎn)發(fā)器(USART)/*是一個高度靈活的串行通訊設(shè)備,其工作模式及其初始化,寄存器說明如下。USART 控制和狀態(tài)寄存器 A( UCSRA) */*USART控制和狀態(tài)寄存器 A (UCSRA)bit7bit6 bit5bit4bit3bit2 bit1bit0RXC TXC UDRE FEDORPE U2XMPCMRXC: USART接收結(jié)束接收緩沖器中有未讀出的數(shù)據(jù)時RXC置位,否則清零。接收器禁止時,接收緩沖器被刷新,導致RXC清零。RXC標志可用來產(chǎn)生接收結(jié)束中斷TXC: USART發(fā)送

2、結(jié)束發(fā)送移位緩沖器中的數(shù)據(jù)被送出,且當發(fā)送緩沖器(UDR)為空時TXC置位。執(zhí)行發(fā)送結(jié)束中斷時 TXC標志自動清零,也可以通過寫0進行清除操作。TXC標志可用來產(chǎn)生發(fā)送結(jié)束中斷(見對TXCIE位的描述)。UDRE: USART數(shù)據(jù)寄存器空UDRE標志指出發(fā)送緩沖器(UDR)是否準備好接收新數(shù)據(jù)。UDRE為1說明緩沖器為空,已準備好進行數(shù)據(jù)接收。UDRE標志可用來產(chǎn)生數(shù)據(jù)寄存器空中斷復(fù)位后UDRE置位,表明發(fā)送器已經(jīng)就緒。FE:幀錯誤如果接收緩沖器接收到的下一個字符有幀錯誤,即接收緩沖器中的下一個字符的第一個停止位為0,那么FE置位。這一位一直有效直到接收緩沖器(UDR)被讀取。當接收到的停止位

3、為1時,F(xiàn)E標志為0。對UCSRA進行寫入時,這一位要寫 0。DOR:數(shù)據(jù)溢出數(shù)據(jù)溢出時DOR置位。當接收緩沖器滿(包含了兩個數(shù)據(jù)),接收移位寄存器又有 數(shù)據(jù),若此時檢測到一個新的起始位, 數(shù)據(jù)溢出就產(chǎn)生了。 這一位一直有效直到接收緩沖器 (UDR)被讀取。對UCSRA進行寫入時,這一位要寫 0。PE:奇偶校驗錯誤當奇偶校驗使能(UPM1 1),且接收緩沖器中所接收到的下一個字符有奇偶校驗錯誤時UPE置位。這一位一直有效直到接收緩沖器(UDR)被讀取。對UCSRA進行寫入時,位要寫0。U2X:倍速發(fā)送這一位僅對異步操作有影響。使用同步操作時將此位清零。此位置1可將波特率分頻因子從16降到8,從

4、而有效的將異步通信模式的傳輸速率加倍。MPCM:多處理器通信模式設(shè)置此位將啟動多處理器通信模式。MPCM置位后,USART接收器接收到的那些不包含地址信息的輸入幀都將被忽略。發(fā)送器不受MPCM設(shè)置的影響。*/*USART 控制和狀態(tài)寄存器B (UCSRB) */* USART控制和狀態(tài)寄存器 B ( UCSRB)bit7 bit6 bit5bit4 bit3 bit2bit1 bit0RXCIE TXCIE UDRIERXEN TXENUCSZ2 RXB8 TXB8RXCIE:接收結(jié)束中斷使能置位后使能 RXC中斷。當RXCIE為1,全局中斷標志位 SREG置位,UCSRA寄存器的RXC亦為1

5、時可以產(chǎn)生USART接收結(jié)束中斷。TXCIE:發(fā)送結(jié)束中斷使能SREG置位,UCSRA寄存置位后使能TXC中斷。當TXCIE為1 ,全局中斷標志位器的TXC亦為1時可以產(chǎn)生 USART發(fā)送結(jié)束中斷。UDRIE: USART數(shù)據(jù)寄存器空中斷使能置位后使能UDRE中斷。當UDRIE為1,全局中斷標志位 SREG置位,UCSRA寄 存器的UDRE亦為1時可以產(chǎn)生USART數(shù)據(jù)寄存器空中斷。RXEN:接收使能置位后將啟動 USART接收器。RxD引腳的通用端口功能被 USART功能所取代。 禁止接收器將刷新接收緩沖器,并使FE、DOR及PE標志無效。TXEN:發(fā)送使能置位后將啟動將啟動 USART發(fā)送

6、器。TxD引腳的通用端口功能被 USART功能所 取代。TXEN清零后,只有等到所有的數(shù)據(jù)發(fā)送完成后發(fā)送器才能夠真正禁止,即發(fā)送移位 寄存器與發(fā)送緩沖寄存器中沒有要傳送的數(shù)據(jù)。發(fā)送器禁止后,TxD引腳恢復(fù)其通用I/O功能。UCSZ2:字符長度UCSZ2與UCSRC寄存器的UCSZ1:0結(jié)合在一起可以設(shè)置數(shù)據(jù)幀所包含的數(shù)據(jù)位 數(shù)(字符長度)。RXB8:接收數(shù)據(jù)位8對9位串行幀進行操作時,RXB8是第9個數(shù)據(jù)位。讀取 UDR包含的低位數(shù)據(jù)之前首先要讀取RXB8。TXB8:發(fā)送數(shù)據(jù)位8對9位串行幀進行操作時,TXB8是第9個數(shù)據(jù)位。寫 UDR之前首先要對它進行 寫操作。*/*狀態(tài)寄存器C (UCSR

7、C)*/*狀態(tài)寄存器 C (UCSRC)bit7 bit6bit5URSEL UMSELUPM1bit4 bit3 bit2 bit1 bit0UPM0 USBS UCSZ1 UCSZ0 UCPOLUCSRC寄存器與 UBRRH寄存器共用相同的I/O地址。對該寄存器的訪問。URSEL:寄存器選擇通過該位選擇訪問 UCSRC寄存器或UBRRH寄存器。當讀UCSRC時,該位為1;當寫 UCSRC時,URSEL為 1。URSEL 為 0 ,對 UBRRH 值更新; 若 URSEL 為 1 , 對UCSRC設(shè)置更新UMSEL: USART模式選擇通過這一位來選擇同步或異步工作模式。UMSEL設(shè)置UMS

8、EL模式0異步操作1同步操作UPM1:0:奇偶校驗?zāi)J竭@兩位設(shè)置奇偶校驗的模式并使能奇偶校驗。如果使能了奇偶校驗,那么在發(fā)送數(shù)據(jù),發(fā)送器都會自動產(chǎn)生并發(fā)送奇偶校驗位。對每一個接收到的數(shù)據(jù),接收器都會產(chǎn)生一奇偶值,并與 UPM0所設(shè)置的值進行比較。如果不匹配,那么就將 UCSRA中的PE置位。UPM設(shè)置UPM1UPM0奇偶模式00禁止01保留10偶校驗11奇校驗USBS:停止位選擇通過這一位可以設(shè)置停止位的位數(shù)。接收器忽略這一位的設(shè)置。USBS設(shè)置USBS停止位位數(shù)0112UCSZ1:0:字符長度UCSZ1:0與UCSRB寄存器的UCSZ2結(jié)合在一起可以設(shè)置數(shù)據(jù)幀包含的數(shù)據(jù)位數(shù) (字符長度)。U

9、CSZ設(shè)置UCSZ2UCSZ1UCSZ0字符長度0005001601070118100保留101保留110保留1119UCPOL:時鐘極性這一位僅用于同步工作模式。使用異步模式時,將這一位清零。UCPOL設(shè)置了輸出數(shù)據(jù)的改變和輸入數(shù)據(jù)采樣,以及同步時鐘XCK之間的關(guān)系。UCPOL設(shè)置接收數(shù)據(jù)的采樣(RxD引腳UCPOL 發(fā)送數(shù)據(jù)的改變(TxD引腳的輸出) 的輸入)下降沿XCK上升沿XCK1XCK下降沿XCK上升沿*/*USART 波特率寄存器(UBRRL 禾日 UBRRH) */* USART波特率寄存器(UBRRL和UBRRH)bit15 bit14 bit13 bit12 bit11 bi

10、t10 bit9 bit8URSEL -UBRR11:8UBRR7:0UCSRC寄存器與UBRRH寄存器共用相同的I/O地址。對該寄存器的訪問。URSEL:寄存器選擇通過該位選擇訪問 UCSRC寄存器或UBRRH寄存器。當讀UBRRH時,該位為0; 當寫 UBRRH 時, URSEL 為 0。Bit 14:12 :保留位這些位是為以后的使用而保留的。為了與以后的器件兼容,寫UBRRH時將這些位清零。UBRR11:0 : USART波特率寄存器這個12位的寄存器包含了 USART的波特率信息。其中 UBRRH包含了 USART波 特率高4位,UBRRL包含了低8位。波特率的改變將造成正在進行的數(shù)

11、據(jù)傳輸受到破壞。寫UBRRL將立即更新波特率分頻器。波特率定義為每秒的位傳輸速度(bps)BAUD 波特率(bps)fOSC 系統(tǒng)時鐘頻率UBRR UBRRH 與 UBRRL 的數(shù)值(0-4095)異步正常模式 (U2X = 0)FOSCFOSCBAUD =UBRR =-116( UBRR+ 1)16BAUD異步倍速模式 (U2X = 1)fOSCBAUD =8(UBRR+ 1)同步主機模式fOSCBAUD =2(UBRR+ 1)*/#include<iom16v.h>#include<macros.h>#pragma interrupt_handler#pragma

12、interrupt_handler#pragma interrupt_handler unsignedfOSCUBRR = -18BAUDfOSCUBRR = -12BAUDUDR_empty:iv_USART_UDRERXC_END:iv_USART_DRETXC_END:iv_USART_TXchar UASART_DATA=0;void USART_Init( unsigned int baud , unsigned char digit,unsigned charmode,unsigned char checkout)/ 詳細初始化模式 SREG&=0x7F;UCSRC&

13、;=(1<<URSEL);/ 寫 UBRRH/*設(shè)置波特率*/UBRRH = (unsigned char)(baud>>8);UBRRL = (unsigned char)baud;/*接收器與發(fā)送器使能*/UCSRB = (1<<RXEN)|(1<<TXEN);/*UDR數(shù)據(jù)寄存器為空時中斷使能*/UCSRB = (1<<UDRIE);/最好不用。根據(jù)需要打開此中斷使能switch(mode)/異同模式選擇case 0:UCSRB&=(1<<UMSEL);break;/ 異步模式case 1:UCSRB|=1&

14、lt;<UMSEL;break;/同步模式default :UCSRB&=(1<<UMSEL);break;UCSRC|=1<<URSEL;/ 寫 UCSRG/*如果發(fā)送9位數(shù)據(jù)的數(shù)據(jù)幀(UCSZ = 7),應(yīng)先將數(shù)據(jù)的第9位寫入寄存器UCSRB的TXB8,然后再將低8位數(shù)據(jù)寫入發(fā)送數(shù)據(jù)寄存器UDR, */switch(digit)/ 設(shè)置幀格式:digit 數(shù)據(jù)位 5-9, case 5:UCSRB&=(1<<UCSZ2);UCSRC&=(3<<UCSZ0);break;case 6:UCSRB&=(1&l

15、t;<UCSZ2);UCSRC&=(1<<UCSZ1);UCSRC|=1<<UCSZ0;brea k;case 7:UCSRB&=(1<<UCSZ2);UCSRC|=1<<UCSZ1;UCSRC&=(1<<UCSZ0);brea k;case 8:UCSRB&=(1<<UCSZ2);UCSRC|=3<<UCSZ0;break;case 9:UCSRB|=1<<UCSZ2;UCSRC|=3<<UCSZ0;break;default:UCSRB&

16、=(1<<UCSZ2);UCSRC|=(3<<UCSZ0);break;switch(checkout)/checkout校驗?zāi)J絚ase 0:UCSRC&=(1<<UPM1);UCSRC&=(1<<UPM0);break;/禁止校驗。case 2:UCSRC|=1<<UPM1;UCSRC&=(1<<UPM0);break;/ 偶校驗case 3:UCSRC|=(3<<UPM0);break;/ 奇校驗default:UCSRC&=(1<<UPM1);UCSRC&am

17、p;=(1<<UPM0);break; UCSRC|=1<<USBS;/2 個停止位/UCSRC&=(1<<USBS);/1個停止位UCSRC&=(1<<UCPOL); / 時鐘極性設(shè)置 /*/UCSRA|=1<<U2X;/打開此行倍速模式/UCSRA|=1<<MPCM;/ 打開此行,是多處理器通信模式SREG|=0x80;/使能全局中斷/*UBRR 的 baud 設(shè)置參數(shù)表 */U2X=0;8mhz 晶振 9600 : UBRR=51;誤差:0.2%。 4800 : UBRR=103;誤差:0.2%.24

18、00 : UBRR=207;誤差:0.2%/U2X=1;8mhz 晶振 9600 : UBRR=103;誤差:0.2%。4800 : UBRR=207;誤差:0.2%.2400 : UBRR=416;誤差:-0.1%/U2X=0;11.0592mhz 晶振 9600 : UBRR=71;誤差:0.0% 。 4800 : UBRR=143;誤差:0.0%.2400 : UBRR=287;誤差:0.0%/U2X=1;11.0592mhz 晶振 9600 : UBRR=143;誤差:0.0%。4800 : UBRR=287;誤差:0.0%.2400 : UBRR=575;誤差:0.0%void US

19、ART_Init_commonage(unsigned int baud)/ 通用初始化/*設(shè)置波特率*/SREG&=0x7F;UBRRH = (unsigned char)(baud>>8);UBRRL = (unsigned char)baud;/*接收器與發(fā)送器使能數(shù)據(jù)寄存器空使能禁止*/UCSRB = (1<<RXEN)|(1<<TXEN)|(1<<RXCIE)|(1<<TXCIE);/*設(shè)置幀格式:8個數(shù)據(jù)位,2個停止位,禁止校驗,XCK上升沿發(fā)送數(shù)據(jù)下降沿 接收數(shù)據(jù),異步模式*/UCSRC = (1<<

20、URSEL)|(1<<USBS)|(3<<UCSZ0);/UCSRA=0;單機處理模式。中斷標志清零,波特率的普通模式(非加倍,倍速模式)SREG|=0x80;/使能全局中斷/*USART數(shù)據(jù)寄存器空標志 UDRE及傳輸結(jié)束標志TXC,兩個標志位都可以產(chǎn)生中斷。*/void UDR_empty()/使能要求:全局中斷使能,數(shù)據(jù)寄存器空中斷使能位UDRIE置位。UDRE被置位(自動)。/對寄存器UDR執(zhí)行寫操作將清零UDRE(unsigned char data;UDR = data;/add your code herevoid TXC_END()(UDR =UASAR

21、T_DATA;/add your code herevoid RXC_END()(UASART_DATA=UDR;/add your code herevoid USART_Transmit5_8( unsigned char data )/ 對 UDRE標志采用輪詢方式發(fā)送數(shù)據(jù)(發(fā)送5-8位數(shù)據(jù))(/*等待發(fā)送緩沖器為空*/while ( !( UCSRA & (1<<UDRE);/*將數(shù)據(jù)放入緩沖器,發(fā)送數(shù)據(jù)*/UDR = data;void USART_Transmit_9( unsigned int data )/ 用查詢法發(fā)送 9 位數(shù)據(jù)的數(shù)據(jù)幀(/*等待發(fā)送緩沖器為空*/while ( !( UCSRA & (1<<UDRE);/*將第9位復(fù)制到 TXB8 */UCSRB &= (1<<TXB8);if ( data & 0x0100 )UCSRB |= (1&l

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論