1、51单片机自带硬件串口接口,使用时只需要进行寄存器配置即可。

2、波特率有4种可选择,默认9600bps。另外还有1个字节的发送函数,n个字符发送函数。

3、有几个寄存器默认的reg52.h里面没有,我也给添加进去了,但是我也没有用到。

4、GB2312编码汉字占2个字节,UTF-8汉字占3个字节,英文均占用1个字节。使用串口工具需要注意,要不会出现中文乱码。

5、串口波特率也要一致,要不然也会出现乱码情况。

#ifndef __UART_H__
#define __UART_H__#include <reg52.h>
sfr IPH_    =0xB7;//中断优先级高位寄存器
sfr SADEN_  =0xB9;//从机地址掩码寄存器
sfr SADDR_  =0xA9;//从机地址控制寄存器// bps4800        1输入
// bps9600      2输入
// bps19200     3输入
// bps57600     4输入//串口初始化装载,使用定时器1产生波特率,默认为9600bps
void UART_RES_LOAD_T1(unsigned char Mode_n_bps);//4800bps/9600bps/19200bps/57600bps//串口发送数据
void UART_Send_1Byte_Data(unsigned char DAT);//串口发送字符串
void UART_Send_string(unsigned char* c);#endif // !__UART_H__
#include "uart.h"//串口初始化装载,使用定时器1产生波特率
//串口工作方式1,8位uart且波特率可变,且允许串口接收数据
void UART_RES_LOAD_T1(unsigned char Mode_n_bps)//默认波特率9600bps
{SCON = 0x50;//串口工作方式1,8位uart且波特率可变,且允许串口接收数据PCON = 0x10;//0x10是PCON的默认值,最高位SMOD=1表示串口工作模式1、2、3下加倍波特率(芯片手册上有点问题)SADEN_ = 0x00;//不使用SADDR_ = 0x00;//不使用EA = 1;//打开总中断ES = 1;//打开串口中断//串口1中断优先级0IPH_ = 0x00;IP = 0x00;TMOD |= 0x20;//开启定时器T1,并使用工作方式2(8位自动重装)switch(Mode_n_bps){case 1: TL1 = 250;//计数初值设置波特率4800bpsTH1 = 250;//装载固定初值,当TL1加满后会自动把TH1的值装载进去break;//bps4800case 2:TL1 = 253;//计数初值设置波特率9600bpsTH1 = 253;//装载固定初值,当TL1加满后会自动把TH1的值装载进去break;//bps9600case 3:PCON |= 0x80;//SM0D=1,波特率加倍TL1 = 253;//计数初值设置波特率19200bpsTH1 = 253;//装载固定初值,当TL1加满后会自动把TH1的值装载进去break;//bps19200case 4:PCON |= 0x80;//SM0D=1,波特率加倍TL1 = 255;//计数初值设置波特率57600bpsTH1 = 255;//装载固定初值,当TL1加满后会自动把TH1的值装载进去break;//bps57600default://默认bps9600TL1 = 253;//计数初值设置波特率9600bpsTH1 = 253;//装载固定初值,当TL1加满后会自动把TH1的值装载进去break;//bps9600}ET1 = 0;//禁止定时器1发出中断TR1 = 1;//启动定时器1
}
//串口发送数据
void UART_Send_1Byte_Data(unsigned char DAT)
{ES = 0;//要发送数据了,先关闭串口中断服务TI = 0;//准备发送数据SBUF = DAT;while (!TI);//判断是否发送完成TI=1?TI = 0;//软件清除发送完成的标志位ES = 1;//发送完成了,开启串口中断服务
}
//串口发送字符串
void UART_Send_string(unsigned char *c)
{while (*c != '\0'){UART_Send_1Byte_Data(*c++);//带*c表示的是值,c表示的是地址}
}//串口中断函数,中断号4
void UART(void) interrupt 4
{EA = 0;//先关闭总中断,防止在处理下面的时候被别的中断打断if (TI) //发送标志位  {TI = 0;}if (RI)     //接收标志位{RI = 0;UART_Send_1Byte_Data(SBUF+1);//把串口接收到的值+1在重新发送回去}EA = 1;//打开总中断
}

51单片机——UART串口通讯-波特率4种模式可选1.0相关推荐

  1. 51单片机——UART串口通讯-波特率可选,增添定时器2产生波特率1.0

    1.51单片机自带硬件串口接口,使用时只需要进行寄存器配置即可. 2.定时器1波特率有4种可选择,默认9600bps.另外还有1个字节的发送函数,字符串发送函数. 3.增添:定时器2波特率有5种可选择 ...

  2. ABOV单片机UART串口通讯实现讲解及示例代码-[MC96F6332D]

    一.准备工作 1.KEIL C51编译环境 2.CodeGen8 代码生成器 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.生成串口通讯代码 1.在CodeGen8 代码生成器 ...

  3. 51单片机之串口通讯应用实例(逻辑分析仪调试)

    硬件:STC89C52RC 开发工具:Keil uVision4 前言:8051是一款很经典的.历史悠久的单片机,作为一款入门级的单片机8051受到很多初学者的欢迎.89c52是8051系列的成员之一 ...

  4. ABOV单片机UART串口通讯中Printf函数实现讲解及示例代码-[MC96F6332D]

    一.准备工作 1.KEIL C51编译环境 2.CodeGen8 代码生成器 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.生成串口代码 1.在CodeGen8 代码生成器的外 ...

  5. 51单片机之串口波特率配置

    51单片机之串口波特率计算 方式0的波特率配置 方式2的波特率配置 方式1和3的波特率配置 232串口模式,共有4钟方式,其中方式0.方式2的波特率是固定的.方式1.方式3的是可变波特率,这两个是用T ...

  6. 51单片机串口通讯c语言程序,如何使用51单片机实现串口通信

    描述 STC51单片机一般带有1个串口,有的带有2个串口,串口一般用于下载程序和串口通信.串口通信特别适合控制设备,所以工控机的电脑上一般都带有串口. 51单片机的串口引脚为P3.0引脚与P3.1引脚 ...

  7. 51单片机的串口通信

    1.串口通信 (1)串口是串行接口(serial port)的简称,也称为串行通信接口或COM接口. (2)串口通信是指采用串行通信协议(serial communication)在一条信号线上将数据 ...

  8. 51单片机——UART

    单片机--UART串口通信 宗旨:技术的学习是有限的,分享的精神是无限的. 对于单片机来说,通信则与传感器.存储芯片.外围控制芯片等技术紧密结合,成为整个单片机系统的"神经中枢". ...

  9. UART串口通讯协议解析

    UART串口通讯协议解析 概述 接口 通信协议 波特率 示例 最后 概述 通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART ...

最新文章

  1. linux下C程序:运行单个实例
  2. 解决Eclipse 启动后总是Building WorkSpace(sleeping)
  3. 修改域名dns服务器,新网互联域名如何修改DNS设置方法
  4. python四十二:类和对象
  5. imx6背光驱动调试
  6. 用SHELL脚本来防SSH和vsftpd暴力破解(第②版)
  7. 分类素材(part1)--Python与机器学习实战
  8. Selenium 生成HTML的测试报告
  9. RS485 RS232
  10. 前后端交互总结2:使用PHP进行表单数据上传与更新
  11. Nginx篇--解读nginx配置
  12. Python Revisited Day 09 (调试、测试与Profiling)
  13. 喜马拉雅音频下载+x2m文件转换
  14. Fragstats计算景观格局指数——批量计算(二)
  15. java 读取文件 效率_JAVA读写文本文件的效率
  16. 东芝固态硬盘升级工具下载(软件+DMG)
  17. Ubuntu18.04双系统安装+GPU+CUDA10+CUDNN7+ANACONDA3+PYTHON+PYCHARM
  18. win11安装Pandoc
  19. for update
  20. 交叉编译详解 - 概念篇

热门文章

  1. 2022CCPC C - 测量学
  2. iframe嵌入YouTube,并设置播放进度
  3. 单目标优化:海马优化算法(Sea Horse Optimizer,SHO)求解CEC2020(提供Matlab代码)
  4. mysql命令行创建函数
  5. UIControl 详细解释
  6. 安装包制作工具 SetupFactory使用4:安装时写入注册表和拷贝文件到指定目录
  7. vue3+elementPlus主题动态切换2022,亲测可用!
  8. 安装 WebDesigner 之后,ASPNET 帐户没有对 IIS 的访问权。
  9. matlab多项式拟合要求系数项大于零,matlab多项式系数
  10. 一个程序员的真实生活感悟