历史上的今天
返回首页

历史上的今天

今天是:2024年09月02日(星期一)

正在发生

2021年09月02日 | 51单片机串口通讯详解

2021-09-02 来源:eefocus

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


由于大部分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

SCON = 0x50;   //工作方式1,,允许接收   

PCON = 0x10;

TH1 = 253;        // 设置初值,波特率9600bps

TL1 = 253;

TR1 = 1;          // 开始计时

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 != '')

{

Send_Data(*c++);

}

}


void RSINTR() interrupt 4 using 2

{

EA=0;

if(TI==1) //发送中断   

{

TI=0;

}


if(RI==1) //接收中断   

{


RI=0;  


}

EA=1;

}

推荐阅读

史海拾趣

Gang Song Electronics Co Ltd公司的发展小趣事

作为物联网领域的领军企业之一,Telit(包含GainSpan的技术)不仅致力于技术创新和市场拓展,还积极参与行业标准的制定和生态建设的推动。通过与其他企业和组织的合作与交流,Telit推动了物联网技术的标准化和规范化发展。同时,它还积极构建物联网生态系统,与上下游企业建立紧密的合作关系,共同推动物联网产业的繁荣和发展。这些努力不仅提升了Telit在行业内的地位和影响力,也为整个物联网产业的发展做出了重要贡献。

振华(CEC)公司的发展小趣事

随着企业规模的不断扩大和市场竞争的加剧,振华意识到单纯的自我发展已经难以满足企业的长远发展需求。因此,公司开始积极探索并购与资源整合的道路。通过并购具有技术优势和市场潜力的企业,振华不仅获得了更多的技术资源和市场份额,还实现了产业链的延伸和拓展。同时,公司还注重内部资源的整合和优化,提高资源的利用效率和管理水平。

长工微电子公司的发展小趣事

长工微电子的发展得到了行业内外的高度认可。自成立以来,公司荣获了多项荣誉,包括广东省科技型中小企业、松山湖集成电路设计企业、国家高新技术企业、最具潜力中国模拟IC设计公司、中国集成电路创新创业大赛总决赛第二名等。这些荣誉不仅彰显了公司的实力,也为公司的发展注入了强大的动力。

Crane Connectors公司的发展小趣事

Crane Connectors公司自创立之初,便致力于电子连接器技术的研发与创新。面对激烈的市场竞争,公司不断投入研发资源,推出了一系列具有自主知识产权的新型连接器产品。这些产品凭借出色的性能、稳定性和可靠性,迅速获得了市场的认可,为公司赢得了大量订单。随着技术的不断升级和产品的持续优化,Crane Connectors逐渐在电子连接器领域树立了良好的品牌形象,实现了市场的快速扩张。

华宇创公司的发展小趣事

华宇创深知品质是企业生存和发展的关键。因此,公司建立了严格的质量管理体系,从原材料采购到生产过程再到成品检测,每一个环节都严格把控。同时,华宇创还积极参与各类国际认证和标准制定工作,不断提升产品的品质和性能。这些努力使华宇创的产品在市场上赢得了良好的口碑和信誉,品牌知名度也逐渐提升。

DART(英国达特)公司的发展小趣事

DART公司成立于英国的一个小城市,最初只有几名工程师和少量的资金。然而,他们凭借着对电子技术的热爱和对创新的不懈追求,逐渐在行业中崭露头角。公司的创始人是一位资深的电子工程师,他带领团队开发了一款具有革命性的新型传感器,这款传感器在精度和稳定性上远超当时的同类产品。这一技术突破为DART公司赢得了第一个重要的客户,也为公司的未来发展奠定了坚实的基础。

问答坊 | AI 解惑

车身控制功率IC趋向集成化

汽车的方便、舒适等都和车身电子控制技术密不可分,车身电子控制技术也日益引起业界重视。  目前国际上车身电子集成控制技术比较成熟,其中有代表性的公司有德科电子、博世、欧姆龙等,他们在电子控制ECU方面已经历经几十年的研发和生产,技术较 ...…

查看全部问答>

传感器150例

本帖最后由 paulhyde 于 2014-9-15 03:31 编辑 大赛在即,给大家分享点重要资料。肯定能用到  …

查看全部问答>

征婚启事

我,女,25岁,身高170,相貌一般,但是为人大方真诚,乐观自信,在温州从事单片机的开发工作,想找一个以下条件的男朋友(当然,发展的好的话,最好是能终身相伴到老的) 1.身高175以上,本科以上学历(我是本科生) 2.品德优秀,责任感强 3.对 ...…

查看全部问答>

软件开发工程师,急求,兼职亦可

移动软件开发工程师          职位要求: 1、嵌入式平台(WinCE,平台),应用软件开发; 2、熟悉J2ME开发。 3、具有良好的团队精神。 4、一年以上WinCE平台开发经验。 请有意者将简历mail至 suntjl@sina.com ...…

查看全部问答>

s3c2440 + wince休眠唤醒的问题

下面是nboot(steldr——boot)里关于休眠唤醒的处理代码 WAKEUP_POWER_OFF     ; Release SCLKn after wake-up from the POWER_OFF mode.     ldr                r1, =MISCCR & ...…

查看全部问答>

请问高手要做一个LCD显示广告语同时带声音

这功能在单片机上可以实现吗?对于单片机用什么方法可以烧写里面的程序? 谢谢各位高手为小弟解答..…

查看全部问答>

MP3属于嵌入式系统吗

各位,我不是很清楚嵌入式系统,请问我们外面买的那些MP3/4属于嵌入式系统吗?还有一个问题,我在网上看到基本上嵌入式系统好像就分两种,什么LINUX和WINCE,怎么区分呢,我做MP3开发的,是C语言和汇编混合的,不知道这个是属于哪种呢?谢谢!…

查看全部问答>

FTF China 2010之行 (3)

1.       智能电网。智能电网可能是本次FTF最为突出的主题,其实去年FTF也就在推这个理念,当然大家都相信智能电网是大势所趋,飞思卡尔在智能电表和集中器方面展示了解决方案,其中集中器用的就是传说中的MCF54418 ...…

查看全部问答>

MAX1640的充电电流变小了

昨晚,发完贴,看了一会书后,我又拿起板子看,结果发现,有一些很小的线短路了,额滴神,还是很要命的短路。 这个是因为之前板子割了太多的线,最后补线的时候,线太小了,不小心碰上了而没有察觉。 我立马修复好,然后试图上电,发现正常了很多 ...…

查看全部问答>

TI M3资料 集锦(超好、超全、超完备)

在百度文库花了我一二百金币给大家淘来了些TI M3的资料,希望对大家能有所帮助 [ 本帖最后由 鑫海宝贝 于 2011-4-21 09:41 编辑 ]…

查看全部问答>