已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、多机通信原理 在多机通信中,主机必须要能对各个从机进行识别,在51系列单片机中可以通过SCON寄存器的SM2位来实现。当串口以方式2或方式3发送数据时,每一帧信息都是11位,第9位是数据可编程位,通过给TB8置1或置0来区别地址帧和数据帧,当该位为1时,发送地址帧;该位为0时,发送数据帧。 在多机通信过程中,主机先发送某一从机的地址,等待从机的应答,所有的从机接收到地址帧后与本机地址进行比较,若相同,则将SM2置0准备接收数据;若不同,则丢弃当前数据,SM2位不变。二、多机通信电路图 此处,U1作为主机,U2为从机1,U3为从机2。三、C语言程序(1)主机程序#include#include#define _SUCC_ 0x0f/数据传送成功#define _ERR_ 0xf0/数据传送失败unsigned char Table9=0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39;unsigned char Buff20; /数据缓冲区unsigned char temp=0xff;sbit KEY1=P16;sbit KEY2=P17;/unsigned char addr;/延时1ms函数void delay_1ms(unsigned int t)unsigned int x,y;for(x=t;x0;x-)for(y=110;y0;y-);/缓冲区初始化void Buff_init()unsigned char i; /将Table里的数据放到缓冲区里for(i=0;i9;i+)Buffi= Tablei;delay_1ms(100);/串口初始化函数void serial_init()TMOD=0x20;/定时器1工作于方式2TH1=0xfd;TL1=0xfd;/波特率为9600PCON=0;SCON=0xd0; /串口工作于方式3TR1=1;/开启定时器TI=0;RI=0;/发送数据函数void SEND_data(unsigned char *Buff)unsigned char i;unsigned char lenth;unsigned char check;lenth=strlen(Buff); /计算数据长度check=lenth;TI=0; /发送数据长度TB8=0; /发送数据帧SBUF=lenth;while(!TI);TI=0; for(i=0;ilenth;i+) /发送数据check=checkBuffi;TB8=0;SBUF=Buffi;while(!TI);TI=0;TB8=0; /发送校验字节SBUF=check;while(!TI);TI=0;/向指定从机地址发送数据void ADDR_data(unsigned addr)while(temp!=addr)/主机等待从机返回其地址作为应答信号TI=0;/发送从机地址TB8=1;/发送地址帧SBUF=addr;while(!TI);TI=0;RI=0;while(!RI);temp=SBUF;RI=0;temp=_ERR_;/主机等待从机数据接收成功信号while(temp!=_SUCC_)SEND_data(Buff);RI=0;while(!RI);temp=SBUF;RI=0;void main()Buff_init();serial_init();while(1)if(KEY1=0)delay_1ms(5);if(KEY1=0)while(!KEY1);ADDR_data(0x01);if(KEY2=0)delay_1ms(5);if(KEY2=0)while(!KEY2);ADDR_data(0x02);(2)从机1程序#include#include#define addr 0x01/从机1的地址#define _SUCC_ 0x0f/数据传送成功#define _ERR_ 0xf0/数据传送失败unsigned char aa=0xff;/主机与从机之间通信标志unsigned char Buff20;/数据缓冲区/串口初始化函数void serial_init()TMOD=0x20;/定时器1工作于方式2TH1=0xfd;TL1=0xfd;/波特率为9600PCON=0;SCON=0xd0; /串口工作于方式3TR1=1;/开启定时器TI=0;RI=0;/接收数据函数unsigned char RECE_data(unsigned char *Buff)unsigned char i,temp;unsigned char lenth;unsigned char check;RI=0;/接收数据长度while(!RI);if(RB8=1)/若接收到地址帧,则返回0xfereturn 0xfe;lenth=SBUF;RI=0;check=lenth;for(i=0;ilenth;i+)/接收数据while(!RI);if(RB8=1)/若接收到地址帧,则返回0xfereturn 0xfe;Buffi=SBUF;check=check(Buffi);RI=0;while(!RI);/接收校验字节if(RB8=1)/若接收到地址帧,则返回0xfereturn 0xfe;temp=SBUF;RI=0;check=tempcheck;/将从主机接收到的校验码与自己计算的校验码比对if(check!=0)/校验码不一致,表明数据接收错误,向主机发送错误信号,函数返回0xffTI=0;TB8=0;SBUF=_ERR_;while(!TI);TI=0;return 0xff;TI=0; /校验码一致,表明数据接收正确,向主机发送成功信号,函数返回0x00TB8=0;SBUF=_SUCC_;while(!TI);TI=0;return 0;void main()serial_init();while(1)SM2=1; /接收地址帧while(aa!=addr)/从机等待主机请求自己的地址RI=0;while(!RI);aa=SBUF;RI=0;TI=0;/一旦被请求,从机返回自己的地址作为应答,等待接收数据TB8=0;SBUF=addr;while(!TI);TI=0;SM2=0; /接收数据帧aa=0xff;/从机接收数据,并将数据保存到数据缓冲区while(aa=0xff)aa=RECE_data(Buff);if(aa=0xfe)continue;P1=Buff1; /查看接收到的数据(3)从机2程序#include#include#define addr 0x02/从机2的地址#define _SUCC_ 0x0f/数据传送成功#define _ERR_ 0xf0/数据传送失败unsigned char aa=0xff;/主机与从机之间通信标志unsigned char Buff20;/数据缓冲区/串口初始化函数void serial_init()TMOD=0x20;/定时器1工作于方式2TH1=0xfd;TL1=0xfd;/波特率为9600PCON=0;SCON=0xd0; /串口工作于方式3TR1=1;/开启定时器TI=0;RI=0;/接收数据函数unsigned char RECE_data(unsigned char *Buff)unsigned char i,temp;unsigned char lenth;unsigned char check;RI=0;/接收数据长度while(!RI);if(RB8=1)/若接收到地址帧,则返回0xfereturn 0xfe;lenth=SBUF;RI=0;check=lenth;for(i=0;ilenth;i+)/接收数据while(!RI);if(RB8=1)/若接收到地址帧,则返回0xfereturn 0xfe;Buffi=SBUF;check=check(Buffi);RI=0;while(!RI);/接收校验字节if(RB8=1)/若接收到地址帧,则返回0xfereturn 0xfe;temp=SBUF;RI=0;check=tempcheck;/将从主机接收到的校验码与自己计算的校验码比对if(check!=0)/校验码不一致,表明数据接收错误,向主机发送错误信号,函数返回0xffTI=0;TB8=0;SBUF=_ERR_;while(!TI);TI=0;return 0xff;TI=0; /校验码一致,表明数据接收正确,向主机发送成功信号,函数返回0x00TB8=0;SBUF=_SUCC_;while(!TI);TI=0;return 0;void main()serial_init();while(1)SM2=1; /接收地址帧while(aa!=addr)/从机等待主机请求自己的地址RI=0;while(!
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建立软硬件采购管理制度
- 石家庄人民医学高等专科学校《中学生认知与学习》2025-2026学年期末试卷
- 无锡太湖学院《国际营销概论》2025-2026学年期末试卷
- 上海应用技术大学《中医儿科学》2025-2026学年期末试卷
- 上海第二工业大学《临床药理学》2025-2026学年期末试卷
- 沈阳师范大学《旅游管理学》2025-2026学年期末试卷
- 上海电影艺术职业学院《中医外科学》2025-2026学年期末试卷
- 石家庄医学高等专科学校《金融管理学》2025-2026学年期末试卷
- 上海视觉艺术学院《政治学导论》2025-2026学年期末试卷
- 上海电机学院《金融监管学》2025-2026学年期末试卷
- 泰山学院中国地理课件第9章 东北区
- 作风建设培训课件民航
- 学堂在线 雨课堂 学堂云 科研伦理与学术规范 期末考试答案
- 二手车经纪人题库及答案
- 专项维修资金存放服务方案投标文件技术方案
- T/CAQI 96-2019产品质量鉴定程序规范总则
- 合同附件安全协议书
- 中考作文指导:记叙文审题立意之多角度立意
- 《条纹乖乖》游戏课件
- 2024年中国农业大学招聘笔试真题
- 上海市第一至十八届高一物理基础知识竞赛试题及答案
评论
0/150
提交评论