第8篇章 AT89S51单片机的串行口.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文档。上传文档
查看更多
第8篇章 AT89S51单片机的串行口.ppt

第8章 AT89S51单片机的 串行口;*; 异步通信和同步通信;*;概述: 可编程的全双工异步串行口 管脚:TXD(P3.1)、RXD(P3.0) 可同时发送、接收数据 四种工作方式,帧格式有8位、10位、11位 波特率(Baud rate)可设置 波特率(比特率):每秒钟传送二进制数的位 数,单位b/s。;8.1 串行口的结构;*;8.1.2 电源控制及波特率选择寄存器PCON ;8.2 串行口的4种工作方式 8.2.1 方式0 同步移位寄存器输入/输出方式。该方式并不用于两个AT89S51单片机之间的异步串行通信,而是用于串行口外接移位寄存器,扩展并行I/O口。 8位数据为一帧,无起始位和停止位,先发送或接收最低位。波特率为fosc/12。帧格式如图8-4。 图8-4 方式0的帧格式 ;1.方式0输出 (1)方式0输出的工作原理 当执行一条将数据写入发送缓冲器SBUF指令时,产生一个正脉冲,串行口开始把SBUF中的8位数据以fosc/12的固定波特率从RXD引脚串行输出,低位在先,TXD引脚输出同步移位脉冲,发送完8位数据,中断标志位TI置“1”。 发送时序如图8-5。 ; 图7-5 方式0发送时序 ;(2)方式0输出的应用 典型应用是外扩串行输入/并行输出的同步移位寄存器74LS164,实现并行输出端口的扩展。 图8-6为串行口工作在方式0,通过74LS164的输出来控制8个外接LED发光二极管亮灭的接口电路。当串行口被设置在方式0输出时,串行数据由RXD端(P3.0)送出,移位脉冲由TXD端(P3.1)送出。在移位脉冲的作用下,串行口发送缓冲器的数据逐位地从RXD端串行地移入74LS164中。 ;*; 【例8-1】如图8-6所示,编写程序控制8个发光二极管轮流点亮。 图中74LS164的CLK端为同步脉冲输入端,CLR为控制端,当CLR=0时,允许串行数据从A和B端输入但是8位并行输出端关闭;当CLR=1时,A和B输入端关闭,但是允许74LS164中的8位数据并行输出。当8位串行数据发送完毕后,引起中断,在中断服务程序中,单片机通过串行口输出下一个8位数据。 采用中断方式的参考程序如下。 ;#include reg51.h #include stdio.h sbit P1_0=0x90; unsigned char nSendByte; void delay(unsigned int i) { int j; for(;i0;i--) for(j=0;j125;j++); } main( ) { SCON=0x00; /* 设置串行口为方式0*/ EA=1; /* 全局中断允许 */ ES=1; /* 允许串行口中断 */ nSendByte=1; SBUF=nSendByte; //启动串口发送 P1_0=0; // 允许串口向164串行发送数据 while(1); };void Serial_Port( ) interrupt 4 using 0 { TI=0; P1_0=1; nSendByte=1; if(nSendByte==0) nSendByte =1; SBUF=nSendByte; delay(500); P1_0=0; };2.方式0输入 (1)方式0输入工作原理 方式0接收,REN为允许接收控制位,REN=0,禁止接收;REN?=?1,允许接收。 当向SCON寄存器写入控制字(设置为方式0,并使REN位置“1”,同时RI?=?0)时,产生一个正脉冲,串行口开始接收数据。 引脚RXD为数据输入端,TXD为移位脉冲信号输出端,接收器以fosc/12的固定波特率采样RXD引脚的数据信息,当接收完8位数据时,中断标志RI置“1”,表示一帧数据接收完毕,通知CPU读取该数据,并执行RI=0指令,准备接收下一帧数据,时序如图8-7。 ;图7-7 方式0接收时序;*;*;#include reg51.h sbit P1_1=0x91; void delay(unsigned int i) { int j; for(;i0;i--) for(j=0;j125;j++); } void main( ) { SCON=0x10; /* 串行口初始化为方式0*/ while(1) { P1_1=0; P1_1=1; while(RI==0); RI=0; P

文档评论(0)

yuzongxu123 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档