UART收發(fā)的程序

UART收發(fā)的程序

ID:39469035

大小:18.26 KB

頁數(shù):5頁

時(shí)間:2019-07-04

UART收發(fā)的程序_第1頁
UART收發(fā)的程序_第2頁
UART收發(fā)的程序_第3頁
UART收發(fā)的程序_第4頁
UART收發(fā)的程序_第5頁
資源描述:

《UART收發(fā)的程序》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫

1、一般教科書上提供的UART收發(fā)的程序往往是一段采用輪循(Polling)方式完成收發(fā)的簡單代碼。但對于高速的AVR來講,采用這種方式大大降低了MUC的效率。在使用AVR時(shí),應(yīng)根據(jù)芯片本身的特點(diǎn)(片內(nèi)大容量數(shù)據(jù)存儲器RAM,更適合采用高級語言編寫系統(tǒng)程序),編寫高效可靠的UART收發(fā)接口(低層)程序。下面是一個(gè)典型的ATmega128的軟件USART的接口程序。#include#defineRXB81#defineTXB80#defineUPE2#defineOVR3#defineFE4#defineUDRE5#defineRXC7#def

2、ineFRAMING_ERROR(1<

3、SART0Receiverbufferoverflowbitrx_buffer_overflow0;//USART0Receiverinterruptserviceroutine#pragmasavereg-interrupt[USART0_RXC]voiduart0_rx_isr(void){charstatus,data;#asm?????????pushr26????????????pushr27????????????pushr30????????????pushr31????????????in???r26,sreg????????????pushr

4、26#endasmstatus=UCSR0A;data=UDR0;if((status&(FRAMING_ERROR

5、PARITY_ERROR

6、DATA_OVERRUN))==0)???{???????rx_buffer0[rx_wr_index0]=data;???????if(++rx_wr_index0==RX_BUFFER_SIZE0)rx_wr_index0=0;???????if(++rx_counter0==RX_BUFFER_SIZE0)??????????{??????????????rx_counter0=0;??????????????r

7、x_buffer_overflow0=1;??????????};???};#asm???????pop??r26???????out??sreg,r26???????pop??r31???????pop??r30???????pop??r27???????pop??r26#endasm}#pragmasavereg+#ifndef_DEBUG_TERMINAL_IO_//GetacharacterfromtheUSART0Receiverbuffer#define_ALTERNATE_GETCHAR_#pragmaused+chargetchar(void)

8、{??chardata;??while(rx_counter0==0);??data=rx_buffer0[rx_rd_index0];??if(++rx_rd_index0==RX_BUFFER_SIZE0)rx_rd_index0=0;??#asm("cli")????--rx_counter0;??#asm("sei")??returndata;}#pragmaused-#endif//USART0Transmitterbuffer#defineTX_BUFFER_SIZE08chartx_buffer0[TX_BUFFER_SIZE0];unsigne

9、dchartx_wr_index0,tx_rd_index0,tx_counter0;//USART0Transmitterinterruptserviceroutine#pragmasavereg-interrupt[USART0_TXC]voiduart0_tx_isr(void){??#asm??????pushr26??????pushr27??????pushr30??????pushr31??????in???r26,sreg??????pushr26??#edasm??if(tx_counter0)??{?????????--tx_counter

10、0;???????UDR0=tx_bu

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時(shí)可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時(shí)聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。