UART收发的程序

UART收发的程序

ID:39469035

大小:18.26 KB

页数:5页

时间:2019-07-04

UART收发的程序_第1页
UART收发的程序_第2页
UART收发的程序_第3页
UART收发的程序_第4页
UART收发的程序_第5页
资源描述:

《UART收发的程序》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

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

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

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

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