#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar b[2];
uchar slave=0x01;
uchar slave1=0x02;
void master(uchar addrs,uchar comnd);
void error(void) //发送错误
{
SBUF=0xff;
while(!TI);
TI=0;
}
void main(void)
{
SCON=0xd0; //工作方式三
TMOD=0x20;
TH1=0xfd; //设置波特率
TL1=0xfd;
TR1=1;
TB8=1;
P1=0xff;
P2=0xff;
while(1)
{
master(slave,0x01);
master(slave,0x02);
master(slave1,0x01);
master(slave1,0x02);
}
}
void master(uchar addrs,uchar comnd)
{
// uchar a; //命令的选择
uchar i;
SBUF=addrs; //发送子机地址
while(!TI);TI=0;
while(!RI);RI=0;
if(SBUF==addrs) //如果SBUF接收到的是从机回应的地址
{
TB8=0; //发送数据
SBUF=comnd;
while(!TI);TI=0;
while(!RI);RI=0;//等待从机返回刚才发送的命令
if(SBUF!=0x80)//从机返回值非0x80通知主机刚才发送命令有效;
{
if(SBUF==0x01) //命令子机接收主机发送的数据
{
do{
for(i=0;i<2;i++)
{
if(addrs==0x01){SBUF=P1;}//子机1的地址
if(addrs==0x02){SBUF=P2;}//子机2的地址
while(!TI);TI=0;
} //连续发送二次,子机是否两二次接收的数据相同,并作出答复
while(!RI);RI=0;}while(SBUF!=0); //直到发送正确为止
}
if(SBUF==0x02) //命令子机发送接收主机的数据,进一步确定传输的正确
{
while(1)
{
for(i=0;i<2;i++)
{while(!RI);RI=0;
b[i]=SBUF;
} //接收两个数相等时,发送0x00给子机
if(b[0]==b[1]){SBUF=0x00;while(!TI);TI=0;break;}
else {SBUF=0x0f;while(!TI);TI=0;}
}
}
}
else//从机返回0x80通知主机刚才发送非法命令,原因主机命令发送时TB8=1;
{error();
}
}
else//否则 发送错误
{error();
}
TB8=1;//所有数据发送完毕
}
没有合适的资源?快使用搜索试试~ 我知道了~
单片机串行通讯proteus仿真大全(C语言)
共94个文件
bak:12个
hex:8个
lst:8个
5星 · 超过95%的资源 需积分: 9 56 下载量 45 浏览量
2008-12-04
21:02:13
上传
评论
收藏 142KB RAR 举报
温馨提示
51单片机串行通讯典型的几个实验,包括单工发送,单片机跟PC机通信,多机通信,方式1自发自收,双工传送,用C语言写的,配有proteus的仿真.
资源推荐
资源详情
资源评论
收起资源包目录
.rar (94个子文件)
串行口通信
方式1自发自收
tongxin1.PWI 742B
chunhang 2KB
chunhang.c 427B
chunhang.OBJ 2KB
tongxin1.DSN 28KB
chunhang.Opt 1021B
chunhang.hex 347B
chunhang.Uv2 2KB
chunhang.LST 2KB
chunhang.M51 4KB
chunhang.plg 202B
chunhang_Uv2.Bak 0B
多机通信
主机.Uv2 2KB
主机.OBJ 4KB
子机1.OBJ 4KB
子机.M51 6KB
主机.Opt 1KB
主机 4KB
子机.c 2KB
子机.hex 1KB
子机1.Uv2 2KB
主机_Opt.Bak 1KB
子机_Opt.Bak 1016B
子机1.c 2KB
主机_Uv2.Bak 2KB
主机.plg 1KB
duoji.DSN 88KB
主机.LST 4KB
子机.OBJ 4KB
子机 4KB
Last Loaded duoji.DBK 85KB
子机1.LST 4KB
主机.c 2KB
子机.plg 4KB
子机1.M51 6KB
子机.LST 4KB
子机1_Uv2.Bak 0B
子机.Uv2 2KB
主机.M51 6KB
子机1 4KB
子机1.Opt 1017B
duoji.PWI 1KB
子机1.hex 1KB
子机1_Opt.Bak 1015B
子机.Opt 1015B
主机.hex 1KB
子机1.plg 838B
子机_Uv2.Bak 2KB
单片机跟PC机通信
tongxin.hex 359B
tongxin.OBJ 2KB
tongxin.Opt 1021B
tongxin.c 414B
tongxin.M51 4KB
tongxin.Uv2 2KB
tongxin.LST 2KB
tongxin_Uv2.Bak 0B
tongxin.plg 1KB
tongxin 2KB
单工发送
fasong.Opt 1018B
fasong.Uv2 2KB
fasong.OBJ 2KB
fasong.c 236B
jieshou.LST 1KB
jieshou.c 218B
dangong.PWI 1KB
fasong.LST 1KB
fasong_Uv2.Bak 0B
jieshou.M51 3KB
dangong.DSN 77KB
fasong.M51 3KB
jieshou.hex 147B
fasong 2KB
jieshou.plg 1KB
jieshou_Uv2.Bak 0B
jieshou.OBJ 1KB
jieshou.Opt 1021B
fasong.hex 153B
jieshou 2KB
fasong.plg 169B
jieshou.Uv2 2KB
双工传送
shuanggong.Uv2 2KB
shuanggong.OBJ 2KB
shuanggong.Opt 1KB
Last Loaded shuang.DBK 89KB
shuanggong 2KB
shuanggong_Opt.Bak 1020B
shuanggong_Uv2.Bak 0B
shuanggong.plg 173B
shuanggong.c 424B
shuanggong.M51 4KB
shuang.DSN 89KB
shuanggong.hex 226B
shuang.PWI 1KB
shuanggong.LST 2KB
共 94 条
- 1
资源评论
- yyccyyc2012-10-15不错,适合初学者学习。
- thegod4562011-12-07不错的东西,就是里面PC机与单片机通信没有仿真文件
- ivy2574082012-04-01挺好的,适合初学者。自己已经动手改进程序了。
dreamcan
- 粉丝: 1
- 资源: 11
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功