单片机原理及应用清华版课件.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机原理及应用清华版课件

3.串行通信编程举例 #include c8051f020.h #include string.h char s[]=“C8051F020 Serial Communication”; char bdata c; sbit c7=c^7; void main(void) { char a,b=0; T2CON=0x14; //T2作发送波特率发生器,TCLK0=1,TR2=1 SCON0=0x40; //SM20=SM00=0,SM10=1,REN0=0; RCAP2H=0xff; RCAP2L=0xdc; a=strlen(s); 3.串行通信编程举例 for(;ba;b++) { c=s[b]; ACC=c; //形成校验位 c7=P; //最高位作校验位 SBUF0=c; while(!TI0); TI0=0; } } 方式2、3中也可以使用TB8、RB8作校验位,请自己练习! 例4.9 A机和B机进行点对点通信 A机开始发送时,先发送AA联络信号, B机收到后回答一个BB信号,表示同意接收。 A机收到BB信号后开始发送数据,每发送一个字节便求一次累加校验和。 假定数据块长度为16字节,数据缓冲区首地址为BUF,数据发送完后马上发送校验和。 B机接收数据并将其存入BUF为首地址的缓冲区,每收到一字节也计算一次校验和,当收齐数据块后,再接收A机发来的校验和,并将其与自己计算出来的校验和进行比较。若二者相等,则说明接收正确,B机回答00H;否则说明接收不正确,B机回答FFH,请求重发。 A机收到00H的回答后,结束发送。否则将数据再重发一次。 双方约定的波特率为1200,SYSCLK=11.0592MHz,用定时器T1作波特率发生器,取T1M=0、SMOD0=0。 例4.9 A机和B机进行点对点通信 AA 数据(16字节) 校验和 BB 数据(16字节) 校验和 00/FF A机 B机 数据(16字节) 校验和 例4.9 A机和B机进行点对点通信 #include c8051f020.h #define uchar unsigned char #define TR 1 //发送、接收控制变量,0发送、1接收 uchar idata buf[16]; //发送、接收缓冲区 uchar pf; //校验和 void init(void) //初始化函数 { TMOD=0x20; //定时器T1方式2,作波特率发生器 TH1=0xe8; TL1=0xe8; PCON=0x00; TR1=1; SCON0=0x50; //UART0方式1、REN0=1 } 例4.9 A机和B机进行点对点通信 void send(uchar idata *d) //发送函数 { uchar i; do { SBUF0=0xAA; //发送联络信号 while(!TI0); TI0=0; while(!RI0); RI0=0; }while((SBUF0^0xBB)!=0); //直到对方同意接收 do{ pf=0; for(i=0;i16;i++) { SBUF0=d[i]; //发送一字节 pf+=d[i]; //计算校验和 while(!TI0); TI0=0; } 例4.9 A机和B机进行点对点通信 SBUF0=pf; //发送校验和 while(!TI0); TI0=0; while(!RI0); //等待对方回应 RI0=0; }while(SBUF0!=0); //直到对方回应00,否则重发 } void receive(uchar idata *d) //接收函数 { uchar i; do { while(!RI0); RI0=0; }while((SBUF0^0xAA)!=0); //接收发送请求 SBUF0=0XBB; //回送应答 while(!TI0); TI0=0; 3.特殊功能寄存器PCON 位7(SMOD0):UART0波特率系数控制位 0:UART0的波特率不加倍。 1:UART

文档评论(0)

manyu + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档