芯片STC89C52RC
在PC端向單片機發(fā)送任意數據后, 單片機向PC端發(fā)送4行文本,
由于在windos下,回車換行用rn
C代碼
#include
#include"MY51.h"
voidinitSer();//串口初始化
ucharsendFlag=0;//未發(fā)送數據時
ucharreceFlag=0;//未接受到數據時
codeucharTEXT0[]="****************************rn";//rn是回車換行
codeucharTEXT1[]="單片機串口通訊測試rn";
codeucharTEXT2[]="http://xouou.iteye.comrn";
codeucharTEXT3[]="****************************rnrn";//回車換行并空1行
voidsendChar(ucharsendValue);//發(fā)送一字節(jié)數據
voidsendAll(uchar*pValue);//發(fā)送一組數據
voidmain(void)
{
initSer();
while(1)
{
while(receFlag)//單片機串口收到任意數據后,開始向PC發(fā)送數據
{
sendAll(TEXT0);//發(fā)送數據
sendAll(TEXT1);
sendAll(TEXT2);
sendAll(TEXT3);
receFlag=0;//發(fā)完了清標志
}
}
}
voidserInt()interrupt4//中斷函數
{
if(RI)//如果收到任意數據
{
RI=0;
P1=SBUF;//數據的變化讓led燈直觀反應出來
receFlag=1;//修改接受標志,便于主函數進入while中發(fā)數據
}
if(TI)
{
TI=0;//發(fā)送完一個數據
sendFlag=0;//清標志位
}
}
voidsendChar(ucharValue)//發(fā)送一個字節(jié)數據
{
SBUF=Value;
sendFlag=1;//設置發(fā)送標志位,發(fā)一字節(jié)就置位
while(sendFlag);//直到發(fā)完數據,將sendFlag清零后,才退出sendChar函數
}
voidsendAll(uchar*pValue)//發(fā)送一組數據
{
while((*pValue)!='