51单片机-串口通信

2023-05-16

目录

1.什么是通信

1.1.通信的概念

1.2.传送方式

1.3.同步方式

1.4.传送方向

1.5.校验方式

2.单片机串口介绍

2.1.硬件电路

2.2.电平标准

2.3.常见接口

2.4.内部结构

2.5.相关寄存器

2.6.工作模式(模式1)

2.7.如何配置串口中断

3.实际应用

3.1.单片机向电脑发送数据

3.2.电脑向单片机发送数据


1.什么是通信

1.1.通信的概念

        简单来说,通信就是传递信息;我把信息发给你,你把信息发给我,这就是通信;但是我如何把信息准确传递给你,方式有很多。

        在硬件领域,通信的方式也有很多种,从简单的串口通信,到I2C,SPI,CAN,MIPI等,不同的通信总线,对应的协议也不同;但通信的本质有相同之处;

  • 按照数据传送方式可分为串行通信和并行通信;
  • 按照通信的数据同步方式,可分为异步通信和同步通信;
  • 按照数据的传输方向又可分为单工、半双工和全双工通信

1.2.传送方式

        计算机与外界的信息交换称为通信,通信传送的基本方式可分为并行通信和串行通信两种;

并行通信:将数据字节的各位用多条数据线同时进行传送,如系统总线;

  • 优点:控制简单,传输速度快;
  • 缺点:由于传输线较多,长距离传送时成本高;抗干扰能力差,固接受方的各位同时接收存在困难;

串行通信:将数据字节分成一位一位的形式,在一条传输线上逐位传送

  • 优点:传输线少,长距离传送时,成本低;抗干扰能力强,适合长距离传送;
  • 缺点:控制复杂,传输速度慢;

1.3.同步方式

同步通信:同步通信是一种连续传送数据的通信方式,一次通信传送多个字符数据,称为一帧信息。

  • 特点:数据传输速率较高;其缺点是通信双方必须建立准确的位定时信号,也就是发送时钟和接收时钟保持严格同步;

  • 同步字符:传送数据前,传送同步字符进行联络;
  • 信息帧:包含同步字符,数据场,校验字符;
  • 数据场:多个数据字节之间没有间隙,连续发送;

异步通信:在异步通信中,数据通常是以字符或字节为单位组成数据帧进行传送的。收、发端各有一套彼此独立,互不同步的通信机构,由于收发数据的帧格式相同,因此可以相互识别接收到的数据信息

  • 特点:不要求收发双方时钟的严格一致,实现容易,设备开销较小,但每个字符要附加2~3位用于起止位,各帧之间还有间隔,因此传输效率不高。

  • 起始位:起始位必须是持续一个比特时间的逻辑0电平,标志传输一个字符的开始,接收方可用起始位使自己的接收时钟与发送方的数据同步;
  • 数据位:数据位紧跟在起始位之后,是通信中的真正有效信息;数据位的位数可以由通信双方共同约定;传输数据时先传送字符的低位,后传送字符的高位;
  • 校验位:奇偶校验位仅占一位,用于进行奇校验或偶校验,奇偶检验位不是必须有的。如果是奇校验,需要保证传输的数据总共有奇数个逻辑高位;如果是偶校验,需要保证传输的数据总共有偶数个逻辑高位。
  • 停止位:停止位可以是是1位、1.5位或2位,可以由软件设定;它一定是逻辑1电平,标志着传输一个字符的结束;
  • 空闲位:空闲位是指从一个字符的停止位结束到下一个字符的起始位开始,表示线路处于空闲状态,必须由高电平来填充;

1.4.传送方向

        串行通信的传送方式有三种,分别是单工、半双工和全双工。

单工: 数据传输只支持数据在一个方向上传输;

半双工: 允许数据在两个方向上传输,但某一时刻只允许数据在一个方向上传输,实际上是一种切换方向的单工通信,不需要独立的接收端和发送端,两者可合并为一个端口;

全双工: 允许数据同时在两个方向上传输,因此全双工通信是两个单工方式的结合,需要独立的接收端和发送端。

1.5.校验方式

  • 奇偶校验:在发送数据时,数据位尾随的1位为奇偶校验位(1或0)。奇校验时,数据中“1”的个数与校验位“1”的个数之和应为奇数;偶校验时,数据中“1”的个数与校验位“1”的个数之和应为偶数。接收字符时,对“1”的个数进行校验,若发现不一致,则说明传输数据过程中出现了差错。
  • 代码和校验:代码和校验是发送方将所发数据块求和(或各字节异或),产生一个字节的校验字符(校验和)附加到数据块末尾。接收方接收数据同时对数据块(除校验字节外)求和(或各字节异或),将所得的结果与发送方的“校验和”进行比较,相符则无差错,否则即认为传送过程中出现了差错。
  • 循环冗余校验:这种校验是通过某种数学运算实现有效信息与校验位之间的循环校验,常用于对磁盘信息的传输、存储区的完整性校验等。这种校验方法纠错能力强,广泛应用于同步通信中。

2.单片机串口介绍

        串口通信(Serial Communication),是指外设和计算机间通过数据信号线地线等按位进行传输数据的一种通信方式,属于串行通信方式。串口是一种接口标准,它规定了接口的电气标准,没有规定接口插件电缆以及使用的协议。

        51单片机内部自带UART(Universal Asynchronous Receiver Transmitter,通用异步收发器),可实现单片机的串口通信。

2.1.硬件电路

        简单双向串口通信有两根通信线(发送端TXD和接收端RXD),交叉连接,并且共GND,如图:

2.2.电平标准

        电平标准是数据1和数据0的表达方式,是传输线缆中人为规定的电压与数据的对应关系,串口常用的电平标准有如下三种:

  • TTL电平:+5V表示1,0V表示0
  • RS232电平:-3~-15V表示1,+3~+15V表示0
  • RS485电平:两线压差+2~+6V表示1,-2~-6V表示0(差分信号)

2.3.常见接口

 此外,还有CAN、USB等;

2.4.内部结构

        有两个物理上独立的接收、发送缓冲器SBUF,它们占用同一地址99H ;接收器是双缓冲结构 ;发送缓冲器,因为发送时CPU是主动的,不会产生重叠错误

2.5.相关寄存器

 1.串口控制寄存器SCON

  • SM0/SM1:工作方式选择位;

  • SM2:多机通讯控制位;方式2/3中使用,控制接收数据;SM2=1,只有当RB8=1才能激活R1,接收数据;
  • REN:允许串行接收位;REN=1,启动串行口接收数据;REN=0,禁止接收;
  • TB8:在方式2或方式3中,是发送数据的第9位,可以用软件规定其作用;可以用作数据基偶校验位,或在多机通信中,作为地址帧/数据帧的标志位;
  • RB8:在方式2或方式3中,是发送数据的第9位,可以用软件规定其作用;可以用作数据基偶校验位;在方式1时,若SM2=0,则RB8是接收到的停止位;
  • TI:发送中断标志位;在方式0时,当串行发送第8位数据结束时,或在其他方式,串行发送停止位的开始时,由内部硬件使TI置1,向CPU发送中断申请;在中断服务程序中,必须用软件将其清0,取消此中断申请
  • RI:接收专断标志位;在方式0时,当串行发送第8位数据结束时,或在其他方式,串行接收停止位的中间时,由内部硬件使RI置1,向CPU发送中断申请;在中断服务程序中,必须用软件将其清0,取消此中断申请;

2.电源控制寄存器PCON

只有一位SMOD和串口工作相关,其他位是电源控制相关;那为什么和串口相关的控制位,会放到PCON去呢,原因是串口控制位超过了8位,刚好电源的控制位用不到8位,所以...

  • SMOD:波特率倍增位;在串口方式1/2/3时,波特率与SMOD有关,当SMOD=1,波特率加倍;复位时,SMOD=0;

2.6.工作模式(模式1)

模式1:模式1是10位数据的异步通信口,其中1位起始位,8位数据位,1位停止位,TXD和RXD分别为数据的发送和接收引脚;其传输波特率是可变的,对于51单片机,波特率由定时器1的溢出率决定;通常我们在做单片机与单片机串口通信,单片机与计算机串口通信,计算机与计算机串口通信时,基本都选择模式1,其传输一帧的数据格式如下:

        模式1传输一帧的数据共10位,1位起始位(0),8位数据位,最低位在前,最高位在后,1位停止位(1),帧与帧之间可以有空闲,也可以无空闲,模式1数据输出和输入时序图如下:

波特率:模式1的波特率是可变的,波特率=2^SMOD/32*溢出率;

  • 当单片机工作在12T模式时,定时器1的溢出率=SYSclk/12/(256-TH1)
  • 当单片机工作在6T模式时,定时器1的溢出率=SYSclk/6/(256-TH1)

溢出率:单位时间(秒)内定时器/计数器1回0溢出的次数,即定时器/计数器1的溢出率=定时器/计数器1的溢出次数/秒

2.7.如何配置串口中断

        在具体操作串行口之前,需要对单片机的一些与串口有关的特殊功能寄存器进行初始化设置,主要是设置产生波特率的定时器1,串行口控制,和中断控制,具体步骤如下:

  • 配置TMOD寄存器:确定定时器的工作模式(T2);
  • 配置TCON寄存器:定时器的控制开关;
  • 计数器初值配置:装载TH1,TL1;
  • 配置SCON寄存器:确定串行口工作模式;
  • 中断配置:串行口在中断方式时,要进行中断设置(配置IE,I);

//*串口初始化
void UART_Init()
{
	//*TMOD配置:设置定时器模式,
	TMOD&=0x0F;
	TMOD|=0x20;

    //*TCON配置
	TR1=1;       //打开定时器

    //*计数器配置
	TH1=0xF3;    //设置定时器初始值 1111 0011
	TL1=0xF3;    //设置定时器重装值 1111 0011
    /********************************************
    波特率计算:
    1.二进制的OxF3=十进制的243;
    2.每隔256溢出一次,256-243=13(每计13个数就溢出1次)
    3.12MHz的晶振,每1us计一次数,以上计13个数就会溢出,也就需要13us
    4.溢出率=1/13us=0.07692MHz
    5.波特率=溢出率/16=0.00480769MHz=4807Hz
    6.波特率加倍=波特率*2=9614Hz
    **********************************************/

    //*SCON配置 波特率9600hz
	SCON=0x50;	 //设置串口工作模式1,SCON=0101 0000
	PCON=0x80;   //设置波特率,SMOD=1,波特率加倍;PCON=1000 0000

    //*中断配置
    ES=1;        //打开串行口中断
    EA=1;        //打开总中断   
}

3.实际应用

3.1.单片机向电脑发送数据

功能需求:串口向电脑发送递增的16进制数据(单片机每隔一段时间通过串口向电脑发送数据)

程序设计:首先,将串口有关的特殊功能寄存器进行初始化设置(初始化);其次,定义串口需要发送的字节(子函数);最后,通过主函数实现想要的效果

#include <REGX51.H>
#include "Delay.h"

unsigned char Sec;//全局变量

//*串口初始化函数
/********************************************
因定时器1在工作模式2时,为8位自动重装方式,我们进中断后无事可做,
因此,无需打开定时器1的中断,更无需写定时器1的中断服务程序
**********************************************/
void UART_Init()
{
	TMOD&=0x0F;
	TMOD|=0x20;
	TR1=1;
	TH1=0xF3;
	TL1=0xF3;
	ET1=0;
	SCON=0x40;
	PCON|=0x80;
}

//*子函数
void UART_SendByte(unsigned char Byte)
{
	SBUF=Byte;    //把Byte的值赋给缓存SBUF
	while(TI==0); //确认发送控制器TI标志位的状态,只有当TI不等于0时,才会跳出循环
	TI=0;         //清除发送完成标志位
}

//*主函数
void main()
{
	UART_Init();
	while(1)
	{
		UART_SendByte(Sec);
        Sec++;
		Delay(1000);//延时1s
	}
}

3.2.电脑向单片机发送数据

功能需求:电脑向单片机发送数据,同时控制LED灯亮灭

程序设计:首先,将串口有关的特殊功能寄存器进行初始化设置(初始化);其次,定义串口需要发送的数据(子函数);最后,通过主函数和中断服务程序,实现想要功能

#include <REGX51.H>

//*串口初始化函数
void UART_Init()
{
	TMOD&=0x0F;
	TMOD|=0x20;
	TR1=1;
	TH1=0xF3;
	TL1=0xF3;
	ET1=0;
	SCON=0x50;
	PCON|=0x80;
	ES=1;
	EA=1;
}

//*子函数
void UART_SendByte(unsigned char Byte)
{
	SBUF=Byte;    //把Byte的值赋给缓存SBUF
	while(TI==0); //确认发送控制器TI标志位的状态,只有当TI不等于0时,才会跳出循环
	TI=0;         //清除发送完成标志位
}

//*主函数
void main()
{
	UART_Init();
	while(1)
	{

	}
}

//*中断函数
void UART_Routine() interrupt 4
{
	if(RI==1)    //接收中断
	{
		P2=~SBUF;//将P2口赋值为~SBUF,控制LED亮灭
		UART_SendByte(SBUF);//单片机接收电脑发送的数据
		RI=0;    //清除接收完成标志位
	}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

51单片机-串口通信 的相关文章

  • 大疆遥控控制M3508电机二(基于HAL库)

    接上一篇文章 xff0c 话不多说直接开始 一 打开我们创建的工程文件 xff0c 先就建立一个文件夹用来存放我们写的子文件 xff08 不建立也行 xff09 xff0c 然后建立pid h xff0c pid c存入我们建立的文件夹中
  • aruco_ros 在相机图像中显示的坐标轴姿态与TF发布的姿态不一致 解决方法

    aruco ros 在相机图像中显示的坐标轴姿态与TF发布的姿态不一致 解决方法 运行环境问题描述解决方案 运行环境 系统版本 xff1a Ubuntu 16 04 ROS版本 xff1a Kinetic 问题描述 在进行手眼标定过程中 x
  • 安装vscode的时候没有勾选快捷方式用vscode打开文件,如何用vscode快速打开文件或者文件夹

    1 需要在注册表里面添加内容可以实现 xff0c 下面有一种简单的方式来完成这个操作 2 需要在电脑桌面新建一个Open File With VS code reg 文件然后用打开文件 xff0c 将以下代码复制 Windows Regis
  • C语言学习笔记->const和define区别

    1 define 是预编译指令 xff0c 而const 是普通变量的定义 define定义的宏是在预处理阶段展开的 xff0c 而const定义的只读变量在编译运行中使用 2 const定义的是变量 xff0c 而define定义的是常量
  • 基于栈、寄存器的优缺点

    基于栈的优点 xff1a 对硬件的依赖不高 xff0c 跨平台性 缺点 xff1a 使用的指令集高基于寄存器的优点 xff1a 相对于栈来说 xff0c 寄存器的性能高 xff0c 使用的指令集少 Java代码执行流程 xff1a java
  • Makefile文件的编写(实例详解)

    1 什么是Makefile xff1f 一个工程中的源文件不计其数 xff0c 其按类型 功能 模块分别放在若干个目录中 xff0c Makefile定义了一系列的规则来指定哪些文件需要先编译 xff0c 哪些文件需要后编译 xff0c 哪
  • 用C语言实现万年历的代码及思路(详细教程)

    万年历程序要求 xff1a 1 当选择1的时候 xff0c 输入年 xff0c 打印输入的这一年12月的日历 2 当选择2的时候 xff0c 输入年 月 xff0c 打印输入这一年这一月的日历 实现效果 xff1a 选择1时 span cl
  • 有符号数和无符号数参与运算时的问题

    陷阱题目 xff1a 下面的代码输出是 xff08 xff09 span class token macro property span class token directive hash span span class token di
  • 【Linux网络编程】基于UDP实现多人聊天室

    文章目录 一 UDP的概念1 1 UDP1 2 UDP特点 二 采用UDP实现多人聊天室原因三 多人聊天室项目功能四 实现多人聊天室项目流程分析4 1 前期准备4 1 1 定义结构体4 1 2 定义链表 4 2 多人聊天室服务器4 2 1
  • 【C++】C向C++的知识过度(上)

    文章目录 一 C与C 43 43 的区别1 1 C是面向过程的1 2 C 43 43 是面向对象的1 3 编译器的区别 二 C与C 43 43 默认代码的不同三 命名空间3 1 关键字 96 namespace 96 去定义自己的名字空间
  • 【C++】四种类型转换 | C++异常处理机制 | C++11新特性之右值引用和移动构造

    文章目录 一 C 43 43 中的四种类型转换1 1 静态类型转换1 1 1 C 43 43 中内置类型的转换1 1 2 C 43 43 中的有继承关系存在的场景下的类型强转 1 2 动态类型转换1 3 常类型转换1 4 解释类型转换 二
  • 【Linux操作系统】进程详解(上)

    文章目录 一 进程的定义二 进程的特征三 进程的组成及其作用四 进程控制块4 1 进程控制块定义4 2 task struct的内容 五 进程与程序的区别六 进程与线程的区别七 进程的种类八 PID8 1 PID定义8 2 特殊PID的进程
  • 【Linux操作系统】进程详解(下)

    文章目录 前言一 父子进程共用光标问题1 1 验证1 2 规避共用光标问题使用多进程拷贝同一个文件 二 进程相关函数2 1 getpid getppid函数2 2 exit exit函数2 3 wait waitpid函数 三 守护进程3
  • git补丁操作(git diff、git format-patch、git apply、git am)

    https blog csdn net qq 42138454 article details 119058431 实际使用补丁用的 xff1a patch p1 lt device nuwa diff 一 打补丁的两种方法 Git 提供了
  • 三、C++ 链接器 linker

    cilinking 从C 43 43 源码到可执行二进制的过程 compile文件之后进行链接 xff0c 找到每个符号 函数的位置 xff0c 并将其链接在一起 每个文件被编译成一个独立的 obj文件作为translation unit
  • 五、C++中的头文件 Header Files

    头文件 Header Files传统上用于声明某些函数类型 xff0c 以便可以用于整个程序中 例如 xff1a 在一个文件1中创建函数 xff0c 然后想在另一个文件2中使用 xff0c 尝试编译此文件2时 xff0c C 43 43 不
  • 六、如何使用VS调试代码、条件语句

    how to use Visual Studio to debug our code 查看程序断点 调试程序 1 设置断点 断点 xff0c 调试器将中断 xff0c break xff0c 程序调试是将会中断 xff0c continue
  • 七、如何设置C++项目 set up C++ project

    Visual Studio设置项目文件目录 组织项目文件 打开Visual Studio Start Page 起始页 xff0c 新建项目 New Project xff0c C 43 43 下的General Empty Project
  • 八、C++中的循环 for while do...while及控制流语句

    xff08 1 xff09 for while do while循环 简单来讲 xff0c 循环就是多次执行同样的代码 例 xff0c 如何输出重复内容多次 xff1a 代码复制多次 xff1b 写个函数调用多次 xff1b 写循环重复执行
  • 九、C++ 指针 pointer 引用 Reference

    原始指针 raw pointer 非智能指针 smart pointer 指针是一个整数 xff0c 一个数字 xff0c 它存储一个内存地址 创建指针 xff1a void ptr 61 0 void指针表明不关心指针存储地址的数据类型

随机推荐

  • 基础电路-电子电路

    1 1 电流 xff1a 在导体的两端加上电压 xff0c 导体的电子就会在电场的作用下做定向运动 xff0c 形成电子流 xff0c 称之为 电流 xff1b 电流方向和电子移动方向相反 xff1b 电流有直流和之分 1 2 电压 xff
  • CTP工作原理及结构

    1 工作原理 自容TP xff1a 自电容的扫描方式是进行逐行扫描 xff0c 所有通道既是感应通道也是驱动信号通道 xff0c 通过对比触摸前后电容量的变化来判定X Y方向坐标 xff0c 然后组合成触摸点的坐标 互容TP xff1a 互
  • LCD工作原理及结构

    1 主流显示面板技术 xff1a LCD xff0c OLED xff0c MicroLED 2 主流显示屏的发展趋势 3 LCD堆叠结构 xff1a 背光 xff0c 下偏光片 xff0c TFT Glass xff0c CF Glass
  • OLED工作原理及结构

    1 主流显示面板技术 xff1a LCD xff0c OLED xff0c MicroLED 2 主流显示屏的发展趋势 3 OLED堆叠结构 xff1a 相比LCD xff0c OLED没了背光和下偏光片 4 OLED发光原理 xff1a
  • Git Fork操作与配置

    https blog csdn net Lu Ca article details 128612125 我理解的git fork xff1a 将别人 xff08 张三 xff09 仓库包括文件 xff0c 提交历史 xff0c issues
  • 背光的工作原理及结构

    1 什么是背光 xff1a LCD本身是不发光的 xff0c 因此它需要一个外部面光源系统来帮助其显示 xff0c 即背光源 xff08 Backlight xff09 xff1b 2 背光的种类 xff1a 从发光类型来分 xff0c 可
  • Microled简介及关键工艺(巨量转移)

    1 什么是Microled xff1f 通俗来讲 xff0c 将作为发光器件LED用作显示屏的像素 xff0c 固这种LED的尺寸就得做得很小 xff08 约 xff1c 100 m xff09 xff0c 这种技术就是Microled x
  • 数字电路基础-逻辑门电路

    1 门电路的概念 实现基本逻辑运算和复合运算的单元电路称为门电路 xff0c 常用的门电路有非门 与非门 或非门 与非门 与或非门等 2 基本逻辑门电路 a 与门 xff1a 全1出1 xff0c 有0出0 工作原理 xff1a 输入A B
  • 51单片机-控制LED灯

    目录 1 硬件设计 2 软件设计 2 1 点亮一颗LED灯 2 2 LED闪烁 2 3 LED流水灯 3 知识点 3 1 while函数的应用 3 2 常用数据类型 3 3 延时函数的自动生成 1 硬件设计 通过原理图分析 xff0c LE
  • 51单片机-74HC595移位寄存器

    目录 1 74HC595芯片介绍 1 1 引脚定义 1 2 工作原理 2 实际应用 2 1 控制数码管 2 2 点阵屏显示图形 2 3 点阵屏显示动画 3 知识点 3 1 位变量 xff08 sbit bit xff09 3 2 字模提取
  • 51单片机-独立按键控制LED灯

    目录 1 硬件设计 2 软件设计 2 1 独立按键控制LED闪烁 2 2 独立按键控制LED状态 2 3 独立按键控制LED显示二进制 2 4 独立按键控制LED移位 3 知识点 3 1 if语句的运用 3 2 常用运算符 1 硬件设计 轻
  • 51单片机-控制数码管

    目录 1 硬件设计 1 1 LED数码管介绍 1 2 原理图设计 2 软件设计 2 1 静态数码管显示 2 2 动态数码管显示 2 3 模块化编程 xff08 头文件 xff09 3 知识点 3 1 数组 3 2 子函数 3 3 switc
  • LCD的制作工艺

    目录 1 LCD简介 2 LCD制程 2 1 Array制程 2 1 1 像素电路 2 1 2 制程简介 2 2 Cell制程 2 3 Module组装 3 总结 1 LCD简介 LCD是目前显示领域的重要组成部分 xff0c 可通过如下链
  • 51单片机-LCD1602

    目录 1 硬件设计 1 1 LCD1602介绍 1 2 原理图 2 软件设计 2 1 控制原理 2 2 控制时序 2 3 指令集 2 4 程序设计 3 知识点 3 1 宏定义 3 2 指针与数组 3 3 for语句 1 硬件设计 1 1 L
  • 51单片机-矩阵键盘

    目录 1 硬件设计 2 软件设计 2 1 矩阵键盘扫描 2 2 矩阵键盘 密码锁 3 知识点 3 1 模块化编程的应用 3 2 include详解 1 硬件设计 矩阵键盘按键数量较多 xff0c 为了减少I O口的占用 xff0c 通常将按
  • 如何优雅的让fork后的仓库与原仓库同步

    https www cnblogs com tudou1179006580 p 14875486 html https github com selfteaching the craft of selfteaching issues 67
  • UDP——C语言socket编程

    UDP编程相比TCP来说相对简单主要用到sendto 和recvfrom 这两个函数 xff0c 接下来主要介绍一下这两个函数 头文件 span class token macro property span class token dir
  • 函数与宏定义

    前言 本文介绍函数与宏定义 一 函数的概念 1 函数的定义 自定义函数的形式 xff1a 存储类型符 返回值类型符 函数名 xff08 形参说明表 xff09 函数语句体 xff08 1 xff09 存储类型符 函数作用范围 xff0c 默
  • 51单片机-定时器中断

    目录 1 定时器 计数器 1 1 工作原理 1 2 相关寄存器 1 3 工作模式 xff08 模式1 xff09 2 中断系统 2 1 中断的概念 2 2 中断结构 2 3 中断源 2 4 相关寄存器 3 如何配置定时器中断 4 实际应用
  • 51单片机-串口通信

    目录 1 什么是通信 1 1 通信的概念 1 2 传送方式 1 3 同步方式 1 4 传送方向 1 5 校验方式 2 单片机串口介绍 2 1 硬件电路 2 2 电平标准 2 3 常见接口 2 4 内部结构 2 5 相关寄存器 2 6 工作模