avr usart(uart)发送中断程序 使用缓冲器

avr usart(uart)发送中断程序 使用缓冲器

ID:15417326

大小:86.00 KB

页数:5页

时间:2018-08-03

avr usart(uart)发送中断程序 使用缓冲器_第1页
avr usart(uart)发送中断程序 使用缓冲器_第2页
avr usart(uart)发送中断程序 使用缓冲器_第3页
avr usart(uart)发送中断程序 使用缓冲器_第4页
avr usart(uart)发送中断程序 使用缓冲器_第5页
资源描述:

《avr usart(uart)发送中断程序 使用缓冲器》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、AVRUSART(UART)发送中断程序使用缓冲器系统功能使用USART发送数据,需要一定时间,若是用传统方法,等发送完再处理其它任务(如语句while(!(UCSRA&0x40));),那么,将大大降低了高速的AVR的执行效率!AVR会等到“花都谢了~”那么怎样处理才可以解决低速串口与高速AVR之间的矛盾呢?可以采用开辟发送缓冲区的做法:当AVR需要发送数据时,如果USART口不空闲或者发送缓冲区还有待发送的数据,就将数据放入发送缓冲器中(如果缓冲器未满),AVR不必等待,可以转去执行其它任务。而后,等USART的硬件发送完一个数据后产生中断,由中断服

2、务程序负责将发送缓冲器中数据依次送出。发送缓冲器数据结构的设计:循环队列,由读、写2个指针及一个队列计数器控制,用于判断当前写入数据、读出数据在队列中的位置,并判断队列是否为空,是否已满。程序设计时需注意,为了防止处理冲突,在对数据缓冲器的读、写过程中,要将中断关闭,避免错误产生,从而提高程序的可靠性。硬件设计 AVR主控电路原理图LED控制电路原理图软件设计//目标系统:基于AVR单片机//应用软件:ICCAVR/*01010101010101010101010101010101010101010101010101010101010101010101-

3、---------------------------------------------------------------------实验内容:使用USART的发送中断功能,并使用缓冲解决高速AVR与低速串口之间的矛盾----------------------------------------------------------------------硬件连接:将PB口的LED指示灯使能开关切换到"ON"状态。---------------------------------------------------------------------

4、-注意事项:(1)若有加载库程序,请将光盘根目录下的“库程序”下的“ICC_H”文件夹拷到D盘(2)请详细阅读:光盘根目录下的“产品资料开发板实验板SMK系列SMK1632说明资料”----------------------------------------------------------------------10101010101010101010101010101010101010101010101010101010101010101010*/#include#include"D:ICC_HCmmICC.H"#defin

5、eDISP_PORTPORTB#defineDISP_DDRDDRB#defineTX_BUFFER_SIZE255#defineUDR_EMPTY(1<

6、振提示说明:晶振不要买到假的,要不然,调不出来还以为电脑有鬼!输入:返回:--------------------------------------------------------------------*/voiduart0_init(void){UCSRB=0x00;//disablewhilesettingbaudrateUCSRA=0x00;//U2X=0,不加倍数率UCSRC=0x86;//8位UBRRL=47;//setbaudratelo,波特率为9.6KUBRRH=0x00;//setbaudratehiUCSRB=0x58;//发

7、送中断允许,接收缓冲自动清空,接收允许}/*--------------------------------------------------------------------程序名称:UART发送中断服务程序程序功能:注意事项:提示说明:输入:返回:--------------------------------------------------------------------*/#pragmainterrupt_handleruart0_tx_isr:14voiduart0_tx_isr(void){if(tx_counter)//如果缓冲

8、区有数据则进入发送程序{tx_counter--;UDR=tx_buffer[t

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

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

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