80C51串行口

串行通信是指 使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度

单工、半双工、全双工
单工数据传输只支持数据在一个方向上传输
半双工数据传输允许数据在两个方向上传输,但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信
全双工数据通信允许数据同时在两个方向上传输,因此,全双工通信是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力

奇/偶校验(ECC)
传输的一组二进制代码的数位中“1”的个数是奇数或偶数

传输距离与传输速率
当传输线使用每0.3m有50PF电容的非平衡屏蔽双绞线时,传输距离随传输速率的增加而减小。当比特率超过1000 bps 时,最大传输距离迅速下降,如9600 bps 时最大距离下降到只有76m

80C51串行口
80C51

有两个物理上独立的接收、发送缓冲器SBUF,它们占用同一地址99H

SCON
功能寄存器,用以设定串行口的工作方式、接收/发送控制以及设置状态标志
SCON
SM0和SM1为工作方式选择位,可选择四种工作方式
SM

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,允许串行接收位。由软件置REN=1,则启动串行口接收数据;若软件置REN=0,则禁止接收

TB8,在方式2或方式3中,是发送数据的第九位,可以用软件规定其作用。可以用作数据的奇偶校验位,或在多机通信中,作为地址帧/数据帧的标志位
在方式0和方式1中,该位未用

RB8,在方式2或方式3中,是接收到数据的第九位,作为奇偶校验位或地址帧/数据帧的标志位。在方式1时,若SM2=0,则RB8是接收到的停止位

TI,发送中断标志位。在方式0时,当串行发送第8位数据结束时,或在其它方式,串行发送停止位的开始时,由内部硬件使TI置1,向CPU发中断申请。在中断服务程序中,必须用软件将其清0,取消此中断申请

RI,接收中断标志位。在方式0时,当串行接收第8位数据结束时,或在其它方式,串行接收停止位的中间时,由内部硬件使RI置1,向CPU发中断申请。也必须在中断服务程序中,用软件将其清0,取消此中断申请

PCON
只有一位SMOD与串行口工作有关
PCON
SMOD波特率倍增位。在串行口方式1、方式2、方式3时,波特率与SMOD有关,当SMOD=1时,波特率提高一倍。复位时,SMOD=0

中断源
中断源

举例

void initUART()
{
    TMOD = 0x20; //TI计数器 方式2
    TH1 = 0xf3; //初值 波特率4800 倍频
    TL1 = 0xf3;
    PCON = 0x80; //设置SMOD 倍频
    TR1 = 1; //打开定时器
    SCON = 0x50; //SCON寄存器
    ES = 1; //打开串口中断
    EA = 1; //打开总中断
}

void intUART() interrupt 4
{
    u8 rdata;

    rdata = SBUF;
    RI = 0;

    SBUF = rdata;
    while(!TI);
    TI = 0;
}

int main()
{                
    initUART();

    return 0;
}

51波特率初值设定:
http://download.csdn.net/download/zhangxuechao_/9893735

posted @ 2017-07-10 11:54  thomas_blog  阅读(169)  评论(0编辑  收藏  举报