51单片机串口通信,下面的何时发生中断?为什么要加一个flag=1?有什么用?最后还有flag置位0

是不是不执行中断4,也就没法将flag置1,那么if(flag=1)后面的就没法执行

这里我给你解释一下 flag = 1;的作用, 比如串口调试助手,发送数据单片机自动开启接收中断,接收RI = 1; 当单片机接收数据完成后,必须软件进行清零RI = 0,说明接收结束,

至于flag = 1; 是一个标志,是用来切换接收和发送,如果不用flag 的话单片机只能接收,程序里面单片机接收数据完成后。软件关闭接收中断,用flag = 1; 来切换到发送状态,单片机开发发送数据,数据发送结束后,关闭flag = 0;标志,进入接收状态,这时候单片机就不能发送数据,程序里面接收一个字节数据,然后再发送一个字节数据。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-01-10
你的问题补充就是你自己要的问题答案, 就是这样子的。如果不接收到串口数据,就不会进入串口中断, 不进入串口中断flag就不会置1, flag不置1,就不执行你说的if后面的语句,就不会向电脑发送I recive,thanks
第2个回答  2013-01-09
flag是为了判定接受到了数据。
相似回答