单片机串行通信时可以不启用串口中断吗?
4个回答
2013-06-06
展开全部
几点建议:1)你先不要搞定时器,先在main()里直接不停的发送串口数据到PC,PC直接用串口助手啊,超级终端啊之类的接收,看能不能收到.2)定时器中断里,第一件该做的事情就是马上重新给th0,tl0重新给初值,还有定时器中断里不要发送串口数据,太废时间了,中断里尽量用很少的代码,或者说占时很少的代码.你实在想定时发,就定个全局变量,定时器中断响应了N次后,变量置位,然后程序里检测该位,置位一次再发一次3)for(i=500000;i>0;i--);
这句话是起不到多少延时作用的,因为i为unsigned int型,keil中这个类型最大值才65536,4)发送串口函数void SendOneByte(unsigned char c)
{
SBUF = c;
while(!TI);
TI = 0;
}这个函数是可行的,可以直接拿来用,每发送一次数据必须等待TI置位,并且这个操作必须软件完成.5)我有些日子没搞这方面的了,有些具体的设置参数估计只有靠你查书了,我说这些是怕你连大方向都搞错了.从你的程序看出,你估计刚刚接触,先还是找写基本资料多研究研究吧.
这句话是起不到多少延时作用的,因为i为unsigned int型,keil中这个类型最大值才65536,4)发送串口函数void SendOneByte(unsigned char c)
{
SBUF = c;
while(!TI);
TI = 0;
}这个函数是可行的,可以直接拿来用,每发送一次数据必须等待TI置位,并且这个操作必须软件完成.5)我有些日子没搞这方面的了,有些具体的设置参数估计只有靠你查书了,我说这些是怕你连大方向都搞错了.从你的程序看出,你估计刚刚接触,先还是找写基本资料多研究研究吧.
展开全部
可以啊,不一定要进中断的,中断只是一种方式而已,也可以用查询的方式来进行收发。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
请先给出明确答复:可以,但是没人那么用,
解释原因:
- 串口是用来通信的,双方需要协议一样的发送(接收)数据,波特率就相当于协议了,通信双方相同的波特率(位每秒 bps),接收方就可以翻译发出方的数据。波特率就是由定时器产生的,
- 不使用定时器产生波特率,你可以使用串口中断,(主程序中)发送数据--等待中断--发送成功产生中断--进入中断清除TI,再次发送--中断返回---等待中断---发送成功产生中断--进入中断清除TI,再次发送。。。。 自己手动操作串口
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-06-06
展开全部
死循环等待应该也可以 不过这样就啥也干不了了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询