当前位置: 代码迷 >> 单片机 >> 关于51单片机串行中断的初学者级有关问题
  详细解决方案

关于51单片机串行中断的初学者级有关问题

热度:22   发布时间:2016-04-28 15:29:23.0
关于51单片机串行中断的菜鸟级问题!
中断标志TI和RI需要软件置0,但在进行怎样的操作后会被置1呢?

还有就是串行通信的两台机子波特率是否要相同?

谢谢!!

------解决方案--------------------
在发送成功 或接受成功后TI或 RI会被置1
波特率必须相同
------解决方案--------------------
是的,这个是硬件自动置位的。
波特率必需相同才能保证正常通信,你用什么速度发,我就用什么样的速度接收。
------解决方案--------------------
波特率可以不完全相同,有个误差范围,一般不超过3%的,因为你的使用的晶振加上一些分频后,可能不会刚好是常见的9600的整数倍。
 中断标志一般都是中断触发了,就由硬件置1啊,如果执行完中断服务,自然就会由硬件清零了
------解决方案--------------------
从发起MOV SBUF,#03H 到TI被置位,有个较大的时间差,依波特率大小,费时不同,超始位、8个数据位、TB8,停止位,全部完成时才置位TI,波特率越低,这个时间就越长
TI不会被硬软件自动清零,必需由软件主动清(一般在中断函数里),当收到一个串口字节时RI被硬件置位,它也不被硬件自动清零,接收数据后也必需由软件主动清零.
  相关解决方案