0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

51单片机串口配置方法

CHANBAEK 来源:电子应用学习馆 作者:一只会飞的大鱼儿 2023-04-14 14:58 次阅读

串口,作为单片机程序开发中最常用、最方便,也是应用最广泛的程序调试方法;无论是作为调试工具,打印出调试信息,还是对功能模块进行通信,串口是每个单片机开发人员最常用的单片机外设。

由于大部分51单片机不支持在线调试功能,所以串口作为一种有效的调试功能,所以在51单片机程序开发时,无法进行在线调试,不妨可以多采用串口来进行调试。

1. 串口配置

51单片机配置除了需要配置2个8位寄存器SCON、PCON外,还要配置定时器1的控制寄存器TMOD,因为串口在进行收发需要使用定时器来采样。

(1) 状态控制寄存器 SCON

SCON 是一个逐位定义的 8 位寄存器,用于控制串行通信的方式选择、接收和发送,指 示串口的状态,SCON 即可以字节寻址也可以位寻址,字节地址 98H,地址位为 98H~9FH。它的各个位定义如下:

SM0 和 SM1 是串口的工作方式选择位,2 个选择位对应 4 种工作方式,如下表,其中 Fosc 是振荡器的频率。

(2) 电源与波特率控制寄存器

控制寄存器 PCON 也是一个逐位定义的 8 位寄存器,目前仅仅有几位有定义,如下所示:

图片

仅最高位 SMOD 与串口的控制有关,其他位与掉电方式有关。PCON 的地址为 87H 只能按 字节寻址,SMOD 是串行通信波特率系数控制位,当串口工作在工作方式 1、2 时,若使用 T1 作为波特率发生器其 SMOD=1 则波特率加倍。

(3) 定时器控制模式寄存器

TMOD是定时器、计数器模式控制寄存器,它是一个逐位定义的8位寄存器,但只能使用字节寻址

图片

当串口工作在工作方式0和2时,波特率固定,方式0时fosc/12;方式2时fosc/32或fosc/64(根据SMOD判断)。当串口工作在方式1时,波特率=(2^SMOD/32)*(单片机时钟频率/(256-X)),X是初值;C/T#为定时器和计数器选择位,0为定时器,1为计数器。

2. 串口通用程序

为了有较好的通用性,将串口程序配置为一个H文件和C文件,往后只要开发51单片机程序,都可以将该两个文件复制在工程中直接使用,无须修改。

(1)uart.h

#ifndef _UART_H_
#define _UART_H_


#include "reg52.h"


void UartInit(void);
void Send_string(unsigned char *c);
void Send_Data(unsigned char DAT);


#endif

(2)uart.c

#include "uart.h"


//串口初始化
void UartInit(void)
{
  /*串口初始化 */
  TMOD = 0x20;    //定时器T1使用工作方式2
  TH1 = 253;        // 设置初值
  TL1 = 253;
  TR1 = 1;          // 开始计时
  SCON = 0x50;    //工作方式1,波特率9600bps,允许接收   
  ES = 1;
  EA = 1;           // 打开所以中断   
  TI = 0;
  RI = 0;
}


void Send_Data(unsigned char DAT)
{
  ES = 0;
  TI=0;
  SBUF = DAT ;
  while(TI==0);
  TI=0;
  ES = 1;
}


void Send_string(unsigned char  *c)
{
  while(*c != '\\0')
  {
    Send_Data(*c++);
  }  
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6001

    文章

    43973

    浏览量

    620834
  • 寄存器
    +关注

    关注

    30

    文章

    5028

    浏览量

    117719
  • 51单片机
    +关注

    关注

    269

    文章

    5649

    浏览量

    120700
  • 调试
    +关注

    关注

    7

    文章

    527

    浏览量

    33625
  • 串口
    +关注

    关注

    14

    文章

    1483

    浏览量

    74511
收藏 人收藏

    评论

    相关推荐

    51单片机烧写程序的方法

    STC89C51是应用广泛的51单片机,很多人都是通过该单片机入门学习的,单片机的学习需要勤动手。单片机
    的头像 发表于 09-11 10:10 3588次阅读
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b>烧写程序的<b class='flag-5'>方法</b>

    51单片机模拟串口方法

    51单片机模拟串口方法随着单片机的使用日益频繁,用其作前置进行采集和通信也常见于各种应用,一
    发表于 09-17 15:21

    51单片机程序开发多采用串口来进行调试

    串口,作为单片机程序开发中最常用、最方便,也是应用最广泛的程序调试方法;无论是作为调试工具,打印出调试信息,还是对功能模块进行通信,串口是每个单片机
    发表于 11-18 09:22

    如何利用51单片机串口去烧录程序呢

    51单片机串口烧录程序方法51 单片机串口烧录程序
    发表于 12-08 08:14

    51单片机串口通信代码

    51单片机串口通信的代码设计
    发表于 11-09 17:47 173次下载

    51单片机与PC串口通信程序

    51单片机与PC串口通信程序。
    发表于 12-24 11:30 38次下载

    基于51单片机的UART串口通信

    基于51单片机的UART串口通信详解。
    发表于 11-21 10:14 6.2w次阅读
    基于<b class='flag-5'>51</b><b class='flag-5'>单片机</b>的UART<b class='flag-5'>串口</b>通信

    51单片机串口通信原理讲解

    51单片机串口通信今天研究了一下51单片机串口通信,使用的
    发表于 11-10 18:35 15次下载
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b><b class='flag-5'>串口</b>通信原理讲解

    51单片机串口通讯详解

    串口,作为单片机程序开发中最常用、最方便,也是应用最广泛的程序调试方法;无论是作为调试工具,打印出调试信息,还是对功能模块进行通信,串口是每个单片机
    发表于 11-11 17:06 15次下载
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b><b class='flag-5'>串口</b>通讯详解

    51单片机串口通信

    51单片机串口通信文章目录51单片机串口通信串口介绍
    发表于 11-18 14:06 21次下载
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b><b class='flag-5'>串口</b>通信

    51单片机串口通信

    51单片机串口通信文章目录51单片机串口通信串口介绍
    发表于 11-21 20:36 58次下载
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b><b class='flag-5'>串口</b>通信

    串口 单片机 文件_51单片机(四)烧录程序

    串口 单片机 文件_51单片机(四)烧录程序
    发表于 11-23 17:06 18次下载
    <b class='flag-5'>串口</b> <b class='flag-5'>单片机</b>  文件_<b class='flag-5'>51</b><b class='flag-5'>单片机</b>(四)烧录程序

    51单片机——串口通信

    51单片机——串口通信串口通信?串口通信的原理?串口配置
    发表于 11-23 17:36 30次下载
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b>——<b class='flag-5'>串口</b>通信

    51 单片机串口烧录程序方法

    51单片机串口烧录程序方法51 单片机串口烧录程序
    发表于 11-25 18:21 118次下载
    <b class='flag-5'>51</b> <b class='flag-5'>单片机</b><b class='flag-5'>串口</b>烧录程序<b class='flag-5'>方法</b>

    基于51单片机单片机串口通信仿真设计

    基于51单片机单片机串口通信仿真设计,资料包含仿真及源程序
    发表于 04-20 16:15 3次下载