下载此文档

Uart串口收发程序专题课件.ppt


文档分类:通信/电子 | 页数:约49页 举报非法文档有奖
1/49
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/49 下载此文档
文档列表 文档介绍
-—,只是人为规定一个为发送,一个为接收。要求两机串行口的波特率相同,因而发送和接收方串行口的初始化相同。可编制含有初始化函数、发送函数接收函数的程序,在主函数中根据程序的发送、接收设置TR,采用条件判别决定使用发送函数还是接收函数。这样点对点通信的双方都可运行此程序,只需在程序运行之前人为设置选择TR,一个令TR=0,一个令TR=1,然后分别编译,在两机上分别装入,同时运行。例1点对点通信。点对点通信的程序如下:#include<>#defineucharunsignedchar#R1 /*发送接收差别值TR=0发送*/ucharidatabuf[10];ucharpf;voidinit(void) /*串行口初始化*/{TMOD=0x20; /*设T/C1为定时方式2*/TH1=0xe8; /*设定波特率*/TL1=0xe8;PCON=0x00;TR1=1; /*启动T/C1*/SCON=0x50; /*串行口工作在方式1*/}voidsend(ucharidata*d){uchari;do{SBUF=0xaa; /*发送联络信号*/while(TI==0); /*等待发送出去*/TI=0;while(RI==0); /*等待B机回答*/RI=0;}while((SBUF^0xbb)!=0); /*B机未准备好,继续联络*/do{pf=0; /*清校验和*/for(i=0;i<16;i++){SBUF=d[i]; /*发送一个数据*/pf+=d[i]; /*求校验和*/while(TI==0);TI=0;}SBUF=pf; /*发送校验和*/while(TI==0);TI=0;while(RI==0);RI=0; /*等待B机回答*/}while(SBUF!=0); /*回答出错,则重发*/}voidreceive(ucharidata*d){uchari;do{while(RI==0);RI=0;} while((SBUF^0xaa)!=0); /*判A机请求否*/SBUF=0xbb; /*发应答信号*/while(TI==0);TI=0;while(1){pf=0; /*清校验和*/for(i=0;i<16;i++){while(RI==0);RI=0;d[i]=SBUF; /*接收一个数据*/pf+=d[i]; /*求校验和*/}while(RI==0);RI=0; /*接收A机校验和*/if((SBUF^pf)==0) /*比较校验和*/{SBUF=0x00;break;} /*校验和相同发"00"*/else{SBUF=0xff; /*出错发"FF",重新接收*/while(TI==0);TI=0;}}}voidmain(void){init();if(TR==0){send(buf);}else{receive(buf);}}

Uart串口收发程序专题课件 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数49
  • 收藏数0 收藏
  • 顶次数0
  • 上传人读书之乐
  • 文件大小1.08 MB
  • 时间2019-10-18