modbus通信程序中如何用串口中断实现数据的发送?
用串口中断接收比较好理解,只要接收缓存接收到数据,标志位就会置位,然后进入中断服务程序读取接收缓存中的数据,但是在发送时,应该是在数据发送出去之后发送标志位才会置位(我是...
用串口中断接收比较好理解,只要接收缓存接收到数据,标志位就会置位,然后进入中断服务程序读取接收缓存中的数据,但是在发送时,应该是在数据发送出去之后发送标志位才会置位(我是msp430单片机),那么此时等数据发送出去之后进入中断又有什么意义呢?到底如何通过串口中断来发送数据呢?
应该也可以在主程序中查询标志位来发送吧? 展开
应该也可以在主程序中查询标志位来发送吧? 展开
展开全部
你想解决的就是串口的收发问题是吗?发送时一般用不到中断服务程序,但是因为串口中断是开启的,所以每次发送数据都会硬件将发送标志位TI置1,从而进入串口中断。我用宏晶的单片机,是要求TI位要软件清零的,所以TI位要在中断程序中清下0。
追问
能不能直接在发送程序中将标志位清零?即向发送缓存写完数据后马上清零?
还有想问下一般的modbus通信时选用无校验方式,也就是说在这种情况下我的通信程序中不用编写奇偶校验程序了?
追答
如果不想在终端服务程序中把TI置0,可以尝试以下写法(我一直这么用,挺好用的..):
void RS232_TXD(uint8 stxbuf)//串口单字节发送函数
{
SBUF=stxbuf;
while(!TI)
{}
TI=0;
}
modbus我用的不多,网上看了下,无校验方式应该是不做奇偶校验,不用你自己写奇偶校验程序。
2012-12-14
展开全部
建议 去 我的领地 5d6d 的 proteus 论坛看看
那里有很多 单片机仿真实例,包括仿真图 和 源码
搜 5d6d 和 proteus 2个关键词
那里有很多 单片机仿真实例,包括仿真图 和 源码
搜 5d6d 和 proteus 2个关键词
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询