80C51串行口的编程

上传人:痛*** 文档编号:244071374 上传时间:2024-10-02 格式:PPT 页数:25 大小:431KB
返回 下载 相关 举报
80C51串行口的编程_第1页
第1页 / 共25页
80C51串行口的编程_第2页
第2页 / 共25页
80C51串行口的编程_第3页
第3页 / 共25页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,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),采用查询方式的,#include,void main(),unsigned char i=0 x55;,SCON=0 x00;/,初始化串口方式,0,SBUF=i;/,输出数据到,SBUF,,启动串行输出,while(TI)/,等待,TI=1,TI=0;,while(1);,(2),采用中断方式的,#include,void SISR(void)interrupt 4,TI=0;,void main(),unsigned char i=0 x55;,SCON=0 x00;/,初始化串口方式,0,EA=1;ES=1;/,允许串行中断,SBUF=i;/,输出数据到,SBUF,,启动串行输出,while(1)/,等待,TI=1,;,3,方式,0,的数据接收及,C51,程序设计,对于方式,0,的数据接收,单片机的,TXD,引脚都用于发送同步移位脉冲,而,8,位串行数据是通过,RXD,引脚来输入。,在方式,0,下,,C51,程序可以按照如下的流程来进行数据的接收:,首先,需要对寄存器,SCON,进行初始化,即工作方式的设置。由于这里使用的是串行口的方式,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,,然后才可以接收下一组数据。此时,同样可以采用查询和中断两种方式,分别介绍如下。,在查询方式中,使用,while,语句查询,RI,的值,如果,RI=1,则结束查询,可以接收下一组数据;如果,RI-0,,则继续查询。,在中断方式中,在,RI,置位后产生中断申请,在中断服务程序中接收下一组数据。此时,需要开启相应的中断请求。,【,例,5-2】,方式,0,数据接收的,C51,程序设计,(1),采用查询方式,#include,sbit S_L=P30;,void main(),unsigned char i;,SCON=0 x10;/,初始化串口方式,0,while,(,1,),S_L=0;/,并行数据送入,74LS165,S_L=1;,while(RI)/,查询,RI=1,RI=0;,i=SBUF;P1=i;,(2),采用中断方式,#include,int i;,void SISR(void)interrupt 4,RI=0;,i=SBUF;,void main(),SCON=0 x10;/,初始化串口方式,0,EA=1;ES=1;/,开启串行中断,while(1),;,5.3,串行口的,C51,编程应用示例,【,例,5-9】,串行口自发自收,#include,#define uchar unsigned char,#define uint unsigned int,void main(),uchar i=0 x55;,uint j=0;,TMOD=0X20;/,设定定时器,1,模式,2,TL1=TH1=0XF4;,PCON=0X00;,SCON=0X50;,TR1=1;,while(1),SBUF=i;/,发送数据,do()while(!RI),RI=0;,TI=0;,i=SBUF;/,读取接收数据,P1=i;,i=i;/,将发送数据取反,for(j=0;j12500;j+);,【,例,5-10】,两个单片机串行通信,1,单片机,1,的,C51,源程序代码:,#include,#define uint unsigned int,#define uchar unsigned char,void main(),uchar i;,TMOD=0 x20;TH1=TL1=0 xff;,SCON=0 x50;PCON=0 x80;,TR1=1;,P1=0 xff;,while(1),P1=0 xff;,i=P1;SBUF=i;,while(TI=0),;,TI=0;,单片机,2,的,C51,源程序:,#include,#define uint unsigned int,#define uchar unsigned char,void main(),uchar i=0;,TMOD=0 x20;TH1=TL1=0 xff;,SCON=0 x50;PCON=0 x80;,TR1=1;,while(1),while(RI=0);,RI=0;,i=SBUF;,P1=i;,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!