程序开始是
uchar idata trdata1[] = { 'W','E','L','C','O','M','E',' ','T','O',' ','C','H','I','N','A','!',0x0d,0x0a,0x00};//字符串
uchar i =0
然后中断函数中
{ uchar Tcv = 0;
if(RI) { ...}
else {
TI = 0;
Tcv = trdata1[i]; //取来待发字符
if (Tcv != 0) {SBUF = Tcv; i++;}//不是0就发送
}
}
我想问的问题是(集中在串口中断那里)
1)当发送的时候,单片机不是一次发送一帧字符么,为什么还要用 i 变量逐个去发送?
2)另外,当Tcv =‘W',判断if后, SBUF='W’,i=1,那么是不是不断执行if语句?
数据都是一个一个字节发送的,一帧数据只是每个字节之间时间间隔很短而已。
Tcv=‘w’后知道 tcv==0,才停止发送。数组的最后的值0x00是停止条件。