您的位置 首页 解答

51单片机与PC机的串口通讯规划

51单片机与PC机的串口通讯设计-#include

#defineucharunsignedchar

#defineSLAVE0xF1// 单片机 地址

#defineBN10//传送一次的字节数

ucharidatardata[10];

ucharidatatdata[10]={“abcdefghij”};

ucharreceive(ucharaddrs);

charsend();

voidmain(void)

#include

#defineucharunsignedchar

#defineSLAVE0xF1// 单片机 地址

#defineBN10//传送一次的字节数

ucharidatardata[10];

ucharidatatdata[10]={“abcdefghij”};

ucharreceive(ucharaddrs);

charsend();

voidmain(void)

51单片机与PC机的串口通讯规划

{

uchari;

for(i=0;i《10;i++)

TMOD=0x20;//定时器T1界说为形式2

TL1=0xE6;TH1=0xE6;//置初值

PCON=0x00;

TR1=1;

SCON=0xE0;//设置串行口操控字,方法3,答应接纳

receive(SLAVE);//接纳数据函数

send();//发送数据函数

}

voiderror(void)

{

SBUF=0xFF;//发给PC机数据犯错标志

while(TI!=1);//等候发送完

TI=0;

}

ucharreceive(ucharaddrs)

{uchari,p;

while(1)

{

while(RI!=1);//等候PC机的联络信号

RI=0;

if(SBUF!=addrs)

error();//若地址犯错,发犯错标志

else

{

TB8=0;//清地址标志位,预备接纳数据

SBUF=0x00;//发约好代码00H,阐明地址正确

while(TI!=1);TI=0;

while(RI!=1);RI=0;

{

while(1)

{p=0;

for(i=0;i{

while(RI!=1);RI=0;

rdata[i]=SBUF;// 单片机 接纳数据

p=p+rdata[i];

}

while(RI==0);RI=0;

if(SBUF==p)

{SBUF=0x00;//校验和相同,发0x00给PC机

while(TI!=1);TI=0;

}

else

{SBUF=0xFF;//校验和不同,发0xFF给PC机

while(TI!=1);TI=0;

}

}

TB8=1;//重置地址标志位

return(0);

}

}

}

}

charsend()// 单片机 发送数据函数

{

uchari,p;

do{

p=0;//清校验和

for(i=0;i{SBUF=tdata[i];//发送数据

p=p+tdata;//核算校验和

while(TI!=1);TI=0;

}

SBUF=p;//发送校验和给PC机

while(TI!=1);TI=0;

while(RI!=1);RI=0;

}while(SBUF!=0);//PC机接纳不正确, 单片机 从头发送

TB8=1;//重置地址标志位

return(0);

}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/jieda/345100.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部