1 / 67

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

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

ketan
Télécharger la présentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第7章 串行口及串行通信技术 7-1 串行通信基础知识 7-2 串行口及控制寄存器 7-3 串行通信工作方式 7-4 串行口的应用

  2. 并 行 数 据 传 送 串 行 数 据 传 送 原 理 各数据位同时传送 数据位按位顺序进行 优 点 传送速度快、效率高 最少只需一根传输线即可完成:成本低 缺 点 数据位数→传输线根数:成本高 速度慢 应 用 传送距离<30米,用于计算机内部 几米~几千公里,用于计算机与外设之间 7-1 串行通信基础知识 一、串行通信基本原理 并行 数据传送 同步(SYNC) 串行 异步(ASYNC)(用于单片机中)

  3. 二、串行通信的基本方式 (一)异步通信: 以字符为传送单位用起始位和停止位标识每个字符的开始和结束字 符,间隔不固定,只需字符传送时同步即可。 异步通讯常用格式:一个字符帧 起始位 D0 D2 D3 D4 D6 D7 D5 D1 停止位 异步通信的双方需要两项约定: 1.字符格式: 一帧字符位数的规定:数据位,校验位,起始位和停止位。 2.波特率-Baud rate(位/秒)即数据传送速率的规定: 例:要求每秒传送120个字符,每帧为10位。 解: 传送的波特率为:B=120字符/s×10b/字符=1200波特( b/s) 每位代码的传送时间Td=0.83ms (二)同步通信: 以一串字符为一个传送单位,字符间不加标识位,在一串字符开始 用同步字符(常约定1~2个)标识,硬件要求高,通讯双方须严格同步。

  4.   在同步传送中,当检测到规定的同步字符后,就连续按顺序传送数据,直到通信告一段落;同步传送时,字符与字符之间眉宇间隙,也不用起始位和停止位,仅在数据块开始时用同步字符来表示.  在同步传送中,当检测到规定的同步字符后,就连续按顺序传送数据,直到通信告一段落;同步传送时,字符与字符之间眉宇间隙,也不用起始位和停止位,仅在数据块开始时用同步字符来表示. • 同步字符的插入可以是单同步字符或双同步字符,然后是连续的数据块;同步字符可以是由用户约定,也可以采用ASCII码中规定的同步字符 SYNC代码,即16H. • 在同步传送时,要求用时钟来实现通信双方的同步,因此发送方除传送数据外,还要同时传送时钟信号. • 因此硬件要求较高

  5. 数据线 数据线 发送接收器 发送接收器 接收发送器 接收发送器 发送器 接收器 数据线 地线 地线 地线 三、串行接口功能 (1)发送器:并串数据格式转换,添加标识位和校验位,一帧发送结束,设置结束标志,申请中断。 (2)接收器:串并数据格式转换,检查错误,去掉标识位,保存有效数据,设置接收结束标志,申请中断。 (3)控制器:接收编程命令和控制参数,设置工作方式:同步/异步、字符格式、波特率、校验方式、数据位与同步时钟比例等。 四、串行通信的传输方式: 1、单工通讯:数据单向传送。(1条数据线,单向) 2、半双工通讯:数据可分时双向传送。(2条数据线,双向) 3、全双工通讯:可同时进行发送和接收。 (1条或2条数据线,双向)

  6. 五、异步串行通信的信号形式 1、远距离直接传输数字信号,信号会发生畸变,因此要把数字信号转变为模拟信号再进行传送。可利用光缆、专用通信电缆或电话线。 方法:通常使用频率调制法(频带传送方式)。 通常: “1”:1270Hz或2225Hz; “0”:1070Hz或2025Hz。

  7. 2、因通信时(有干扰)信号要衰减,所以常采用RS232电平负逻辑,拉开“0”和“1”的电压档次,以免信息出错:2、因通信时(有干扰)信号要衰减,所以常采用RS232电平负逻辑,拉开“0”和“1”的电压档次,以免信息出错: TTL正逻辑: “0”: 0 —2.4V; “1”: 3.6V—+5V; 高阻:2.4V—3.6V。 TTL电平直接传输距 离一般不超过1.5米。 RS232C负逻辑(EIA电平): “0”:+3V—+25V; “1”: -3V— -25V。 最大传输信息的长度为15米。 RS232负逻辑: “0”:+5V—+15V; “1”: -5V— -15V。 最大传输信息的长度为15米。 RS-232C (电平转换芯片为MAX232) RS-422 RS-485

  8. 起始位 D0 D2 D3 D4 D6 D7 D5 D1 停止位 起始位 D8 D7 D6 D5 D0 D1 D2 D3 D4 停止位 D5 D6 D7 D0 D1 D2 D3 D4 7-2 串行口及控制寄存器 7-2-1 MCS-51串行接口 1个全双工串行接口,可同时进行发送和接收。 串行接口输入/输出引脚:TXD(P3.1)、RXD(P3.0) 数据格式:按不同方式,一帧数据位数 8/10/11 发送/接收时,数据皆低位在前。 一帧字符发送/接收结束,置位标志位(TI/RI), 并申请串行中断。 中断控制:中断允许位ES、总允许EA; 中断入口:0023H。

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

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

  11. 3.串行口控制/状态寄存器SCON(98H) 位地址 位符号 SM0、SM1:选择串行口4种工作方式。 REN:允许接收控制位,REN=1,允许接收; REN=0,禁止接收。 TB8:发送的第9位数据位,可用作校验位和地址/数据标识位。 RB8:接收的第9位数据位或停止位。 TI :发送中断标志,发送一帧结束,TI=1,必须软件清零; RI :接收中断标志,接收一帧结束,RI=1,必须软件清零。

  12. 表7.2 串行口操作模式选择

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

  14. 7-3 串行通信工作方式 SM0、SM1选择四种工作方式。 (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,每位数据占1s。 4. 发送过程:写入SBUF,启动发送.(MOV SBUF,A) 一帧发送结束,TI=1。 接收过程:REN=1且RI=0,启动接收,(MOV A,SBUF) 一帧接收完毕,RI=1。  发送、接收的是8位数据,低位在先。

  15. TXD 写入 SBUF 发送时序 (a) D1 D2 D7 D0 D5 D6 D4 D3 RXD输出 TI 写REN=1 RI=0 接收时序 (b) RXD输入 RI 时序图:

  16. D1 D2 74LS164 CLK D7D6D5D4D3D2D1D0 RxD 8051 TxD 方式0输出(发送) • 串行数据通过RxD(P3.0)输出,而在TxD(P3.1)输出移位时钟脉冲。 • 当一个数据写入串口数据发送缓冲器时,就开始发送。 • 发送控制器送出移位信号 。 • 直到最高位(D7)数字移出后,停止发送数据和移位时钟脉冲。 • 完成一帧数据的发送过程,并置TI为1(申请中断)。 • 若CPU响应中断,则从0023H单元开始执行串口中断服务程序。

  17. 例如: 在并行输出口接8支发光二极管,利用其串入并出功 能,把发光管从左到右依次点亮,并反复循环.(假定发光管为共阴极型,共阴端接地) • 程序: MOV SCON,#00H • MOV A,#80H • DELR: MOV SBUF,A • JNB TI,$ • ACALL DELAY • CLR TI • RR A • AJMP DELR

  18. Q 74LS165 CLK D7D6D5D4D3D2D1D0 RxD 8051 TxD 方式0输入(接收) • 此时RxD端为数据输入端,TxD端为移位时钟信号输出。 • REN=0,禁止接收。REN=1,允许接收。 • 当满足方式0,且REN=1,且RI=0的条件时,就会启动一次接收过程。 • 在接收过程开始后的第10个机器周期,SCON中的RI位被置位,(中断申请)。 • 至此,完成了一帧数据的接收过程。 • 若CPU响应中断,就去执行由0023H作为入口地址的中断服务程序。

  19. 说明: • 方式0发送或接收完8位数据后由硬件置位发送中断标志TI或接收中断标志RI。 • CPU响应中断请求转入中断服务程序时并不清TI或RI。 • 中断标志TI或RI要用程序来清0。具体做法: • CLRTICLRRI •  或 ANLSCON,#0FEHANLSCON,#0FDH 来实现。 • 以方式0工作时SM2位(多机通信控制位)必须为0.

  20. (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保留采样值。

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

  22. 写入 SBUF 起始位 TXD 数据输出 D0 D2 D3 D4 D6 D7 D1 D5 停止位 TI (a) 发送时序图 检测 负跳变 RXD 输入数据 起始位 D6 D3 D7 D2 D4 D0 D5 停止位 D1 采样 RI (b) 接收时序图 时序图:

  23. 方式1的两种形式: • (1)方式1发送 • CPU执行任何一条以SBUF为目标寄存器的指令,就启动发送。 • 当发送完数据位时,置位中断标志位TI。 • (2)方式1接收 • 当检测到RxD引脚上由1到0的跳变时开始接收过程,并复位内部16分频计数器,以实现同步。 • 将1位时间等分成16份,在第7,8,9个计数状态时采样RxD的电平,保证排除噪声干扰。 • 8位数据进入SBUF,停止位进入RB8,且置位中断标志RI。

  24. 例:假定甲、乙机以方式1进行串行数据通信,其波特率为1200,时钟6MHz。甲机发送,发送数据在外部RAM4000~401FH单元中。乙机接收,并把接收到的数据块首末地址及数据依次存入外部RAM5000H开始的区域中。例:假定甲、乙机以方式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 • 串行发送的内容包括数据块的首末地址和数据两部分内容。对数据块首末地址的传送以查询方式进行,而数据则以中断方式传送。因此在程序中要先禁止串行中断,后允许串行中断。

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

  26. 下面是发送和接收的参考程序: 甲机发送主程序: ORG 0023H LJMP ACINT ORG 0100H MOV TMOD, #20H ;设置定时器1工作方式2 MOV TL1, #0F3H ;定时器1计数初值MOV TH1, #0F3H ;计数重装值 SETB EA ;中断总允许 CLR ES ;禁止串行中断 MOV PCON,#00H ;波特率不倍增 SETB TR1 ;启动定时器1 MOV SCON,#40H ;设置串行口方式1,REN=0 MOV SBUF,#40H ;发送数据区首地址高位 SOUT1: JNB TI,$ ;等待一帧发送完毕 CLR TI ;清发送中断标志 MOV SBUF,#00H ;发送数据区首地址低位 SOUT2: JNB TI,$ ;等待一帧发送完毕

  27. 续: CLR TI ; MOV SBUF,#40H ;发送数据区末地址高位 SOUT3: JNB TI,$ ;等待一帧发送完毕 CLR TI ;清发送中断标志 MOV DPTR,#4000H;数据区地址指针MOV R7,#20H ;数据个数 SETB ES ;开放串行中断 MOV SBUF,#1FH ;发送数据区末地址低位 AHALT: AJMP $ ; 甲机中断服务程序:ORG 8100HACINT: MOVX A,@DPTR ;读数据 CLR TI ;清发送中断

  28. 续: MOV SBUF,A ;发送字符CJNE R7, #00H, AEND1 ;未发送完转AEND1 CLR ES ;禁止串行中断CLR TR1 ;定时器1停止计数AJMP AEND2 ; 发送完转AEND2 AEND1: INC DPTR ; DEC R7AEND2: RETI ;中断返回 乙机接收主程序: ORG 0023H LJMP BCINT ORG 0100H MOV TMOD,#20H ;设置定时器1工作方式2 MOV TH1,#0F2H ;计数重装值MOV TL1,#0F2H ;定时器1计数初值 SETB EA ;中断总允许CLR ES ;禁止串行中断

  29. 续: MOV PCON,#00H ;波特率不倍增SETB TR1 ;启动定时 MOV SCON,#50H ;设置串行口方式1,REN=1 MOV DPTR,#5000H;数据存放首地址MOV R7,#24H ;接收数据个数 SIN1: JNB RI,$ ;等待CLR RI ;清接收中断标志 MOV A,SBUF ;接收数据区首地址高位MOVX @DPTR,A ;存首地址高位INC DPTR ;地址指针增量 SIN2: JNB RI,$ ; CLR RI MOV A,SBUF ;接收数据区首地址低位MOVX @DPTR,A ;存首地址低位INC DPTR SIN3: JNB RI,$ ; CLR RI

  30. 续: MOV A,SBUF ;接收数据区末地址高位MOVX @DPTR,A ;存末地址高位INC DPTR ;地址指针增量 SIN4: JNB RI,$ ; CLR RI MOV A,SBUF ;接收数据区末地址低位MOVX @DPTR,A ;存末地址低位INC DPTR SETB ES ;开放串行中断 BHALT: AJMP $ ;等待中断 乙机中断服务程序: ORG 8100H BCINT: MOV A,SBUF ;接收数据MOVX @DPTR,A ;存数据CLR RI ;清接收中断标志 CJNE R7,#00H,BEND1 ;未接收完转BEND1

  31. 续: AJMP BEND2 ;接收完转BEND2 BEND1: INC DPTR DEC R7 BEND2: RETI ;中断返回

  32. (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。

  33. 写入 SBUF 起始位 D5 D1 D7 D6 D0 D2 D3 D4 TB8 TXD输出 停止位 TI (a) 发送时序图 检测 负跳变 起始位 RXD输入 D0 D3 D6 D5 RB8 D1 D2 D4 D7 停止位 RI (b) 接收时序图 时序图:

  34. (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/ fosc T1溢出率=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。

  35. 方式 波 特 率 传 送 位 数 发送端 接收端 用 途 0 1/12 fosc (固定不变) 8(数据) RXD RXD 接移位寄存器,扩充并口 1 2SMOD/32 T1 溢出率 10(起始位、8位数据位、 停止位) TXD RXD 单机通讯 2 2SMOD/64 fosc 11(第9位为1:地址; 为0:数据) TXD RXD 多机通讯 3 2SMOD/32 T1 溢出率 11位 (同方式2) TXD RXD 多机通讯 4种方式比较:

  36. 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)

  37. 先发送一个字符,等待TI=1后再发送下一个字符。先发送一个字符,等待TI=1后再发送下一个字符。 发送程序: 1、查询方式 TRAM: MOV A,@R0;取数据 MOV SBUF,A ;发送一个字符 WAIT: JBC TI,NEXT ;等待发送结束 SJMP WAIT NEXT: 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

  38. REN=1、RI=0等待接收,当RI=1,从SBUF读取数据。 接收程序: 1.查询方式 WAIT: JBC RI,NEXT ;查询等待 SJMP WAIT NEXT: MOV A,SBUF ;读取接收数据 MOV @R0,A ;保存数据 INC R0;准备下一次接收 SJMP WAIT 2.中断方式 ORG 0023H AJMP RINT MAIN: … ;初始化编程 H: SJMP H ;其它任务 RINT: CLR RI;清中断标志 MOV A,SBUF;读取接收数据 MOV @R0,A;保存数据 INC R0 RETI

  39. 用于接移位寄存器扩充并口。 (一)串行口方式0: 串行口通过接口74LS164实现:串行→并行的数据转换(显示器接口); 通过接口74LS165实现:并行→串行的数据转换。

  40. 程序: 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跳(判是否已读入预定字节数) ………. ;对读入数据进行处理

  41. (二)异步通讯程序举例: 1.发送程序:将片内RAM 50H起始单元的16个数由串行口 发送。要求发送波特率为系统时钟的32分 频,并进行奇偶校验。 MAINT: MOV SCON,#80H ;串行口初始化 MOV PCON,#80H ;波特率 SETB EA SETB ES;开串行口中断 MOV R0,#50H ;设数据指针 MOV R7,#10H ;数据长度 LOOP: MOV A,@R0;取一个字符 MOV C,P ;加奇偶校验 MOV TB8,C MOV SBUF,A ;启动一次发送 HERE: SJMP HERE ;CPU执行其它任务

  42. ORG 0023H ;串行口中断入口 AJMP TRANI TRANI: PUSH A ;保护现场 PUSH PSW CLR TI ;清发送结束标志 DJNZ R7,NEXT ;是否发送完? CLR ES ;发送完,关闭串行口中断 SJMP TEND NEXT: INC R0;未发送完,修改指针 MOV A,@R0;取下一个字符 MOV C,P ;加奇偶校验 MOV TB8,C MOV SBUF,A ;发送一个字符 POP PSW ;恢复现场 POP A TEND: RETI  ;中断返回

  43. 串行输入16个字符,存入片内RAM的50H起始单 元,串行口波特率为2400(设晶振为11.0592MHz)。(采用方式1) 2. 接收程序: RECS: MOV SCON,#50H ;串行口方式1允许接收 MOV TMOD,#20H ; T1方式2定时MOV TL1,#0F4H ;写入T1时间常数 MOV TH1,#0F4H SETB 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

  44. 3. 接收程序: RECS: MOV SCON,#0D0H ;串行口方式3允许接收MOV TMOD,#20H ; T1方式2定时MOV TL1,#0F4H ;写入T1时间常数 MOV TH1,#0F4H SETB TR1  ;启动T1 MOV R0,#50H ;设数据指针 MOV R7,#10H ;接收数据长度 WAIT: JBC RI,NEXT ;等待串行口接收 SJMP WAIT NEXT: MOV A,SBUF ;取一个接收字符 JNB P,COMP ;奇偶校验JNB RB8,ERR ;P≠RB8,数据出错 SJMP RIGHT ;P=RB8,数据正确 COMP: JB RB8,ERR RIGHT: MOV @ R0,A ;保存一个字符 CLR RI INC R0;修改指针DJNZ R7,WAIT ;全部字符接收完? CLR F0 ;F0 =0,接收数据全部正确 RET ERR: SETB F0 ;F0 =1,接收数据出错 RET 串行输入16个字符,进行奇偶校验。(采用方式3)

  45. 4. 主从分布式微机系统: 也叫集散控制系统:从机(单片机)作数据采集或实时控制, 主机(PC机)作数据处理、中央管理等。 应用:过程控制、仪器仪表、生产自动化和企业管理等方面。 ①单机通信: 直接传送串行通信接法 PC机调用的中断指令为: INT 14H

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

  47. 通信过程 • 所有从机的SM2=1,处于只接收地址帧状态 • 所有同学坐着听讲 • 主机发地址信息,以第9位TB8=1表示发送的是地址 老师喊同学名字 • 从机接收到地址帧后与本机地址比较 所有同学听到名字与自己的名字比较 • 被寻址从机SM2=0,其作从机SM2=1不变 • 名字相符的同学站起来(SM2=0) • 主机发数据信息(TB8=0),对已被寻址的从机因SM2=0,可以接收主机发来的信息。其余从机因SM2=1不理睬主机。 老师与站起的同学进行提问,课堂交流,TB8=0. • 被寻址的从机SM2置1.主机可另发地址帧与其它从机通信时 。回答问题的同学坐下(SM2=1)

  48. ②多机通信系统: 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),也就不能接收串行来的数据。

  49. SM2 RB8 从 机 动 作 1 0 此时不能接收数据 1 1 能收到主机发的数据(地址信息) 0 0 进入串口中断,对接收的数据进行处理 0 1 进入串口中断, 对接收的数据进行处理 SM2、RB8与从机动作关系

  50. …… 图1   多机通信系统硬件结构 89c51 0# 1# 从机 2# 从机 n# 从机 多机通信系统设计 设多机通信系统主、从机晶振为6MHz,波特率为1200bps,以方式3进行多机串行通信。0#为主机、其他为从机,主机向某从机发出起始地址和终止地址,要求把该地址范围内的数据块由所指定的从机片外数据存贮器中传送到主机片外RAM之相应单元,起始地址的高低两字节分别存放在各机片内RAM的70H和71H单元,终止地址在72H和73H中,主机74H单元存放欲呼叫的从机号。

More Related