串行接口及其串行通信.ppt_第1页
串行接口及其串行通信.ppt_第2页
串行接口及其串行通信.ppt_第3页
串行接口及其串行通信.ppt_第4页
串行接口及其串行通信.ppt_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 5.4 5.4 MCS-51单片机的串行接口及其串行通信 5.4.1 串行数据通信基础 5.4.2 MCS-51串行口及控制寄存器 5.4.3 MCS-51串行通信工作方式及应用 习题:6, 9,10,15* 2 5.4.1 串行数据通信基础 一、数据通信的概念 计算机与计算机或外部设备之间的数据传送 数据通信 并行 数据通信 同步 串行 异步 3 5.4.1 串行数据通信基础 并 行 数 据 传 送串 行 数 据 传 送 原 理各数据位同时传送数据位按位顺序进行 优 点传送速度快、效率高 最少只需一根传输线即可完成:成本低 缺 点 数据位数传输线根数:成本高 速度慢 应 用 传送距离30米,用于计算机内部几米几千公里,用于计算机与外设之间 4 5.4.1 串行数据通信基础 二、串行通信的基本方式 (一)异步通信 以字符为传送单位,用起始位和停止位标识每 个字符的开始和结束字 符,间隔不固定,只需字 符传送时同步即可。 异步通信常用格式:字符帧 D0D1D2D3D4D5D6D7停止位 起始位 5 5.4.1 串行数据通信基础 异步通信的双方需要两项约定: 1.字符格式: 一帧字符位数的规定:数据位,校验位,起始位 和停止位。 2.波特率(位/秒)和传送速率的规定: 例:要求每秒传送120个字符,每帧为10位(数据 8位)。 解: B=12010=1200波特 每位0.83ms 数据位传送速率=1208=960位/秒 帧 图515 异步串行通信的字符格式 起始位 数据位0(n1)位 奇偶位 停止位 起始位 位时间 6 5.4.1 串行数据通信基础 (二)同步通信方式 同步字符1 同步字符2 数据 Td 图5.2 同步通信的格式 在同步通信中,以一串字符为一个传送单位,字符间不加 标识位,在一串字符开始 用同步字符标识。如果发送的数据 块之间有时间间隔,则发送同步字符填充,使发送和接收双 方同步。 7 5.4.1 串行数据通信基础 三、串行接口功能: (1)发送器:并串数据格式转换,添加标识位和 校验位,一帧发送结束,设置结束标志,申请中 断。 (2)接收器:串并数据格式转换,检查错误,去 掉标识位,保存有效数据,设置接收结束标志, 申请中断。 (3)控制器:接收编程命令和控制参数,设置工作 方式:同步/异步、字符格式、波特率、校验方式 、数据位与同步时钟比例等。 8 5.4.1 串行数据通信基础 四、串行数据传送方向(通路形式): 1、单工通讯:数据单向传送。 (1条数据线,单向) 2、半双工通讯:数据可分时双向传送。 (1条或2条数据线,双向) 3、全双工通讯:可同时进行发送和接收。 (2条数据线,双向) 9 5.4.1 串行数据通信基础 发送器接收器 地线 数据线 单工形式串行通信 发送接 收器 接收发 送器 地线 数据线 半双工形式串行通信 发送接 收器 接收发 送器 地线 数据线 全双工形式串行通信 10 5.4.1 串行数据通信基础 五、异步串行通信的信号形式 1、采用数字信号直接传送(适合于近程通信)。 在传送过程中不改变原数据代码的波形和频率。这种数据传送 方式称之为基带传送方式。通信双方只需用传输线把两端的接口 电路直接连起来即可实现。 2、采用频率调制法,也叫频带传送方式(适合于远程 通信)。 远距离直接传输数字信号,信号会发生畸变,因此要把数字信 号转变为模拟信号再进行传送。可利用光缆、专用通信电缆或电 话线等连接。 11 5.4.1 串行数据通信基础 通常: “1”:1270Hz或2225Hz; “0”:1070Hz或2025Hz。 12 5.4.1 串行数据通信基础 因通信时(有干扰)信号要衰减,所以常采用 RS232电平负逻辑,拉开“0”和“1”的电压档次, 以免信息出错: TTL正逻辑: “0”: 0 0.8V; “1”: 2.4V+5V。 TTL电平直接传输距 离一般不超过1.5米。 RS-232C (电平转换芯片为MAX232) RS-422 RS-485 RS232负逻辑(EIA电平): “0”:+3V+25V; “1”: -3V -25V。 最大传输信息的长度为15米。 Electronic Industries Association, 电子工业联合会 13 5.4.2 MCS-51串行口及控制寄存器 MCS51系列单片机的串行口是全双工的,这 个口既可以用于网络通信,也可以实现串行异 步通信,还可以作为同步移位寄存器使用。在 串行口中可供用户使用的是它的寄存器,因此 了解其寄存器结构对用户来说是十分重要的。 一、MCS-51串行口寄存器结构 串行接口输入/输出引脚:TXD(P3.1)、RXD(P3.0) 发送SBUF(99H) 接收SBUF(99H) 输入移位寄存器 TI(发送中断) TXD串行输出 8051内部总线 RXD串行输入 RI(接收输入) 移位时钟 图5-23 MCS-51串行口寄存器结构 在接收方式下,串行数据通过引脚RXD(P3.0) 进入。由于在接收寄存器之间还有移位寄存器,从 而构成了串行接收的双缓冲结构,以避免在数据接 收过程中出现帧重叠错误,即在下一帧数据来时, 前一帧数据还没有读走。 在发送方式下,串行数据通过TXD(P3.1)送 出。与接收数据情况不同,发送数据时,由于 CPU是主动的,不会发生帧重叠错误,因此发送 电路就不需双重缓冲结构,这样可以提高数据发 送速度。 16 5.4.2 MCS-51串行口及控制寄存器 串行通信数据格式:按不同方式,一帧数据 位数为 8/10/11。 发送/接收时,数据皆低位 在前。 D0D1D2D3D4D5D6D8 停止位 起始位 D7 D0D1D2D3D4D5D6D7停止位 起始位 D0D1D2D3D4D5D6D7 17 5.4.2 MCS-51串行口及控制寄存器 一帧字符发送/接收结束,置位标志位(TI/RI), 并申请串行中断。 串行口中断控制:中断允许位ES、总允许EA; 串行中断入口:0023H。 18 5.4.2 MCS-51串行口及控制寄存器 二、串行通信控制寄存器 1.数据缓冲器SBUF 发送SBUF和接收SBUF共用一个地址99H。 1)发送SBUF存放待发送的8位数据,写入SBUF将同 时启动发送。发送指令: MOVSBUF,A 2)接收SBUF存放已接收成功的8位数据,供CPU读取 。读取串行口接收数据指令: MOV A,SBUF 19 5.4.2 MCS-51串行口及控制寄存器 2.电源控制寄存器PCON SMOD(PCON.7):波特率加倍控制位。 SMOD=1,波特率加倍; SMOD=0,则不加倍。 3.串行口控制/状态寄存器SCON(98H): 位地址9FH9EH9DH9CH9BH9AH99H98H 位符号SM0SM1SM2RENTB8RB8TIRI SM0 SM1工作方式功 能波特 率 0 0 方式0同步移位寄存器fosc/12 0 1 方式110位异步收发由定时器控制 1 0 方式211位异步收发fosc/32或/64 1 1 方式311位异步收发由定时器控制 SM0、SM1:选择串行口4种工作方式。 21 5.4.2 MCS-51串行口及控制寄存器 SM2:多机控制位,用于多机通讯。 REN:允许接收控制位,REN=1,允许接收; REN=0,禁止接收。 TB8:发送的第9位数据位,可用作校验位和地址/数 据标识位。 RB8:接收的第9位数据位或停止位。 TI :发送中断标志,发送一帧结束,TI=1,必须软 件清零; RI :接收中断标志,接收一帧结束,RI=1,必须软 件清零。 22 5.4.3 MCS-51串行通信工作方式及应用 一)方式0:SM0=0,SM1=0 在方式0下,是把串行口作为同步移位寄存器使 用,这时以RXD(P3.0)端作为数据移位的入口和出口, 而由TXD(P3.1)端提供移位时钟脉冲.移位数据的发 送和接收以8位为一组,低位在前高位在后。 1、数据的发送与接收 发送和接收的时序如下图所示: 23 5.4.3 MCS-51串行通信工作方式及应用 (a) (b) 发送时序 写入 SBUF RXD输出 TXD TI D0D1D2 D3D4 D5D6D7 写REN=1 RI=0 RXD输入 RI 接收时序 DATA CD4094 CLK STB 并行输出 80C51 RXD TXD P1.0 Q8 CD4014 CLK P/S 并行输入 80C51 RXD TXD P1.0 图524串行口与CD4094配合 图525串行口与CD4014配合 使用方式0实现数据的移位输入输出时,实际上是把串行口 变成为并行口使用。串行口作为并行口输出使用时,要有“串 入并出”的移位寄存器(例如CD4094或74LS164、74HC164 等)配合,其电路连接如图524所示。 25 5.4.3 MCS-51串行通信工作方式及应用 发送过程可叙述如下: 数据预先写入串行口数据缓冲器,然后从串行口 RXD端,在移位时钟脉冲(TXD)的控制下,逐 位移入CD4094。当8位数据全部移出后,SCON 寄存器的发送中断TI被自动置“1”。其后主程序就 可用中断或查询的方法,通过设置STB状态的控 制,把CD4094的内容并行输出。 如果把能实现“并入串出”功能的移位寄存器(例如CD4014 或74165)与串行口配合使用,就可以把串行口扩展为一个并 行输入口使用。其电路如图5-25所示。 数据接收过程如下: 首先将并行输入数据写入CD4014,CD4014移出的串行数据经 RXD端串行输入到串行口数据缓冲器,同样由TXD端提供移位 时钟脉冲。8位数据串行接收需要有允许接收的控制,具体由 SCON寄存器的REN位实现。REN=0,禁止接收;REN=1,允许 接收。当软件置位REN时,即开始从RXD端输入数据(低位在 前),当接收到8位数据时,硬件自动置位接收中断标志RI( 由用户通过软件请0)。 2、应用举例 使用CD4094的输出端接8只发光二极管,利用它的串入并 出功能,把发光二极管从左向右依次点亮,并反复循环之。按 此要求所做的电路连接如图526所示。 DATA CD4094 CLK STB 80C51 RXD TXD P1.0 图526 串行移位输出电路 方式0时,移位操作的波特率是固定的,为单片机晶振频 率的十二分之一。按此波特率也就是一个机器周期移一位 。 MOV SCON,#00H ;串行口方式0工作 CLR ES ;禁止串行中断 MOV A,#80H ;发光管从左边亮起 DELR:CLR P1.0 ;关闭并行输出 MOV SBUF,A;串行输出 JNB TI,;状态查询 SETB P1.0;开启并行输出 ACALL DELAY;状态维持时间 CLR TI;清发送中断标志 RR A ;发光组合右移 AJMP DELR;继续 采用查询方式发送数据可编程序如下: 29 5.4.3 MCS-51串行通信工作方式及应用 二) 方式1:SM0=1,SM1=0 方式1是10位为一帧的异步串行通信方式。共包 括1个起始位,8个数据位和1个停止位。其帧格式为 : 起 始 D0D1D2D3D4D5D6D7 停 止 1、数据的发送与接收 数据发送是由一条写发送缓冲器(SBUF)的指令开始的 ,随后在串行口由硬件自动加入起始位和停止位,构成一个 完整的帧格式,然后在移位脉冲的作用下,由TXD端串行输 出。一个字符帧发送完后,使TXD输出线维持在“1”状态下 ,并将SCON寄存器的TI置“1”,通知CPU可以接着发送下 一个字符。 数据接收时,SCON的REN位应处于允许接收状态(REN = 1)。在此前提下,串行口采样RXD端,当采样到从“1”向 “0”的状态跳变时,就认定是接收到起始位。随后在移位脉冲 的控制下,把RXD端上的数据逐位移入移位寄存器,当8位 数据及停止位全部移入后,根据以下状态,进行相应操作。 如果RI=0、SM2=0,则接收控制器发出装载SBUF信号, 将8位数据装入接收数据缓冲器SBUF,停止位装入RB8,并置 RI=1,向CPU申请中断。 如果RI=0、SM2=1,那么只有停止位为1才发生上述操作 。 如果RI=0、SM2=1且停止位为0、则所接收的数据不装入 SBUF,数据将会丢失。 如果RI=1,则所接收的数据在任何情况下都不装入SBUF,即 数据丢失。 无论出现哪一种情况,位检测器将继续采样RXD引脚的负跳 变,以便接收下一帧信息。 接收采用移位寄存器和SBUF双缓冲结构,以避免在接收后一帧 数据之前,CPU尚未及时响应中断而将前一帧数据取走,造成两帧 数据重叠。采用双缓冲结构后,前、后两帧数据进入SBUF的时间 间隔有10个机器周期。在后一帧数据送入SBUF之前,CPU有足够 时间将前一帧数据取走。 DATA 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 16Tc 起始位 RXD RXC 启动检测确认启动位采样数据 图5-22 串行通信方式1对接收数据的采样 由于发送、接收双方各自使用自己的时钟,因而两者的频率 总有少许差异。为了避免这种影响,数据采样速率采用波特率 16倍频,在数据位中间,用第7、8、9个脉冲采样3次数据位 ,并3中取2保留采样值。 写入 SBUF 采样 (a) 发送时序图 TXD 数据输出 TI D0D1D2D3D4D5D6D7 停止位 起始位 RXD 输入数据 (b) 接收时序图 D0 D1 D2D3D4D5D6D7 停止位 起始位 RI 检测 负跳变 2、发送时序和接收时序: 3、波特率设置 假定计数初值为X,则定时器1溢出周期为: 12 fosc (256-X) 溢出率为溢出周期的倒数。故波特率计算公式为: 波特率= 2SMOD 32 fosc 12(256-X) 当定时器1作波特率发生器使用时,选用定时方式2。之所以选择工作方式2,是因为 方式2具有自动加载功能,可以避免通过程序反复装入初值所引起的定时误差,使波特率 更加稳定。 方式1的波特率由定时器/计数器的溢出率和SMOD决定,即 方式1波特率=(2SMODT1溢出率)/32 X= 2SMODfosc 3212波特率 256 - 实际使用时,总是先确定波特率,再计算定时器1 的计数初值,然后进行定时器的初始化。根据上述波 特率计算公式,得出计数初值的计算公式为: 2、应用举例双机通信 单片机间的串行通信通常可分为双机通信和多机通信两 类。而串行口工作方式1只能用于双机通信,不能用于多机 通信,故作为方式1的应用,这里举一双机通信的例子。又 因串行通信的程序设计,一般可采用查询方式或中断方式两 种,这里仅以查询方式为例加以说明 。 为了确保通信成功、有效,现规定双机异步通信程序“协议” 如下: 通信双方均采用系统时钟频率fosc = 12MHz,甲机发送数 据,乙机接收数据,波特率为2400。通信开始时,甲机发送 呼叫信号“06”,询问乙机是否可以接收数据;乙机收到呼叫 信号后,若同意接收数据则发回“00”作为应答,否则发“15” 表示暂不能接收数据;甲机只有收到乙机的应答信号“00”后 才可把存放在外部数据存储器的内容发送给乙机,否则继续 向乙机呼叫,直到乙机同意接收。其数据格式为: 字节数n数据1数据n累加效验和 累加效验和是指字节数n、数据1、数据n这(n+1)个字 节内容的算术累加和。 乙机根据接收到的“效验和”判断已接收到的数据是否正确 。若接收正确,向甲机发回“0FH”信号,否则发回“F0H”信号 给甲机。甲机只有接收到“0FH”信号才算完成发送任务,返回 调用的程序,否则继续呼叫,重发数据。 甲机发送程序 发送程序约定:定时器T1初始化为模式2,SMOD = 1。 计数初值 : X= 2110612 32122400 256 - =230=0E6H Y N 等待乙机回答 N 发送呼叫信号06H 是00H? 开始 定时器、串行口初始化 置DPTR、长度计数器R7初值 置效验寄存器R6初值 发送字节长度数 发送数据 发送验收和 发送完? 等待乙机回答 传送正确吗? 返回 N 图527 双机通信甲机查询发送程序框图 Y Y 串行口初始化为方式1,允许接收;内部RAM 31H和30H单元 存放发送的数据块首地址;R7存放发送的数据块长度;R6为累 加和寄存器。 发送程序清单: MOV TMOD,#20H;T1初始化模式2 MOV TL1, #0E6H;置计数初值 MOV TH1, #0E6H SETB TR1;启动T1 MOV SCON, #50H ;串口为方式1,允许接收 MOV PCON, #80H ;置SMOD=1 FMT-RAM: MOV DPH, 31H ;置DPTR指针 MOV DPL, 30H MOV R7, #2FH ;送字节数至R7 MOV R6, #00H;清累加和寄存器 TX-ACK: MOV A, #06H ;发呼叫信号 MOV SBUF, A 40 WAIT1: JBC TI, RX-YES ;等待发送完 SJMP WAIT1 RX-YES: JBC RI, NEXT1 ;接收乙机回答 SJMP RX-YES NEXT1: MOV A, SBUF ;判乙机是否同意接收 CJNE A, #00H,TX-ACK ;不同意接收则继续呼叫 TX-BYTES: MOV A, R7 ;同意,发送待发字节个数 MOV SBUF ,A ADD A,R6 ;累加字节个数 MOV R6, A WAIT2: JBC TI, TX-NEWS;字节个数发送完? SJMP WAIT2;没完等待 TX-NEWS:MOVX A, DPTR ;发送数据 MOV SBUF, A ADD A, R6; 形成累加和 MOV R6,A INC DPTR ;数据指针加1 WAIT3: JBC TI,NEXT2 ;等待一帧数据发送完毕 SJMP WAIT3 NEXT2: DJNZ R7,TX-NEWS;判数据发送完否? TX-SUM: MOV A,R6;发送完,累加和发送乙机 MOV SBUF, A WAIT4: JBC TI, RX-0FH;累加和发送完否? SJMP WAIT4 RX-0FH:JBC RI,IF-0FH;等待乙机回答 SJMP RX-0FH IF-0FH: MOV A,SBUF CJNE A, #0FH, FMT-AM ;判传送正确否? RET ;正确返回 乙机接收程序 接收程序的约定: 波特率设置初始化,串行口初始化同发送程序。 寄存器设置:31H和30H存放接收数据缓冲区首址;R7 为数据块长度寄存器:R6为累加和寄存器。向甲机回答信 息:0FH为接收正常,F0H为传送出错,00H为同意接收数 据。 是06H? 开始 定时器、串行口初始化 置DPTR、效验和R6初值 等待接收呼叫信号 向甲机回送15H 向甲机回送00H 接收数据块长度 N 接收数据存外部RAM 地址指针DPTR加1 数据接收完? 接收效验和 传送正确吗? 向甲机回送F0H 向甲机回送0FH 返回 N Y 图528 双机通信乙机接收程序框图 Y N Y 接收程序清单: FMT-TS: MOV TMOD,#20H ;T1初始化模式2 MOV TL1, #0E6H ;置计数初值 MOV TH1, #0E6H SETB TR1 ;启动T1 MOV SCON,#50H ;串行方式1,允许接收 MOV PCON,#80H ;SMOD=1,波特率加倍 FMT-RAM:MOV DPH,31H ;置DPTR地址指针 MOV DPL,30H MOV R6,#00H ;效验和寄存器清零 RX-ACK: JBC RI,IF-06H ;等待接收呼叫信号 SJMP RX-ACK IF-06H: MOV A, SBUF ;判呼叫信号有误? CJNE A, #06H,TX-15H TX-00H: MOV A,#00H;向甲机回送同意接收信号 MOV SBUF, A WAIT1: JBC TI,RX-BYTES;等待回送信号发送完 SJMP WAIT1 TX-15H: MOV A, #15H ;向甲机回送接收信号不正确 MOV SBUF, A WAIT2: JBC TI, HAVE1 ;等待不正确信号发送完 SJMP WAIT2 HAVE1: LJMP RX-ACK;返回接收呼叫信号状态 RX-BYTES:JBC RI, HAVE2 ;接收数据块长度 SJMP RX-BYTES HAVE2: MOV A,SBUF;给长度寄存器赋值 MOV R7, A MOV R6,A ;形成累加和 RX-NEWS:JBC RI, HAVE3;接收数据 SJMP RX-NEWS HAVE3: MOV A, SBUF;接收数据并存入外部RAM中 MOVX DPTR, A INC DPTR ;修改地址指针 ADD A, R6;形成累加和 MOV R6,A DJNZ R7, RX-NEWS ;判数据接收完否? RX-SUM:JBC RI, HAVE4;接收效验和 SJMP RX-SUM HAVE4: MOV A,SBUF ;判传送是否正确(SBUF) CJNE A,R6, TX-ERR TX-RIGHT:MOV A,#0FH ;向甲机应答传送正确 MOV SBUF, A WAIT3: JBC TI, GOOD;正确返回 SJMP WAIT3 TX-ERR: MOV A, #0F0H;向甲机应答传送错误 MOV SBUF, A WAIT4: JBC TI, AGAIN SJMP WAIT4 AGAIN: LJMP FMT-RAM;返回重新接收数据状态 GOOD: RET;返回被调用主程序 3、通信程序的调试及故障排除 串行口通信程序调试,只有当通信双方的硬件和软 件都正确无误时,才能实现成功通信。如果调试中出 现问题,首先应考虑硬件故障,其表现是:通信线路 中的芯片损坏,接触不良等。为了迅速准确查明故障 点,可编制一测试小程序,如编一个连续发送字符串 “MCS-51Microcomputer”的程序,在该程序中不安 排接收对方的回答信息,分别在通信的双方单独运行 。程序如下: TSIO:MOV TMOD,#20H;T1模式2,fosc=11.059MHz MOV TL1, #0E8H;1200波特率 MOV TH1,#0E8H MOV SCON, #042H ;串行口方式1,TI=1 SETB TR1 ;启动T1 TS04:MOV R4 ,#00H ;从首字符开始 MOV DPTR, #ASAB ;查串行口输出表中字符串 TS01:MOV A,R4 MOVC A,A+DPTR JZ TS04 ;字符串发送完重发,结束符 TS03:JBC TI, TS02 ;为00H SJMP TS03 TS02: MOV SBUF, A;发送串中字符 INC R4;修改表中指针 SJMP TS01 ASAB:DB MCS51Microcomputer;字符串表 DB 0AH,0DH,00H 此时用示波器可观察接收方一端(RXD)引脚的信号波形 ,若观察不到,即可断定此通路存在问题。这时仍用示波器 逐一观察各连接点、芯片输入/输出各端点的波形,从而可迅 速故障定位。 对于软故障,主要考虑程序的容错性。如前面介绍的收、 发程序实例,如果发方比收方先运行程序,则发方将会因等不 到收方的回答信号而陷于死循环;而收方因丢失发方发过来的 呼叫信号也将陷于等待。解决此类问题的办法是在发送程序中 ,凡在需等待对方回答的地方,都适当延时,一旦超过一定时 间,就返回重新呼叫,直至接通联系为止。 50 5.4.3 MCS-51串行通信工作方式及应用 三) 方式2和方式3 在方式2下,字符还是8个数据位,只不过增加了一个 第9数据位(D8),而且其功能由用户确定,是一个 可编程位。 起 始 D0D1D2D3D4D5D6D7D8 停 止 方式2 方式2是11位为一帧的串行通信方式。 51 5.4.3 MCS-51串行通信工作方式及应用 在发送数据时,应预先在SCON的TB8位中把第 9数据位的内容准备好。这可使用如下指令完成: SETB TB8;TB8位置“1” CLR TB8;TB8位置“0” 发送数据(D0D7)由MOV指令向SBUF写入,而D8位 的内容则由硬件电路从TB8中直接送到发送移位寄存器的第9 位,并以此来启动串行发送。一个字符帧发送完毕后,将TI位 置“1”,其它过程与方式1相同。 方式2的接收过程也与方式1基本相似,所不同的 只在第9数据位上。 方式2,串行口把接收到的前8个数据位送入SBUF, 把第9数据位送入RB8。 方式2的波特率是固定的,且有两种。一种是晶振频率 的三十二分之一;另一种是晶振频率的六十四分之一 。 波特率= 2SMOD 64 fOSC 方式3 方式3同样是11位为一帧的串行通信方式,其通信 过程与方式2完全相同,所不同的仅在于波特率。 方式3的波特率可由用户根据需要设定,其设定方法 与方式1相同。 53 方式2和方式3的发送时序和接收时序 (a) 发送时序图 写入 SBUF TXD输出 TI RXD输入 (b) 接收时序图 RI D0D1D2D3D4 D5D6 TB8 停止位 起始位 D7 D0 D1D2 D3 D4D5D6RB8 停止位 起始位 D7 检测 负跳变 54 ORG 1000H AJMP MAINT ORG 0023H ;串行口中断入口 AJMP TRANI MAINT: MOV SCON,#80H ;串行口方式2 MOV PCON,#80H ;波特率加倍 SETB EA SETB ES ;开串行口中断 MOV R0,#50H ;设数据指针 MOV R7,#10H ;数据长度 LOOP: MOV A,R0 ;取一个字符 MOV C,P ;加奇偶校验 方式2、方式3应用举例 异步通信程序设计 将片内RAM 50H起始单元的16个数由串行口发送。要求 发送波特率为系统时钟的32分 频,并进行奇偶校验。 MOV TB8,C MOV SBUF,A ;启动一次发送 HERE:SJMP HERE ;CPU执行其它任务 TRANI: PUSH ACC;保护现场 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 ACC TEND: RETI ;中断返回 接收程序:串行输入16个字符,进行奇偶校验。 ORG 2000H RECS:: MOV SCON,#D0H ;串行口方式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 ;PRB8,数据出错 SJMP RIGHT ;P=RB8,数据正确 COMP: JB RB8,ERR RIGHT: MOV R0,A ;保存一个字符 CLR RI INC R0 ;修改指针 DJNZ R7,WAIT ;全部字符接收完? CLR F0 ;F0 =0,接收数据全部正确 ERR: SETB F0 ;F0 =1,接收数据出错 RET 方式2、方式3应用举例之主从式多机通信 在主从式多机通信中,只有一台主机,但从机可以有多台。 主机发送的信息可以传送到各个从机或指定的从机,从机发送 的信息只能为主机接收,各从机之间不能直接通信。 TXD RXD 80C51 主机 TX D RXD 80C51 0#从机 TXD RXD 80C51 1#从机 TXD RXD 80C51 n#从机 图5-29 主从式多机通信连接方式 *MCS51应用于多机通信时必须在方式2或方式3下工作 。 在主从式多机通信系统中,主机发出的信息有两类 ,而且具有特征,能够有所区分。一类是地址,用来 确定要和主机通信的从机,特征是串行

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论