51单片机学习笔记:串口接收和发送数据
扫描二维码
随时随地手机看文章
芯片STC89C52RC
在PC端向单片机发送任意数据后, 单片机向PC端发送4行文本,
由于在windos下,回车换行用rn
C代码
#include
#include"MY51.h"
voidinitSer();//串口初始化
ucharsendFlag=0;//未发送数据时
ucharreceFlag=0;//未接受到数据时
codeucharTEXT0[]="****************************rn";//rn是回车换行
codeucharTEXT1[]="单片机串口通讯测试rn";
codeucharTEXT2[]="http://xouou.iteye.comrn";
codeucharTEXT3[]="****************************rnrn";//回车换行并空1行
voidsendChar(ucharsendValue);//发送一字节数据
voidsendAll(uchar*pValue);//发送一组数据
voidmain(void)
{
initSer();
while(1)
{
while(receFlag)//单片机串口收到任意数据后,开始向PC发送数据
{
sendAll(TEXT0);//发送数据
sendAll(TEXT1);
sendAll(TEXT2);
sendAll(TEXT3);
receFlag=0;//发完了清标志
}
}
}
voidserInt()interrupt4//中断函数
{
if(RI)//如果收到任意数据
{
RI=0;
P1=SBUF;//数据的变化让led灯直观反应出来
receFlag=1;//修改接受标志,便于主函数进入while中发数据
}
if(TI)
{
TI=0;//发送完一个数据
sendFlag=0;//清标志位
}
}
voidsendChar(ucharValue)//发送一个字节数据
{
SBUF=Value;
sendFlag=1;//设置发送标志位,发一字节就置位
while(sendFlag);//直到发完数据,将sendFlag清零后,才退出sendChar函数
}
voidsendAll(uchar*pValue)//发送一组数据
{
while((*pValue)!='