當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]芯片STC89C52RC在PC端向單片機(jī)發(fā)送任意數(shù)據(jù)后, 單片機(jī)向PC端發(fā)送4行文本,由于在windos下,回車換行用\\r\\nC代碼#include#include"MY51.h"voidinitSer();//串口初始化ucharsendFlag=0;//未發(fā)送數(shù)據(jù)時ucharreceFlag=0;//

芯片STC89C52RC

在PC端向單片機(jī)發(fā)送任意數(shù)據(jù)后, 單片機(jī)向PC端發(fā)送4行文本,

由于在windos下,回車換行用rn


C代碼

#include

#include"MY51.h"

voidinitSer();//串口初始化

ucharsendFlag=0;//未發(fā)送數(shù)據(jù)時

ucharreceFlag=0;//未接受到數(shù)據(jù)時

codeucharTEXT0[]="****************************rn";//rn是回車換行

codeucharTEXT1[]="單片機(jī)串口通訊測試rn";

codeucharTEXT2[]="http://xouou.iteye.comrn";

codeucharTEXT3[]="****************************rnrn";//回車換行并空1行

voidsendChar(ucharsendValue);//發(fā)送一字節(jié)數(shù)據(jù)

voidsendAll(uchar*pValue);//發(fā)送一組數(shù)據(jù)

voidmain(void)

{

initSer();

while(1)

{

while(receFlag)//單片機(jī)串口收到任意數(shù)據(jù)后,開始向PC發(fā)送數(shù)據(jù)

{

sendAll(TEXT0);//發(fā)送數(shù)據(jù)

sendAll(TEXT1);

sendAll(TEXT2);

sendAll(TEXT3);

receFlag=0;//發(fā)完了清標(biāo)志

}

}

}

voidserInt()interrupt4//中斷函數(shù)

{

if(RI)//如果收到任意數(shù)據(jù)

{

RI=0;

P1=SBUF;//數(shù)據(jù)的變化讓led燈直觀反應(yīng)出來

receFlag=1;//修改接受標(biāo)志,便于主函數(shù)進(jìn)入while中發(fā)數(shù)據(jù)

}

if(TI)

{

TI=0;//發(fā)送完一個數(shù)據(jù)

sendFlag=0;//清標(biāo)志位

}

}

voidsendChar(ucharValue)//發(fā)送一個字節(jié)數(shù)據(jù)

{

SBUF=Value;

sendFlag=1;//設(shè)置發(fā)送標(biāo)志位,發(fā)一字節(jié)就置位

while(sendFlag);//直到發(fā)完數(shù)據(jù),將sendFlag清零后,才退出sendChar函數(shù)

}

voidsendAll(uchar*pValue)//發(fā)送一組數(shù)據(jù)

{

while((*pValue)!='