
求助单片机C语言编程的一个串行中断问题!
在一个中断子程序里面再次发生这个中断,算怎么回事?例如,在一个串行接收中断中(RI=1)在这个中断子程序里,又出现了TI=1的串行发送中断,程序会怎么运行?我想编一个单片...
在一个中断子程序里面再次发生这个中断,算怎么回事?
例如,在一个串行接收中断中(RI=1)在这个中断子程序里,又出现了TI=1的串行发送中断,程序会怎么运行?
我想编一个单片机的中断子程序,功能是首先以中断的方式接收到上位机指令,判断是什么指令(2中种指令,发送和接收数据),然后等待接收数据,或者发送给上位单片机数据,请给个思路吧!不胜感激! 展开
例如,在一个串行接收中断中(RI=1)在这个中断子程序里,又出现了TI=1的串行发送中断,程序会怎么运行?
我想编一个单片机的中断子程序,功能是首先以中断的方式接收到上位机指令,判断是什么指令(2中种指令,发送和接收数据),然后等待接收数据,或者发送给上位单片机数据,请给个思路吧!不胜感激! 展开
展开全部
第一种情况完全可以避免使用,中断程序中完成接收,可以在其他子程序未必是中断中实现发送,因为串行通信的中断是硬件中断其实现机制非常严格,而且这种在接收中断中实现发送的中断也是不合常规逻辑的;
完全可以定义一个变量在接受中断中将命令写进去,中断返回后,添加子程序实现命令的判断,分别实现查询发送和接受中断,此时的接收中断也就是PC机通信时使用的中断服务;
完全可以定义一个变量在接受中断中将命令写进去,中断返回后,添加子程序实现命令的判断,分别实现查询发送和接受中断,此时的接收中断也就是PC机通信时使用的中断服务;
展开全部
51单片机在中断过程中,是不会响应同一级别的中断申请的。
只有在执行了RETI,退出中断之后,才会响应后来的中断申请。
在串行接收中断中,应有两个分支程序(RI=1、TI=1),每次进入这个中断子程序里,只是执行一种分支。
如果又出现了TI=1的事件,只有等到退出后,才会重新进入这个中断子程序里,执行另一种分支。
只有在执行了RETI,退出中断之后,才会响应后来的中断申请。
在串行接收中断中,应有两个分支程序(RI=1、TI=1),每次进入这个中断子程序里,只是执行一种分支。
如果又出现了TI=1的事件,只有等到退出后,才会重新进入这个中断子程序里,执行另一种分支。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
强烈建议把 发送放到主循环中。
中断程序只是把设置下 现在的任务是接受还是发送。
如unsigned char currTaskFlg;
当要进行发送的时候,在中断程序中currTaskFlg=1
主循环读取这个标志位,来进行具体的发送工作。
中断程序只是把设置下 现在的任务是接受还是发送。
如unsigned char currTaskFlg;
当要进行发送的时候,在中断程序中currTaskFlg=1
主循环读取这个标志位,来进行具体的发送工作。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你出现了发送中断,就说明你往发送缓冲区填数据了啊。
思路很简单,接受时,分析命令,然后置相应的标记。推出中断。在主循环里处理命令,然后根据分支去做相应动作。
思路很简单,接受时,分析命令,然后置相应的标记。推出中断。在主循环里处理命令,然后根据分支去做相应动作。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询