C51串行口的编程

C51串行口的编程

ID:38956211

大小:626.31 KB

页数:25页

时间:2019-06-22

C51串行口的编程_第1页
C51串行口的编程_第2页
C51串行口的编程_第3页
C51串行口的编程_第4页
C51串行口的编程_第5页
资源描述:

《C51串行口的编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第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.串行控制寄存器SCON2.电源控制寄存器PCON5.1.3串行口的工作方式1.工作方式0串行口工作方式0

2、为同步移位寄存器输入/输出方式,可外接移位寄存器,以扩展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

3、.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的数据发送流程

4、:①对寄存器SCON进行初始化,即工作方式的设置。由于使用串行口方式0,只需将00H送入SCON即可。②置串行接口控制寄存器SCON的TI=0,启动串行口发送。③执行写发送缓冲器指令SBUF=i;单片机的CPU执行完这条指令后,在TXD引脚发送同步移位脉冲,8位数据便从RXD端由低位到高位逐个发送出去。当8位数据发送完毕的时候,单片机硬件自动置中断标志TI=1,请求中断,表示发送缓冲器已空。④准备下一次数据发送。标志位TI不会自动清零,当要发送下一组数据时,必须在软件中置TI=0,然后才能发送下一组数据。串行口方式0的数据输出可以采用查询方式,也可以采用中断方式。

5、在查询方式下,通过while语句查询TI的值,如果TI=1则结束查询,可以发送下一组数据;如果TI=0,则继续查询。在中断方式下,在TI置位好产生中断申请,在中断服务程序中发送下一组数据。此时,需要开启相应的中断请求。例5-1】方式0数据发送的C51程序设计示例(1)采用查询方式的#includevoidmain(){unsignedchari=0x55;SCON=0x00;//初始化串口方式0SBUF=i;//输出数据到SBUF,启动串行输出while(TI)//等待TI=1{TI=0;}while(1);}(2)采用中断方式的#include

6、voidSISR(void)interrupt4{TI=0;}voidmain(){unsignedchari=0x55;SCON=0x00;//初始化串口方式0EA=1;ES=1;//允许串行中断SBUF=i;//输出数据到SBUF,启动串行输出while(1)//等待TI=1{;}}3.方式0的数据接收及C51程序设计对于方式0的数据接收,单片机的TXD引脚都用于发送同步移位脉冲,而8位串行数据是通过RXD引脚来输入。在方式0下,C51程序可以按照如下的流程来进行数据的接收:①首先,需要对寄存器SCON进行初始化,即工作方式的设置。由于这里使

7、用的是串行口的方式0,允许接收,因此需将10H送人SCON,即置REN=1。另外,在方式0工作时,寄存器SCON中的SM2必须置0,而RB8位和TB8位都不起作用,一般置0即可。②此时,在TXD端发送同步移位脉冲,在同步脉冲为低电平的时候,8位数据从RXD引脚由低位到高位逐位接收。③当8位数据接收完毕的时候,硬件自动置RI=1,请求中断,表示接收数据已装人接收缓冲器,可以由CPU读取,示例如下:i=SBUF;//读取数据到变量i④准备下一次接收数据。由于RI不会自动清零,当需要接收下一组数据的时候,必须在软件中置RI=0,然后才可以接收下一组数据。此时,同样可以采

8、用查询和中

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。