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

#include
#defineucharunsignedchar
#defineslave0xf1// 单片机 地址
#definebn10//传送一次的字节数
ucharidatardata[10];
ucharidatatdata[10]={“abcdefghij”};
ucharreceive(ucharaddrs);
charsend();
voidmain(void)
{
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);
}

Cadence 推出新一代可扩展 Tensilica 处理器平台,推动边缘普适智能取得新进展
海信家电拟斥资214亿日元认购三电控股股份
你知道哪些致命性的网络安全错误
AMD下下代APU曝光 工艺升级7nm+代号Cézanne
在高中频ADC应用中,如何改善增益平坦度同时又不影响动态性能
51单片机与PC机的串口通讯设计
银行防尾随门禁系统的功能及如何实现应用设计
iphone8发布!iPhone8、iPhone8Plus、iPhoneX齐发布,iPhone8价格很惊喜无需卖肾
海尔已经通上了智慧家庭普及的快车道
独立型储能电站在国内市场有何优势?
诺基亚808 PureView回顾,41MP的像素记录2018年才被打破
LED光源在DLP投影设备中的应用
射频无源器件的介绍和对无线通信的影响详细说明
单片机里面的寄存器简易控制教程解读
周鸿祎:纯粹的人工智能是没有商业模式的
集成电路行业知识产权现状
模式可选择的现场变送器的原理及设计
声控灯电路的原理分析
五年时间的准备 苹果3D Touch技术分析
5G网络的优势及面临的两个问题