51单片机串口工作方式0和1解析

合集下载

51单片机I0解析

51单片机I0解析

IO口解析MCS-51单片机通常有4个8位I/O端口, 向各端口的写数据均写入到对应端口的锁存器中, 但对各端口的读操作却有两个方式:读锁存器和读引脚1 读-修改-写操作Pn(指P0,P1,P2,P3)在51汇编语言中是特殊的标识符,既代表Pn端口引脚,又代表Pn锁存器(Pn SFR)。

在MCS-51指令系统中有些指令读锁存器的值, 有些指令则读引脚上的值。

读锁存器指令是从锁存器中读取一个值并进行处理, 把处理后的值(原值或已修改后的值)重新写入锁存器中。

这类指令称为读-修改-写指令, 表1列举了有该功能的指令当目的操作数是Pn端口或Pn端口的某一位时. 该指令读取锁存器的值.这些指令的一个共同特点, 就是要先并行读入Pn锁存器(非Pn端口引脚)中的值,作一定的修改,然后再写入谚端口的锁存器。

表1中晶后三条指令读-修改-写关系不够明显。

实际上它们的执行过程序是:先将Pn 的8位锁存器内容一起读人,再对指定位进行修改, 然后又8位一起写入锁存器。

对于读-修改-写指令。

直接读锁存器而不是读端口引脚, 是因为从引脚上读出的数据不一定能真正反映锁存器的状态例如:若用Pn的某一位引脚直接驱动一个NPN三极管的基极,当向此端口写“1” 时, 三极管导通并把端口引脚的电平钳位约0.7 V (对于硅管) 这时,CPU若从此引脚读取数据. 会把该数据(应为1)错读为0;若直接从锁存器读取, 则读出正确的数据。

理解了Pn的特殊性及读-修改-写指令后, 就不难理解指令PUSH Pn的含义了。

它的执行过程是:读Pn 引脚(非读Pn 嫫?的值, 然后将此数值压入堆栈以下是一段测试程序:ORG 1000H1000 75A07F MOV P2,#7FH1003 7900 MOV R1,#00H1005 74FF MOV A,#0FFH1007 COA0 PUSH P21009 D0A0 POP P2100B F3 MOVX @R1,A100C 22 RET这段程序原意是将FFH立即数存人外部RAM地址为7F00的单元中, 但具体的运行结果与这段程序是在片内或片外被执行有密切关系。

51单片机串口工作方式0和1解析

51单片机串口工作方式0和1解析

方式 0 用于扩展并行 I/O口 例2:用 8031 的串口外接 1 个并入串出移位寄存器 芯片 CD4014 扩展为 8 位并行输入口,并口 接 8 个开关量输入,开关 K 闭合时有效。
• 电路图
8031
RXD TXD P1.1 DATA CLK P//S
CD4014
K
P1.0
方式 0 用于扩展并行 I/O口
• 电路图
8031
RXD TXD P1.0 DATA CLK
CD4094
TBS
方式 0 用于扩展并行 I/O口
• 编程
ORG 0000H LJMP MAIN ORG 0023H LJMP SBR MAIN: MOV SCON,#00H; 方式 0,TI = 0 SETB EA SETB ES MOV A,#80H ; 初值,左边 LED 亮 CLR P1.0 ; CD4094 输出并口关闭 MOV SBUF,A ; 数据传出,产生中断 LOOP: SJMP $
RXD
7.1.1 串行口控制寄存器SCON b7 b6 b5 b4 b3 b2 b1 TI b0 RI
SM0 SM1 SM2 REN TB8 RB8
9FH 9EH 9DH 9CH 9BH 9AH 99H 98H
SM0、SM1 —— 串行接口工作方式定义位
• SM0、SM1 = 00 —— 方式 0,8位同步移位寄存器 • SM0、SM1 = 01 —— 方式 1,10 位异步接收发送 • SM0、SM1 = 10 —— 方式 2,11 位异步接收发送 • SM0、SM1 = 11 —— 方式 3,11 位异步接收发送 注意: 方式 0 的特点,方式 2、方式 3 的差异
写入SBUF后自动开始发 送

51单片机串行通信接口

51单片机串行通信接口

工 作 方 式 选 择 位
多允 机许 通接 信收 控控 制制 位位
发 接发接 送 收送收 数 数中中 据 据断断 第 第标标 九 九志志 位位
北京交通大学
18
各位功能说明如下: SM0 SM1:串口工作方式选择位
00 方式0: 同步移位寄存器 波特率=主振频率/12
01 方式1: 8位异步,波特率可变
⑵在双机通信中,该位作为奇偶校验位; ⑶在多机通信中用来表示D7-D0是地址帧或数据帧
即:
D8=0:表示数据帧; D8=1:表示地址帧
北京交通大学
20位是接收到的第9位数据。 方式1,SM2=0,停止位。方式0,不用。
⑵在多机通信中是地址帧(RB8=1)和数据帧 (RB8=0)的标识位。
北京交通大学
34
方式2、3的区别是:波特率设置不同 方式2的波特率是固定的。即:
波特率=fosc/32或fosc/64 方式3的波特率是可变的。即:
波特率 2smod
fosc
32 12 (256 X )
X
256
fosc (2s mod ) 384 波特率
北京交通大学
35
表1 波特率与时间常数
第6章 串行通信接口
本章主要内容 • 串行数据通信基本原理 • MCS-51单片机串行口 • 串行口应用举例
北京交通大学
1
一、串行数据通信基本原理
计算机的两种方式数据传送:并行和串行
并行传送的特点:
各数据位同时传送,传送速度快、效率高。
但需要的数据线多,因此传送成本高。并行数据
传送的距离通常小于30米。
3.直到停止位到来之后把它送入到RB8中,并 置位RI,通知CPU从SBUF取走接收到的一个字符。

MCS-51串行口的工作方式

MCS-51串行口的工作方式

方ห้องสมุดไป่ตู้0——同步移位寄存器
时序
1.2 方式1——8位UART
数据在TxD发送,接收使用RxD 帧格式固定,每一帧数据共有10位,包括1个起始位、8个数据
位(最低有效位在前)、1个停止位 接收到的停止位保存到SCON的RB8中 波特率可变取决于T1或T2的溢出率、和PCON中的SMOD位 波特率因子为16
单片机原理与应用
MCS-51串行口的工作方式
方式0——同步移位寄存器 方式1——8位UART 方式2和3——9位UART
1.1 方式0——同步移位寄存器
串行数据通过RxD引脚输入或输出 TxD输出移位时钟 发送和接收不可同时进行 发送或接收的均为8位数据,最低有效位在前 波特率固定为单片机振荡频率的1/12
方式1——8位UART
时序
1.3 方式2和3——9位UART
数据在TxD发送,接收使用RxD 帧格式固定,每一帧数据共有11位,包括1个起始位、8个数据
位(最低有效位在前)、1个可编程的第9位数据、1个停止位。第 9位数据在发送时通过TB8赋值为0或1 接收时将第9位数据存入RB8中 波特率
方式2:只能为振荡器频率的1/32或1/64 方式3:与方式1时相同
方式2和3——9位UART
时序
单片机原理与应用

51单片机串口通信

51单片机串口通信

一、串口通信原理串口通讯对单片机而言意义重大,不但可以实现将单片机的数据传输到计算机端,而且也能实现计算机对单片机的控制。

由于其所需电缆线少,接线简单,所以在较远距离传输中,得到了广泛的运用。

串口通信的工作原理请同学们参看教科书。

以下对串口通信中一些需要同学们注意的地方作一点说明:1、波特率选择波特率(Boud Rate)就是在串口通信中每秒能够发送的位数(bits/second)。

MSC-51串行端口在四种工作模式下有不同的波特率计算方法。

其中,模式0和模式2波特率计算很简单,请同学们参看教科书;模式1和模式3的波特率选择相同,故在此仅以工作模式1为例来说明串口通信波特率的选择。

在串行端口工作于模式1,其波特率将由计时/计数器1来产生,通常设置定时器工作于模式2(自动再加模式)。

在此模式下波特率计算公式为:波特率=(1+SMOD)*晶振频率/(384*(256-TH1))其中,SMOD——寄存器PCON的第7位,称为波特率倍增位;TH1——定时器的重载值。

在选择波特率的时候需要考虑两点:首先,系统需要的通信速率。

这要根据系统的运作特点,确定通信的频率范围。

然后考虑通信时钟误差。

使用同一晶振频率在选择不同的通信速率时通信时钟误差会有很大差别。

为了通信的稳定,我们应该尽量选择时钟误差最小的频率进行通信。

下面举例说明波特率选择过程:假设系统要求的通信频率在20000bit/s以下,晶振频率为12MHz,设置SMOD=1(即波特率倍增)。

则TH1=256-62500/波特率根据波特率取值表,我们知道可以选取的波特率有:1200,2400,4800,9600,19200。

列计数器重载值,通信误差如下表:因此,在通信中,最好选用波特率为1200,2400,4800中的一个。

2、通信协议的使用通信协议是通信设备在通信前的约定。

单片机、计算机有了协议这种约定,通信双方才能明白对方的意图,以进行下一步动作。

假定我们需要在PC机与单片机之间进行通信,在双方程式设计过程中,有如下约定:0xA1:单片机读取P0端口数据,并将读取数据返回PC机;0xA2:单片机从PC机接收一段控制数据;0xA3:单片机操作成功信息。

串口的工作方式---51系列单片机

串口的工作方式---51系列单片机

串口的工作方式---51系列单片机串口的工作方式---51系列单片机串行口分四种工作方式,由SCON中的SMO、SM1二位选择决定。

1.方式0(1)特点1.用作串行口扩展,具有固定的波特率,为Fosf/12。

2.同步发送/接收,由TXD提供移位脉冲,RXD用作数据输入/输出通道。

3.发送/接收8位数据,低位在先。

(2)发送操作当执行一条“MOV SBUF,A”指令时,启动发送操作,由TXD 输出移位脉冲,由RXD串行发送SBUF中的数据。

发送完8位数据后自动置TI=1,请求中断。

要继续发送时,T1必须有指令清零。

(3)接收操作在RI=0条件下,置REN=1,启动一帧数据的接收,由TXD输出移位脉冲,由RXD接收串行数据到A中。

接收完一帧自动置位RI,请求中断。

想继续接收时,要用指令清零RI。

2.方式1(1)特点1.8位UART接口。

2.帧结构为10位,包括起始位(为0),8位数据位,1位停止位。

3.波特率由指令设定,由T1的溢出率决定。

(2)发送操作当执行一条“MOV SBUF,A”指令时,启动发送操作,A中的数据从TXD端实现异步发送。

发送完一帧数据后自动置TI=1,请求中断。

要继续发送时,TI必须由指令清零。

(3)接收操作当置REN=1时,串行口采样RXD,当采样到1至0的跳变时,确认串行数据帧的起始位,开始接收一帧数据,直到停止位到来时,把停止位送入RB8中。

置位RI请求中断。

CPU取走数据后用指令清零RI。

3.方式2和方式3方式2和方式3具有多机通信功能,这两种方式除了波特率不同以外,其余完全相同。

(1)特点1.9位UART接口。

2.帧结构为11位,包括起始位(为0)、8位数据位、1位可编程位TB8/RB8和停止位(为1)。

3.波特率在方式2时为固定FOSC/32或FOSC/64,由SMOD位决定,当SMOD=1时,波特率为FOSC/32;当SMOD=0 时,波特率为FOSC/64。

方式3的溢出率由T1的溢出率决定。

51单片机-串行口ppt课件

51单片机-串行口ppt课件

为发送时CPU是主动的,不会产生重叠错误。
最新课件
21
8.2.2 80C51串行口的控制寄存器
SCON 是一个特殊功能寄存器,用以设定串行口的工 作方式、接收/发送控制以及设置状态标志:
SM0和SM1为工作方式选择位,可选择四种工作方式:
最新课件
22
●SM2,多机通信控制位,主要用于方式2和方式3。 当接收机的SM2=1时可以利用收到的RB8来控制是否 激活RI(RB8=0时不激活RI,收到的信息丢弃; RB8=1时收到的数据进入SBUF,并激活RI,进而在 中断服务中将数据从SBUF读走)。当SM2=0时,不 论收到的RB8为0和1,均可以使收到的数据进入 SBUF,并激活RI(即此时RB8不具有控制RI激活的 功能)。通过控制SM2,可以实现多机通信。
起 空始 闲位
一个字符帧 数据位
校停 验止 位位
空 下一字符 闲 起始位
LSB
MSB
异步通信的特点:不要求收发双方时钟的
严格一致,实现容易,设备开销较小,但 每个字符要附加2~3位用于起止位,各帧 之间还有间隔,因此传输效率不高。
最新课件
9
2、同步通信
同步通信时要建立发送方时钟对接收方时钟的直接控制, 使双方达到完全同步。此时,传输数据的位之间的距离均 为“位间隔”的整数倍,同时传送的字符间不留间隙,即 保持位同步关系,也保持字符同步关系。发送方对接收方 的同步可以通过两种方法实现。
波特率=2SMOD/32×T1的溢出率 = 2SMOD × fosc/[ 32 × 12×(2K-初值)]
最新课件
19
回目录 上页 下页
3、传输距离与传输速率的关系
串行接口或终端直接传送串行信息位流的

51单片机串口多机通信的实现和编程

51单片机串口多机通信的实现和编程

51 单片机串口多机通信的实现和编程
一、51 单片机的主从模式,首先要设定工作方式3:(主从模式+波特率可变)
SCON 串口功能寄存器:SM0=1;SM1=1(工作方式3)
注:主机和从机都要为工作方式3。

【工作方式2 (SM0 SM1 :1 0):串行口为11 位异步通信接口。

发送或接收
一帧信息包括1 位起始位0、8 位数据位、1 位可编程位、1 位停止位1。


送数据:发送前,先根据通信协议由软件设置TB8 为奇偶校验位或数据标识位,然后将要发送的数据写入SBUF,即能启动发送器。

发送过程是由执行任何一条以SBUF 为目的寄存器的指令而启动的,把8 位数据装入SBUF,
同时还把TB8 装到发送移位寄存器的第9 位上,然后从TXD(P3.1)端口输出
一帧数据。

接收数据:先置REN=1,使串行口为允许接收状态,同时还要将RI 清0。

然后再根据SM2 的状态和所接收到的RB8 的状态决定此串行口在
信息到来后是否置R1=1,并申请中断,通知CPU 接收数据。

当SM2=0 时,
不管RB8 为0 还是为1,都置RI=1,此串行口将接收发送来的信息。


SM2=1 时,且RB8=1,表示在多机通信情况下,接收的信息为地址帧, 此时
置RI=1,串行口将接收发来的地址。

当SM2=1 时,且RB8=0,表示在多机通
信情况下,接收的信息为数据帧, 但不是发给本从机的,此时RI 不置为1,。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

RXD
7.1.1 串行口控制寄存器SCON b7 b6 b5 b4 b3 b2 b1 TI b0 RI
SM0 SM1 SM2 REN TB8 RB8
9FH 9EH 9DH 9CH 9BH 9AH 99H 98H
SM0、SM1 —— 串行接口工作方式定义位
• SM0、SM1 = 00 —— 方式 0,8位同步移位寄存器 • SM0、SM1 = 01 —— 方式 1,10 位异步接收发送 • SM0、SM1 = 10 —— 方式 2,11 位异步接收发送 • SM0、SM1 = 11 —— 方式 3,11 位异步接收发送 注意: 方式 0 的特点,方式 2、方式 3 的差异
寄存器 SCON、PCON、SBUF
寄存器 IE、IP
• MCS-51 单片机串Fra bibliotek接口工作方式 方式 0 方式 2 方式 1 方式 3
有两个数据缓冲寄存器 SBUF,一个输入移位寄存器,一个 串行控制寄存器SCON和一个特殊功能寄存器PCON等组成。 8 位SBUF是全双工串行接口寄存器, 它是特殊功能寄存器, 地址为 99H,不可位寻址;串行输出时为发送数据缓冲器,发送
时钟振荡频率为6MHz或12 MHz时,产生的比特率偏差较大, 故用到串口通信时通常选用11.0592MHZ晶体振荡器。
串行口的结构
• MCS-51 单片机串行接口的硬件
P3.0 位的第二功能 —— 收端 RXD P3.1 位的第二功能 —— 发端 TXD
• MCS-51 单片机串行接口的控制
比特率 比特率
= /12
P.110
=
/32 计1次 计3次 计3次 计6次 计12次 计24次
=
/12/计次/16
9600bps
1200bps
9.6kbit/s 实际10.416 = 6MHz/12/计次/16 1.2kbit/s 实际1.302 = 6MHz/12/计次/32
1 0
0 0
2 2
FDH F4H
写入SBUF后自动开始发 送
请求中断
图5-1
CPU响应中断后:CLR TI
5.2 用AT89C51的串行口扩展并行口 5.2.2 用74LS164扩展并行输出口
74LS164:8位串入并出移位寄存器。
图是利用74LS164扩展二个8位并行输出口的接口电路。 . 每当新数据写入SBUF,即把SBUF中的8位数据以串行移 出
并行锁存 串行口工作于方式0: 同步移位寄存器方式 接收
fosc/12
图9-21
5.2.2
方式1 :8位异步收发,比特率可变(由定时器控制)
SM0、SM1=01 方式1一帧数据为10位,1个起始位(0),8个数据位,1个停止 位(1),先发送或接收最低位。帧格式如图7-7:
图7-7 方式1比特率=(2SMOD/32)×定时器T1的溢出率 SMOD为PCON寄存器的最高位的值(0或1)。
P.105
1.方式1发送
写入SBUF后自动开始发 送
图7-8 2.方式1接收
请求中断 可写下一个要发送的数据
图7-9
请求中断 可从SBUF读取新接收的数据
P.109 5.3.1 比特率的制定方法 方式 0、方式2的比特率是固定的;方式 1、方式3比特率由定时器 T1的 溢出率来确定。 5.3.2 定时器T1产生比特率的计算 (1)方式0波特率=时钟频率fosc×1/12,不受SMOD位的值的影响。若 fosc=12MHz,比特率为fosc/12即1Mb/s。 (2)方式2波特率=(2SMOD/64)×fosc 若fosc=12MHz: SMOD=0 比特率=187.5kb/s; SMOD=1 比特率=375kb/s (3)方式1或方式3时,比特率为: 比特率= (2SMOD/32)×T1的溢出率 = fosc/12/(T1计数次数) × (2SMOD/32) 实际设定比特率时,T1常设置为方式2定时(自动装初值)这种方式不仅操 作方便,也可避免因软件重装初值而带来的定时误差。
串口工作方式
5.1 方式0 同步移位寄存器方式,比特率固定为fosc/12。 常用于外接移位寄存器,以扩展并行I/O口,SM2位必须为0 。 1.方式0发送: 当CPU执行写入发送缓冲器SBUF的指令时,串行口即把SBUF 中的8位数据以fosc/12的固定比特率从RXD引脚串行输出,低 位在先,TXD引脚输出同步移位脉冲,发送完8位数据置“1” 中断标志位TI
串行口控制寄存器SCON
b7
b6
b5
b4
b3
b2
b1 TI
b0 RI
SM0 SM1 SM2 REN TB8 RB8
9FH 9EH 9DH 9CH 9BH 9AH 99H 98H
SM2 —— 多机通信控制位(方式2和3)
• SM2 = 0,无多机通信
• SM2 = 1,允许多机通信
REN —— 串行口接收数据控制位
寄存器只写不读,数据从

发送端TXD(P3.1)输出; 串行输入时为接收数 据缓冲器,接收寄存 器只读不写,数据从
CPU
波 特 率 发 生 器 T1
SBUF
发送控制器 串行口中断
TXD TI

接收端 RXD(P3.0)
输入;由指令确定是对发 送寄存器或接收寄存器作用。
接收控制器 RI
SBUF
移位寄存器
收到8位数据时置“1” RI。表示一帧数据接收完,时序如下:
RI=‘0’时
其中REN=‘1’
请求中断
图5-2
CPU响应中断后:CLR RI
P.159-160
5.2.1
用74LS165扩展并行输入口
74LS165:8位并入串出移位寄存器。 图9-22是利用74LS164扩展二个8位并行输入口的接口电路。 每当向SCON写入控制字为方式0且 REN=“1” ,即串行移入8位数据到SBUF
RXD/ TXD/
清0 串行口工作于方式0: 同步移位寄存器方式 发送
fosc/12
图5-2-1
74HC595: 8位串入并出移位寄存器,带锁存及三态输出功能。 (相当于74LS164+273+244)
2.方式0接收
写入SBUF后自动开始发 送
向串口的 SCON 写入控制字(置为方式 0 ,并置“ 1 ” REN 位, 同时RI=0)时,串行口即开始接收数据。RXD为数据输入端, TXD 为移位脉冲信号输出端,也以 fosc/12 的固定比特率,当
相关文档
最新文档