2、 工作方式
方式0:扩展移位寄存器方式,移位速率fosc/12
① 以方式0工作时,数据由RXD串行的输入/输出,TXD输出位移脉冲,使外部的移位寄存器移位。
② 移位速率,振荡频率的十二分之一。
③ 串行口是从低位开始串行输出
输入是从地位开始还是高位开始?
例:教材*1P132
④ 方式0时,SM2必须为0;REN=0禁止接收;方式0与TB8、RB8无关;TI=0;RI=0处于非中断状态
方式1: 8位UART(8位异步串行通信口)
波特率可变(TI溢出率/n)
输出:
CPU向串行口发送数据缓冲器SBUF写一个数据,就启动串发送,在串行口内部一个十六分频计数器的同步控制下,在TXD端输出一个帧信息,先送起始位0,接着从低位开始依次输出8位数据,最后输出停止位1,并置位“1”,发送中断标志T1,串行口输出完一个字符后停止工作,说明发送完成。
输入:
接收器从波特率的16倍的速率采样RXD,当检测到负跳变市,三次采样确认后,若起始位有效,则开始接收
*1教材:《单片机微型机原理、应用与实验》张友德等 复旦大学出版
本帧的其余信息,接收到停止位为1时,将接到的8位数据装入接收数据缓冲器SBUF,置位RI,表示串行口接收到有效的一帧信息,向CPU中断请求,接着重新搜索RXD上的负跳变。
△ 异步通信可靠性高,能及时发现错误的原因。在检测RXD上的值时,内部十六分频计数器的16个状态把传送一位的时间分为16等分,在每位中心,即7、8、9这三个计数状态检测器采样RXD的输入电平,接收的值是三次采样中至少是两次相同的值,这样处理可以防止干扰
方式2、3
方式2 9位UART(9位异步串行通信口)
波特率为fosc/64或fosc/32
方式3 9位UART(9位异步串行通信口)
波特率可变(T1溢出率/n)
输出:CPU向发送缓冲器SBUF写入一个数据就启动串行口发送,同时将TB8写入输出移位寄存器的第9位。
实际发送在内部十六分频计数器下一次循环的机器周期S1P1,使发送定时与这个十六分频计数器同步?
其余类似方式1
输入:
类似方式1,不同之处。
① 先从低位开始接受数据,再接受第9位数据
② 当RI=0,SM2=0或接收到的第9位数为1时,接收的数据装入SBUF和RB8,置位RI。若条件不满足,把数据丢失,并且不置位RI。△有条件接收数据,该特点目的是用于多机通信
一位时间以后又开始搜索RXD上的负跳变。
3、 波特率
波特率:串行口每秒钟内能发送(接收)二进制数的位数称为波特率。
串行口4种工作方式波特率的计算公式:
方式0的波特率=fosc/12
方式1的波特率=(2SMOD/32)×(T1溢出率)=(2SMOD/32)×fosc/12〔256-(TH1)〕
方式2的波特率=(2SMOD/64)×fosc
方式3的波特率:同方式
其中:方式0和方式2的波特率固定,方式1和方式3的波特率是可变的。
○串行接口或终端直接传送串行信息,位流的最大距离与传输速率及传输线的电气特性也有关。当使用传输线每0.3米,有50PF电容的非平衡屏蔽双纹线时,传输距离随传输速率的增加而减小。当波特率超过1000bps时,最大传输距离迅速下降,如9600bps时最大距离下降到只有76m。
关键字:51单片机 串行通信 移位速率
引用地址:
51单片机系列知识11--串行通信(2)
推荐阅读最新更新时间:2024-11-03 17:14
51单片机解密红外遥控器
在这里我仅把一些关键的带出来 关于硬件电路 那么抛开那么多文字介绍 最后意思就是说 你家里的遥控板 也就是发射部分 是把所有的封装好了的 比如键盘矩阵、编码调制、LED红外发送器 等等 那么接受部分 SM0038 3个脚 一个脚地 一个脚电源 一个脚信号脚 接到 单片机随便个P口上(此处是P3。6) OK 硬件部分就搞定了当然还有数码管显示 ,这些肯定不用说你都能搞定吧,这些东东都有,所以就不用自己去搭电路那么麻烦了),那么 我们想 我们按一下遥控板 大家看到 有个灯闪了一下 然后OVER 那么 我们现在要做的就是在灯闪了那一下之后让 单片机来读它的键码 然后不同的键码来干不同的事 ,本文 是向大家解释一种方法 当然如果你知道
[单片机]
51单片机 EEPROM AT24c02 存储\读取一个字节
1 /*-- 2 名称:IIC协议 EEPROM24c02 存数读取数据 3 内容:此程序用于检测EEPROM性能,测试方法如下:写入24c02一个数据,然后在内存中改变这些数据, 4 掉电后主内存将失去这些信息,然后从24c02中调入这些数据。看是否与写入的相同。这里用8个LED演示 5 函数是采用软件延时的方法产生SCL脉冲,固对高晶振频率要作 一定的修改....(本例是1us机器 6 周期,即晶振频率要小于12MHZ) 7 */ 8 #include reg52.h //头文件的包含 9 #include intrins.h 10 11 #define _Nop() _nop_(
[单片机]
用Proteus学习51单片机之AD转换
现实中的很多量,都是模拟量,如温度,压力等,单片机要去了解它们,首先就要把这些量进行数字化,AD转换即把模拟量转变为数字量。这次书上介绍的AD芯片为ADC0804,8位并行AD转换芯片。关于AD转换的详细原理,我就不抄了,网上有的是。 ADC0804的使用,比前面用过的锁存器74LS573难用得多,主要是读写数据都要根据时序图,进行电位的变化,而且芯片的接法也相对麻烦一点。下面记录一下引脚定义: VIN(+),VIN(-):待测量的模拟信号输入 DB0~DB7:测量结果输出 AGND:模拟信号地 DGND:数字信号地 CLK:时钟信号输入端 CLKR:内部时钟发生器的外接电阻端,与CLK端配合可由芯片自身产生时钟脉冲,其频率为1/
[单片机]
MCS-51单片机内部数据存储器RAM结构详解
内部数据存储器低128单元 8051单片机的内部RAM共有256个单元,通常把这256个单元按其功能划分为两部分:低128单元(单元地址00H~7FH)和高128单元(单元地址80H~FFH)。如图所示为低128单元的配置图。 寄存器区 8051共有4组寄存器,每组8个寄存单元(各为8),各组都以R0~R7作寄存单元编号。寄存器常用于存放操作数中间结果等。由于它们的功能及使用不作预先规定,因此称之为通用寄存器,有时也叫工作寄存器。4组通用寄存器占据内部RAM的00H~1FH单元地址。 在任一时刻,CPU只能使用其中的一组寄存器,并且把正在使用的那组寄存器称之为当前寄存器组。到底是哪一组,由程序状态字寄存器PSW中RS1
[单片机]
51单片机晶振疑难问题全解
回首当年,在初学51单片机的时候,总是伴随很多有关与晶振的问题,其实晶振就是如同人的心脏,是血液的是脉搏,把单片机的晶振问题搞明白了,51单片机的其他问题迎刃而解…… 今天大侠把自己当年学习51单片机有关晶振的问题一并总结出来,希望对初学51的童鞋来说能有帮助。 一,为什么51单片机爱用11.0592MHZ晶振? 其一:因为它能够准确地划分成时钟频率,与UART(通用异步接收器/发送器)量常见的波特率相关。特别是较高的波特率(19600,19200),不管多么古怪的值,这些晶振都是准确,常被使用的。 其二:用11.0592晶振的原因是51单片机的定时器导致的。用51单片机的定时器做波特率发生器时,如果用11.059
[单片机]
C语言实现51单片机中的PID算法
//pid.h #ifndef __PID__ #define __PID__ /*PID = Uk + KP* +KI*E(k)+KD* ;(增量型PID算式) 函数入口: RK(设定值),CK(实际值),KP,KI,KD 函数出口: U(K)*/ typedef struct PIDValue { int8 KP; int8 KI; int8 KD; int8 F; int8 BITMOV; int EK ; int UK; int RK; int CK; int UK_REAL; }pid_str; //PIDValueStr PID; void pid_exe(pid_str *PID) ; #
[单片机]
8051单片机波特率计算公式
8051单片机使用定时器1工作在方式2的情况下作为串口波特率发生器,其波特率=(2smod /32)×(定时器T1溢出率),其中smod是PCON 7 ,表示是否波特率加倍,Fsoc是系统的晶振大小。 波特率公式中:T1溢出率=溢出周期的倒数;溢出周期=(256-TH1)×12/Fosc; 最终公式: 波特率:Baud=(2smod × Fsoc)/(32 ×12×(256-TH1)) 我们一般不太关注波特率的计算,而是关心选用的传输速度(波特率)去反算定时器1(自动重装模式)的初值(TH1),所以将上面的公式导一下,得到TH1的公式: TH1=256-(Fsoc×2smod)/(12×32×Baud) 下面针对串口发送程序,水寒
[单片机]
由51单片机构成的轴类零件温度测量系统
一、前言 零件在加工过程中由于受各种热的影响而产生变形, 从而导致原有的加工精度遭到破坏或直接引起加工误差。对于精密加工而言,热变形的影响尤为显著,由此而引起的加工误差约占总加工误差的40%以上。本文给出一种对 轴类零件 的温度进行较准确测量的系统组成,系统由 单片机 80C552为控制核心,简单可靠,精度高。同时能计算出在不同温度下轴的热变形量。 二、 传感器 组成及接口电路 1.传感器组成 传感器采用Pt 温度传感器 ,如图1所示。 图1 Pt温度传感器 这种传感器是由一个直径为30 微米的铂丝绕成的线圈被夹在两层聚酰亚胺箔片之间,通过两条镍带与外界连接,其厚度只有0.
[单片机]