单片机串行接口工作方式

发布者:RadiantRiver最新更新时间:2015-03-23 来源: diangon关键字:单片机  串行接口  工作方式 手机看文章 扫描二维码
随时随地手机看文章
    AT89S52单片机的串行口有方式0、方式1、方式2、方式3四种工作方式。方式0主要用于扩展并行输入输出口,方式1、2、3用于串行通信。对这4中工作方式的学习,主要是通过分析各个方式下的发送和接收逻辑来掌握。单片机的串行通信方式包括单片机与单片机之间的双机或多机通信、单片机与PC机的通信等,需要留意。
一、串行口方式0:同步移位寄存器方式

串行口的工作方式0为移位寄存器输入输出方式,方式0发送或接收完8位数据后由硬件置位发送中断标志TI或接收中断标志RI。

1.方式0发送

串行数据从RXD引脚输出,TXD引脚输出移位脉冲。CPU将数据写入发送寄存器(SBUF)时,立即启动发送,将8位数据以fosc/12的固定波特率从RXD输出,低位在前,高位在后,直至最高位(D7位)数字移出后,停止发送数据和移位时钟脉冲。

MOV SCON, #10H ; 串行口方式0

MOV A, SBUF ; 接收数据

JNB RI, $ ; 等待数据接收完毕

2.方式0接收

方式0接收前,务必先置位REN=1,允许接收数据。此时,RXD为串行数据输入端,TXD仍为同步脉冲移位输出端。当RI=0和REN=1同时满足时,就会启动一次接收过程。接收器以fosc/12的固定波特率接收TXD端输入的数据。当接收到第8位数据时,将数据移入接收寄存器,并由硬件置位RI,向CPU申请中断。

MOV  SCON, #00H   ; 串行口方式0

MOV  SBUF, A       ; 将数据送出

JNB   TI, $          ; 等待数据发送完毕

工作方式0一般用于对并行输入输出口的扩展,如图1所示。

 


图1 方式0的应用
二、方式1:8位UART方式

当SM0=0、SM1=l时,串行口选择方式1,单片机工作于8位数据异步通讯方式(UART)。在方式1时,传送一帧信息为10位,即1位起始位(0),8位数据位(低位在先)和1位停止位(1)。方式1的数据格式如图2所示。



图2 方式1的数据格式

 

1.方式1发送

当CPU执行MOV  A,SBUF指令将数据写入发送缓冲SBUF,启动发送。先把起始位输出到TXD,然后把移位寄存器的输出位送到TXD。接着发出第一个移位脉冲(SHIFT),使数据右移一位,并从左端补入0。此后数据将逐位由TXD端送出,而其左面不断补入0。发送完一帧数据后,就由硬件置位TI。


图3 方式1发送

 

2.方式1接收

当REN=1且接收到起始位后,在移位脉冲的控制下,把接收到的数据移入接收缓冲寄存器(SBUF)中,停止位到来后,把停止位送入RB8中,并置位RI,通知CPU接收到一个字符。


图4  方式1接收

 

三、方式2和方式3:9位数据异步通讯方式

当SM0=1、SM1=0时,串行口选择方式2;当SM1=1、SM0=1时,串行口选择方式3。方式2和方式3的工作原理相似,定义为9位的异步通讯接口,发送(通过TXD)和接收(通过RXD)一帧信息都是11位,1位起始位(0)、8位数据位(低位在先)、1位可编程位(即第9位数据)和1位停止位(1)。其数据格式如图5所示。


图5 方式2和3的数据格式

[page]

方式2和方式3唯一的差别是方式2的波特率是固定的,方式3的波特率是可变的。

1.方式2和方式3发送

当CPU执行一条数据写入SUBF的指令时,启动发送器发送。把起始位(0)放到TXD端,经过一位时间后,数据由移位寄存器送到TXD端,通过第一位数据,出现第一个移位脉冲。当TB8的内容移到位寄存器的输出位置时,其左面一位是停止位“1”,再往左的所有位全为“0”。这种状态由零检测器检测到后,就通知发送控制器作最后一次移位,然后置TI=1,请求中断。发送过程如图6所示。


图6 方式2和3的发送

 

2.方式2和方式3接收

接收时,数据从右边移入输入移位寄存器,在起始位0移到最左边时,控制电路进行最后一次移位。当RI=0,且SM2=0(或接收到的第9位数据为1)时,接收到的数据装入接收缓冲器SBUF和RB8(接收数据的第9位),置RI=1,向CPU请求中断。如果条件不满足,则数据丢失,且不置位RI,继续搜索RXD引脚的负跳变。接收的过程如图7所示。


图7 方式2和3的接收

 

四、波特率的计算

波特率反映串行口传输数据的速率,它取决于振荡频率、PCON寄存器的SCON位以及定时器的设定。在串行通讯中,收发双方的数据传送率(波特率)要遵循一定的约定。(http://www.diangon.com版权所有)AT89S52串行口的四种工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可变的,由定时器的溢出率控制。

方式0为固定波特率:波特率=fosc/12

方式2可选两种波特率:波特率=(2SMOD/64)×fosc

当SMOD=1时,波特率=fosc/32;

当SMOD=0时,波特率=fosc/64。

方式1、3为可变波特率,用T1作波特率发生器。

波特率=(2SMOD/32)×T1溢出率,T1溢出率为T1溢出一次所需时间的倒数。

 

例如:计算波特率。要求用T1工作于方式2来产生波特率2400,已知晶振频率=12MHz。

解:求出T1的初值:

常用波特率和T1初值可参考教材中的表6-2。
五、多机通信

在集散式分布系统中,往往采用一台主机和多台从机。其中主机发送的信息可以被各个从机接收,而各从机的信息只能被主机接收,从机与从机之间不能互相直接通信。

图8为多机通信连线示意图,系统中左边为主机,其余的为1~n号从机,并保证每台从机在系统中的编号是惟一的。


图8 多通信示意图

关键字:单片机  串行接口  工作方式 引用地址:单片机串行接口工作方式

上一篇:单片机串行接口的编程方法和应用
下一篇:AT89S52单片机的串行接口

推荐阅读最新更新时间:2024-03-16 13:55

PIC单片机驱动TM1616源程序
/*本程序适用于没有SIP功能的单片机添加SIP发送功能*/ #include pic.h __CONFIG(0x1832); //芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡 #define clk P10 //定义时钟管脚 #define clk RC3 //定义时钟管脚 #define dio RC5 //定义数据管脚 #define stb RC2 //定义片选管脚 //#define nop _nop_(); #define uchar unsigned char #define uint unsigned int
[单片机]
基于MSP430单片机的LRC阻抗测量系统
基于MSP430的智能LRC测量系统,利用高速数模转换电路将信号量化处理,FPGA进行高速数字信号处理获得信号相位、幅值信息。这样不仅减少了模拟器件的数量,也减少了信号传输中的衰减和模拟器件温度变化以及供电变化等引入的附加干扰。此外,采用MSP430单片机的智能控制技术,使测量系统具备自动分析、识别、计算的能力。用户只需开机接入待测量元件即可获得待测元件的RLC值。 LRC单独测量的方法有很多,对电阻的测量最为简单。电容电感对时变信号敏感,可将电容电感转换成与电量、时间和频率相关的物理量,通过对电量、时间或频率的测量获得电感电容值。目前通过不同的模拟电桥电路可以实现RLC参数的较精确测量,在测量时需要预先甄别RLC类型再选着合
[单片机]
基于MSP430<font color='red'>单片机</font>的LRC阻抗测量系统
机器人常用的单片机使用经验(一)
一 学习单片机的捷径是什么? 所谓捷径就是少走弯路。我刚开始学单片机时走了不少弯路,很多朋友和我都有相似的经历,刚开始接触 单片机 ,面对琳琅满目的图书教材,不知选择哪本;想实践时不知到哪买单片机;不知如何编程下载程序…… A 对于初学者仔细看本文就是学习单片机的捷径之一。 B 到图书馆或者书店在数十本单片机书中选一本你能看懂,而且觉得案例有趣的“实在、生动、活泼”的单片机书做为你的入门读物。 C 建议先从51单片机学起。掌握51后再学AVR,然后学ARM、DSP等。 D 在学习过程中实践非常必要。你需要一台电脑。如果是台式电脑,你可以花十几元购买25针并口下载线,如果是笔记本电脑,你只能购买几十元到几百
[模拟电子]
机器人常用的<font color='red'>单片机</font>使用经验(一)
基于51单片机的贪吃蛇游戏
前言: 这篇文章是我当时制作完成后写的总结,已经过去了一段时间,苦于找不到实物的图片,就把全文都粘贴到了下面。 今天是11月2日,昨天我完成了我的贪吃蛇的制作。那个战线一个多月,让我煞费苦心的工作。在这一过程中,学到了许多新知识,也认识了许多新朋友,无论星火杯结果如何,它都将成为我的大学生涯,甚至一生中宝贵的财富。所以我决定将我学到的,想到的都写下来,给将来的自己一份美好的回忆。这次总结的内容主要是进入西电来学到的一些硬件知识,主要包括51单片机基础知识(最小系统、LED流水灯、蜂鸣器、独立按键、数码管显示),Protues仿真(以贪吃蛇为例),Keil的使用(贪吃蛇程序的分析),最后是贪吃蛇制作的基本步骤。 一、51单片
[单片机]
基于51<font color='red'>单片机</font>的贪吃蛇游戏
能同时满足高低端血压计设计的软硬件平台
在设计血压计等应用时,产品设计和开发人员总是被要求创造各种不同的设计,硬件和软件维护都成了问题。有没有一种方案可以实现低端和高端产品之间的兼容性?使得设计和开发人员能够设计出一个软硬件平台,以适应各种产品的不同特性?本文将介绍这种方案。   产品设计和开发人员总是被要求创造各种不同的设计,从低成本低端产品到高成本高端产品。这就给设计团队带来了问题,因为当硬件出现问题时,就必须对三至四个不同硬件主板进行修改。   软件也是一个问题。软件维护不仅费用昂贵,而且同时维护几个产品也是一项艰巨的任务。Flexis QE128微控制器实现了低端和高端产品之间的兼容性。这使得设计和开发人员能够设计出一个软硬件平台,并根据需要添加和拆解
[医疗电子]
能同时满足高低端血压计设计的软硬件平台
基于AT89C51单片机的RS232-GPIB控制器设计
越来越多的测量仪器提供GPIB(General Purpose Intefface Bus)总线接口,通过该总线可以方便快捷地连接带有GPIB接口的仪器及计算机,组成一个GPlB网络。GPIB设备与计算机连接时,需要借助GPIB接口板卡,但这些GPIB接口板卡价格昂贵,给仪器与计算机连接带来不便。在大多数情况下计算机只连接一台GPIB接口仪器,并不需要这些功能复杂价格昂贵的GPIB板卡。面对单台仪器与计算机连接的功能需求,本文设计了一种性价比突出的RS232一GPIB控制器,该控制器利用计算机最常用的RS232接口,控制带有GPIB接口的仪器,在计算机与仪器之间建立数据传输的通道。同时,支持SCPI(Standard Comman
[单片机]
基于AT89C51<font color='red'>单片机</font>的RS232-GPIB控制器设计
DS1302时钟 ---- 自学笔记
一、什么是DS1302时钟 具有实时时钟计算能力,能计算2100年之前的秒、分、时、日、日期、星期、月、年及闰年调整能力。 内部含有31个字节静态RAM,可提供用户访问。 采用串行数据传送方式,使得管脚数量最少,简单SPI3线接口。 工作电压范围宽:2.0~5.5V。 工作电流:2.0v时,小于300NA。 时钟或RAM数据的读/写有两种传送方式:单字节传送和多字节传送方式 采用8脚DIP封装或SOIC封装。 与TTL兼容,Vcc=5v 可选工业级温度范围:-40摄氏度~+85摄氏度 具有涓流充电能力 采用主电源和备份电源双电源供应 备份电源可由电池或大容量电容实现 二、SPI总线 2.1、概念 SPI接口(Serial Pe
[单片机]
DS1302时钟 ---- 自学笔记
μC/OS-II在80196KC单片机上的移植
Intel的80196KC系列单片机在中国国内有很大一批用户。支持80196KC的C编译器生产厂商主要有Tasking和IAR。但国内使用Tasking公司C编译器的用户较多。由于 μ C/OS-Ⅱ系统为源码公开的实时操作系统,因此是当前嵌入式系统开发的主要方法。但是,在 μ C/OS-Ⅱ网站上没有现成的移植实例。因此,有必要进行一次移植以使操作系统成为 μ C/OS-Ⅱ,这种移植采用的处理器为80196KC,而其编译器为Tasking c 196。 1  μ C/OS-Ⅱ的工作原理 μ C/OS-Ⅱ是一个源码公开的实时多任务操作系统,其工作流程如图1所示。图中,任务切换的核心是利用出栈指令将各个任务的工作现场再现,并利用子
[单片机]
μC/OS-II在80196KC<font color='red'>单片机</font>上的移植
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved