打印

我对MEGA32的UDR的理解

[复制链接]
3145|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cainiao402|  楼主 | 2009-12-3 23:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位大虾,小弟我第一次使用AVR的UDR数据接收和发送的中断功能。
我发现有个这样的问题:我把接收和发送的中断都使能了。当我发送数据时有UDR=0x55;我做测试的时候发现发送数据时,程序也会跑到接收中断里去的。我看了下MEGA32的说明。对它们的理解是这样的:发送结束中断是:当UDR中的数据被传输完成,并没有新的数据输入时就发生。接收中断是:当UDR中有数据没有被读出时就会产生接收中断。当我发送数据时UDR=0X55;数据发送完了所以就会进入发送完中断,但UDR=0X55;这句使得了UDR有数据所以程序又会跑到接收中断中。不知道我的理解对吗?他们其实是同一个物理地址同一个空间的。(这有区别与51的同一个地址的不同空间)是不是这样。如果是的话大虾们是怎么处理他们的关系的呢?只能让他们有一个工作在中断状态吗?就好像接收完数据的时,在发送数据出去的时候要屏蔽接收中断,等发送完了在开接收中断是这样处理的吗?如果是这样的话我感觉怎么还没51的方便呢这个功能。不知道我这样理解对吗?

相关帖子

沙发
desert_hawk| | 2009-12-4 08:14 | 只看该作者
AVR的接收UDR和发送UDR跟51的差不多,都是地址相同寄存器不同。只发送数据肯定不会引起接收中断。另外,发送中断分两个,一是TXC标志引起的,代表一个完整的字符发送完成,另一个是UDRE标志引起的,代表写入发送UDR的数据已经被移到发送移位寄存器中,发送UDR可以输入新的数据了。

使用特权

评论回复
板凳
cainiao402|  楼主 | 2009-12-4 17:24 | 只看该作者
楼上是正确的。我的问题是硬件造成的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

99

主题

238

帖子

2

粉丝