完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 记忆深林 于 2016-4-26 13:43 编辑
在网上找的多机通信的程序,但是好像不正确,我自己又改了改,又加了显示,但是还是仿真不成功,显示接收的数据总是0,不知怎么回事?显示程序是没问题的。自己有改了改,把串口的工作方式给为2,结果LCD就显示数据了,但是显示的数据不正确,而且不是按照我要求的格式显示的,是不是在接收数据的时候出错的?大家给看看,,谢谢啦 主机程序 #include #include #define unit unsigned int #define uchar unsigned char #define addr1 1 //从机1地址 #define addr2 2 //从机2地址 uchar Rec[5]; //接收数据缓存区 uchar point; //数据指针 void Uart_Init(void) { TMOD=0x20; //定时器T1使用工作方式2 TH1=0xfd; TL1=0xfd; TR1=1; //开始计时 PCON=0x80; //SMOD=1; SCON=0x90; //工作方式3,9位数据位,波特率9600bit/s,允许接收 ti=1; RI=1; } void Re_Data() //接收设备数据程序 { uchar buf; if(RI) { RI=0; buf=SBUF; if(point==0) { if(buf==0xfe) { Rec[point++]=buf; } else point=0; } else if(point>0&&point<5) { Rec[point++]=buf; } else if(point==5) { if(buf==0xef) { Rec[point++]=buf; } else point=0; } else point=0; } } void send_addr(uchar addr) //发送地址 { TB8=1; //发送地址帧 SBUF=addr; //发送地址 while(!TI); //等待发送完毕 TI=0; //软件复位TI } void main() { LcdInitiate(); //显示初始化 Uart_Init(); //串口初始化 while(1) { send_addr(addr1); //向从机1发地址 Re_Data(); //接收从机1发送的数据 LCD_dis1(); //显示数据 send_addr(addr2); //向从机2发地址 Re_Data(); LCD_dis2(); } } 从机程序 #include #include #define unit unsigned int #define uchar unsigned char #define addr 1 //从机1地址 uchar flag=1; uchar buf[5]; //从机数据暂存区 void Uart_Init(void) { TMOD=0x20; //定时器T1使用工作方式2 TH1=0xfd; TH0=0xfd; TR1=1; //开始计时 PCON=0x80; //SMOD=1; SCON=0x90; //工作方式3,9位数据位,波特率9600bit/s,允许接收 TI=1; RI=1; } void send(uchar* Data) //发送数据程序 { uchar i; for(i=0;i<5;i++) { SBUF= *(i+Data); while(!TI); //等待发送完毕 TI=0; } } void main() { uchar tem; Uart_Init(); LcdInitiate(); while(1) { buf[0]=0xfe; buf[1]=addr; buf[2]=flag; buf[3]=A_D(); buf[4]=0xef; SM2=1; //只接收地址帧 //如果接收到的地址帧不是本机地址,则继续等待 while(tem!=addr) { while(!RI); RI=0; tem=SBUF; } //如果是本机地址,发送应答信号,并做好接受数据的准备 TB8=0; //主机不检测该位 send(buf); } }
|
|
相关推荐
4个回答
|
|
各位大侠给点指点呗
|
|
|
|
回帖奖励 +2 分积分
帮你顶一下
|
|
|
|
回帖奖励 +2 分积分
给你顶上去,让大神看
|
|
|
|
顶顶顶,楼主加油
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-spi编程示例之spi编写程序
677 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第三十七章 image图像对比实验
660 浏览 0 评论
791 浏览 1 评论
573 浏览 0 评论
关于RT-Thread studio添加freemodbus控件失败的问题
946 浏览 1 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11657 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-11 05:06 , Processed in 0.528669 second(s), Total 75, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号