第7章_单片机的串行通信技术解释.pptVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 波特率=2SMOD×(T1的溢出率)/32 数据位由 P3.0 (RXD)端接收, 由P3.1(TXD)端发送 一帧信息为 10 位: 一位起始位(0), 8 位数据位(低位在前)和一位停止位(1)。 发送过程: 用软件清除 TI后, CPU执行任何一条以 SBUF为目标寄存器的指令, 就启动发送过程。数据由TXD引脚输出, 此时的发送移位脉冲是由定时器/计数器 T1 送来的溢出信号经过 16 或 32 分频而取得的。一帧信号发送完时, 将置位发送中断标志TI=1, 向CPU申请中断。 2. 方式1—10位UART方式 用软件清除 RI后, 当允许接收位REN=1 时, 接收器以选定波特率的 16 倍的速率采样 RXD引脚上的电平, 即在一个数据位期间有 16 个检测脉冲, 并在第 7、 8、9 个脉冲期间采样接收信号, 然后用三中取二的原则确定检测值, 以抑制干扰。 并且采样是在每个数据位的中间, 避免了信号边沿的波形失真造成的采样错误。 当检测到有从“1”到“0”的负跳变时, 则启动接收过程, 在接收移位脉冲的控制下, 接收完一帧信息。 当最后一次移位脉冲产生时能满足下列两个条件:  ① RI=0;  ② 接收到的停止位为1 或 SM2=0。 则停止位送入RB8,8位数据进入SBUF,并置RI=1,完成一次接收过程。否则,所接收到的一帧信息将丢失,接收器复位,并重新开始检测负跳变,以便接收下一帧信息。 接收过程: 发送条件:由SBUF = counter即可启动发送过程 发送完成:硬件TI置1 接收条件:在允许接收位REN=1时即可启动接收过程 接收完成:硬件RI置1,数据→SBUF 指定T1为波特率时钟发生器(波特率时钟可变) 通常选择定时器方式2(取fosc为11.0592MHz) 序号 波特率 SMOD a 1 62500 1 0xff 2 19200 1 0xfd 3 9600 0 0xfd 4 4800 0 0xfa 5 2400 0 0xf4 6 1200 0 0xe8 例如: SCON=0x50; //串口设为方式1,TI和RI清零,允许接收 PCON=0x80; //波特率加倍(×2) TMOD=0x20; //T1设为定时方式2 TH1=0xcc; //定时器初值 TL1=0xcc; //重置的定时初值 IE;//中断使能(开中断) TR1=1; //启动T1 GATE TMOD C/T M1 M0 M0 M1 GATE C/T (89H) 一般初始化过程 方式1应用举例 例7.3 将89C51单片机的TXD接RXD,实现单片机串行口数据自发自收,并将接收的数据通过P1口输出到发光二极管显示。系统时钟频率为11.0592MHz,自发送接收的波特率为2400bps。编写程序,要求:单片机串行口工作在方式,从TXD发送数据0x55,从RXD将该数据读回,并送P1口通过8个发光二极管显示。电路图如图7.13所示。 应用C51编写的程序如下: #includereg51.h #define uchar unsigned char #define uint unsigned int void main() { uchar i=0x55;uint j=0; TMOD=0X20; //设置定时器1工作在模式2 TL1=0xf4; //根据传输的波特率设置定时器1初值 TH1=0xf4; PCON=0x00; //电源控制寄存器最高位为0,波特率不加倍 SCON=0x50; //选择工作方式1,使能收发功能 TR1=1; //启动定时器1 while(1) { SBUF=i; //发送数据 do{}while(!RI); //等待发送数据返回 RI=0;TI=0; //软件将标志位RI和TI清0 i=SBUF; //读取数据 P1=i; //送入P1口显示 i=~i; //将发送数据取反 for(j=0;j12500;j++); //延时 } } 双机通信协议 通行方式:例如异步串行通信 波特率: 例如2400b/s 发机要求发送的呼叫信号:例如10H 收机同意接收的应答信号:例如20H 收机不同意接收的应答信号:例如30H 告知数据正确的应答信号:例如0FH 通信结束标志信号:例如0AH …… 要求设计一个双机通信方案,甲机发送数

文档评论(0)

希望之星 + 关注
实名认证
文档贡献者

我是一名原创力文库的爱好者!从事自由职业!

1亿VIP精品文档

相关文档