网上_USART的接口程序

网上_USART的接口程序

ID:42677347

大小:116.44 KB

页数:11页

时间:2019-09-20

网上_USART的接口程序_第1页
网上_USART的接口程序_第2页
网上_USART的接口程序_第3页
网上_USART的接口程序_第4页
网上_USART的接口程序_第5页
资源描述:

《网上_USART的接口程序》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、网±_USART的接口程序一般教科书上提供的UART收发的程序往往是一段采用轮循(Polling)方式完成收发的简单代码。但对于高速的AVR来讲,采用这种方式大大降低了MUC的效率。在使用AVR时,应根据芯片本身的特点(片内大容量数据存储器RAM,更适合采用高级语言编写系统程序),编写高效可靠的UART收发接口(低层)程序。下面是一个典型的USART的接口程序。#ineludettdefineRXB81ttdefineTXB80ttdefineUPE2ttdefineOVR3ttdefineFE4ttdefineUDRE5ttdefineRXC

2、7ttdefineFRAMING_ERROR(1«FE)ttdefinePARITY_ERROR(1«UPE)ttdefineDATAOVERRUN(1«OVR)ttdefineDATA_REGISTER_EMPTY(1«UDRE)ftdefineRX_COMPLETE(1«RXC)//USARTOReceiverbufferttdefineRX_BUFFER_SIZEO8charrx_bufferO[RX_BUFFER_SIZEO];unsignedcharrxwrindexO,rxrdindexO,rxcounterO;//ThisflagissetonUSART

3、OReceiverbufferoverflowbitrxbufferoverflowO://USARTOReceiverinterruptserviceroutinettpragmasavereginterrupt[USARTORXC]voiduartO_rx_isr(void){charstatus,data;#a.smpushr26pushr27pushr30pushr31inr26,sregpushr26ttendasmstatus二UCSROA;data二UDRO;if((status&(FRAMINGERROR

4、PARITYERROR

5、DATA_OVERR

6、UN))==0)rrx_bufferO[rx_wr_indexO]二data;if(++rxwrindexO=RXBUFFERSIZEO)rxwrindex0=0;if(++rxcounterO二二RXBUFFERSIZEO){rx_counter0=0;rxbufferoverflowO=l:};};#a.smpopr26outsreg,r26popr31popr30popr27popr26#endasm}ttpragmasavereg+ttifndef_DEBUG.TERMINAL」。—//GetacharacterfromtheUSARTOReceiverbuf

7、ferftdefine_ALTERNATE_GETCIIAR_ttpragmaused+chargetchar(void){chardata;while(rx_counter0=0);data=rx_bufferO[rx_rd_indexO];if(++rxrdindexO二二RXBUFFERSIZEO)rxrdindexO二0;#asm(,,cli,z)一-rx_counterO;#asm(,,sei,z)returndata;}ttpragmaused-ttendif//USARTOTransmitterbufferttdefineTX_BUFFER_SIZEO8

8、chartx_bufferO[TX_BUFFER_SIZEO];unsignedchartx_wr_indexO,tx_rd_indexO,tx_counterO;//USARTOTransmitterinterruptserviceroutinettpragmasavereg-interrupt[USARTOTXC]voiduartO_tx_isr(void){#asmpushr26pushr27pushr30pushr31inr26,sregpushr26ttedasmif(tx_counterO){--tx_counterO;UDRO二txbufferO[txr

9、dindexO];if(++txrdindexO=TXBUFFERSIZEO)txrdindexO二0;};#asmpopr26outsreg,r26popr31popr30popr27popr26#endasm#pragmasavereg+ftifndef_DEBUG_TERMINAL_IO_//WriteacharactertotheUSARTOTransmitterbufferftdefine_ALTERNATE_PUTCIIAR_#pragmaused+voidputchar(charc){while(txcounterO二二TXBUFFER

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。