各位大虾,小弟我第一次使用AVR的UDR数据接收和发送的中断功能。
我发现有个这样的问题:我把接收和发送的中断都使能了。当我发送数据时有UDR=0x55;我做测试的时候发现发送数据时,程序也会跑到接收中断里去的。我看了下MEGA32的说明。对它们的理解是这样的:发送结束中断是:当UDR中的数据被传输完成,并没有新的数据输入时就发生。接收中断是:当UDR中有数据没有被读出时就会产生接收中断。当我发送数据时UDR=0X55;数据发送完了所以就会进入发送完中断,但UDR=0X55;这句使得了UDR有数据所以程序又会跑到接收中断中。不知道我的理解对吗?他们其实是同一个物理地址同一个空间的。(这有区别与51的同一个地址的不同空间)是不是这样。如果是的话大虾们是怎么处理他们的关系的呢?只能让他们有一个工作在中断状态吗?就好像接收完数据的时,在发送数据出去的时候要屏蔽接收中断,等发送完了在开接收中断是这样处理的吗?如果是这样的话我感觉怎么还没51的方便呢这个功能。不知道我这样理解对吗? |