当前位置:首页 > 单片机 > 单片机
[导读]芯片STC89C52RC在PC端向单片机发送任意数据后, 单片机向PC端发送4行文本,由于在windos下,回车换行用\\r\\nC代码#include#include"MY51.h"voidinitSer();//串口初始化ucharsendFlag=0;//未发送数据时ucharreceFlag=0;//

芯片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)!='')//如果没有发送完毕就继续发

{

sendChar(*pValue);//发送1字节数据

pValue++;//指向下1个字节

}

}

voidinitSer()//初始化

{

//注意:刚上电时,SCON是为0的

TMOD=TMOD|0x20;//T1定时器模式,工作方式2

TH1=0Xfd;//256-(11059200/(32*12*9600))

TL1=0xfd;

SM0=0;//属于SCON寄存器

SM1=1;//串口工作方式1,10位异步,波特率可改

REN=yes;//允许串口接收

ES=open;//开串口中断

EA=open;//开总中断

TR1=start;//启动定时器

}


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭