第 8 章 串行数据通信

30
8-1 串串串串串串串串 8-2 串串串串串串串串串 8-3 串串串串串串串串 8-4 串串串串串串 8 8 串串串串串串 串串串串串串

description

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

Transcript of 第 8 章 串行数据通信

8-1 串行通信基础知识

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

8-3 串行通信工作方式

8-4 串行口的应用

第第 88 章 串行数据通信章 串行数据通信

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

并行并行数据传送 数据传送 同步 同步

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

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

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

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

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

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

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

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

2.2. 波特率波特率 (( 位位 // 秒秒 )) 和传送速率的规定:和传送速率的规定:例:例:要求每秒传送要求每秒传送 120120 个字符,每帧为个字符,每帧为 1010 位。位。解:解: B=120×10=1200B=120×10=1200 波特 每位波特 每位 0.83ms0.83ms 数据位数据位传送输率传送输率 =120×8=960=120×8=960 位位 // 秒秒

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

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

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

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

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

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

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

四、串行数据传送方向:四、串行数据传送方向:11 、、单工通讯:单工通讯:数据单向传送。(数据单向传送。( 11 条数据线,单向)条数据线,单向)22 、、半双工通讯:半双工通讯:数据可数据可分时分时双向传送。(双向传送。( 22 条数据线,双向)条数据线,双向)33 、、全双工通讯:全双工通讯:可可同时同时进行发送和接收。进行发送和接收。 (( 11 条或条或 22 条数据线,双向)条数据线,双向)

发送器 接收器

地线

数据线发送接

收器接收发

送器地线

数据线 发送接收器

接收发送器

地线

数据线

五、异步串行通信的信号形式:五、异步串行通信的信号形式:11 、远距离直接传输数字信号,信号会发生畸变,因此要、远距离直接传输数字信号,信号会发生畸变,因此要

把数字信号转变为模拟信号再进行传送。可利用光缆、把数字信号转变为模拟信号再进行传送。可利用光缆、专用通信电缆或电话线。专用通信电缆或电话线。

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

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

“ 1”“ 0”

市话线电平信号 频率信号

“ 1”

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

“0” : 1070Hz 或 2025Hz 。

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

RS232 负逻辑( 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

8-28-2 串行口及控制寄存器串行口及控制寄存器

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

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

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 个全双工串行接口,可同时进行发送和接收。8-2-1 MCS-51 串行接口

一、串行接口控制:一、串行接口控制:1.1. 数据缓冲器数据缓冲器 SBUFSBUF ::发送发送 SBUFSBUF 和接收和接收 SBUFSBUF 共用一个地址共用一个地址 99H99H 。。 11 )发送)发送 SBUFSBUF 存放待发送的存放待发送的 88 位数据,写入位数据,写入 SBUFSBUF 将同时将同时 启动发送。发送指令:启动发送。发送指令:

MMOOVV SBUFSBUF ,, AA22 )接收)接收 SBUFSBUF 存放已接收成功的存放已接收成功的 88 位数据,供位数据,供 CPUCPU 读取。读取。

读取串行口接收数据指令:读取串行口接收数据指令:MMOOV AV A ,, SBUFSBUF

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

SM0SM0 、、 SM1SM1 ::选择串行口选择串行口 44 种工作方式。种工作方式。SM2SM2 ::多机控制位,用于多机通讯。多机控制位,用于多机通讯。RENREN::允许接收控制位,允许接收控制位, REN=1REN=1 ,允许接收;,允许接收; REN=0REN=0 ,禁止接收。,禁止接收。TB8TB8 ::发送的第发送的第 99 位数据位,可用作校验位和地址位数据位,可用作校验位和地址 // 数据标识位。数据标识位。RB8RB8 ::接收的第接收的第 99 位数据位或停止位。位数据位或停止位。TI TI ::发送中断标志,发送一帧结束,发送中断标志,发送一帧结束, TI=1TI=1 ,必须,必须软件清零软件清零;;RI RI ::接收中断标志,接收一帧结束,接收中断标志,接收一帧结束, RI=1RI=1 ,必须,必须软件清零软件清零。。

SM0 SM1 SM2 REN TB8 RB8 TI RI

3.3. 串行口控制串行口控制 //状态寄存器状态寄存器 SCONSCON(98H)(98H) ::

请见 P229 !

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

(( 11 )方式)方式 00 :同步移位寄存器方式:同步移位寄存器方式 用于扩展并行用于扩展并行 I/OI/O接口。接口。 1. 1. 一帧一帧 88 位,无起始位和停止位。位,无起始位和停止位。 2. RXD2. RXD :数据输入:数据输入 // 输出端。输出端。 TXDTXD :同步脉冲输出端,每个脉冲对应一个数据位。:同步脉冲输出端,每个脉冲对应一个数据位。 3. 3. 波特率波特率 BB== fosc/12fosc/12

如:如: foscfosc== 12MHz12MHz,, BB== 1MHz1MHz,每位数据占,每位数据占 11ss 。。 4. 4. 发送过程:写入发送过程:写入 SBUFSBUF ,启动发送,,启动发送, 一帧发送结束,一帧发送结束, TITI== 11 。。 接收过程:接收过程: REN=1REN=1且且 RI=0RI=0 ,启动接收,,启动接收, 一帧接收完毕,一帧接收完毕, RIRI== 11 。。

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

发送时序

写入SBUF

RXD 输出

TXD

TI

D0 D1 D2 D3 D4 D5 D6 D7

写REN=1

RI=0RXD 输入

RI

接收时序

(a)

(b)

时序图:时序图:

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

2. RXD2. RXD ::接收数据端。 接收数据端。 TXDTXD ::发送数据端。发送数据端。3.3. 波特率:波特率:用用 TT11 作为波特率发生器,作为波特率发生器, B=(2B=(2SMODSMOD/32)×T/32)×T11溢出率。溢出率。4.4. 发送:发送:写入写入 SBUFSBUF ,同时启动发送,一帧发送结束,,同时启动发送,一帧发送结束, TI=1TI=1 。。 接收:接收: REN=1REN=1 ,允许接收。,允许接收。 接收完一帧,若接收完一帧,若 RI=0RI=0且停止位为且停止位为 1 (1 ( 或或 SM2=0)SM2=0) ,将接,将接 收数据装入收数据装入 SBUFSBUF ,停止位装入,停止位装入 RB8RB8 ,并使,并使 RI=1RI=1 ;; 否则丢弃接收数据,不置位否则丢弃接收数据,不置位 RIRI 。。

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

数据采样速率为波特率数据采样速率为波特率 1616 倍频,在数据位中间,用第倍频,在数据位中间,用第 77、、88 、、 99 个脉冲采样个脉冲采样 33 次数据位,并次数据位,并 33 中取中取 22 保留采样值。保留采样值。

写入SBUF

采样

( a ) 发送时序图

TXD数据输出

TI

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

RXD输入数据

( b ) 接收时序图

D0 D1D2 D3 D4 D5

D6 D7 停止位起始位

RI

检测负跳变

时序图:时序图:

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

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

方式方式 33 :: B=(2B=(2SMODSMOD/32)×T/32)×T11溢出率 。溢出率 。4.4. 发送:发送:先装入先装入 TB8TB8 ,写入,写入 SBUFSBUF 并启动发送,发送结束,并启动发送,发送结束, TI=1TI=1 。。 接收:接收: REN=1REN=1 ,允许接收。,允许接收。 接收完一帧,若接收完一帧,若 RI=0RI=0且第且第 99 位为位为 1 (1 ( 或或 SM2=0)SM2=0) ,将接收数据,将接收数据装入接收装入接收 SBUFSBUF ,第,第 99 位装入位装入 RB8RB8 ,使,使 RI=1RI=1 ;否则丢弃接收数据,;否则丢弃接收数据,不置位不置位 RIRI 。。

( a ) 发送时序图

写入SBUF

TXD 输出

TI

RXD 输入

( b ) 接收时序图

RI

D0 D1 D2 D3 D4D5 D6 TB8 停止位

起始位D7

D0 D1 D2D3 D4 D5 D6 RB8 停止位

起始位D7

检测负跳变

时序图:时序图:

(( 44 )计算波特率:)计算波特率:方式方式 00 为固定波特率:为固定波特率: B=fosc/12B=fosc/12方式方式 22 可选两种波特率: 可选两种波特率: B=(2B=(2SMODSMOD /64)×fosc /64)×fosc 方式方式 11 、、 33 为可变波特率,用为可变波特率,用 TT11 作波特率发生器。作波特率发生器。

B=(2B=(2SMODSMOD/32)×T/32)×T11溢出率溢出率TT11 为方式为方式 22 的时间常数: 的时间常数: X = 2X = 288 - t/T - t/T (请见(请见 P153P153 ))溢出时间: 溢出时间: t= (2t= (28 8 -X)T = (2-X)T = (28 8 -X)×12/ fosc-X)×12/ foscTT11溢出率溢出率 =1/t= fosc /[12×(2=1/t= fosc /[12×(2n n -X)]-X)]

波特率波特率 B=(2B=(2SMODSMOD /32)×fosc/[12×(2/32)×fosc/[12×(288-X)]-X)]串行口方式串行口方式 11 、、 33 ,根据波特率选择,根据波特率选择 TT11 工作方式,计算时间常数。工作方式,计算时间常数。TT11 选方式选方式 22 : : THTH11= X = 2= X = 28 8 - fosc/12×2- fosc/12×2SMODSMOD/(32×B)/(32×B)TT11 选方式选方式 11 用于低波特率,需考虑用于低波特率,需考虑 TT11重装时间常数时间。重装时间常数时间。也可选工作方式也可选工作方式 33 (请见(请见 P156P156 ))。。

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

端接收

端 用 途

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 多机通讯

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

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

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

发送程序:发送程序:11 、、查询方式:查询方式:TRAMTRAM :: MOV MOV AA ,, @R@R00 ;取数据;取数据

MOVMOV SBUFSBUF ,, A A ;发送一个字符;发送一个字符WAITWAIT :: JBCJBC TITI ,, NEXT NEXT ;等待发送结束;等待发送结束

SJMPSJMP WAITWAITNEXTNEXT :: CLR TICLR TI INCINC R R00 ;准备下一次发送;准备下一次发送

SJMPSJMP TRAMTRAM

22 、中断方式:、中断方式: ORGORG 0023H 0023H ;串行口中断入口;串行口中断入口 AJMP SINTAJMP SINT

MAINMAIN : : …… ;初始化编程;初始化编程TRAMTRAM : : MOVMOV A A ,, @ R@ R00 ;取数据;取数据

MOVMOV SBUF SBUF ,, A A ;发送第一个字符;发送第一个字符 HH :: SJMPSJMP H H ;其它工作;其它工作 SINTSINT :: CLR TICLR TI ;中断服务程序;中断服务程序

INCINC R R00

MOVMOV A A ,, @ R@ R00 ;取数据;取数据MOVMOV SBUF SBUF ,, A A ;发送下一个字符;发送下一个字符RETIRETI

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

接收程序:接收程序:1.1. 查询方式:查询方式: WAITWAIT :: JBCJBC RI RI ,, NEXTNEXT ;查询等待;查询等待

SJMPSJMP WAIT WAITNEXTNEXT :: MOVMOV A A ,, SBUF SBUF ;读取接收数据;读取接收数据

MOVMOV @R @R00 ,, AA ;保存数据;保存数据CLRCLR RI RI

INC RINC R00 ;准备下一次接收;准备下一次接收SJMPSJMP WAIT WAIT

2.2. 中断方式:中断方式:ORGORG 0023H0023HAJMPAJMP RINTRINT

MAINMAIN :: …… ;初始化编程;初始化编程 HH :: SJMPSJMP HH ;其它任务;其它任务 RINTRINT :: CLRCLR RIRI ;清中断标志;清中断标志

MOVMOV AA ,, SBUFSBUF ;读取接收数据;读取接收数据MOVMOV @R@R00 ,, AA ;保存数据;保存数据INCINC RR00

RETIRETI

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

(一)串行口(一)串行口方式方式 00 ::串行口通过接口串行口通过接口 74LS16474LS164实现:串行→并行的数据转换实现:串行→并行的数据转换 ((显示器接口显示器接口 );); 通过接口通过接口 74LS16574LS165 实现:并行→串行的数据转换。 实现:并行→串行的数据转换。

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)

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

程序:程序:MOVMOV RR77 ,, #20#20 ;送入;送入 2020 个字节个字节MOVMOV RR00 ,, #20H#20H ;送首地址为;送首地址为 20H20H

SETBSETB F0F0 ;置;置 11 ,, F0=1F0=1 (设置读入字节奇偶数标志)(设置读入字节奇偶数标志)RCV0RCV0 :: CLRCLR PP1.01.0 ;; PP1.01.0=0=0 (并行置入数据)(并行置入数据)

SETBSETB PP1.01.0 ;; PP1.01.0=1=1 (允许串行移位)(允许串行移位)RCV1RCV1 :: MOVMOV SCONSCON ,, #10H#10H ;允许方式;允许方式 00 接收接收

JNBJNB RIRI ,$,$ ;等待;等待 RI=1RI=1 ,顺序执行,顺序执行CLRCLR RIRI ;; RI=0RI=0 为下一帧数据的接收准备为下一帧数据的接收准备MOVMOV AA ,, SBUFSBUF ;取数;取数MOVMOV @R@R00 ,, AA

INCINC RR00

CPLCPL F0F0 ;取反,;取反, F0=0F0=0JBJB F0F0 ,, RCV2RCV2 ;; F0=1F0=1 则转移,则转移, F0=0F0=0顺序执行顺序执行DECDEC RR77 判是否接收完偶数帧,接收完则重新并行置入判是否接收完偶数帧,接收完则重新并行置入SJMPSJMP RCV1RCV1 ;否则再接收一帧;否则再接收一帧

RCV2RCV2 :: DJNZDJNZ RR77 ,, RCV0RCV0 ;; RR77-- 1=01=0?? ≠ ≠ 00跳(判是否已读入预定字节跳(判是否已读入预定字节数)数)

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

MAINTMAINT : : MOV MOV SCONSCON ,, #80H #80H ;串行口初始化;串行口初始化MOV MOV PCONPCON ,, #80H #80H ;波特率;波特率SETBSETB EAEASETBSETB ESES ;开串行口中断;开串行口中断MOV MOV RR00 ,, #50H #50H ;设数据指针;设数据指针MOV MOV RR77 ,, #10H #10H ;数据长度;数据长度

LOOPLOOP : : MOV MOV AA ,, @R@R00 ;取一个字符;取一个字符MOV MOV CC ,, P P ;加奇偶校验;加奇偶校验MOV MOV TB8TB8 ,, CCMOV MOV SBUFSBUF ,, A A ;启动一次发送;启动一次发送

HEREHERE :: SJMPSJMP HEREHERE ;; CPUCPU执行其它任务执行其它任务

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

ORGORG 0023H 0023H ;串行口中断入口;串行口中断入口AJMPAJMP TRANI TRANI

TRANITRANI :: PUSHPUSH A A ;保护现场;保护现场PUSHPUSH PSW PSWCLRCLR TI TI ;清发送结束标志;清发送结束标志DJNZDJNZ R R77 ,, NEXTNEXT ;是否发送完?;是否发送完?

CLRCLR ES ES ;发送完,关闭串行口中断;发送完,关闭串行口中断 SJMPSJMP TEND TEND

NEXTNEXT : : INC INC R R00 ;未发送完,修改指针;未发送完,修改指针MOV MOV A A ,, @R@R00 ;取下一个字符;取下一个字符MOV MOV C C ,, P P ;加奇偶校验;加奇偶校验MOV MOV TB8 TB8 ,, CCMOV MOV SBUF SBUF ,, A A ;发送一个字符;发送一个字符POPPOP PSW PSW ;恢复现场;恢复现场POPPOP A A

TENDTEND :: RETI RETI ;中断返回;中断返回

2. 2. 接收程序:接收程序:

RECSRECS : : MOV MOV SCONSCON ,, #50H #50H ;串行口方式;串行口方式 11 允许接收允许接收MOV MOV TMODTMOD ,, #20H #20H ; ; TT11 方式方式 22 定时定时MOV MOV TL1TL1 ,, #0F4H #0F4H ;写入;写入 TT11 时间常数时间常数MOV MOV TH1TH1 ,, #0F4H#0F4HSETB TR1 SETB TR1 ;启动;启动 TT11

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

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

NEXT:NEXT: MOV MOV AA ,, SBUF SBUF ;读取接收字符;读取接收字符MOV MOV @R@R00 ,, A A ;保存一个字符;保存一个字符CLRCLR RIRI

INC INC RR00 ;修改指针;修改指针DJNZ RDJNZ R77 ,, WAIT WAIT ;全部字符接收完;全部字符接收完 ??RETRET

SM0 SM1 SM2 REN TB8 RB8 TI RI

串行输入串行输入 1616 个字符,存入片内个字符,存入片内 RAMRAM 的的 50H50H 起始单起始单元,串行口波特率为元,串行口波特率为 2400(2400( 设晶振为设晶振为 11.0592MHz)11.0592MHz) 。。

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

MOV MOV TMODTMOD ,, #20H #20H ; ; TT11 方式方式 22 定时定时MOV MOV TL1TL1 ,, #0F4H #0F4H ;写入;写入 TT11 时间常数时间常数MOV MOV TH1TH1 ,, #0F4H#0F4HSETB TR1 SETB TR1 ;启动;启动 TT11 MOV MOV RR00 ,, #50H #50H ;设数据指针;设数据指针MOV MOV RR77 ,, #10H #10H ;接收数据长度;接收数据长度

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

SJMP WAITSJMP WAITNEXT:NEXT: MOV MOV AA ,, SBUF SBUF ;取一个接收字符;取一个接收字符

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

COMP: COMP: JB JB RB8RB8 ,, ERRERRRIGHT: RIGHT: MOV MOV @ R@ R00 ,, A A ;保存一个字符;保存一个字符

CLRCLR RIRIINC INC R R00 ;修改指针;修改指针DJNZ RDJNZ R77 ,, WAIT WAIT ;全部字符接收完;全部字符接收完 ??CLR CLR F0 F0 ;; F0 =0F0 =0 ,接收数据全部正确 ,接收数据全部正确 RERE

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

串行输入串行输入 1616 个字符,进行奇偶校验。个字符,进行奇偶校验。

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

直接传送串行通信接法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

输入 输出

②②多机通信系统:多机通信系统:

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 ),也就不能接收串行来的数据。

接收机的中断服务程序:接收机的中断服务程序:

ORG 0023HORG 0023H ;串行中断入口;串行中断入口 JNB RB8JNB RB8 ,, NEXTNEXT ;判断是地址还是数据;判断是地址还是数据 MOV AMOV A ,, SBUFSBUF ;读入地址;读入地址 XRLXRL A A ,, #05H#05H ;判断地址是否相符;判断地址是否相符 JNZJNZ EXIT EXIT ;不符则出中断;不符则出中断 CLRCLR SM2 SM2 ;地址相符则清;地址相符则清 SM2SM2 SJMP EXITSJMP EXIT

NEXTNEXT :: MOV AMOV A ,, SBUFSBUF ;读入数据;读入数据 MOV @RMOV @R00 ,, AA ;数据存入片内;数据存入片内 RAMRAM

INC RINC R00 ;增地址;增地址 CLRCLR RI RI ;清接收中断标志;清接收中断标志

EXITEXIT : : RETIRETI

已知该机的地址编号为 05H 号,在主程序初始化中已设置了波特率,打开了串行中断,并使 SM2=1 。

11 、串行通信的基本原理和基本方式(同步和异步)。、串行通信的基本原理和基本方式(同步和异步)。22 、串行数据的传送方向(单工、半双工和全双工)、串行数据的传送方向(单工、半双工和全双工) 及信号形式。及信号形式。33 、串行口控制、串行口控制 //状态控制字状态控制字 SCONSCON 和和 节电控制字节电控制字 PCONPCON 。。44 、串行通信的、串行通信的 44 种工作方式及其对应的波特率、传送种工作方式及其对应的波特率、传送

位数位数 (8(8 位、位、 1010 位、位、 1111 位、位、 1111 位位 ) ) 、时序和应用。、时序和应用。55 、串行通信的应用:、串行通信的应用: 发送和接收程序(查询方式和中断方式)。发送和接收程序(查询方式和中断方式)。

小 结小 结