Upload
zia-talley
View
137
Download
15
Embed Size (px)
DESCRIPTION
第七章 串行通讯口 第一节 概述 一.并行通讯与串行通讯 1. 并行通讯 : 在同一时刻内,数据的各位并行传送。 典型应用,计算机与并行打印机连接。 优点:处理速度快。 缺点:占用传输线多,传输距离短,一般小于 30 米。 2 .串行通讯: 数据一位一位的依次传送。 优点:传输线少,适合于远距离传送。 缺点:传送速度较慢。. 二.串行通讯的字符格式: 1. 异步通讯: 传送方向 - PowerPoint PPT Presentation
Citation preview
1
第七章 串行通讯口
第一节 概述
一.并行通讯与串行通讯
1. 并行通讯 : 在同一时刻内,数据的各位并行传送。
典型应用,计算机与并行打印机连接。
优点:处理速度快。
缺点:占用传输线多,传输距离短,一般小于 30 米。
2 .串行通讯: 数据一位一位的依次传送。
优点:传输线少,适合于远距离传送。
缺点:传送速度较慢。
2
二.串行通讯的字符格式:
1. 异步通讯:
传送方向
…….. 1 数据 0 …….. 1 数据 0…….. 1 数据 0
停止位 起始位 停止位 起始位 停止位 起始位
若干空闲位
数据中信息的两种状态分别以 mark 和 space 标志 , 其中:
mark 译为”标号”,对应逻辑 1 的状态。
Space 译为”空格”,对应逻辑 0 的状态。
3
每一幀数据均以 0 开始 , 以 1 终止 , 中间传送的数据位可以是 5 位 ,7位 ,8 位均可 , 中间有若干空闲位 , 空闲时一般处于 1 的状态。
异步通讯比较灵活,实现起来比较简单
2. 同步通讯:
选用一个同步字符,例如 0010010 发送过去,约定同时开始同步传送。
传送方向
数据 数据 数据 数据 同步字符
数据之间没有间隔,可连续发送。
4
比较:
同步传送效率比异步高。如果传送 200 个字节加一各同步字符,则辅助数据只佔 0.5 %若用异步传送到 200 个字节则至少有 400 位辅助数据 , 其数量可观。
三 . 异步串行通讯的信号格式: 1 .近程通讯 RS232
TXD
甲机
RXD
GND
1488
1489
1489
1488
RXD
乙机
TXD GND
TTL
TTL
TTL
TTL
RS232
5
近程通讯采用数字信号直接传送方式:
计算机内部的数据信号是 TTL 电平标准,而通信线上的数据信号是 RS-232 电平标准。尽管电平标准不同,但数据信号的波形和频率并没有改变,近程串行通讯只需用传输线把两端接口电路直接连接起来即可实现。
RS-232 和 TTL 电平标准的逻辑值规定为:
RS-232 标准 TTL 标准
逻辑 1(mark) -3 ~ -25V 2 ~ 5V ( 高电平额定值 3V)
逻辑 0 ( space ) +3 +25V 0 ~ 0.8V( 低电平额定值 0.2V)
6
2 .远程通讯
在远程通讯中,应使用专用通信电缆,出于经济的考虑,通常使用电话线作为传输线,如图:
计算机MODEM MODEM 计算机
数字信号 数字信号
RS-232 标准RS-232 标准
模拟信号
电话线
地 地
7
远距离直接传送数字信号,信号会发生畸变,为此要把数字信号转变为模拟信号再进行传送,通常使用频率调制法,即以不同频率的载波信号代表数字信号的两种不同电平状态,这种数据传送方式称为频带传送方式。通常为:
mark : 1270HZ 或 2225HZ
space : 1070HZ 或 2025HZ
在串行通信发送端有调制器,用以把电平信号调制为频率信号,而在接收端有解调器,用以把频率信号解调为电平信号。通常串行通信两端均具有发送接收功能,因此均应设置调制器和解调器,二者合二为一为调制解调器,即 MODEM 。
8
四 . 串行通讯的数据通路形式:
1. 单工形式
数据单向传送,只需一条传输线。
2. 半双工形式
数据传送是双向,但不可同时进行。
传输线可用一条,也可用两条。
3. 全双工形式
数据传送是双向,且可同时发送接收。需两条传输线。
A B
A B
A B
9
五 . 串行通讯的传送速率:
用每秒传送数据的位数衡量,称波特率 (baudrate)
以波特为单位 1 波特 = 1bit/s ( 位 / 秒 )
例如电传打字机传送速率为每秒 10 个字符,每个字符 11 位,
则波特率为:
11 位 / 字符 × 10 字符 / 秒 = 110 位 / 秒 即 110 波特
传送一位需时间: 1/110 秒≈ 9.1ms
MCS-51 系列单片机具有一个全双工的串行口,它在不同的工作方式中可同步或异步发送或接收数据。
其波特率范围:以 6MHZ 晶振为例、为 0.24 波特 ~ 31250 波特
10
第二节 8031 单片机串行口的控制及工作方式
串行口的接收端为 P3.0 (10 脚 ) 称 RXD ,发送端为 P3.1(11 脚 ) 称TXD 。
一 . 8031 串行口的控制寄存器:
1. 串行口控制寄存器 SCON 字节地址 98H 可位寻址。
SM0 SM1 SM2 REN TB8 RB8 TI RI
00 :方式 0 接收中断标志
01 :方式 1 发送中断标志
10 :方式 2 1 :允许接收 接收到的第 9 位
11 :方式 3 0 :禁止接收 待发送的第 9 位
11
例:使串行口方式 1 发送
MOV SCON , #40H 0 1 0 0 0 0 0 0
方式 1 禁止接收
2. PCON 字节地址 87H
D7
SMOD
只有最高位 D7 位有定义, SMOD 称波特率选择位。 SMOD为 1 时比为 0 时波特率高一倍。
3. 串行通道数据寄存器 SBUF
它是两个 9 位移位寄存器,一个是发送缓冲器,只写不读,另一个是接收缓冲器,只读不写,它们共用一个地址 99H
12
二.串行口的四种工作方式:
1 .方式 0
移位寄存器输入输出方式,同步发送接收 8 位数据,每个机器周期移一位。如图 :
DSADSBCP 74LS164
Q0 Q7
RXD
TXD
8031
RXD
TXD
8031
Q7
CP 74LS165
D0 D7
输出方式 输入方式
13
方式 0 输出的基本指令:
MOV SCON ,#00H ;SM0 = SM1 = 0 ,选方式 0
MOV A, #nnH ;取待输出数据 nnH
CLR TI ;清发送中断标志
MOV SBUF , A ; 对 SBUF写入即启动发送, TXD 端每个机器周
期发出一个移位脉冲,数据即从 RXD 端
输出一位, 74LS164 的 CP 端每接收 TXD 端
一个移位脉冲, 数据右移一次,输出时
以并行方式出现。
WAIT: JNB TI , WAIT ; 发送一个字节后 TI =1
标志一帧数据发送完毕
CLR TI ;清发送中断标志,
准 备发送下一字节
14
方式 0 输入:
当 REN = 1 ,接收中断标志 RI = 0 ,则启动接收,移位脉冲仍从 TXD 端输出,数据从 RXD 端输入,当一个字节数据输入完毕时,置 1 接收中断标志 RI 。
2. 方式 1
异步通讯。发送或接收一帧数据为 10 位,其格式是:
1 8 位 数 据 0
SCON 中 SM0, SM1 为 01 则选方式 1
15
发送过程:
① 启动发送:执行一条访问 SBUF 的指令即启动发送,
且同时 1装 入第 9 位。
② 发送一位的时间:由选定的波特率决定。
③ 发送过程:首先起始位 0从 TXD 脚发出,且第 9 位写入 1 ,
然后每个移位脉冲将 SBUF 中数据右移一位,
从 TXD 输出,空位由 0填充。
发送结束后,置位发送中断标志 TI ,申请中断。
16
接收过程:
当 REN = 1 ,且接收中断标志 RI = 0 时,允许接收。
① 判断起始位:以选定波特率的 16倍速率采样 RXD 端,当连续三次采样中有两次是 0 时,则确认为起始位 0 ,此时开始一帧数据的接收。
② 开始接收: 1FFH写入移位寄存器,每个位移脉冲左移一位,一帧数据接收完后置 1 接收中断标志,申请中断。移位脉冲的频率由选定波特率决定。
③ 判断保留数据的条件
保留数据的条件是: RI=0 、 SM2=0 或者 RI=0 、停止位为 1 ,符合两组条件其中之一则将数据保留在 SBUF 中,并置位接收中断标志 RI 。
若不符合保留数据的条件,则将收到的数据丢弃,重新检测 RXD端以备下次接收。
17
3. 方式 2.
异步发送或接收一帧数据为 11 位,其格式为:
1 第 9 位 8 位 数 据 0
发送与接收操作同方式 1 ,注意保留数据的两组条件为:
RI=0 、 SM2=0 或者 RI=0 、第 9 位数据为 1
4. 方式 3
与方式 2相同的是异步接收发送一帧数据是 11 位,但波特率与方式 2 不同。
注:所有方式当发送或接收一帧数据置 1 TI 和 RI 中断标志后,必须软件清 0 ,以备下一帧数据的发送或接收。
18
三 .SCON 中的 TB8 、 RB8 第 9 位数据的用法举例
在数据通讯中,由于传输距离较远,数据信号在传输过程中可能发生畸变,从而引起误码,为了保证传输质量,除了硬件上采取措施之外,软件可采取排错措施,例如可用第 9 位数据作为奇偶检验。例:
发送端发送一个字节数据及奇偶位:
MOV SCON, #80H ; 选串行口方式 2 ,传送 11 位数据
MOV A, #DATA ;待发送 8 位数据送 A ,注意此时 A 的
内容将影响 PSW 中的奇偶标志 P , 即 PSW.0
MOV C , PSW.0 ;奇偶标志送 C ,奇为 1 、偶为 0
MOV TB8 , C ;奇偶标志送 TB8 ,待发送的第 9 位
MOV SBUF , A ;启动一次发送共 11 位数据
LOOP: JBC TI ,NEXT ;TI = 1 时,一帧数据发完,清 TI 转下
SJMP LOOP
…………….
NEXT:…
19
接收端将收到的数据用奇偶校验位进行核对排错:
MOV SCON , #90H ; 选方式 2 , 10010000 , REN = =1 ,允许接收
LOOP : JBC RI ,RIV ;等待接收完毕
SJMP LOOP
RIV : MOV A, SBUF ; 接收完一帧数据取出送 A
此时收到的数据将影响 PSW 中奇偶位 PSW.0
JB PSW.0,ONE ; 为奇跳下
JB RB8 , ERR ; 接收到的数据为偶,而第 9 位为 1 ,出错
SJMP LD ; 接收正确
ONE : JNB RB8 , ERR ; 接收到的第 9 位不为 1 ,出错
LD :…………… ; 接收正确
ERR :…………… . ; 接收出错处理,可通知对方重发
20
四 . 用 SCON 中的 SM2 实现多机通讯
在方式 2 和方式 3 中,当接收到一帧数据时,只有符合下列条件之一数据才会被保留,否则将被丢弃:
① RI = 0 RI = 0②
SM2 = 0 第九位数据为 1
1. 多机通讯时约定主机发出地址信息时第 9 位为 1 ,而数据信息第9 位为 0 ,且初始化时使
SM2 = 1
2.主机先向各从机发出地址信息,此时由于地址信息第 9 位为 1 ,各从机接收到的信息均符合第②组条件而被接收保存,各从机即将收到的地址信息与自己的地址相比较,如果与本机地址相符则使 SM2=0
21
3. 随后主机向各从机发出数据,第 9 位为 0 ,各从机收到后均不符合条件②,只有地址相符的从机由于 SM2 = 0 符合条件①而保存接收到的数据信息,其余各从机均将数据信息丢弃,这就实现了点对点的多机通讯。
第三节 波特率的制定方法
一 . 方式 0 : 以下以 B 代表波特率,以 f 代表晶振频率
方式 0 的波特率固定为晶振频率的 1/12
例如 6M 晶振,则 B = 6M/12=0.5M 位 / 秒 = 0.5×106 波特
传送一位所需时间是: 2微秒
注:方式 0 波特率只与晶振频率 f 有关, f 愈大传送速度愈快。
22
二 . 方式 2 :
B = f×2SMOD/64
其中 SMOD 是 PCON 的最高位,可为 0 或 1 ,以 f = 6M 为例:
当 SMOD = 0 B = 6M×20/64 = 93750 波特
当 SMOD = 1 B = 6M×21/64 = 187500 波特
注:方式 2 波特率与晶振频率和 SMOD 有关,一经选定晶振频率,波特率只有两种可选择。
23
三 . 方式 1 和方式 3 :
B = T1溢出率 ×2SMOD/32
什么是溢出率?溢出率即定时器每秒溢出的次数。由于定时器工作于不同的工作方式时,具有不同的计数器位数, (13 位、 16 位、 8位 ) ,装入不同的初始常数,因此溢出率也不同。
下面从溢出周期 ( 隔多长时间溢出一次 ) 来推出溢出率:
24
溢出周期: T = TC + TI
式中: TC 为定时器的定时间隔
TC = ( 2N - Z )× 机器周期
其中 Z 是定时器的初始常数
N当定时器选择方式 0 、 1 、 2 时分别为 13 、 16 、 8
机器周期为 12/f
25
TI 为本次定时结束到下次启动定时的时间,它包括:
a :转入中断入口的硬件子程序所需的 3 个机器周期
b :中断服务程序中重装时间常数又返回所需时间,
一般为 6 个机器周期
TI = 9×12/f 所以,溢出周期为:
T = TC + TI
= ( 2N - Z ) ×12/f + 9×12/f
= ( 2N - Z + 9)×12/f
f
溢出率 = 1/ T = ( 2N - Z + 9)×12
26
需要说明的是上述公式是对定时器方式 0 和 1 而言,对于定时器方式 2 则由于可自动重装时间常数而省去了转入中断服务重装时间常数所需的 9 个机器周期,即
TI = 0 因此定时器方式 2 时溢出率为:
f
溢出率 = ( 2N - Z )×12
27
综上分析,串行口方式 1 和方式 3 的波特率计算公式为:
T1 工作于方式 0 和方式 1 时
B = f × 2SMOD N = 13 或 16 ①
(2N - Z + 9)×12 32
T1 工作于方式 2 时
B = f ×2SMOD N = 8 ②
(2N – Z)×12 32
28
由①式 以 f = 6M 为例
T1 方式 0 :当 SMOD = 0 、 Z = 0 时获得最小波特率:
B = 1.905≈2 波特
当 SMOD = 1 、 Z = 1FFFH 时获得最大波特率:
B = 3125 波特
T1 方式 1 :波特率范围为 0.24 ~ 3125 波特
由②式, T1 方式 2 :
波特率范围为 61 ~ 31250 波特
29
例 编一程序,设置 8031 串行口可发送接收一帧数据为 11 位,其波特率选定 125 波特。设晶振频率为 6MHZ
分析:
1. 方式 2 和方式 3 可发送接收 11 位数据。
若选方式 2 B = f×2SMOD/64
= 6×10 6×2SMOD/64
当 SMOD = 0 时 B = 93750 波特
当 SMOD = 1 时 B = 187500 波特
均不可满足 125 波特,因此只能选方式 3
SCON :
1 1 0 1 0 0 0 0
方式 3 允许接收 D0H
30
2. 设置计算波特率:
选 T1 方式 2 ,其波特率范围为 61~ 31250 波特可满足 125 波特。
T1 工作于方式 2 时
B = f ×2SMOD 选 SMOD = 1
(2N – Z)×12 32
则:
B = 6×106 ×21 = 125 解之得 Z = 6
(28 – Z)×12 32
31
程序如下:
ORG 0000H
AJMP MAIN
ORG 0023H
AJMP PPT0
MAIN: MOV SP , # 60H
MOV SCON , # 0D0H ; 串行口方式 3 ,允许接收
MOV PCON , # 80H ;SMOD = 1
MOV TMOD , # 00100000B ;T1 方式 2 定时
MOV TL1 , # 06H ; 设置波特率 125 波特
MOV TH1 , # 06H
SETB EA ;允许 CPU 中断
SETB ES ;允许串行口中断
SETB TR1 ;启动 T1 发出波特率
………………. PPT0: 略
32
本章要点:
1. 第一节中的有关串行口的基本概念:
如 并行通讯与串行通讯
串行通讯的字符格式
异步串行通讯的信号格式 RS-232 和 TTL 电平标准
频率调制法 MODEM
串行通讯的数据通路形式:单工 半双工 全双工
波特率
2. 串行口的控制寄存器:
SCON 中各位的意义
PCON 中的 SMOD 位
SBUF
33
3. 串行口的四种工作方式:
方式 0 :
移位寄存器输入输出方式,同步发送接收 8 位数据
方式 1 :
异步通讯。发送或接收一帧数据为 10 位,其格式是… ..
方式 2 和方式 3
异步发送或接收一帧数据为 11 位,其格式……
34
4. 波特率的制定方法
方式 0
波特率固定为晶振频率的 1/12
方式 2 :
B = f×2SMOD/64
35
方式 1 和方式 3 的波特率计算公式为:
T1 工作于方式 0 和方式 1 时
B = f × 2SMOD N = 13 或 16 ①
(2N - Z + 9)×12 32
T1 工作于方式 2 时
B = f ×2SMOD N = 8 ②
(2N – Z)×12 32
注意区分串行口的工作方式和 T1 的工作方式。
36
5. 根据以上基本知识,要求能对串行口进行正确的初始化编程。