第 7 章 串行口及串行通信技术

67
7 7-1 串串串串串串串串 7 7-2 串串串串串串串串串 7 7-3 串串串串串串串串 7 7-4 串串串串串串 7 7 第第第第第第第第第第 第第第第第第第第第第

Upload: ketan

Post on 20-Jan-2016

199 views

Category:

Documents


0 download

DESCRIPTION

第 7 章 串行口及串行通信技术. 7 -1 串行通信基础知识. 7 -2 串行口及控制寄存器. 7 -3 串行通信工作方式. 7 -4 串行口的应用. 并 行 数 据 传 送. 串 行 数 据 传 送. 原 理. 各数据位同时传送. 数据位按位顺序进行. 优 点. 传送速度快、效率高. 最少只需一根传输线即可完成:成本低. 缺 点. 数据位数→传输线根数:成本高. 速度慢. 应 用. 传送距离< 30 米,用于计算机内部. 几米~几千公里,用于计算机与外设之间. 7-1 串行通信基础知识. 一、串行通信基本原理 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第 7 章   串行口及串行通信技术

77-1 串行通信基础知识

77-2 串行口及控制寄存器

77-3 串行通信工作方式

77-4 串行口的应用

第第 77 章 串行口及串行通信技术章 串行口及串行通信技术

Page 2: 第 7 章   串行口及串行通信技术

7-1 7-1 串行通信基础知识串行通信基础知识一、串行通信基本原理

并行数据传送 同步 (SYNC)

串行 异步 (ASYNC) (用于单片机中)

  并 行 数 据 传 送 串 行 数 据 传 送

原 理 各数据位同时传送 数据位按位顺序进行

优 点 传送速度快、效率高 最少只需一根传输线即可完成:成本低

缺 点 数据位数→传输线根数:成本高 速度慢

应 用 传送距离< 30 米,用于计算机内部

几米~几千公里,用于计算机与外设之间

Page 3: 第 7 章   串行口及串行通信技术

异步通信的双方需要两项约定:1. 字符格式:一帧字符位数的规定:数据位,校验位,起始位和停止位。

2. 波特率 -Baud rate( 位 / 秒 ) 即数据传送速率的规定:例:要求每秒传送 120 个字符,每帧为 10 位。解: 传送的波特率为: B=120 字符 / s ×10 b/字符 =1200 波特

( b/s) 每位代码的传送时间 Td=0.83ms

( 二 ) 同步通信: 以一串字符为一个传送单位,字符间不加标识位,在一串字符开始 用同步字符(常约定1~2个)标识,硬件要求高,通讯双方须严格同步。

二、串行通信的基本方式( 一 ) 异步通信: 以字符为传送单位用起始位和停止位标识每个字符的开始和结束字 符,间隔不固定,只需字符传送时同步即可。 异步通讯常用格式:一个字符帧

D0 D1 D2 D3 D4 D5 D6 D7 停止位起始位

Page 4: 第 7 章   串行口及串行通信技术

  在同步传送中,当检测到规定的同步字符后,就连续按顺序传送数据,直到通信告一段落;同步传送时,字符与字符之间眉宇间隙,也不用起始位和停止位,仅在数据块开始时用同步字符来表示.

• 同步字符的插入可以是单同步字符或双同步字符,然后是连续的数据块;同步字符可以是由用户约定,也可以采用ASCII 码中规定的同步字符 SYNC 代码,即 16 H.

• 在同步传送时,要求用时钟来实现通信双方的同步,因此发送方除传送数据外,还要同时传送时钟信号.

• 因此硬件要求较高

Page 5: 第 7 章   串行口及串行通信技术

三、串行接口功能( 1 )发送器:并串数据格式转换,添加标识位和校验位,

一帧发送结束,设置结束标志,申请中断。( 2 )接收器:串并数据格式转换,检查错误,去掉标识

位,保存有效数据,设置接收结束标志,申请中断。( 3 )控制器:接收编程命令和控制参数,设置工作方式:

同步 / 异步、字符格式、波特率、校验方式、数据位与同步时钟比例等。

四、串行通信的传输方式:1 、单工通讯:数据单向传送。( 1 条数据线,单向)2 、半双工通讯:数据可分时双向传送。( 2 条数据线,双向)3 、全双工通讯:可同时进行发送和接收。 ( 1 条或 2 条数据线,双向)

发送器 接收器

地线

数据线发送接

收器接收发

送器地线

数据线 发送接收器

接收发送器

地线

数据线

Page 6: 第 7 章   串行口及串行通信技术

五、异步串行通信的信号形式

1 、远距离直接传输数字信号,信号会发生畸变,因此要把数字信号转变为模拟信号再进行传送。可利用光缆、专用通信电缆或电话线。

方法:通常使用频率调制法(频带传送方式)。

发方 收方解调器调制器“ 0”

“ 1”“ 0”

市话线电平信号 频率信号

“ 1”

通常: “ 1” : 1270Hz 或 2225Hz ;

“0” : 1070Hz 或 2025Hz 。

Page 7: 第 7 章   串行口及串行通信技术

2 、因通信时(有干扰)信号要衰减,所以常采用RS232 电平负逻辑,拉开“ 0” 和“ 1” 的电压档次,以免信息出错:

RS232C负逻辑( EIA 电平):

“0” : +3V—+25V ;“1” : -3V— -25V 。最大传输信息的长度为 15 米。

TTL正逻辑:“0” : 0 —2.4V ;“1” : 3.6V—+5V ;高阻: 2.4V—3.6V 。TTL 电平直接传输距离一般不超过 1.5 米。

RS232 负逻辑:“0” : +5V—+15V ;“1” : -5V— -15V 。最大传输信息的长度为 15 米。

RS-232C( 电平转换芯片为 MAX232)RS-422RS-485

Page 8: 第 7 章   串行口及串行通信技术

7-27-2 串行口及控制寄存器串行口及控制寄存器

串行接口输入 / 输出引脚: TXD(P3.1) 、 RXD(P3.0)数据格式:按不同方式,一帧数据位数 8/10/11 发送 / 接收时,数据皆低位在前。

一帧字符发送 / 接收结束,置位标志位 (TI/RI) ,并申请串行中断。 中断控制:中断允许位 ES、总允许EA; 中断入口: 0023H。

D0 D1 D2 D3 D4 D5 D6 D7 停止位起始位

D0 D1 D2 D3 D4D5 D6 D7

D0 D1 D2 D3 D4 D5 D6 D8 停止位起始位 D7

1 个全双工串行接口,可同时进行发送和接收。7-2-1 MCS-51 串行接口

Page 9: 第 7 章   串行口及串行通信技术

一、串行接口控制  1. 数据缓冲器 SBUF

  串行口缓冲器 SBUF 是可直接寻址的特殊功能寄存器 , 其内部 RAM 字节地址是 99H 。在物理上 , 它对应着两个独立的寄存器 , 一个发送寄存器 , 一个接收寄存器。发送时 , 就是 CPU 写 SBUF 的时候( 51 系列单片机没有专门的启动发送状态的指令) ; 接收时 , 就是读取 SBUF 的过程 , 接收寄存器是双缓冲的 , 以避免在接收下一帧数据之前 , CPU 未能及时响应接收器的中断 , 没有把上一帧数据读走 , 而产生两帧数据重叠的问题。

2.节电控制寄存器(或电源控制寄存器) PCON SMOD ( PCON.7 ):波特率加倍控制位。 SMOD=1 ,波特率加倍; SMOD=0 ,则不加倍。

Page 10: 第 7 章   串行口及串行通信技术

   

• SMOD :波特率倍增位。当 SMOD=1 时,波特率加倍;当 SMOD=0 时,波特率不加倍。

Page 11: 第 7 章   串行口及串行通信技术

SM0 、 SM1 :选择串行口 4 种工作方式。REN:允许接收控制位, REN=1 ,允许接收; REN=0 ,禁止接收。TB8 :发送的第 9位数据位,可用作校验位和地址 / 数据标识

位。RB8 :接收的第 9位数据位或停止位。TI :发送中断标志,发送一帧结束, TI=1 ,必须软件清零;RI :接收中断标志,接收一帧结束, RI=1 ,必须软件清零。

SM0 SM1 SM2 REN TB8 RB8 TI RI

3. 串行口控制 /状态寄存器 SCON(98H)

9FH 9EH 9DH 9CH 9BH 9AH 99H 98H位地址

位符号

Page 12: 第 7 章   串行口及串行通信技术

表 7.2 串行口操作模式选择

SM0 SM1 模 式 功 能 波 特 率

0 0

0 1

1 0

1 1

0

1

2

3

8 位同步移位寄存器 10 位 UART

11 位 UART

11 位 UART

fOSC/12

可变 (T1 溢出率 )

fOSC/64 或 fOSC/32

可变 (T1 溢出率 )

Page 13: 第 7 章   串行口及串行通信技术

SM2 :多机控制位,用于多机通讯。

• 在模式 2 和 3 中 , 若 SM2 = 1, 且接收到的第 9 位数据( RB8 )是 0, 则接收中断标志( RI )不会被激活。在模式 1 中 , 若 SM2=1 且没有接收到有效的停止位 , 则 RI 不会被激活。 在模式 0 中 , SM2 必须是 0 。

Page 14: 第 7 章   串行口及串行通信技术

7-3 7-3 串行通信工作方式串行通信工作方式

( 1 )方式 0 ( SM0=0 SM1=0) :同步移位寄存器方式

用于扩展并行 I/O接口。 1. 一帧 8 位,无起始位和停止位。 2. RXD ( P3.0 ) :数据输入 / 输出端。 TXD ( P3.1 ) :同步移位脉冲输出端,每个脉冲对应一个数据位。 3. 波特率 B= fosc/12

如: fosc= 12MHz, B= 1MHz,每位数据占 1s 。 4. 发送过程:写入SBUF,启动发送 .(MOV SBUF,A) 一帧发送结束, TI= 1 。 接收过程: REN=1且RI=0 ,启动接收, (MOV A,SBUF) 一帧接收完毕, RI= 1 。

 发送、接收的是 8 位数据,低位在先。

SM0 、 SM1选择四种工作方式。

Page 15: 第 7 章   串行口及串行通信技术

发送时序

写入SBUF

RXD 输出

TXD

TI

D0 D1 D2 D3 D4 D5 D6 D7

写REN=1

RI=0RXD 输入

RI

接收时序

(a)

(b)

时序图:时序图:

Page 16: 第 7 章   串行口及串行通信技术

方式 0 输出(发送)

• 串行数据通过 RxD ( P3.0 )输出,而在 TxD ( P3.1 )输出移位时钟脉冲。

• 当一个数据写入串口数据发送缓冲器时,就开始发送。• 发送控制器送出移位信号 。• 直到最高位( D7 )数字移出后,停止发送数据和移

位时钟脉冲。• 完成一帧数据的发送过程,并置 TI 为 1 (申请中断)。• 若 CPU 响应中断,则从 0023H 单元开始执行串口中断

服务程序。

  RxD8051 TxD

D1D2 74LS164CLK D7D6D5D4D3D2D1D0

Page 17: 第 7 章   串行口及串行通信技术

例如 : 在并行输出口接8支发光二极管,利用其串入并出功 能,把发光管从左到右依次点亮,并反复

循环.(假定发光管为共阴极型,共阴端接地)

• 程序: MOV SCON,#00H

• MOV A,#80H

• DELR: MOV SBUF,A

• JNB TI,$

• ACALL DELAY

• CLR TI

• RR A

• AJMP DELR

Page 18: 第 7 章   串行口及串行通信技术

方式 0 输入(接收)

• 此时 RxD端为数据输入端, TxD端为移位时钟信号输出。

• REN= 0 ,禁止接收。 REN= 1 ,允许接收。• 当满足方式 0 ,且 REN= 1 ,且 RI= 0 的条件时,

就会启动一次接收过程。• 在接收过程开始后的第 10 个机器周期, SCON 中

的 RI 位被置位,(中断申请)。• 至此,完成了一帧数据的接收过程。• 若 CPU 响应中断,就去执行由 0023H 作为入口地

址的中断服务程序。

  RxD8051 TxD

Q 74LS165CLK D7D6D5D4D3D2D1D0

Page 19: 第 7 章   串行口及串行通信技术

说明:• 方式 0 发送或接收完 8 位数据后由硬件置位发送中

断标志 TI 或接收中断标志 RI 。• CPU 响应中断请求转入中断服务程序时并不清 TI

或 RI 。• 中断标志 TI 或 RI 要用程序来清 0 。具体做法:•     CLR   TI

    CLR   RI•  或  ANL   SCON ,# 0FEH

    ANL   SCON ,# 0FDH 来实现。• 以方式 0 工作时 SM2 位(多机通信控制位)必须

为 0.

Page 20: 第 7 章   串行口及串行通信技术

(2) 方式 1 : 8 位数据异步通讯方式1. 一帧 10 位: 8 位数据位, 1 个起始位 (0) , 1 个停止位 (1) 。

2. RXD:接收数据端。 TXD:发送数据端。3. 波特率:用 T1 作为波特率发生器, B=(2SMOD/32)×T1溢出率。4. 发送:写入SBUF,同时启动发送,一帧发送结束, TI=1 。 接收: REN=1 ,允许接收。 接收完一帧,若RI=0且停止位为 1 ( 或 SM2=0) ,将接 收数据装入SBUF,停止位装入RB8 ,并使 RI=1 ; 否则丢弃接收数据,不置位 RI。

当REN=1 , CPU开始采样RXD引脚负跳变信号,若出现负跳变,才进入数据接收状态,先检测起始位,若第一位为 0 ,继续接收其余位;否则,停止接收,重新采样负跳变。

数据采样速率为波特率 16 倍频,在数据位中间,用第 7 、8 、 9个脉冲采样 3 次数据位,并 3 中取 2 保留采样值。

Page 21: 第 7 章   串行口及串行通信技术

T1 的时间常数计算:• X= 2N-所需定时时间 /计数周期  = 2N-计数频率 /所需频率(溢出率)

SMOD

N

23212

fosc2

)(波特率

384

2fosc2

SMODN

波特率

返回

Page 22: 第 7 章   串行口及串行通信技术

写入SBUF

采样

( a ) 发送时序图

TXD数据输出

TI

D0 D1 D2 D3 D4 D5 D6 D7 停止位起始位

RXD输入数据

( b ) 接收时序图

D0 D1D2 D3 D4 D5

D6 D7 停止位起始位

RI

检测负跳变

时序图:时序图:

Page 23: 第 7 章   串行口及串行通信技术

方式 1 的两种形式:• ( 1 )方式 1 发送• CPU 执行任何一条以 SBUF 为目标寄存器的指令,

就启动发送。• 当发送完数据位时,置位中断标志位 TI 。• ( 2 )方式 1 接收• 当检测到 RxD引脚上由 1 到 0 的跳变时开始接收过

程,并复位内部 16分频计数器,以实现同步。• 将 1 位时间等分成 16份,在第 7 , 8 , 9 个计数

状态时采样 RxD 的电平,保证排除噪声干扰。• 8 位数据进入 SBUF ,停止位进入 RB8 ,且置位中

断标志 RI 。

Page 24: 第 7 章   串行口及串行通信技术

例:假定甲、乙机以方式 1进行串行数据通信,其波特率为 1200 ,时钟 6MHz 。甲机发送,发送数据在外部 RAM4000~401FH 单元中。乙机接收,并把接收到的数据块首末地址及数据依次存入外部 RAM5000H 开始的区域中。

• 假设晶振频率为 6MHz ,按 1200 波特率,计算定时器1 的计数初值:

   X= 256- fosc*2smod/(384* 波特率 )   = 256- 6*106*1/(384*1200)= 243= 0F3H• smod= 0 ,波特率不倍增,则应使 PCON= 00H• 串行发送的内容包括数据块的首末地址和数据两部分

内容。对数据块首末地址的传送以查询方式进行,而数据则以中断方式传送。因此在程序中要先禁止串行中断,后允许串行中断。

Page 25: 第 7 章   串行口及串行通信技术

• 甲机:•    首末地址的发送采用查询法•    数据的发送采用中断法• 乙机:•    首末地址的接收采用查询法•    数据的接收采用中断法

Page 26: 第 7 章   串行口及串行通信技术

下面是发送和接收的参考程序:甲机发送主程序:

ORG 0023HLJMP ACINTORG 0100HMOV TMOD, #20H ;设置定时器 1 工作方式 2MOV TL1, #0F3H ; 定时器 1计数初值MOV TH1, #0F3H ;计数重装值SETB EA ; 中断总允许CLR ES ;禁止串行中断MOV PCON,#00H ; 波特率不倍增SETB TR1 ; 启动定时器 1MOV SCON,#40H ;设置串行口方式 1 , REN= 0

MOV SBUF,#40H ; 发送数据区首地址高位SOUT1: JNB TI,$ ;等待一帧发送完毕

CLR TI ;清发送中断标志MOV SBUF,#00H ; 发送数据区首地址低位

SOUT2: JNB TI,$ ;等待一帧发送完毕

Page 27: 第 7 章   串行口及串行通信技术

续:CLR TI ;MOV SBUF,#40H ; 发送数据区末地址高位

SOUT3: JNB TI,$ ;等待一帧发送完毕CLR TI ;清发送中断标志MOV DPTR,#4000H; 数据区地址指针MOV R7,#20H ; 数据个数SETB ES ; 开放串行中断MOV SBUF,#1FH ; 发送数据区末地址低位

AHALT: AJMP $ ;

甲机中断服务程序:ORG 8100H

ACINT: MOVX A,@DPTR ; 读数据CLR TI ;清发送中断

Page 28: 第 7 章   串行口及串行通信技术

续:MOV SBUF,A ; 发送字符CJNE R7, #00H, AEND1 ; 未发送完转 AEND1CLR ES ;禁止串行中断CLR TR1 ; 定时器 1 停止计数AJMP AEND2 ; 发送完转 AEND2

AEND1: INC DPTR ;DEC R7

AEND2: RETI ; 中断返回

乙机接收主程序:ORG 0023HLJMP BCINTORG 0100HMOV TMOD,#20H ;设置定时器 1 工作方式 2MOV TH1,#0F2H ;计数重装值MOV TL1,#0F2H ; 定时器 1计数初值SETB EA ; 中断总允许CLR ES ;禁止串行中断

Page 29: 第 7 章   串行口及串行通信技术

续:MOV PCON,#00H ; 波特率不倍增SETB TR1 ; 启动定时MOV SCON,#50H ;设置串行口方式 1 , REN= 1MOV DPTR,#5000H; 数据存放首地址MOV R7,#24H ; 接收数据个数

SIN1: JNB RI,$ ;等待CLR RI ;清接收中断标志MOV A,SBUF ; 接收数据区首地址高位MOVX @DPTR,A ; 存首地址高位INC DPTR ; 地址指针增量

SIN2: JNB RI,$ ;CLR RIMOV A,SBUF ; 接收数据区首地址低位MOVX @DPTR,A ; 存首地址低位INC DPTR

SIN3: JNB RI,$ ;CLR RI

Page 30: 第 7 章   串行口及串行通信技术

续:MOV A,SBUF ; 接收数据区末地址高位MOVX @DPTR,A ; 存末地址高位INC DPTR ; 地址指针增量

SIN4: JNB RI,$ ;CLR RIMOV A,SBUF ; 接收数据区末地址低位MOVX @DPTR,A ; 存末地址低位INC DPTRSETB ES ; 开放串行中断

BHALT: AJMP $ ;等待中断

乙机中断服务程序:ORG 8100H

BCINT: MOV A,SBUF ; 接收数据MOVX @DPTR,A ; 存数据CLR RI ;清接收中断标志CJNE R7,#00H,BEND1 ; 未接收完转 BEND1

Page 31: 第 7 章   串行口及串行通信技术

续:

AJMP BEND2 ; 接收完转 BEND2BEND1: INC DPTR

DEC R7BEND2: RETI ; 中断返回

Page 32: 第 7 章   串行口及串行通信技术

(3) 方式 2 和方式 3 : 9位数据异步通讯方式1. 一帧为 11 位: 9位数据位, 1 个起始位 (0) , 1 个停止位 (1) 。

第 9位数据位在 TB8/RB8 中,常用作校验位和多机通讯 标识位。2. RXD:接收数据端, TXD:发送数据端。3. 波特率:方式 2 : B=(2SMOD/64)×fosc 。

方式 3 : B=(2SMOD/32)×T1溢出率 ( 与方式 1相同 ) 。4. 发送:先装入 TB8 ,写入SBUF并启动发送,发送结束, TI=1 。 接收: REN=1 ,允许接收。 接收完一帧,若RI=0且第 9位为 1 ( 或 SM2=0) ,将接收数据装入接收 SBUF,第 9位装入RB8 ,使 RI=1 ;否则丢弃接收数据,不置位 RI。

Page 33: 第 7 章   串行口及串行通信技术

( a ) 发送时序图

写入SBUF

TXD 输出

TI

RXD 输入

( b ) 接收时序图

RI

D0 D1 D2 D3 D4D5 D6 TB8 停止位

起始位D7

D0 D1 D2D3 D4 D5 D6 RB8 停止位

起始位D7

检测负跳变

时序图:时序图:

Page 34: 第 7 章   串行口及串行通信技术

( 4)计算波特率:方式 0 为固定波特率: B=fosc/12方式 2 可选两种波特率: B=(2SMOD /64)×fosc 方式 1 、 3 为可变波特率,用 T1 作波特率发生器。

B=(2SMOD/32)×T1溢出率T1 为方式 2 的时间常数: X = 28 - t/T溢出时间: t= (28 -X)T = (28 -X)×12/ foscT1溢出率 =1/t= fosc /[12×(2n -X)]

波特率 B=(2SMOD /32)×fosc/[12×(28-X)]串行口方式 1 、 3 ,根据波特率选择 T1 工作方式,计算时间常数。T1选方式 2 : TH1= X = 28 - fosc/12×2SMOD/(32×B)T1选方式 1 用于低波特率,需考虑 T1重装时间常数时间。也可选工作方式 3 。

Page 35: 第 7 章   串行口及串行通信技术

4种方式比较:方式 波 特 率 传 送 位 数 发送

端接收端 用 途

01/12 fosc

(固定不变) 8 (数据) RXD RXD接移位寄存器,扩充并口

12SMOD/32 T1

溢出率10 (起始位、 8 位数据位、 停止位)

TXD RXD 单机通讯

22SMOD/64 fosc 11 (第 9 位为 1 :地址;

为 0 :数据) TXD RXD 多机通讯

32SMOD/32 T1

溢出率11 位

(同方式 2 ) TXD RXD 多机通讯

Page 36: 第 7 章   串行口及串行通信技术

7-4 7-4 串行口的应用串行口的应用 串行口初始化编程格式:

SIO : MOV SCON , # 控制状态字 ;写方式字且 TI=RI=0 ( MOV PCON , #80H ) ;波特率加倍 ( MOV TMOD , #20H ) ; T1 作波特率发生器

( MOV TH1 , #X ) ;选定波特率 ( MOV TL1 , #X ) ( SETB TR1) ( SETB EA) ;开串行口中断 ( SETB ES)

Page 37: 第 7 章   串行口及串行通信技术

发送程序:发送程序:1 、查询方式TRAM : MOV A , @R0 ;取数据

MOV SBUF , A ;发送一个字符WAIT : JBC TI , NEXT ;等待发送结束

SJMP WAITNEXT : INC R0 ;准备下一次发送

SJMP TRAM

2 、中断方式 ORG 0023H ;串行口中断入口 AJMP SINT

MAIN : … ;初始化编程TRAM : MOV A , @ R0 ;取数据

MOV SBUF , A ;发送第一个字符 H : SJMP H ;其它工作 SINT : CLR TI ;中断服务程序

INC R0

MOV A , @ R0 ;取数据MOV SBUF , A ;发送下一个字符RETI

先发送一个字符,等待 TI=1后再发送下一个字符。

Page 38: 第 7 章   串行口及串行通信技术

接收程序:接收程序:1. 查询方式WAIT : JBC RI , NEXT ;查询等待

SJMP WAITNEXT : MOV A , SBUF ;读取接收数据

MOV @R0 , A ;保存数据INC R0 ;准备下一次接收SJMP WAIT

2. 中断方式ORG 0023HAJMP RINT

MAIN : … ;初始化编程 H : SJMP H ;其它任务 RINT : CLR RI ;清中断标志

MOV A , SBUF ;读取接收数据MOV @R0 , A ;保存数据INC R0

RETI

REN=1 、 RI=0 等待接收,当RI=1 ,从SBUF读取数据。

Page 39: 第 7 章   串行口及串行通信技术

(一)串行口方式 0 :

串行口通过接口 74LS164实现:串行→并行的数据转换 (显示器接口 ); 通过接口 74LS165实现:并行→串行的数据转换。

SM0 SM1 SM2 REN TB8 RB8 TI RI

80C51

RXD

TXD

74LS164

. . .

波特率为fosc/12的同步移位脉冲

+5V共阳极

Q7 Q1Q0

D (0)74LS164

. . .Q7 Q1Q0

D (1)74LS164

. . .Q7 Q1Q0

D (7)

(7)(0) (1)

. . . . . . . . .

数 据低→高

串入并出

80C51

RXD

TXD

74LS165

. . .

QH

S/L CLK

(2)数 据低→高

并入串出

P1.0

SIN

74LS165

. . .

QH

S/L CLK

(1)

用于接移位寄存器扩充并口。

Page 40: 第 7 章   串行口及串行通信技术

程序:MOV R7 , #20 ;送入 20 个字节MOV R0 , #20H ;送首地址为 20H

RCV0 : CLR P1.0 ; P1.0=0 (并行置入数据)SETB P1.0 ; P1.0=1 (允许串行移位)

MOV SCON , #10H ;允许方式 0 接收JNB RI ,$ ;等待 RI=1 ,顺序执行CLR RI ; RI=0 为下一帧数据的接收准备MOV A , SBUF ;取数MOV @R0 , A

INC R0

RCV2 : DJNZ R7 , RCV0 ; R7- 1=0? ≠ 0跳(判是否已读入预定字节数)

………. ;对读入数据进行处理

Page 41: 第 7 章   串行口及串行通信技术

MAINT : MOV SCON , #80H ;串行口初始化MOV PCON , #80H ;波特率SETB EASETB ES ;开串行口中断MOV R0 , #50H ;设数据指针MOV R7 , #10H ;数据长度

LOOP : MOV A , @R0 ;取一个字符MOV C , P ;加奇偶校验MOV TB8 , CMOV SBUF , A ;启动一次发送

HERE : SJMP HERE ; CPU执行其它任务

(二)异步通讯程序举例:1. 发送程序:将片内 RAM 50H起始单元的 16个数由串行口 发送。要求发送波特率为系统时钟的 32 分 频,并进行奇偶校验。

Page 42: 第 7 章   串行口及串行通信技术

ORG 0023H ;串行口中断入口AJMP TRANI

TRANI : PUSH A ;保护现场PUSH PSWCLR TI ;清发送结束标志DJNZ R7 , NEXT ;是否发送完?

CLR ES ;发送完,关闭串行口中断 SJMP TEND

NEXT : INC R0 ;未发送完,修改指针MOV A , @R0 ;取下一个字符MOV C , P ;加奇偶校验MOV TB8 , CMOV SBUF , A ;发送一个字符POP PSW ;恢复现场POP A

TEND : RETI ;中断返回

Page 43: 第 7 章   串行口及串行通信技术

2. 接收程序:

RECS : MOV SCON , #50H ;串行口方式 1允许接收MOV TMOD , #20H ; T1 方式 2 定时MOV TL1 , #0F4H ;写入 T1 时间常数MOV TH1 , #0F4HSETB TR1 ;启动 T1

MOV R0 , #50H ;设数据指针MOV R7 , #10H ;接收数据长度

WAIT: JBC RI , NEXT ;等待串行口接收SJMP WAIT

NEXT: MOV A , SBUF ;读取接收字符MOV @R0 , A ;保存一个字符CLR RI

INC R0 ;修改指针DJNZ R7 , WAIT ;全部字符接收完 ?RET

SM0 SM1 SM2 REN TB8 RB8 TI RI

串行输入 16 个字符,存入片内 RAM 的 50H 起始单元,串行口波特率为 2400( 设晶振为 11.0592MHz) 。 ( 采用方式 1 )

Page 44: 第 7 章   串行口及串行通信技术

3. 接收程序:RECS : MOV SCON , #0D0H ;串行口方式 3允许接收

MOV TMOD , #20H ; T1 方式 2 定时MOV TL1 , #0F4H ;写入 T1 时间常数MOV TH1 , #0F4HSETB TR1 ;启动 T1 MOV R0 , #50H ;设数据指针MOV R7 , #10H ;接收数据长度

WAIT: JBC RI , NEXT ;等待串行口接收

SJMP WAITNEXT: MOV A , SBUF ;取一个接收字符

JNB P , COMP ;奇偶校验JNB RB8 , ERR ; P≠RB8 ,数据出错SJMP RIGHT ; P=RB8 ,数据正确

COMP: JB RB8 , ERRRIGHT: MOV @ R0 , A ;保存一个字符

CLR RIINC R0 ;修改指针DJNZ R7 , WAIT ;全部字符接收完 ?CLR F0 ; F0 =0 ,接收数据全部正确

RETERR : SETB F0 ; F0 =1 ,接收数据出错

RET

串行输入 16 个字符,进行奇偶校验。(采用方式 3 )

Page 45: 第 7 章   串行口及串行通信技术

4. 主从分布式微机系统:也叫集散控制系统:从机(单片机)作数据采集或实时控制, 主机( PC 机)作数据处理、中央管理等。应用:过程控制、仪器仪表、生产自动化和企业管理等方面。

直接传送串行通信接法PC 机调用的中断指令为:

INT 14H

SOUT

SIN

PC机GND80C51

RXD

TXD

GND

11489

1488TTL

TTL

RS232

RS232

TTL

TTL

①①单机通信:单机通信:

1/4MC1488

TTL RS232输入 输出

-12V

+12V

1 TTLRS232

+5V

1/4MC1489

输入 输出

Page 46: 第 7 章   串行口及串行通信技术

7-5 多机通信技术典型应用:校园卡系统、智能楼宇、自动温控蔬菜大棚、大型粮库、工厂自动化;

1#打卡机 2#打卡机 3#打卡机 …… n#打卡机 

Page 47: 第 7 章   串行口及串行通信技术

通信过程所有从机的所有从机的 SM2=1SM2=1 ,处于只接收地址帧状态,处于只接收地址帧状态

所有同学坐着听讲主机发地址信息,以第主机发地址信息,以第 99 位位 TB8=1TB8=1 表示发送的是地址表示发送的是地址

老师喊同学名字从机接收到地址帧后与本机地址比较从机接收到地址帧后与本机地址比较

所有同学听到名字与自己的名字比较

被寻址从机被寻址从机 SM2=0SM2=0 ,其作从机,其作从机 SM2=1SM2=1 不变不变名字相符的同学站起来 (SM2=0)

主机发数据信息主机发数据信息 (TB8=0)(TB8=0) ,对已被寻址的从机因,对已被寻址的从机因 SM2=0SM2=0 ,,可以接收主机发来的信息。其余从机因可以接收主机发来的信息。其余从机因 SM2=1SM2=1 不理睬主机。不理睬主机。

老师与站起的同学进行提问 ,课堂交流 ,TB8=0.被寻址的从机被寻址的从机 SM2SM2 置置 1.1.主机可另发地址帧与其它从机通信时 。主机可另发地址帧与其它从机通信时 。

回答问题的同学坐下 (SM2=1)

Page 48: 第 7 章   串行口及串行通信技术

②多机通信系统:

PC机

SOUT

SIN

RS232接口

RS232接口

148914881号80C51从机

RS232RS232TTL TTL14891488

2号80C51从机

RS232RS232TTL TTL14891488

n号80C51从机

RS232RS232TTL TTL

. . .

PC 机要对某一指定了地址编号的单片机通讯,就必须作好联络。①PC 机处于发送状态,各单片机的串行口均处于接收状态并使其 SM2=1 ,作好接收地址信息的准备。

②PC 机发出要通讯的那台单片机的地址编号,然后发送通讯数据,发地址时必须使第 9位信息为 1 ,发数据时必须使第 9 位数据为 0 。

③各单片机收到 PC 机发来的地址信息后,因此此时各 SM2=1 ,所以将引起各单片机的中断。在中断服务程序中,判断 PC 机发来的地址是否是自身的地址编号,仅有符合地址编号的那台才使其 SM2=0 ,其它不符合者仍是 SM2=1 。

④随着 PC 机信息的发出(第 9 位信息为 0 ),因为符合地址编号的那台单片机此时已是 SM2=0 ,所以这台单片机将再次进入中断,并在中断服务程序中接收 PC 机发来的数据。那些地址不符者,不能进入中断(因 SM2=1 ),也就不能接收串行来的数据。

Page 49: 第 7 章   串行口及串行通信技术

SM2、 RB8 与从机动作关系SM2 RB8 从 机 动 作

1 0 此时不能接收数据

1 1 能收到主机发的数据(地址信息)

0 0 进入串口中断,对接收的数据进行处理

0 1 进入串口中断 , 对接收的数据进行处理

Page 50: 第 7 章   串行口及串行通信技术

多机通信系统设计 设多机通信系统主、从机晶振为 6MHz ,波特率为 1200bps ,以方式 3进行多机

串行通信。 0#为主机、其他为从机,主机向某从机发出起始地址和终止地址,要求把该地址范围内的数据块由所指定的从机片外数据存贮器中传送到主机片外 RAM 之相应单元,起始地址的高低两字节分别存放在各机片内 RAM 的 70H和 71H单元,终止地址在 72H和 73H中,主机 74H单元存放欲呼叫的从机号。

1#

从机

89c51

0#

……2#

从机

n#

从机

图 1   多机通信系统硬件结构

Page 51: 第 7 章   串行口及串行通信技术

 简单通信协议

主机采用查询方式,从机采用中断方式通信,以确保及时收到主机的通信信息。主机的串口设为方式 3 ,允许接收,并置 TB8 为 1 ,因为只有一个主机,所以主机SCON 中的 SM2 不置 1 ,故控制字为 11011000 ,即 D8H. 。主机与从机的通信程序流程图如图2、 3所示。

Page 52: 第 7 章   串行口及串行通信技术

主机呼叫从机和发送地址值用查询方式,接收数据采用中断方式ORG 0000HAJMP MASTERORG 0023HAJMP RECEIVMASTER:MOVTMOD,#21H MOV TL1,#0F2H ; 波特率设置 MOV TH1,#0F2H MOV PCON,#00H SETB TR1 MOV SCON,#0D8H ; MOV R0,#74H   ;从机号所在的地址单元 MOV SBUF,@R0   ;发从机机号 JNB TI,$ MOV TH0,#27H   ;定时器 T0 定时 10ms MOV TL0,#10H SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 JNB RI,ERR   ; 若未接收到,则转出错处理

Page 53: 第 7 章   串行口及串行通信技术

   •     CLR RI    •     MOV A,SBUF   ;读从机应答信号•     CJNE A,74H,ERR1  ;若应答非所呼叫则转 ERR1(比如重

发)•     CLR TB8   ;若是所呼叫从机,则清 TB8 ,接下来发送数

据• LOOP: CLR TI•     DEC R0•     MOV SBUF,@R0 ;发送地址值•     JNB TI,$•     CJNE R0,#70H,LOOP•     CLR TI•     SETB EA   ;打开中断•     SETB ES• HERE:SJMP $• ERR: ……• ERR1:MOV SBUF,@R0•     ………

Page 54: 第 7 章   串行口及串行通信技术

主机接收数据程序(中断)• RECEIV:PUSH DPH• PUSH DPL• PUSH ACC• MOV DPH,70H ;建立数据指针(高字节)• MOV DPL,71H  ;(低字节)• MOV A,SBUF   ;接收数据• MOVX @DPTR,A  ;存入主机的片外 RA

M• CLR RI• MOV A,72H; 读末地址高字节• CJNE A,DPH,GOON ;数据块尚未传完?• MOV A,73H ;读末地址低字节• CJNE A,DPL,GOON ;数据尚未传完?• CLR TR1• CLR ES TOMAIN: POP ACC• POP DPL• POP DPH• RETI• GOON:INC DPTR• MOV 70H,DPH• MOV 71H,DPL• AJMP TOMAIN• END

Page 55: 第 7 章   串行口及串行通信技术

从机软件设计 ----- 通信子程序

图 3 从机通信程序流程图

数据?

接收并保存数据Y

N

清接收数据标志 准备收地址信息

接收地址

呼本机?

准备接收数据Y

清中断标志

返回

开始

N

Page 56: 第 7 章   串行口及串行通信技术

从机:从机(假设是2号机)发送和接收均采用中断方式

从机主程序: ORG 0000H AJMP SLAVE2 ORG 0023H AJMP SLV2 ORG 0100H SLAVE2:MOV TMOD ,#20H MOV TH1,#0F2H ; 波特率设置 1200bPS MOV TL1,#0F2H SETB TR1 MOV SCON,#0F0H ;SM1=1 REN=1 工作方式3 SETB EA SETB ES HERE:SJMP $

Page 57: 第 7 章   串行口及串行通信技术

SLV2:PUSH ACC JNB RI,XMT ;非接收,转发送中断处理 MOV A,SBUF   ;读接收结果 CLR RI JNB RB8,ADDR    ;非代码转地址接收 CJNE A,#2,NOT  ;非呼叫本机号 CLR SM2   ;是清 SM2 MOV SBUF,#2  ;向主机发应答信号 CLR ES   ;关中断 JNB TI,$   ;等待发送结束再开中断 CLR TI SETB ES MOV R0,#74H  ;建立地址指针ADDR1:DEC R0 POP ACC RETINOT:SETB SM2   ;配合主机ERR1处理(主机再次发送从机号) POP ACC RETI

Page 58: 第 7 章   串行口及串行通信技术

续: ADDR:MOV @R0,A    ;存接收的地址值      CJNE R0,#74H,ADDR1 ;地址字节接受完?      MOV SCON,#0C0H ; SM2=0 TB8=0 REN=0 准备发送数据    XMT:PUSH DPH

      PUSH DPL

      MOV DPH,70H ;建立数据指针      MOV DPL,71H

      MOVX A,@DPTR  ;由片外RAM读数据      CLR TI

      MOV SBUF,A  ;发送数据      MOV A,72H   ;读末地址高字节      CJNE A,DPH,AGAIN  ;数据块发送完?      MOV A,73H   ;读末地址低字节      CJNE A,DPL,AGAIN ;数据块发送完?      CLR ES

      JNB TI,$   ;等待最后字节发送      CLR TI   ;清标志

Page 59: 第 7 章   串行口及串行通信技术

  •   

续:  CLR TR1   ;停波特率发生器    SJMP RTN  ;通讯结束AGIN: INC DPTR  ;调整指针    MOV 70H,DPH  ;保存指针    MOV 71H,DPL  RTN:POP DPL     POP DPH    POP ACC    RETI

Page 60: 第 7 章   串行口及串行通信技术

7-6 MCS-51 单片机与 PC 机通信

MCS-51 单片机串口使用的是 TTL电平, PC使用的是 RS-232电平,因此它们之间不能用导线直接连接,而要通过电平转换电路。通常用 MAX232等芯片对两者的电平进行转换。

• 7.6.1 MAX232简介 MAX232芯片是 MAXIM公司生产的低功耗、单电源双 RS232 发送 / 接收器。 MAX232芯片内部有一个电源电压变换器,可以把输入的 +5V电源变换成 RS-232 输出电平所需 ±10V电压,所以采用此芯片接口的串行通信系统只要单一的 +5V电源就可以。

Page 61: 第 7 章   串行口及串行通信技术

7.6.1.1 MAX232主要特点

• - 单 5V电源工作;• -LinBiCMOSM 工艺技术;• - 两个驱动器及两个接受器;• -±30V 输入电平;• -低电源电流;• - 符合甚至优于 ANSI 标准;• - 可与 Maxim公司的 MAX232互换;

• -ESD保护大于MIL-STD-883 标准的 2000V 。

1345

111012

9

261615147138

C1+C1-C2+C2-T1INT2INR1OUTR2OUT

Vs+Vs-

VCCGND

T1OUTT2OUT

R1INR2IN

图 7-1-1 MAX232引脚图

Page 62: 第 7 章   串行口及串行通信技术

MAX232 内部逻辑框图• T1IN、 T2IN、 R1OUT、

R2OUT 为接 TTL电平的引脚;

• T1OUT、 T2OUT、 R1IN、R2IN 为接 RS232电平的引脚。

• TTL电平的 T1IN、 T2IN引脚应接单片机的串行发送引脚 TXD ;

• R1OUT、 R2OUT 应接 AT89C52 的串行接收引脚 RXD 。

图 7-1-2 MAX232 内部逻辑框图

Page 63: 第 7 章   串行口及串行通信技术

7.6.2   PC 机的串行口• PC 机通常有 1~2 个串行通

信接口,采用 DB25 型连接器。虽然 RS-232 定义了25脚信号标准,但实际进行异步通信时,只需 9 个电压信号: 2 个数据信号,6 个控制信号, 1 个信号地线。

• 右表是 PC 机 9脚串口的引脚定义。

图 7-1-3   PC 机串口 DB-9引脚

Page 64: 第 7 章   串行口及串行通信技术

7.6.3 单片机与 PC 机通信应用实例

• 7.6.3.1 电路原理图

C1+C1-C2+C2-

Vs+Vs-

VCCGND

T1IN T1OUTT2IN T2OUTR1OUT R1INR2OUT R2IN

MAX232

RXD

TXD10

11

8051

1627384952

61615147138

1345

111012

9

Page 65: 第 7 章   串行口及串行通信技术

7.6.3.2 软件设计• 通信约定:双方均采用 8 位数据位,一个停止位,波特率为 1

10 ,无奇偶校验方式。 PC 机发送数据采用查询方式,每发送完一个元素后便等待 8051将接收到的数据回传。若发送的数据和接收到的数据相等,则串行通信正确,否则,通信有错误。 8051 采取中断方式接收数据,使用方式 1 。

#include<reg51.h>#define uchar unsigned charuchar idata buf[10] _at_ 0x40 ; //保存接收的数据void init(void) // 串行口初始化{TMOD=0x20; TH1=0x71;TL1=0x71; //设定波特率 110bps,6MHz晶振 PCON=0x00;// TR1=1; // 启动 T1 EA=1; ES=1; //允许串口中断 SCON=0x50; // 串行口工作在方式 1 ,并允许接收}

Page 66: 第 7 章   串行口及串行通信技术

C51源程序/* 接收程序 */void receive(void) interrupt 4 using 0{  uchar idata *p=buf;  RI=0;ES=0;      //关串口中断  while((SBUF^0xff)!=0) //判断是否通信结束  {*p++=SBUF; //保存数据到 buf 数组 while(RI==0);RI=0; }  ES=1;}/*主程序 */void main(void){ init();   while(1);}

•通信双方必须具有相同的数据收发格式及传送速率(波特率)。•为了保证通信的顺利进行,双方事先必须约定通信协议。

Page 67: 第 7 章   串行口及串行通信技术

作 业 

  某MCS-51多机通信系统要求主、从机均采取中断方式通信,设 fosc=12MHz, 通信速率 4800bps.主机每次通信时先确定从机,然后将片内RAM中 30H单元开始的 10个数据发给指定的从机。编写主、从机的程序。