关于单片机串口中断的几个问题,求解答
1:这只是一部分程序,单片机串口中断程序里,TI不是要置0后才能继续发送么,为什么我不置0,仿真出来照样可以运行。2:MOVSBUF,A是在置0前还是后啊,或是无所谓。...
1:这只是一部分程序,单片机串口中断程序里,TI不是要置0后才能继续发送么,为什么我不置0,仿真出来照样可以运行。
2:MOV SBUF,A是在置0前还是后啊,或是无所谓。 展开
2:MOV SBUF,A是在置0前还是后啊,或是无所谓。 展开
3个回答
展开全部
1.TI是串口数据发送完毕的标志,同时在硬件上有引起进中断的功能。你程序里开了串口中断,在中断服务程序中又不清TI,会导致单片机反复不停地进入中断服务程序,实际导致数据根本无法正确发送。虽然你仿真可以运行,但执行的结果是不正确的。
2.MOV SBUF,A最好放在清 TI之后,因为不知你能再清TI和MOV SBUF,A插入多少指令。如果清TI和MOV SBUF,A之间执行的指令不多,那么就无所谓。但是最好养成良好的编程习惯,这样程序不容易出错。
2.MOV SBUF,A最好放在清 TI之后,因为不知你能再清TI和MOV SBUF,A插入多少指令。如果清TI和MOV SBUF,A之间执行的指令不多,那么就无所谓。但是最好养成良好的编程习惯,这样程序不容易出错。
展开全部
当定时器工作模式在模式2的时候 是自动重装的,所以定时器不用管他
TI只是提醒你,数据已经发完了,只要你往SBUF里面放数据,就会发出数据
这个程序有很多问题,建议你不要写这么长,否则你都不知道问题出在哪里!
TI只是提醒你,数据已经发完了,只要你往SBUF里面放数据,就会发出数据
这个程序有很多问题,建议你不要写这么长,否则你都不知道问题出在哪里!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
每次通过MOV SBUF,A发送一个字节到串口缓冲区后,如果延时足够时间(CALL DELAY),串口已经把那个字节数据发送出去,就可以直接再用MOV SBUF,A发送下一个字节,不用理睬TI标志。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询