串口中断存到数组的一半标志位错误置位

img


单片机串口中断中收到数据后按顺序存储到数组中,标志位置1后在主程序中拉高某个引脚,程序如下:
UART ISR0

if(ri==1)
{a[i]=s0buf;
i++;

if(i>=16)
{i=0;
flag=1;}

现在的问题是数据存到第八个标志位就置1了有没有大神遇到过同样的问题?

你在flag=1处加断点,程序运行到断点处,你看看i是多少
另外仔细检查有几处i值会增加的地方
你提供的代码无法分析i为什么存到第8个时标志就为1。肯定是i在某些地方被多加了