关于单片机串口中断的几个问题,求解答

1:这只是一部分程序,单片机串口中断程序里,TI不是要置0后才能继续发送么,为什么我不置0,仿真出来照样可以运行。2:MOVSBUF,A是在置0前还是后啊,或是无所谓。... 1:这只是一部分程序,单片机串口中断程序里,TI不是要置0后才能继续发送么,为什么我不置0,仿真出来照样可以运行。
2:MOV SBUF,A是在置0前还是后啊,或是无所谓。
展开
 我来答
七彩镜
2013-09-11 · TA获得超过1127个赞
知道小有建树答主
回答量:273
采纳率:0%
帮助的人:207万
展开全部
1.TI是串口数据发送完毕的标志,同时在硬件上有引起进中断的功能。你程序里开了串口中断,在中断服务程序中又不清TI,会导致单片机反复不停地进入中断服务程序,实际导致数据根本无法正确发送。虽然你仿真可以运行,但执行的结果是不正确的。
2.MOV SBUF,A最好放在清 TI之后,因为不知你能再清TI和MOV SBUF,A插入多少指令。如果清TI和MOV SBUF,A之间执行的指令不多,那么就无所谓。但是最好养成良好的编程习惯,这样程序不容易出错。
yockhu498cc
2013-09-10 · TA获得超过131个赞
知道答主
回答量:50
采纳率:0%
帮助的人:32.5万
展开全部
当定时器工作模式在模式2的时候 是自动重装的,所以定时器不用管他

TI只是提醒你,数据已经发完了,只要你往SBUF里面放数据,就会发出数据

这个程序有很多问题,建议你不要写这么长,否则你都不知道问题出在哪里!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
he_123456
2013-09-10 · TA获得超过2891个赞
知道大有可为答主
回答量:3162
采纳率:58%
帮助的人:1311万
展开全部
每次通过MOV SBUF,A发送一个字节到串口缓冲区后,如果延时足够时间(CALL DELAY),串口已经把那个字节数据发送出去,就可以直接再用MOV SBUF,A发送下一个字节,不用理睬TI标志。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式