求助单片机C语言编程的一个串行中断问题!

在一个中断子程序里面再次发生这个中断,算怎么回事?例如,在一个串行接收中断中(RI=1)在这个中断子程序里,又出现了TI=1的串行发送中断,程序会怎么运行?我想编一个单片... 在一个中断子程序里面再次发生这个中断,算怎么回事?
例如,在一个串行接收中断中(RI=1)在这个中断子程序里,又出现了TI=1的串行发送中断,程序会怎么运行?
我想编一个单片机的中断子程序,功能是首先以中断的方式接收到上位机指令,判断是什么指令(2中种指令,发送和接收数据),然后等待接收数据,或者发送给上位单片机数据,请给个思路吧!不胜感激!
展开
 我来答
cuibingbo
2010-05-27 · TA获得超过230个赞
知道答主
回答量:158
采纳率:0%
帮助的人:173万
展开全部
第一种情况完全可以避免使用,中断程序中完成接收,可以在其他子程序未必是中断中实现发送,因为串行通信的中断是硬件中断其实现机制非常严格,而且这种在接收中断中实现发送的中断也是不合常规逻辑的;
完全可以定义一个变量在接受中断中将命令写进去,中断返回后,添加子程序实现命令的判断,分别实现查询发送和接受中断,此时的接收中断也就是PC机通信时使用的中断服务;
做而论道
高能答主

2010-05-27 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3.1万
采纳率:82%
帮助的人:8435万
展开全部
51单片机在中断过程中,是不会响应同一级别的中断申请的。
只有在执行了RETI,退出中断之后,才会响应后来的中断申请。

在串行接收中断中,应有两个分支程序(RI=1、TI=1),每次进入这个中断子程序里,只是执行一种分支。
如果又出现了TI=1的事件,只有等到退出后,才会重新进入这个中断子程序里,执行另一种分支。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
huangdl123
2010-05-27 · TA获得超过476个赞
知道小有建树答主
回答量:638
采纳率:0%
帮助的人:463万
展开全部
强烈建议把 发送放到主循环中。
中断程序只是把设置下 现在的任务是接受还是发送。
如unsigned char currTaskFlg;
当要进行发送的时候,在中断程序中currTaskFlg=1
主循环读取这个标志位,来进行具体的发送工作。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ak47_b44
2010-05-27 · TA获得超过252个赞
知道答主
回答量:193
采纳率:33%
帮助的人:56.5万
展开全部
你出现了发送中断,就说明你往发送缓冲区填数据了啊。
思路很简单,接受时,分析命令,然后置相应的标记。推出中断。在主循环里处理命令,然后根据分支去做相应动作。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式