串行口通信技术

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

在方式0时,SM2必须置0。
3) REN——允许接收位
REN=0
禁止接收数据
REN=1
允许接收数据
4) TB8——发送第9位数据
由在用方户式通2、过3软时件,来TB设8的置内。容是要发送的第9位数据,其值
5) RB8——接收的第9位数据 在方式2、3时,RB8是接收的第9位数据。 在方式1时,RB8是接收的停止位 在方式0时,不使用RB8
99H 98H TI RI
SCON中各位说明如下:
1) SM0 、SM1——串行口工作方式选择
位 其状态组合和对应工作方式为:
SM0 SM1
工作方式
00
方式0
01
方式1
10 11
方式2 方式3
2) SM2——允许方式2、3的多机通信控制位
在 方 式 2 和 3 中 , 若 SM2 = 1 且 接 收 到 的 第 九 位 数 据 (RB8)为1,才将接收到的前8位数据送入接收缓冲 寄存器SBUF中,并置位RI产生中断请求;否则丢弃前 8位数据。若 SM2=0,则不论第九位数据(RB8)为1 还是为0,都将前8位送入接收SBUF中,并产生中断请 求。
;启动发送 ;判发送完标志
;发送16个数据
率为设定值。当系统复位时,SMOD=0。
串行口的工作方式
串行口的工作方式由SM0和SM1确定,编码和功 能如下表所示
SM0 SM1
0
0
0
1
1
0
1
1
方式
功能说明
波特率
方式0 移位寄存器方式 fosc/12
方式1 方式2 方式3
8位UART 9位UART 9位UART
可变
fosc/64 或者 fosc/32
工作在方式1时,其波特率是可变的,波特率的计算公式为:
波特率 2S= MOD(定时1的 器溢出率) 32
其中,SMOD为PCON寄存器最高位的值,其值为1 或0。
当定时器1作波特率发生器使用时,选用工作方式2(即自 动加载定时初值方式)。选择方式2可以避免通过程序反复装入 定时初值所引起的定时误差,使波特率更加稳定。假定计数初 值为X,则计数溢出周期为:
串行口的特殊功能寄存器
(1). 串行口控制寄存器(SCON) SCON是MCS-51单片机的一个可位寻址的专用
寄存器,用于串行数据通信的控制。单元地址为 98H,位地址为98H~9FH。寄存器的内容及位地 址表示如下:
位地 址
9FH
位符 号
SM0
9EH 9DH 9CH 9BH 9AH SM1 SM2 REN TB8 RB8
串行口通信技术
串行通信方式
串行数据通信要解决两个关键技术问题, 一个是数据传送,另一个是数据转换。所 谓数据传送就是指数据以什么形式进行传 送。所谓数据转换就是指单片机在接受数 据时,如何把接收到的串行数据转化为并 行数据,单片机在发送数据时,如何把并 行数据转换为串行数据进行发送。
(2).数据传送速率
方式2的波特率时固定的,而且有两种。一种是晶振频率的 三十二分之一;另一种是晶振频率的六十四分之一。即fosc/32 和fosc/64。如用公式表示则为:
波特率2S= MODfosc 64
由此公式可知,当SMOD为0时,波特率为fosc/64,当SMOD 为1时,波特率为fosc/32
串行工作方式3
D0
......
D7
RXD 8051 TXD
P1.0
Q 74LS165
CLK STB
串行口工作方式1
方式1为10位为一帧的异步串行通信方式。其帧格式为1个 起始位、8个数据位和1个停止位。如下图所示。
起始位 D0 D1 D2 D3 D4 D5 D6 D7 停止位
1. 数据发送 数 据 写 入 SBUF 后 , 开 始 发 送 , 此 时 由 硬 件 加 入 起 始 位 和
X = 28 11.0592106 = 253 = 0FDH
96003212
例2 利用8051串行口将片内40H~4FH单元中 的数据发送出去,串行口工作于方式2, TB8作为奇偶位。
在数据写入发送缓冲器之前,先将数据 的奇偶位写入TB8,这样使第9位数据作为 校验位。
汇编语言程序清单:
TRS: MOV SCON, #80H MOV PCON, #80H MOV R0, #40H MOV R2, #10H
6) TI——发送中断标志位 在方式0时,发送完第8位数据后,该位由硬件置位。 在其它方式下,于发送停止位之前,由硬件置位。 TI=1表示帧发送结束,其状态既可供软件查询使 用,也可请求源自文库断。TI由软件清“0”。
7) RI——接收中断标志位 在方式0时,接收完第8位数据后,该位由硬件置位。 在其它方式下,接收到停止位之前,该位硬件置位。 RI=1表示帧接收结束,其状态既可供软件查询使 用,也可请求中断。 RI由软件清“0”。
起始位 D0 D1 D2 D3 D4 D5 D6 D7
D8 停止位
在方式2下,字符还是8个数据位,只不过增加了一个第9
个数据位(D8),而且其功能由用户确定,是一个可编程位。 在发送数据时,应先在SCON的TB8位中把第9个数据位的内
容准备好。这可使用如下指令完成:
SETB
TB8
;TB8位置“1”
CLR
串行通信的速率用波特率来表示,所谓波特率就 是指一秒钟传送数据位的个数。每秒钟传送一个数据 位就是1波特。即:1波特=1bps(位/秒) 。
在串行通信中,数据位的发送和接收分别由发送 时钟脉冲和接收时钟脉冲进行定时控制。时钟频率高, 则波特率高,通信速度就快;反之,时钟频率低,波 特率就低,通信速度就慢。
12 (256X) fosc
溢出率为溢出周期的倒数。则波特率的计算公式为:
波特率 2SM = O D fosc 32 12(256X)
实际使用中,波特率是已知的。因此需要根据波特率的计 算公式求定时初值X。用户只需要把定时初值设置到定时器1, 就能得到所要求的波特率。
串行口工作方式2
方式2为11位为一帧的异步串行通信方式。其帧格式为1个起 始位、9个数据位和1个停止位。如下图所示。
方式3同方式2几乎完全一样,只不过方式3的波特率是 可变的,其波特率的确定同方式1,由用户来确定。
例1 已知8051的串行口采用方式1进行通信,晶振频率为
11.0592MHz,选用定时器T1作为波特率发生器,T1工作于方 式2,要求通信的波特率为9600,计算T1的初值。 设Smod=0, 计算T1的初值如下:
TB8
;TB8位置“0”
发送数据(D0--D7)由MOV指令向SBUF写入,而D8位的内容 则由硬件电路从TB8中直接送到发送移位器的第九位,并以此来 启动串行发送。一个字符帧发送完毕后,将TI位置“1”,其他 过程与方式1相同。
方式2的接收过程也于方式1基本类似,所不同的只在第9数 据位上,串行口把接收到的前8个数据位送入SBUF,而把第九数据 位送入RB。
LOOP:MOV A, @R0 MOV C, P MOV TB8, C MOV SBUF, A
WAIT:JBC TI, CONT SJMP WAIT
CONT:INC R0 DJNZ R2, LOOP
;设置串行口工作方式2 ;波特率为fosc/32 ;设置片内数据指针 ;数据长度送R2 ;取数据送A ;奇偶位送TB8
(2). 电源控制寄存器(PCON)
PCON不可位寻址,字节地址为87H。它主要是为 CHMOS型单片机80C51的电源控制而设置的专用寄存 器。其内容如下:
位序
D7
D6
D5
位符号 SMOD /
/
D4
D3
D2
D1
D0
/
GF1 GF2 PD IDL
与串行通信有关的只有D7位(SMOD),该位为波特率倍增位, 当SMOD=1时,串行口波特率增加一倍,当SMOD=0时,串行口波特
停止位,构成一帧数据,由TXD串行输出。输出一帧数据后, TXD保持在高电平状态下,并将TI置位,通知CPU可以进行下一 个字符的发送。
2. 数据接收 当REN=1且接收到起始位后,在移位脉冲的控制下,把接收到
的数据移入接收缓冲寄存器(SBUF)中,停止位到来后,把停止 位送入RB8中,并置位RI,通知CPU接收到一个字符。 3. 波特率的设定
可变
方式0和方式2的波特率是固定的,而方式1和方式3的波 特率是可变的,由T1的溢出率决定。
串行口工作方式0
1. 数据发送 当数据写入SBUF后,数据从RXD端在移位脉冲(TXD)的 控制
下,逐位移入74LS164,74LS164能完成数据的串并转换。当8位 数据全部移出后,TI由硬件置位,发生中断请求。若CPU响应中 断,则从0023H单元开始执行串行口中断服务程序,数据由 74LS164并行输出。其接口逻辑如下图所示。
RXD 8051
TXD
P1.0
D0 。。。。。。 D7
A
B
74LS164
CLK STB
2. 数据接收 要实现数据接收,必须首先把SCON中的允许接收位REN设置为
1。当REN设置为1时,数据就在移位脉冲的控制下,从RXD端输入。 当接收到8位数据时,置位接收中断标志位RI,发生中断请求。 其接口逻辑如下图所示。由逻辑图可知,通过外接74LS165,串 行口能够实现数据的并行输入。
相关文档
最新文档