多机通信.docx
- 文档编号:26706490
- 上传时间:2023-06-21
- 格式:DOCX
- 页数:17
- 大小:43.22KB
多机通信.docx
《多机通信.docx》由会员分享,可在线阅读,更多相关《多机通信.docx(17页珍藏版)》请在冰豆网上搜索。
多机通信
---1---串行通信_轮流计秒主机
#include
#include
#include
unsignedcharcodeledk[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6D,0x7d,0x07,0x7f,0x6f,0x77,
0x7c,0x39,0x5e,0x79,0x73,0x00};
unsignedcharbuf[10],sdata[2]={0x0a,8},
send_flag,sec,t0_count,run_flag,time_1=5;
voiddelay(unsignedintn)
{unsignedinti;
for(i=0;i //================= voidreceive() {do{}while(! RI);RI=0;buf[0]=SBUF;} voidsend() {unsignedchari; for(i=0;i<2;i++){SBUF=sdata[i];while(! TI);TI=0;} } //================= voidt0()interrupt1 {TH0=0x3c;TL0=0xb0; t0_count++; if(t0_count==20){sec++;t0_count=0;}} //================== voidmain(void) {TMOD=0x21;TH0=0x3c;TL0=0xb0;TH1=0xcc;TL1=0xcc;TR1=1;EA=1;ET0=1; SCON=0x50; do{SBUF=0x0a;while(! TI);TI=0; do{}while(! RI);RI=0;buf[0]=SBUF;}while(buf[0]! =0x0b); P2=ledk[buf[0]];delay(50000); run_flag=0;send_flag=1; while (1) {if(buf[0]==0x0b){buf[0]=0;run_flag=1;} if(sec==time_1)send_flag=1; if(send_flag==1){send();run_flag=0;send_flag=0;} if(run_flag==0){TR0=0;P2=ledk[15];sec=0;t0_count=0;receive();} if(run_flag==1){TR0=1;P2=ledk[sec];} delay(60); } } ---2---串行通信_轮流计秒从机 #include #include #include unsignedcharcodeledk[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6D,0x7d,0x07,0x7f,0x6f,0x77, 0x7c,0x39,0x5e,0x79,0x73,0x00}; unsignedcharbuf[10],sdata=0x0b,sec,t0_count,time_2,run_flag; //-------- voiddelay(unsignedintn) {unsignedinti; for(i=0;i //================ voidreceive() {unsignedchari; for(i=0;i<2;i++) {do{}while(! RI);RI=0;buf[i]=SBUF;}} voidsend() {SBUF=sdata;while(! TI);TI=0;} //================= voidt0()interrupt1 {TH0=0x3c;TL0=0xb0; t0_count++; if(t0_count==20){sec++;t0_count=0;}} //================== voidmain(void) {TMOD=0x21;TH0=0x3c;TL0=0xb0;EA=1;ET0=1; TH1=0xcc;TL1=0xcc;TR1=1; SCON=0x50; do{while(! RI);RI=0;buf[0]=SBUF;}while(buf[0]! =0x0a); SBUF=0x0b;while(! TI);TI=0; P2=ledk[buf[0]];delay(50000); buf[0]=0;run_flag=0; while (1){if(buf[0]==0x0a){buf[0]=0;time_2=buf[1];run_flag=1;} if(run_flag==1&&sec==time_2){send();run_flag=0;} if(run_flag==0){TR0=0;P2=ledk[15];sec=0;t0_count=0;receive();} if(run_flag==1){TR0=1;P2=ledk[sec];} delay(60);} } ---3---串行通信_中断主机 #include #include unsignedcharcodeledk[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6D,0x7d,0x07,0x7f,0x6f, 0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; unsignedcharbuf[10],sdata[10]={9,8,7,6,5,4,3,2,1,0}; voiddelay(unsignedintn) {unsignedinti; for(i=0;i //================= voides()interrupt4 {unsignedchari; for(i=0;i<6;i++) {do{}while(! RI);RI=0;buf[i]=SBUF;}ES=0;} voidsend() {unsignedchari; for(i=0;i<10;i++) {SBUF=sdata[i];while(! TI);TI=0;} } //================== voidmain(void) {unsignedchari; TMOD=0x20;TH1=0xcc;TL1=0xcc;TR1=1;ES=0;EA=1; SCON=0x50; while (1) {delay(50000);delay(50000);delay(50000); send(); //ES=1; //for(i=0;i<6;i++){P2=ledk[buf[i]];delay(50000);} //P2=ledk[16]; delay(50000);delay(50000);delay(50000); } } ---4---串行通信_中断从机 #include #include unsignedcharcodeledk[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6D,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; unsignedcharbuf[10],sdata[6]={10,11,12,13,14,15}; voiddelay(unsignedintn) {unsignedinti; for(i=0;i //================ voides()interrupt4 {unsignedchari; for(i=0;i<10;i++) {do{}while(! RI);RI=0;buf[i]=SBUF;}ES=0;} voidsend() {unsignedchari; for(i=0;i<6;i++){SBUF=sdata[i];while(! TI);TI=0;}} voidmain(void) {unsignedchari; TMOD=0x20;TH1=0xcc;TL1=0xcc;TR1=1;SCON=0x50;ES=0;EA=1; while (1) {ES=1; //send(); for(i=0;i<10;i++){P2=ledk[buf[i]];delay(50000);} P2=ledk[16]; delay(50000);}} ---5---串行相互通信主机 #include #include unsignedcharcodeledk[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6D,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; unsignedcharbuf[10],sdata[10]={9,8,7,6,5,4,3,2,1,0}; voiddelay(unsignedintn) {unsignedinti; for(i=0;i //================= voidreceive() {unsignedchari; for(i=0;i<6;i++) {do{}while(! RI);RI=0;buf[i]=SBUF;}} voidsend() {unsignedchari; for(i=0;i<10;i++){SBUF=sdata[i];while(! TI);TI=0;}} //ES=1;} //================== voidmain(void) {unsignedchari; TMOD=0x20;TH1=0xcc;TL1=0xcc;TR1=1; SCON=0x50; while (1) {do{SBUF=0x0a;while(! TI);TI=0; do{}while(! RI);RI=0;buf[0]=SBUF;}while(buf[0]! =0x0b); P2=ledk[buf[0]]; delay(50000); P2=ledk[16]; delay(50000);delay(50000); send(); receive(); for(i=0;i<6;i++){P2=ledk[buf[i]];delay(50000);} P2=ledk[16]; delay(50000);delay(50000);delay(50000);}} ---6---串行相互通信从机 //computer22.c #include #include #include unsignedcharcodeledk[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6D,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; unsignedcharbuf[10],sdata[6]={10,11,12,13,14,15}; voiddelay(unsignedintn) {unsignedinti; for(i=0;i //================ voidreceive() {unsignedchari; for(i=0;i<10;i++) {do{}while(! RI);RI=0;buf[i]=SBUF;}} voidsend() {unsignedchari; for(i=0;i<6;i++){SBUF=sdata[i];while(! TI);TI=0;}} voidmain(void) {unsignedchari; TMOD=0x20;TH1=0xcc;TL1=0xcc;TR1=1;SCON=0x50; while (1) {do{}while(! RI);RI=0;buf[0]=SBUF; if(buf[0]==0x0a){P2=ledk[buf[0]];delay(50000);P2=ledk[16]; SBUF=0x0b;while(! TI);TI=0;} receive(); for(i=0;i<10;i++){P2=ledk[buf[i]];delay(50000);} P2=ledk[16]; delay(50000);send();}} ---7---主机校验和 #include #include unsignedcharbuf[15],flag,sdata[20],a[10]={9,8,7,6,5,4,3,2,1,0}; unsignedcharcodeledk[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6D,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; voiddelay(unsignedintn) {unsignedinti; for(i=0;i voidsend() {unsignedchari,no=9,sum=0; buf[0]=no; for(i=0;i<=no;i++){buf[i+1]=a[i];sum=sum+a[i];} buf[no+2]=sum; for(i=0;i<=no+2;i++){SBUF=buf[i];while(! TI);TI=0;}} voidmain(void) {flag=0;TMOD=0x20;TH1=0xf3;TL1=0xf3;TR1=1;SCON=0x50;//TH1=0xcc;TL1=0xcc; while (1) {do{send(); do{}while(! RI);RI=0;}while(SBUF! =0x0d); P2=ledk[SBUF];delay(50000); P2=ledk[16];delay(65000);delay(65000);delay(65000); delay(65000);delay(65000);delay(65000); delay(65000);delay(65000);delay(65000);}} ---8---从机校验和 #include #include sbitSDATA=P1^0;//串行数据输入 sbitSCLK=P1^1;//移位时钟脉冲 sbitRCK=P1^2;//输出锁存器控制脉冲 unsignedcharcodeledk[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6D,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; unsignedcharsum=0,total,no,buf[10],flag;//sdata[6]={10,11,12,13,14,15}; voiddelay(unsignedintn) {unsignedinti; for(i=0;i //================ voidmain(void) {unsignedchari,mask=0xef,mask1=0xdf; TMOD=0x20;TH1=0xf3;TL1=0xf3;TR1=1; SCON=0x50;//TH1=0xcc;TL1=0xcc; while (1) {aa: sum=0; do{}while(! RI);RI=0;no=SBUF; for(i=0;i<=no;i++) {do{}while(! RI);RI=0;buf[i]=SBUF;sum=sum+SBUF;} do{}while(! RI);RI=0;total=SBUF; if(total! =sum){SBUF=0x0c;while(! TI);TI=0;gotoaa;}//校验和不等 else{SBUF=0x0d;while(! TI);TI=0;//校验和相等 for(i=0;i<=no;i++){P2=ledk[buf[i]]; delay(50000);}//显示接收数据 P2=ledk[16]; delay(50000);}}} ---9---多机通信1_主机 #include #include unsignedcharcodeledk[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6D,0x7d,0x07,0x7f, 0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; unsignedcharbuf[15],a[10]={9,8,7,6,5,4,3,2,1,0},b[6]={10,11,12,13,14,15}; voiddelay(unsignedintn) {unsignedinti; for(i=0;i //================ voidsend() {unsignedchari,no=9,sum=0; buf[0]=no; for(i=0;i<=no;i++){buf[i+1]=a[i];sum=sum+a[i];} buf[no+2]=sum; for(i=0;i<=no+2;i++){SBUF=buf[i];while(! TI);TI=0;}} voidsend1() {unsignedchari,no=5,sum=0; buf[0]=no; for(i=0;i<=no;i++){buf[i+1]=b[i];sum=sum+b[i];} buf[no+2]=sum; for(i=0;i<=no+2;i++){SBUF=buf[i];while(! TI);TI=0;}} voidreceive() {unsignedchari; for(i=0;i<4;i++) {do{}while(! RI);RI=0;buf[i]=SBUF;}} voidmain(void) {unsignedchari; TMOD=0x20;TH1=0xf3;TL1=0xf3;TR1=1; SCON=0xd0;PCON=0x00; while (1) {do{TB8=1;SBUF=0x01;while(! TI);TI=0; do{}while(! RI);RI=0;} while(SBUF! =0x01); P2=ledk[SBUF];delay(50000);P2=ledk[16]; TB8=0; send(); receive(); for(i=0;i<4;i++){P2=ledk[buf[i]];delay(50000);} P2=ledk[16]; delay(65000);delay(65000);delay(65000); do{TB8=1;SBUF=0x02;while(! TI);TI=0; do{}while(! RI);RI=0;} while(SBUF! =0x02); P2=ledk[SBUF];delay(50000);P2=ledk[16]; TB8=0; send1(); receive(); for(i=0;i<4;i++){P2=ledk[buf[i]];delay(50000);} P2=ledk[16]; delay(65000);delay(65000);delay(65000); delay(65000);delay(65000);delay(65000);}} ---10---多机通信1_从机1 #include #include #include unsignedcharcodeledk[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6D,0x7d,0x07,0x7f,0x6f,0x77, 0x7c,0x39,0x5e,0x79,0x71,0x00}; unsignedcharsum=0,total,no,buf[10];//sdata[6]={10,11,12,13,14,15}; voiddelay(unsignedintn) {unsignedinti; for(i=0;i voidsend() {unsignedchari; for(i=0;i<4;i++){SBUF=i;while(! TI);TI=0;}} //================ voidmain(void) {unsignedchari; TMOD=0x20;TH1=0xf3;TL1=0xf3;TR1=1; SCON=0xd0;PCON=0x00; while (1) {do{SM2=1; do{}while(! RI);RI=0;}while(SBUF! =0x01); TI=0;TB8=0; SBUF=0x01;while(! TI);TI=0; SM2=0; do{}while(! RI);RI=0;no=SBUF; for(i=0;i<=no;i++) {do{}while(! RI);RI=0;buf[i]=SBUF;sum=sum+SBUF;} do{}while(! RI);RI=0;total=SBUF; for(i=0;i<=no;i++){P2=ledk[buf[i]];delay(50000);}//显示接收数据 P2=ledk[16]; send(); delay(65000);delay(65000);delay(65000); //shift(ledk[sum/10]|0x80);delay(50000);//显示校验和 //shift(ledk[sum%10]|0x80);delay(50000);}} ---11---多机通信1_从机2 #include #include unsignedcharcodeledk[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6D,0x7d,0x07,0x7f,0x6f,0x
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通信