C51单片机学习笔记之串口通信
简介
串口通信就是单片机和pc之间的一种通信方式。
通信方式:并行,串行,同步,异步(最常用的)
传输方向:单工,半双工(不同时间),全双工
基本结构
相关寄存器
SCON串口控制寄存器(主要用方式1)
位 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
符号 | SM0 | SM1 | SM2 | REN | TB8 | RB8 | TI | RI |
多机通信控制位 | 允许接收位 | 是要发送的第9位数据位 | 接收到的第9位数据位 | 发送中断标志位 | 接收中断标志位 | |||
主要用于方式2,3中 | 1允许接收 | |||||||
0拒绝接收 |
TB8——在方式2和方式3中,TB8是要作为数据帧第9位被发送出去的,在多机通信中,可用于判断当前数据帧的数据是地址还是数据,TB8=0为数据,TB8=1为地址
RB8——当单片机已经接收一帧数据帧时,会把数据帧中的第9位放到 RB8中。方式0不使用RB8,在方式2和方式3中,RB8为接收到的数据帧的第9位数据位。
TI——方式1、2、3中。当发送数据完毕,硬件会将其置1,当 TI 被置1,会向CPU发送中断请求。我们记得要在中断服务程序中把 IT 置回0
RI——当接受完一帧数据时,RI 由硬件置1,当RI 被置1,会向CPU请求中断。同样要在中断服务程序中把 RI 置回0。
SM0 | SM1 | 工作方式 | 功能 | 波特率 |
0 | 0 | 方式0 | 8位同步移位寄存器 | 晶振频率 / 12 |
0 | 1 | 方式1 | 10位UART | 可变 |
1 | 0 | 方式2 | 11位 | 晶振频率/32或晶振频率/64 |
1 | 1 | 方式3 | 11位 | 可变 |
PCON功率控制寄存器
位 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
PCON | SMOD |
这个寄存器只有一个位SMOD,在方式1,2.,3时,波特率都与SMOD有关,当SMOD=1时,波特率会增加一倍。复位时,SMOD变回0。
SBUF寄存器:51单片机中的特殊寄存器,串行数据缓冲器(一个接收一个发送),两个其实是共用的一个地址99H,但是两个在物理上面是分开的。
当发送使用时,就采用SBUF=XXX; (XXX为需要传送的数据)
当接收使用时,采用XXX=SBUF;
记得因为是串行的所以传输都是一位一位进行的。
波特率计算
代码部分
#include <REGX52.H>
#include "delay.h"
#include "DigitalTube.h"
void init()
{SCON=0x50;//配置寄存器PCON=0;//波特率不加倍TMOD |=0X20;//定时器选择工作模式2TH1=TL1=0xfd;//波特率9600EA=1;//中断打开ES=1;//接受中断ET1=1;//定时器中断关闭TR1=1;//定时器开关打开
}
void UART_SendByte() interrupt 4
{unsigned char date; //定义一个数据delay();date = SBUF;//pc发送数据RI = 0; //接收关闭print(date/10,1);//控制数码管print(date%10,2);SBUF = date;//pc接收数据while(!TI);//判断发送是否关闭TI = 0;//发送关闭
}
结论
代码部分我只给了中断配置及串口通信的代码,其余大家自由发挥。本章重点是搞清楚串口通信的寄存器配置,波特率的计算,以及与之前中断、定时器相关知识相结合。——中断——定时器
C51单片机学习笔记之串口通信相关推荐
- 51单片机学习笔记-6串口通信
6 串口通信 [toc] 注:笔记主要参考B站江科大自化协教学视频"51单片机入门教程-2020版 程序全程纯手打 从零开始入门". 注:工程及代码文件放在了本人的Github仓库 ...
- 51单片机学习笔记(串口通信 LED点阵屏 DS1302)
四.串口通信 1.基本概念 通信中最重要的两个方面: 信息表示和解析方法: 信息的传输方法. 通信双方事先需要约定好信息的表示方法和解析方法,做到一致,否则信息不能有效传递. 信号的传输方法是指经过编 ...
- 【C51单片机学习笔记--DS1302时钟芯片蜂鸣器I2C总线AT24C02存储器】
C51单片机学习笔记–DS1302时钟芯片&&蜂鸣器&&I2C总线&&AT24C02存储器 文章目录 一.DS1302时钟芯片介绍 二.DS1302时钟 ...
- C51单片机学习笔记之定时器
简介 "定时器/计数器"说的是一个东西,因为它既能计时也能计数.是存在于单片机内部的一个独立的硬件部分,依赖晶振产生固定的时间间隔,产生了一定量的固定时间间隔后会引发定时器中断从而 ...
- c51单片机学习笔记-LED流水灯实验
目的:实现 LED 流水灯,只需循环让 D1-D8 指示灯逐个点亮. 方法:点亮 D1 且把 D2-D8 熄灭,延时一段时间后再点亮 D2 且把 D1. D3-D8 熄灭,延时一段时间后再点亮 D3 ...
- 【K210】K210学习笔记五——串口通信
[K210]K210学习笔记五--串口通信 前言 K210如何进行串口通信 K210串口配置 K210串口发送相关定义 K210串口接收相关定义 K210串口发送接收测试 完整源码 前言 本人大四学生 ...
- 51单片机学习--定时器--中断--串口通信
51单片机学习–定时器–中断–串口通信 定时器–中断–串口通信 中断分类 定时器中断 外部中断 串口中断 基本概念 对于单片机来讲, 中断是指 CPU 在处理某一事件 A 时, 发生了另一事件 B, ...
- C51单片机学习笔记(一)——搭建开发环境及烧写工具
C51单片机学习笔记(一)--搭建开发环境及烧写工具 文章目录 C51单片机学习笔记(一)--搭建开发环境及烧写工具 1.搭建软件开发环境及使用(Keil uVision) 2.将程序下载到单片机(烧 ...
- Arduino学习笔记⑥ 硬件串口通信
文章目录 1.前言 2.常用串口函数 2.1 begin -- 启用串口 2.2 end -- 停用串口 2.3 print.println.printF -- 打印输出数据 2.4 read -- ...
最新文章
- 北京智源大会 | AI + 医疗的下一个十年:从公共卫生预警到人类基因密码破解...
- jQuery学习总结之基础知识----持续更新中
- 神策数据张涛:微信生态数字化运营解决方案
- 饥荒海难机器人怎么用_饥荒开发商又一款神作,难到吐血的生存游戏!
- 【C++】异常 Exception
- jdk8 mysql安装教程_Linux系统:centos7下安装Jdk8、Tomcat8.5、MySQL5.7环境
- LINUX中文件的移动,Linux中文件移动文件的操作命令为 ()
- Java项目大合集练手项目经验
- win10卓越性能模式
- Qt----Qt控制LED
- 制作一个html网页的步骤,制作一个完整的网页的步骤
- 有效预防xss_预防XSS攻击的一些方法整理
- Keil5创建工程(STM32F407)
- 图划分(Graph PartitionRe-ordering): METIS(5.x)ParMETIS(4.x)使用实践
- 亚马逊国际站通过ASIN获取商品信息
- 心血来潮——gitlab-ce汉化版
- JQuery-weui city-picker动态加载数据
- blackarch linux 的安装(vmware虚拟机)
- Windows x64隐藏可执行内存
- 《C和指针》学习备忘总结
热门文章
- 韩国Naver批量数据采集上传
- [Handbook]一键某察者新闻
- 基于数字孪生的变电站三维全息研判智慧联动研究
- SegFormer: Simple and Efficient Design for Semantic Segmentation with Transformers
- 计算机USB小型路由器,千万别小看它!U盘神奇用途盘点:能当路由
- 基于Bootstrap+html的响应式速递快递物流网页设计
- 内容匹配广告投放技术5:品牌展示广告(一)(百度文库课程)
- 医院自助机和分诊那个php,一种医院分诊用自助查询分诊机的制作方法
- 科目一考试系统服务器奔溃,科目一错误率最高的题 学员都崩溃了
- 多思计算机组成原理实验六:程序计数器实验