单片机串行通信时可以不启用串口中断吗?

 我来答
匿名用户
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)我有些日子没搞这方面的了,有些具体的设置参数估计只有靠你查书了,我说这些是怕你连大方向都搞错了.从你的程序看出,你估计刚刚接触,先还是找写基本资料多研究研究吧.
安东尼的大太阳
2019-06-05
知道答主
回答量:1
采纳率:0%
帮助的人:715
展开全部
可以啊,不一定要进中断的,中断只是一种方式而已,也可以用查询的方式来进行收发。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
圣诞男孩21
2018-03-19
知道答主
回答量:14
采纳率:100%
帮助的人:8985
展开全部

请先给出明确答复:可以,但是没人那么用,

解释原因:

  1.  串口是用来通信的,双方需要协议一样的发送(接收)数据,波特率就相当于协议了,通信双方相同的波特率(位每秒 bps),接收方就可以翻译发出方的数据。波特率就是由定时器产生的,
  2.  不使用定时器产生波特率,你可以使用串口中断,(主程序中)发送数据--等待中断--发送成功产生中断--进入中断清除TI,再次发送--中断返回---等待中断---发送成功产生中断--进入中断清除TI,再次发送。。。。 自己手动操作串口
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-06-06
展开全部
死循环等待应该也可以 不过这样就啥也干不了了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式