while(!TI);的作用就是等待TI变为1,也就是等待SBUF中的值通过串口发送完成。
如果没有while(!TI);
for(i=0;i < 6;i++)
{
SBUF = a[i];
}
那在上述代码中,从i=0起,SBUF=a[0],单片机开始传送数据,(传送需要时间),还没传送完成,SBUF马上又被赋值为a[1],,单片机又开始了一次传送,还没传送完成,SBUF马上又被赋值为a[2],,..直到 i 达到最后一个值,sbuf=a[5]可以完整的传送,然后跳出for循环
先看下电路,看看有没别的影响,可能电流过大,引脚烧了,你可以在这个端口串一个100欧左右的电阻输出,再接个下拉电阻看看(4.7-10k)
发送使用终中断,而赋值却直接用 for,你一口气 放进去6个,当然只能发最后一个了