C51串口通讯定义

发布者:知者如渊最新更新时间:2016-10-20 来源: eefocus关键字:C51  串口通讯 手机看文章 扫描二维码
随时随地手机看文章
8051单片机的串行接口结构

8051串行接口是一个可编程的全双工串行通讯接口。它可用作异步通讯方式(UART),与串行传送信息的外部设备相连接,或用于通过标准异步通讯协议进行全双工的8051多机系统也可以通过同步方式,使用TTL或CMOS移位寄存器来扩充I/O口。

8051单片机通过引脚RXD(P3.0,串行数据接收端)和引脚TXD(P3.1,串行数据发送端)与外界通讯。SBUF是串行口缓冲寄存器,包括发送寄存器和接收寄存器。它们有相同名字和地址空间,但不会出现冲突,因为它们两个一个只能被CPU读出数据,一个只能被CPU写入数据。

  1. 串行口的控制与状态寄存器
  1. 串行口控制寄存器SCON

    它用于定义串行口的工作方式及实施接收和发送控制。字节地址为98H,其各位定义如下表:

     

    D7

     

    D6

     

    D5

     

    D4

     

    D3

     

    D2

     

    D1

     

    D0

     

    SM0

     

    SM1

     

    SM2

     

    REN

     

    TB8

     

    RB8

     

    TI

     

    RI

    SM0、SM1:串行口工作方式选择位,其定义如下:

     

    SM0、SM1

     

    工作方式

     

    功能描述

     

    波特率

     

    0 0

     

    方式0

     

    8位移位寄存器

     

    Fosc/12

     

    0 1

     

    方式1

     

    10位UART

     

    可变

     

    1 0

     

    方式2

     

    11位UART

     

    Fosc/64或fosc/32

     

    1 1

     

    方式3

     

    11位UART

     

    可变

    其中fosc为晶振频率

    SM2:多机通讯控制位。在方式0时,SM2一定要等于0。在方式1中,当(SM2)=1则只有接收到有效停止位时,RI才置1。在方式2或方式3当(SM2)=1且接收到的第九位数据RB8=0时,RI才置1。

    REN:接收允许控制位。由软件置位以允许接收,又由软件清0来禁止接收。

    TB8: 是要发送数据的第9位。在方式2或方式3中,要发送的第9位数据,根据需要由软件置1或清0。例如,可约定作为奇偶校验位,或在多机通讯中作为区别地址帧或数据帧的标志位。

    RB8:接收到的数据的第9位。在方式0中不使用RB8。在方式1中,若(SM2)=0,RB8为接收到的停止位。在方式2或方式3中,RB8为接收到的第9位数据。

    TI: 发送中断标志。在方式0中,第8位发送结束时,由硬件置位。在其它方式的发送停止位前,由硬件置位。TI置位既表示一帧信息发送结束,同时也是申请中断,可根据需要,用软件查询的方法获得数据已发送完毕的信息,或用中断的方式来发送下一个数据。TI必须用软件清0。

    RI: 接收中断标志位。在方式0,当接收完第8位数据后,由硬件置位。在其它方式中,在接收到停止位的中间时刻由硬件置位(例外情况见于SM2的说明)。RI置位表示一帧数据接收完毕,可用查询的方法获知或者用中断的方法获知。RI也必须用软件清0。

  2. 特殊功能寄存器PCON

PCON是为了在CHMOS的80C51单片机上实现电源控制而附加的。其中最高位是SMOD。

  1. 串行口的工作方式

8051单片机的全双工串行口可编程为4种工作方式,现分述如下:

  1. 方式0为移位寄存器输入/输出方式。可外接移位寄存器以扩展I/O口,也可以外接同步输入/输出设备。8位串行数据者是从RXD输入或输出,TXD用来输出同步脉冲。
  1. 输出 串行数据从RXD引脚输出,TXD引脚输出移位脉冲。CPU将数据写入发送寄存器时,立即启动发送,将8位数据以fos/12的固定波特率从RXD输出,低位在前,高位在后。发送完一帧数据后,发送中断标志TI由硬件置位。
  2. 输入 当串行口以方式0接收时,先置位允许接收控制位REN。此时,RXD为串行数据输入端,TXD仍为同步脉冲移位输出端。当(RI)=0和(REN)=1同时满足时,开始接收。当接收到第8位数据时,将数据移入接收寄存器,并由硬件置位RI。
  1. 方式1为波特率可变的10位异步通讯接口方式。发送或接收一帧信息,包括1个起始位0,8个数据位和1个停止位1。
  1. 输出 当CPU执行一条指令将数据写入发送缓冲SBUF时,就启动发送。串行数据从TXD引脚输出,发送完一帧数据后,就由硬件置位TI。
  2. 输入 在(REN)=1时,串行口采样RXD引脚,当采样到1至0的跳变时,确认是开始位0,就开始接收一帧数据。只有当(RI)=0且停止位为1或者(SM2)=0时,停止位才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI;否则信息丢失。所以在方式1接收时,应先用软件清零RI和SM2标志。
  1. 方式2

方式月为固定波特率的11位UART方式。它比方式1增加了一位可程控为1或0的第9位数据。

  1. 输出: 发送的串行数据由TXD端输出一帧信息为11位,附加的第9位来自SCON寄存器的TB8位,用软件置位或复位。它可作为多机通讯中地址/数据信息的标志位,也可以作为数据的奇偶校验位。当CPU执行一条数据写入SUBF的指令时,就启动发送器发送。发送一帧信息后,置位中断标志TI。
  2. 输入: 在(REN)=1时,串行口采样RXD引脚,当采样到1至0的跳变时,确认是开始位0,就开始接收一帧数据。在接收到附加的第9位数据后,当(RI)=0或者(SM2)=0时,第9位数据才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI;否则信息丢失。且不置位RI。再过一位时间后,不管上述条件时否满足,接收电路即行复位,并重新检测RXD上从1到0的跳变。
  1. 工作方式3

方式3为波特率可变的11位UART方式。除波特率外,其余与方式2相同。

关键字:C51  串口通讯 引用地址:C51串口通讯定义

上一篇:AT89S52交通灯程序
下一篇:1602液晶最新驱动程序

推荐阅读最新更新时间:2024-03-16 15:16

PID算法调节C51程序(5)
typedef struct PIDValue { uint32 Ek_Uint32 ; //差值保存,给定和反馈的差值 uint8 EkFlag_Uint8 ; //符号,1则对应的Ek 为负数,0为对应的Ek 为正数 uint8 KP_Uint8; uint8 KI_Uint8; uint8 KD_Uint8; uint8 B_Uint8; //死区电压 uint8 KP; //显示修改的时候用 uint8 KI; // uint8 KD; // uint8 B; // uint16 Uk_Uint
[单片机]
C51单片机————定时器计数器
51单片机定时器/计数器 定时(定时控制、测量、延时。。。)和计数(对外部事件统计数目)。 软件定时|数字电路定时|可编程定时/计数器 它们都是怎么实现的呢? 额! 你猜 。。。 软件定时 机器执行一个程序,这个程序没有其他用处,只是为了延时!以达到定时的目的。 数字电路硬件定时 555之类的器件,完成定时 可编程定时/计数器 硬件定时,但是是可编程的,可以通过软件初始化设置定时的要求。 1.结构 定时/计数器实质上是一个加一计数器,可以工作在两种方式里,实际上都是对脉冲计数,只是说脉冲的来源不一样而已! 1. 定时 1. 加一计数。 2. 脉冲来自振荡器的12分频后的脉冲(Fosc/12),简单的
[单片机]
<font color='red'>C51</font>单片机————定时器计数器
C51入门笔记】IIC总线+E2PROM芯片(24C02)
常用总线技术: 采用串行总线技术可以使系统的硬件设计大大简化、系统的体积减小、可靠性提高。同时,系统的更改和扩充极为容易。 常用的串行扩展总线有: I2C (Inter IC BUS)总线、单总线(1-WIRE BUS)、SPI(Serial Peripheral Interface)总线及Microwire/PLUS等。 IIC总线概述: I2C总线是PHLIPS公司推出的一种串行总线,总线裁决和高低速器件同步功能的高性能串行总线 总线裁决:挂载的设备都有自己的地址,通过地址分辨设备的功能叫做总线裁决。 I2C总线通过上拉电阻(一般是10K)接正电源。当总线空闲时,两根线均为高电平。连到总线上的任一器件输
[单片机]
【<font color='red'>C51</font>入门笔记】IIC总线+E2PROM芯片(24C02)
编写一个简单的C51程序
简 介: 对于嵌入式系统,如果没有运行RTOS,那么程序开发中的 主函数(main())需要通过某种机制使其永远愉快的运行下去,它没有终点。如果想从main函数中退出,具体干什么是由所使用的C语言编译器决定的。 01 问题提出 今天在CSDN的 单片机led模块定义函数的问题 中看到一个有趣的问题。提问者在进行基本的C51编程实验,编写了一个简单的C51程序如下: #includevoidtest(num){switch(num){case1:P2_0=0;P2_1=0;break; } }voidmain(void){ test(1); } 程序执行完之后,可以看到实验板上的有两个LED被点亮,另外六个居然微微发亮。 如
[单片机]
编写一个简单的<font color='red'>C51</font>程序
用PWM控制渐变七彩灯C51程序
一、硬件介绍: (采用5050LED 2W) RGB三色LED控制引脚分别为单片机P1.2 、 P1.1 、 P1.0。LED正极接主电源(24V)正极,负极接驱动3颗三极管的集电极,单片机控制脚分别接3颗NPN三极管,三极管发射极接地,而单片机的供电是来自三端稳压器7805,祥细原理如下: 二、实物图片: 三、软件部分: 1、/*原理: 先亮红灯(保持一会儿)----红绿过度(绿加1、红减1循环240次)------ 绿灯亮起(保持一会儿)----绿兰过度(兰加1、绿减1循环240次) -----兰灯亮起(保持)-----兰白过度(绿加1、红加1循环240次、兰不变) ---白红过度,技术支持网站:
[单片机]
用PWM控制渐变七彩灯<font color='red'>C51</font>程序
C51/C52的串口原理及参考代码
一、什么是串口(RS232 9针串口) 串口是我们的大多数微控制单元(MCU)都具有的基本的外部接口,一般串口最基本的功能就是调试,又能做数据通信的接口(数据量要小一些)。 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 二、串口通信原理 一条信息的各位数据按位依次顺序的通信方式称为串行通信,传信通信可以是串口也可以是
[单片机]
<font color='red'>C51</font>/C52的串口原理及参考代码
单片机C语言C51的语句
1. if语句 if语句是C51中的一个基本条件选择语句,它通常有三种格式: (1)if (表达式) {语句;} (2)if (表达式) {语句1;} else {语句2;} (3)if (表达式1) {语句1;} else if (表达式2) (语句2;) else if (表达式3) (语句3;) …… else if (表达式n-1) (语句n-1;) else {语句n} 【例】 if语句的用法。 (1)if (x!=y) printf(“x=%d,y=%dn”,x,y); 执行上面语句时,如果x不等于y,则输出x的值和y的值。 (2)if (x y) max=x;
[单片机]
如何有效地使用串口通讯接收数据
引言 在使用stm32或者其他单片机的时候,会经常使用到串口通讯,那么如何有效地接收数据呢?假如这段数据是不定长的有如何高效接收呢? 同学A:数据来了就会进入串口中断,在中断中读取数据就行了! 中断就是打断程序正常运行,怎么能保证高效呢?经常把主程序打断,主程序还要不要运行了? 同学B:串口可以配置成用DMA的方式接收数据,等接收完毕就可以去读取了! 这个同学是对的,我们可以使用DMA去接收数据,不过DMA需要定长才能产生接收中断,如何接收不定长的数据呢? DMA简介 题外话:其实,上面的问题是很有必要思考一下的,不断思考,才能进步。 什么是DMA DMA :全称Direct Memory Access,即直接存储器访问
[单片机]
如何有效地使用<font color='red'>串口通讯</font>接收数据
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved