|
請(qǐng)教一個(gè)簡(jiǎn)單的串口發(fā)送問(wèn)題,無(wú)關(guān)的語(yǔ)句沒(méi)有寫(xiě)。
unsigned char i;
unsigned char a[9]={1,2,3,4,5,6,7,8,9};
SCON=0X40;
TMOD=0X20;
TH1=0xfd;//@11.0592MHz,波特率9600
TL1=0xfd;
delay();
TR1=1;//啟動(dòng)發(fā)送
for(i=0;i<9;i++)
{ SBUF=a[ i][ i];
while(TI==0)//開(kāi)始檢測(cè)TI是否為零,表示未完成發(fā)送,等待,直到為1,跳出while循環(huán)
;//這2行抄教材的,感覺(jué)不太對(duì),因?yàn)闆](méi)有發(fā)送完成時(shí),TI也為0
TI=0; if(i==8)
TR1=0;
}
問(wèn)題1:第一次循環(huán),i=0,將數(shù)組的第一個(gè)元素賦值給SBUF,開(kāi)始發(fā)送,然后等待發(fā)送完成,i++,進(jìn)行第二次for循環(huán)。最后一次for循環(huán),關(guān)閉計(jì)時(shí)器停止發(fā)送,整個(gè)程序作用是發(fā)送一遍01~09給計(jì)算機(jī)串口助手,F(xiàn)在是不停的發(fā)送01~09,i==8的語(yǔ)句不起作用,請(qǐng)問(wèn)是為什么???
問(wèn)題2:SBUF未賦值前內(nèi)容未定,是否應(yīng)該先賦值,再啟動(dòng)定時(shí)器,還是像上述程序一樣先啟動(dòng)后賦值也可以?
|
|