并行通信和串行通信的区别:

并行通信通常是将数据字节的各位用多条数据线同时进行传送 。
串行通信是将数据字节分成一位一位的形式在一条传输线上逐个地传送。

异步

不要求收发双方时钟的严格一致,实现容易,设备开销较小,
但每个字符要附加2~3位用于起止位,所以导致了会有间隔,
各帧之间还有间隔,因此传输效率不高以字符(构成的帧)为单位
字符间是异步的
字符内各位是同步的

同步通信

发送方时钟与接收方时钟同步。既保持位同步,也保持字符同步。

传输速率

比特率:每秒钟传输二进制代码的位数
波特率:每秒钟调制信号变化的次数,即每秒钟发送的位数,单位是:波特(Baud)。时钟同步。既保持位同步,也保持字符同步。

P3.0接收角RXD
P3.1发送角TXD

工作寄存器SCON

RI:接收中断标志位
接收结束时,会由硬件置1,向CPU发出中断请求。(要由软件复位)
TI:发送中断标志位
发送结束时,会由硬件置1,向CPU发出中断请求。要由软件复位)
TB8:用来存放发送的第9位。
RB8:用来存放接收的第9位。
REN:是串行接收允许位0时:允许串行接收1时:禁止串行接收

SM2:多机通信控制位。(不常用)

因为多级通信是在工作方式2和工作方式3下进行的,因此
SM2主要用在工作方式2和工作方式3。
当SM2=0时:不论接收的第9位是0还是1,都接收数据,产
生中断。
当SM2=1时:只有在接收到的第9位为1时,才接收
数据,并产生中断;而如果接收到的第9位为0时,则将接收
到的数据丢弃,不产生中断。

工作方式寄存器PCON

PCON是没有位寻址的,也就是说不能直接操作SMOD要直接操作PCON寄存器。
没有位寻址的意思是你不能以SMOD=0;的方式给SMOD赋值,而需要以PCON=0x00给SMOD赋值SMOD:是波特率是否加倍的选择位。0时:波特率不加倍。1时:波特率加倍。

串行口的波特率是用定时器T1作为波特率发生器的,这是定时器自动设置在工作方式2(可自动重装初值)。

串口的操作步骤:

先设置波特率:设置定时器T1为工作方式2(设置TMOD寄存器)给计数器赋初值(工作方式2会自动重装)
设置串口工作方式:设置SCON(如果允许)
如果使用中断方式,那么打开相应的中断和总中断。
打开定时器T1,开始产生波特率。设置TRx

串口通信实战环节

/*********************************************************************************
*实验名   :串口通讯实验
*实验效果 :配合串口助手使用将收到的数据发送回给计算机,可在串口助手上显示
*波特率 :9600
*
*********************************************************************************/
#include<reg52.h>
#include"bstv51.h"
void UartConfiguration();void main()
{bstv51_init();UartConfiguration();while(1){}}void UartConfiguration()
{TMOD=0x20;      //设置计数器1的工作方式2TH1=0xfd;          //设置计数器1的初值,决定波特率TL1=0xfd;          //设置计数器1的初值,决定波特率PCON=0x00;      // 波特率倍增0x00不加倍     0x80加倍SCON=0x50;      //设置工作方式1 开启接受允许EA=1;          //开启总中断ES=1;           //开启串口接受中断TR1=1;           //计数器1开始运行
}void Uart() interrupt 4
{uchar date;date=SBUF;        //取出接受到的数据RI=0;           //清除接受中断标志位SBUF=date;          //接收到的数据放入发送缓存器发送while(!TI);        //等待发送数据完成TI=0;              //清除发送完成标志位}

嵌入式学习笔记7——串口通信相关推荐

  1. 【K210】K210学习笔记五——串口通信

    [K210]K210学习笔记五--串口通信 前言 K210如何进行串口通信 K210串口配置 K210串口发送相关定义 K210串口接收相关定义 K210串口发送接收测试 完整源码 前言 本人大四学生 ...

  2. 51单片机学习笔记-6串口通信

    6 串口通信 [toc] 注:笔记主要参考B站江科大自化协教学视频"51单片机入门教程-2020版 程序全程纯手打 从零开始入门". 注:工程及代码文件放在了本人的Github仓库 ...

  3. 51单片机学习笔记(串口通信 LED点阵屏 DS1302)

    四.串口通信 1.基本概念 通信中最重要的两个方面: 信息表示和解析方法: 信息的传输方法. 通信双方事先需要约定好信息的表示方法和解析方法,做到一致,否则信息不能有效传递. 信号的传输方法是指经过编 ...

  4. C51单片机学习笔记之串口通信

    简介 串口通信就是单片机和pc之间的一种通信方式. 通信方式:并行,串行,同步,异步(最常用的) 传输方向:单工,半双工(不同时间),全双工 基本结构 ​ 相关寄存器 SCON串口控制寄存器(主要用方 ...

  5. Arduino学习笔记⑥ 硬件串口通信

    文章目录 1.前言 2.常用串口函数 2.1 begin -- 启用串口 2.2 end -- 停用串口 2.3 print.println.printF -- 打印输出数据 2.4 read -- ...

  6. STM32学习笔记-USART串口通信+与野火STM32F407板载ESP8266进行通信

    文章目录 STM32USART介绍 STM32USART框图 第一部分 第二部分 第三部分 发送器 时序图 接收器 第四部分 软件部分: STM32通过USART与板载ESP8266通讯实验 板载WI ...

  7. 嵌入式学习笔记——STM32的USART通信概述

    文章目录 前言 常用通信协议分类及其特征介绍 通信协议 通信协议分类 1.同步异步通信 2.全双工/半双工/单工 3.现场总线/板级总线 4. 串行/并行通信 5. 有线通信.无线通信 STM32通信 ...

  8. 嵌入式学习笔记——ADC模数转换器

    ADC模数转换器 前言 ADC介绍 ADC概述 ADC的数量 ADC的特性 ADC框图 芯片外部框图 芯片内部框图 转换部分框图 状态输出部分 条件触发框图 寄存器介绍 编程思路 模式选择 规则通道的 ...

  9. 嵌入式学习笔记——基于Cortex-M的单片机介绍

    基于Cortex-M的单片机介绍 前言 1生产厂商及其产品线 1.1ARM单片机的产品线 1.2命名规则 作业1 2习单片机的资料准备 2.1STM32开发所需手册 2.1.1芯片的数据手册 芯片基本 ...

最新文章

  1. Flex Javascript 交互实现代码
  2. wamp(ajax)
  3. 【 C 】字符分类函数
  4. Inception GoogLeNet
  5. hibernate mysql缓存机制_Hibernate的缓存机制
  6. ubuntu -- 不输入密码执行sudo
  7. Maven硒测试自动化教程
  8. 情报领域因果推理智能项目概览:以DAPAR为例
  9. oracle控制文件
  10. Net4.0---对HTML净化的处理
  11. 计算机专业毕设外文翻译springboot_java毕业设计_springboot框架的计算机系党员信息管理系统...
  12. Libco是一个C/C++协程库,在微信服务中广泛使用
  13. csh shell_Shell基础知识
  14. mysql connector net 6.9.5_mysql connector/net6.9.5 下载 - 51下载网
  15. 2020计算机顶级大会_2020年顶级公司和专业人员将使用40多种Web工具和服务
  16. 潜在语义分析(TF-IDF、LSA)
  17. 机外码、区位码、国标码、机内码
  18. element ui 弹窗在IE11中关闭时闪现问题修复
  19. Mp3帧分析(数据帧)
  20. 【Java】9、Java IO 流

热门文章

  1. 骨传导原理是什么,骨传导耳机对耳朵有伤害吗?
  2. 会汇编语言学c语言好学吗,只有C语言功底的我学习汇编语言可以吗?
  3. 好评率过低的店铺在以后将越来越难以生存
  4. 微服务 支付 核对 对账系统
  5. dlib 安装教程(三种方法)
  6. php 生成迅雷地址,php实现把url转换迅雷thunder资源下载地址的方法,_PHP教程
  7. linux下配置网络环境
  8. Flutter系列(二)flutter项目打安装包
  9. Mic Android 8.1 方案
  10. 5分钟外设学堂:耳机不响别慌,换个插头能救活!