51单片机串口 (1)

51单片机串口 (1)

ID:38145226

大小:500.84 KB

页数:6页

时间:2019-05-21

51单片机串口 (1)_第1页
51单片机串口 (1)_第2页
51单片机串口 (1)_第3页
51单片机串口 (1)_第4页
51单片机串口 (1)_第5页
资源描述:

《51单片机串口 (1)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、一.基础●SM2,多机通信控制位,主要用于方式2和方式3。当接收机的SM2=1时可以利用收到的RB8来控制是否激活RI(RB8=0时不激活RI,收到的信息丢弃;RB8=1时收到的数据进入SBUF,并激活RI,进而在中断服务中将数据从SBUF读走)。当SM2=0时,不论收到的RB8为0和1,均可以使收到的数据进入SBUF,并激活RI(即此时RB8不具有控制RI激活的功能)。通过控制SM2,可以实现多机通信。在方式0时,SM2必须是0。在方式1时,若SM2=1,则只有接收到有效停止位时,RI才置1。●REN,允许串行接收位。由软件置

2、REN=1,则启动串行口接收数据;若软件置REN=0,则禁止接收。●TI,发送中断标志位。在方式0时,当串行发送第8位数据结束时,或在其它方式,串行发送停止位的开始时,由内部硬件使TI置1,向CPU发中断申请。在中断服务程序中,必须用软件将其清0,取消此中断申请。●RI,接收中断标志位。在方式0时,当串行接收第8位数据结束时,或在其它方式,串行接收停止位的中间时,由内部硬件使RI置1,向CPU发中断申请。也必须在中断服务程序中,用软件将其清0,取消此中断申请。波特率的计算在串行通信中,收发双方对发送或接收数据的速率要有约定。通过

3、软件可对单片机串行口编程为四种工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,由定时器T1的溢出率来决定。串行口的四种工作方式对应三种波特率。由于输入的移位时钟的来源不同,所以,各种方式的波特率计算公式也不相同。方式0的波特率=fosc/12方式2的波特率=(2SMOD/64)·fosc方式1的波特率=(2SMOD/32)·(T1溢出率)方式3的波特率=(2SMOD/32)·(T1溢出率)当T1作为波特率发生器时,最典型的用法是使T1工作在自动再装入的8位定时器方式(即方式2,且TCON的TR1=

4、1,以启动定时器)。这时溢出率取决于TH1中的计数值。T1溢出率=fosc/{12×[256-(TH1)]}根据上面的等式计算出TH1写串口程序的步骤1.串行口工作之前,应对其进行初始化,主要是设置产生波特率的定时器1、串行口控制和中断控制。具体步骤如下:§确定T1的工作方式(编程TMOD寄存器)(方式20x20);§计算T1的初值,装载TH1、TL1;(有波特率计算)§启动T1(编程TCON中的TR1位);§确定串行口控制(编程SCON寄存器);{SM0,SM1,REN}串行口在中断方式工作时,要进行中断设置(编程IE、IP寄

5、存器)。例子1.直接串口传输#includevoidmain(){TMOD=0x20;TH1=0xfd;TL1=0xfd;TR1=1;REN=1;SM0=0;SM1=1;RI=0;P1=SBUF;}2.中断传输#include#defineucharunsignedcharuchara,flag;voidmain(){TMOD=0x20;TH1=0xfd;TL1=0xfd;TR1=1;SM0=0;SM1=1;REN=1;EA=1;ES=1;PCON=0x80;while(1){if(flag=

6、=1){ES=0;flag=0;SBUF=a;while(!TI);TI=0;ES=1;}}}voidserial()interrupt4{P1=SBUF;a=SBUF;flag=1;RI=0;}

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

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

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