80C51串行口编程.pptVIP

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
80C51串行口编程

第5章 单片机串行口的C51编程 5.1 串行口基础知识 5.1.1 串行口的结构 5.1.2 有关的寄存器 5.1.3 串行口的工作方式 5. 2 不同工作方式下的C51编程 5.2.1 工作方式0的C51程序设计 5.2.2 工作方式1的C51程序设计 5.2.3 工作方式2的C51程序设计 5.2.4 工作方式3的C51程序设计 5.3 串行口的C51编程应用示例 5.1 串行口基础知识 5.1.1 串行口的结构 5.1.2 有关的寄存器 5.1.3 串行口的工作方式 5.1.1 串行口的结构 5.1.2 有关的寄存器 1.串行控制寄存器SCON 2.电源控制寄存器PCON 5.1.3 串行口的工作方式 1.工作方式0 串行口工作方式0为同步移位寄存器输入/输出方式,可外接移位寄存器,以扩展I/O口。 方式0可分为方式0输入和方式0输出两种方式。 但应注意:在这种方式下,不管输出还是输入,通信数据总是从P3.0(RXD)引脚输出或输入,而P3.1(TXD)引脚总是用于输出移位脉冲,每一移位脉冲将使RXD端输出或者输入1位二进制码。 (1)方式0输出 使用方式0实现数据的移位输出时,实际上是把串行口变成并行口使用。 (2)方式0输入 5. 2 不同工作方式下的C51编程 5.2.1 工作方式0的C51程序设计 5.2.2 工作方式1的C51程序设计 5.2.3 工作方式2的C51程序设计 5.2.4 工作方式3的C51程序设计 5.2.1 工作方式0的C51程序设计 方式0是同步移位寄存器输入/输出。格式: 1、方式0的波特率 在串口方式0下,每个机器周期产生一个移位时钟,对应着一个比特数据的发送和接收。因此,此时波特率固定为单片机振荡频率的1/12,其波特率计算公式如下: 串口方式0波特率=fosc/12 在串口方式0下,波特率不受波特率倍增SMOD的影响。因此,在C51程序设计时只要指定工作方式0便完成串口速率的设置,而无需再设置波特率。 2.方式0的数据发送及C51程序设计 对于方式0的数据发送,单片机的TXD引脚都用于发送移位脉冲,而8位串行数据是通过单片机的RXD引脚来输出。 方式0的数据发送流程: ①对寄存器SCON进行初始化,即工作方式的设置。由于使用串行口方式0,只需将00H送入SCON即可。 ②置串行接口控制寄存器SCON的TI=0,启动串行口发送。 ③执行写发送缓冲器指令 SBUF=i; 单片机的CPU执行完这条指令后,在TXD引脚发送同步移位脉冲,8位数据便从RXD端由低位到高位逐个发送出去。当8位数据发送完毕的时候,单片机硬件自动置中断标志TI=1,请求中断,表示发送缓冲器已空。 ④准备下一次数据发送。标志位TI不会自动清零,当要发送下一组数据时,必须在软件中置TI=0,然后才能发送下一组数据。串行口方式0的数据输出可以采用查询方式,也可以采用中断方式。 在查询方式下,通过while语句查询TI的值,如果TI=1则结束查询,可以发送下一组数据;如果TI=0,则继续查询。 在中断方式下,在TI置位好产生中断申请,在中断服务程序中发送下一组数据。此时,需要开启相应的中断请求。 例5-1】方式0数据发送的C51程序设计示例 (1)采用查询方式的 #includereg51.h void main( ) { unsigned char i=0x55; SCON=0x00; //初始化串口方式0 SBUF=i; //输出数据到SBUF,启动串行输出 while(TI) //等待TI=1 { TI=0; } while(1); } (2)采用中断方式的 #includereg51.h void SISR(void) interrupt 4 { TI=0; } void main( ) { unsigned char i=0x55; SCON=0x00; //初始化串口方式0 EA=1; ES=1; //允许串行中断 SBUF=i; //输出数据到SBUF,启动串行输出 while(1) //等待TI=1 {; } } 3.方式0的数据接收及C51程序设计 对于方式0的数据接收,单片机的TXD引脚都用于发送同步移位脉冲,而8位串行数据是通过RXD引脚来输入。 在方式0下,C51程序可以按照如下的流程来进行数据的接收: ①首先,需要对寄存器SCON进行初始化,即工作方式的

文档评论(0)

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

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

1亿VIP精品文档

相关文档