![东北大学单片机课件第九章_第1页](http://file3.renrendoc.com/fileroot_temp3/2021-12/18/75f8ee54-352c-471c-a673-ff36fc7f3bc2/75f8ee54-352c-471c-a673-ff36fc7f3bc21.gif)
![东北大学单片机课件第九章_第2页](http://file3.renrendoc.com/fileroot_temp3/2021-12/18/75f8ee54-352c-471c-a673-ff36fc7f3bc2/75f8ee54-352c-471c-a673-ff36fc7f3bc22.gif)
![东北大学单片机课件第九章_第3页](http://file3.renrendoc.com/fileroot_temp3/2021-12/18/75f8ee54-352c-471c-a673-ff36fc7f3bc2/75f8ee54-352c-471c-a673-ff36fc7f3bc23.gif)
![东北大学单片机课件第九章_第4页](http://file3.renrendoc.com/fileroot_temp3/2021-12/18/75f8ee54-352c-471c-a673-ff36fc7f3bc2/75f8ee54-352c-471c-a673-ff36fc7f3bc24.gif)
![东北大学单片机课件第九章_第5页](http://file3.renrendoc.com/fileroot_temp3/2021-12/18/75f8ee54-352c-471c-a673-ff36fc7f3bc2/75f8ee54-352c-471c-a673-ff36fc7f3bc25.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、9.1 串行通讯基础串行通讯基础数据交换的方式总体上分为两种数据交换的方式总体上分为两种:即并行数据通信和串行数据通信即并行数据通信和串行数据通信.如果距离小于如果距离小于30m,可采用并行数据通信方式;,可采用并行数据通信方式; 当距离大于当距离大于30m时,则要采用串行数据通信方式。时,则要采用串行数据通信方式。第九章第九章 串行通讯接口设计串行通讯接口设计一一 、串行通讯的分类、串行通讯的分类(一一)、异步通讯、异步通讯1.发送端和接收端要有互相独立的时钟源。发送端和接收端要有互相独立的时钟源。 2.在帧格式中,一个字符数据由四部分组成:在帧格式中,一个字符数据由四部分组成:起始位、数据
2、位、奇偶校验位和停止位。起始位、数据位、奇偶校验位和停止位。起始位:起始位:起始位起始位“0”0”,在通讯线上不传送数据时保持逻辑,在通讯线上不传送数据时保持逻辑“1”1”。数据位:数据位:可以是可以是5 5、6 6、7 7或或8 8位,规定低位在前,高位在后。位,规定低位在前,高位在后。奇偶校验位:奇偶校验位:也可以用于确定一帧的字符所代表信息(地址也可以用于确定一帧的字符所代表信息(地址/ /数据等)。数据等)。停止位:停止位:(逻辑(逻辑“1”1”)是一个字符数据的结束标志。)是一个字符数据的结束标志。波特率波特率:-:-所传二进制位数所传二进制位数/ /秒秒字符传输速率字符传输速率:-
3、:-所传帧数所传帧数/ /秒秒 例例: 1200bps: 1200bps的字符帧的字符帧(13(13位位),), 则则: : 字符传输速率字符传输速率=1200/13=1200/13帧帧/ /秒秒(二二)、同步通讯、同步通讯仅在数据块开始时用同步字符仅在数据块开始时用同步字符SYNC来指示,来指示, 同步字符可以单同步字符,也可以使双同步字符方式。同步字符可以单同步字符,也可以使双同步字符方式。 国际标准为单字符国际标准为单字符 16H, 双字符双字符 EBH, 90H. 二二. 串行通讯的制式串行通讯的制式 1.半双工制式半双工制式单片机AUART单片机BUART.TXRXTXRXGNDGN
4、D.RTSRTS74125741252.2.全双工制式全双工制式单片机AUART单片机BUART.TXRXTXRX.GNDGND三三. 串行通讯中的调制解调器串行通讯中的调制解调器1.MODEM的作用和原理的作用和原理2.MODEM的分类的分类3.MODEM的调制的调制/解调解调三、串行通信中的调制解调器三、串行通信中的调制解调器 1、MODEM的作用和原理的作用和原理2、MODEM的分类的分类3、MODEM的调制的调制/解调解调1)应答式)应答式MODEM的发送器的发送器2050HZ发送空号(逻辑发送空号(逻辑0),),2225HZ -发送传号(逻辑发送传号(逻辑1)。)。2)应答式)应答式
5、MODEM的接收器的接收器RXD接收信号:接收信号:“1”(2225HZ) 上通道上通道 “0”(2025HZ) 下通道下通道四四. 串行串行I/O数据的实现数据的实现串行数据串行数据-并行数据的实现并行数据的实现(一一)软件实现软件实现(二二)硬件实现硬件实现 ORG 1000HSOUT : MOV R0, #20HNEXT: MOV R2, #0BH CLR C MOV A, R0 RLC A INC R0 LOOP: MOV R1, A ANL A, #01H ORL P1, A MOV A, R1 ACALL DELAY RRC A SETB C DJNZ R2, LOOP DJNZ
6、LEN , NEXT(一一).软件实现软件实现20H C7H21H . .LNE LP1.08031CYR1012345671T8数据0开始位移位脉冲TXD发送缓冲器TXBUF写缓冲命令.(二二) 硬件实现硬件实现12345678910 11 12 13 14 15TTTXCLK开始位TXD空闲.012345671R8数据0开始位移位脉冲RXD接收缓冲寄存器RXBUF读缓冲命令.停止位.对对RXD的采样的采样:(1)若连续采样若连续采样8个负脉冲个负脉冲RXD为低电平则为启动位为低电平则为启动位.(2)每隔每隔13个脉冲采样个脉冲采样2次次RXD,按按2/3原则确定数据值原则确定数据值(3).
7、错误校验错误校验五五. . 串行通讯的差错控制技术串行通讯的差错控制技术 在信息码元中增加一定数量的多余码元(称为监督码在信息码元中增加一定数量的多余码元(称为监督码元),在传输过程中如果受到干扰,某位码元发生了变化,元),在传输过程中如果受到干扰,某位码元发生了变化,相当于破坏了他们之间的约束关系。相当于破坏了他们之间的约束关系。 1 1奇偶校验奇偶校验在每个信息码组之后附加一位监督码元,使整个码组中在每个信息码组之后附加一位监督码元,使整个码组中“1”的个数成为奇数或偶数,分别称为奇校验或偶校验。的个数成为奇数或偶数,分别称为奇校验或偶校验。 2. 2. 校验和校验和在数据发送时,发送方对
8、块中数据简单求和,产生一单字在数据发送时,发送方对块中数据简单求和,产生一单字节校验字符(校验和)附加到数据块结尾,节校验字符(校验和)附加到数据块结尾, 3. 循环冗余码校验循环冗余码校验CRC 4. 海明码校验海明码校验六六. 设备地址问题设备地址问题 网络中每个节点都有一个唯一的地址码网络中每个节点都有一个唯一的地址码.产生方法产生方法: (1) 软件中直接写定软件中直接写定 方法简单方法简单,无附加电路无附加电路,修改不方便修改不方便,设备不能互换设备不能互换; (2) 通过外部开关进行设置通过外部开关进行设置 可以动态改变可以动态改变,组织灵活组织灵活,但占用资源但占用资源,机械开关
9、不可靠机械开关不可靠; (3) 用非易失存储器保存用非易失存储器保存,可以在线修改可以在线修改,灵活灵活,可靠可靠,但需但需要增加硬件设备要增加硬件设备,软件较复杂软件较复杂.七七. 传输介质、总线电气特性、负载量等问题传输介质、总线电气特性、负载量等问题 a .传输介质传输介质 普通双绞线普通双绞线 RVV2*1.0 建筑物内部建筑物内部,短距离场合短距离场合,干扰不严重情况干扰不严重情况 屏蔽双绞线屏蔽双绞线 RVVP2*1.0 建筑物之间空旷地带建筑物之间空旷地带,距离远距离远,干扰大情况干扰大情况 同轴电缆同轴电缆 SYV 75-5 适合做干线适合做干线 光导纤维光导纤维(单膜和多膜单
10、膜和多膜) 高速网络高速网络,主干线主干线,Internet接口接口,计算机之间局域网络计算机之间局域网络 b. 总线电气特性总线电气特性RS-485通讯信号的传输距离和波特率主要受总线分布通讯信号的传输距离和波特率主要受总线分布电容的影响电容的影响. 分布电容的实际测量值为分布电容的实际测量值为: 网线网线(5类线类线), 5000pf/100m=50pf/m RVV线线 , 6200pf/100m=62pf/m 工程实践证明工程实践证明:485总线负载电容上限为总线负载电容上限为75000pf 所以所以,使用使用RVV线时距离为线时距离为: L=75000/62=1209米米 使用使用5类
11、线时类线时L=75000/50=1500米米C .负载量负载量RS-485通讯发送驱动芯片的输出电流能力约为通讯发送驱动芯片的输出电流能力约为60mA,接收器吸收电流的情况有所不同接收器吸收电流的情况有所不同,所以有所以有32站、站、128站和站和256站的区别。站的区别。对于对于MAC1387E驱动器,等效负载约为并联电阻驱动器,等效负载约为并联电阻37欧姆。欧姆。第二节第二节 MCS-51的串行接口的串行接口一、串行口的结构一、串行口的结构RXD(P3.0)发送发送SBUF(99H)门门88 串行口结构框图串行口结构框图 TXD(P3.1)中断中断接收接收SBUF(99H)定定时时器器T1
12、fosc2分频器分频器发送控制器发送控制器接收控制器接收控制器串寄串寄行存行存控器控器制制 SCON (98H)输入移位寄存器输入移位寄存器TIRI内内 部部 总总 线线发送过程:发送过程: MOV A,#7FH MOV SBUF,A串口自动发送:串口自动发送:起始位,起始位,7FH,TB8,停止位停止位接收退出接收过程:接收过程: MOV A ,SBUFRXD检测起始位。检测起始位。串口自动接收:串口自动接收:7FH,TB8,停止位停止位二、串行口的工作方式二、串行口的工作方式1. 方式方式0同步移位寄存器同步移位寄存器2. 方式方式1 10位异步收发位异步收发3. 方式方式2 11位异步收
13、发位异步收发4. 方式方式3 11位异步收发位异步收发要求:要求:SCON,(,(SM2=0,RB8=0,TB8=0) MOV SBUF,A MOV A, SBUF 发送(发送(TI=0)时:)时: SBUF: TXD发移位脉冲。发移位脉冲。 RXD发送数据。发完一帧后,发送数据。发完一帧后,TI=1,中断,中断 接收(接收(RI=0,REN=1)时:)时: SBUF: TXD发移位脉冲。发移位脉冲。 RXD接收数据。接收一帧后,接收数据。接收一帧后,RI=1,中断,中断2.2.方式方式1(101(10位异步收发位异步收发) )要求要求:SCON:SCON中中(SM2 =0,TB8 =0)(S
14、M2 =0,TB8 =0)发送发送(TI=0)时时:发送开始发送开始:执行执行 MOV SBUF, A TXD发送发送: (起始位:起始位:1位位,数据位:数据位:8 8位位,停止位停止位: 1位位)发完一帧后发完一帧后:TI=1和和TXD=高电平高电平,并产生中断并产生中断接收接收(RI=0和和REN=1)时时:RXD接收字符帧接收字符帧若若RI=0和和SM2=0(或收到停止位或收到停止位),则接收字符送则接收字符送SBUF,停停止位送止位送RB8,RI=1, 发中断发中断.否则否则,字符不送字符不送SBUFTXDRXD3.3.方式方式2(112(11位异步收发位异步收发) )波特率固定波特
15、率固定(fosc/32, fosc/64)(fosc/32, fosc/64)发送发送(TI=0)时时:发送开始发送开始:执行执行 MOV SBUF, A TXD发送发送:(起始位起始位,数据位数据位, TB8 ,停止位停止位)发完一帧后发完一帧后:TI=1和和TXD=高电平高电平,并产生中断并产生中断接收接收(RI=0和和REN=1)时时:RXD接收字符帧接收字符帧若若RI=0和和SM2=0(或收到停止位或收到停止位),则接收字符送则接收字符送SBUF,第第9位送位送RB8, RI=1, 发中断发中断. 否则否则, 字符不送字符不送SBUF.TXDRXD4.4.方式方式3(113(11位异步
16、收发位异步收发) )波特率可调波特率可调, ,可利用可利用T1,T2T1,T2分频提供分频提供发送发送(TI=0)时时:发送开始发送开始:执行执行 MOV SBUF, A TXD发送发送:(起始位起始位,数据位数据位, TB8 ,停止位停止位)发完一帧后发完一帧后:TI=1和和TXD=高电平高电平,并产生中断并产生中断接收接收(RI=0和和REN=1)时时:RXD接收字符帧接收字符帧若若RI=0和和SM2=0(或收到停止位或收到停止位),则接收字符送则接收字符送SBUF,第第9位送位送RB8, RI=1, 发中断发中断. 否则否则, 字符不送字符不送SBUF.TXDRXD1. 方式方式0 波特
17、率固定为波特率固定为fosc/12 (fosc为单片机晶振频率为单片机晶振频率)三三. 串行口的通讯波特率串行口的通讯波特率3.方式方式1/3 波特率波特率=(2SMOD/32)(T1的溢出率的溢出率) =(2SMOD/32)(fosc/12(2K-x) ) 式中式中,K : 方式方式0, K=13 方式方式1, K=16 方式方式2 / 3, K=8根据给定的波特率根据给定的波特率,可以计算可以计算T1的计数初值的计数初值X。2. 方式方式2 波特率固定为波特率固定为(2SMOD/64)fosc.注意注意:1)T1初值和对应波特率间若有误差可通过初值和对应波特率间若有误差可通过fosc调整调
18、整. 2)T1在方式在方式1下的下的TC初值应考虑到重装时间初值应考虑到重装时间.第三节第三节 MCS-51串行口的应用串行口的应用串行口在方式串行口在方式0下的应用下的应用串行移位输出串行移位输出例:串行通信方式例:串行通信方式0 0,扩展,扩展I/OI/O接口,接八个数码管,使内接口,接八个数码管,使内部数据存储器部数据存储器58H58H-5FH-5FH单元的内容为单元的内容为0XH0XH。 ORG 0050H SETB P3.3 ; 允许移位寄存器工作允许移位寄存器工作 MOV SCON, #0 ; 选串行通信方式选串行通信方式0 MOV R7, #08H ; 显示八个字符显示八个字符
19、MOV R0, #5FH ; 先送最后一个显示字符先送最后一个显示字符 MOV DPTR, #TBA ; DPTR指向字形表首址指向字形表首址 DLO: MOV A, R0 ; 取待显示数码取待显示数码 MOVC A,A+DPTR ; 查字形表查字形表 MOV SBUF, A ; 送出显示送出显示 JNB TI, $ ; 一帧输出完?一帧输出完? CLR TI ; 已完,清中断标志已完,清中断标志 DEC R0 ; 修改显示数据地址修改显示数据地址 DJNZ R7, DLO CLR P3.3 ; 8位送完,关发送脉冲位送完,关发送脉冲 SJMP $ TBA: DB 0C0H,0F9H,0A4H
20、,B0H,99H,92H DB 82H,0F8H,80H,90H,83H,83H,0C6H DB 0A1H,86H,84H,0FFH,0BFH(一一) 串行口方式串行口方式1下的应用下的应用(查询方式查询方式)例:甲机只有收到乙机答应信号例:甲机只有收到乙机答应信号“00”后才可把存放在片外后才可把存放在片外RAM中的内容发送给乙机,中的内容发送给乙机,其发送数据格式为:其发送数据格式为:字节数字节数n数据数据1数据数据2数据数据n累加校验和累加校验和字节数字节数n:甲机将向乙机发送的数据字节数;甲机将向乙机发送的数据字节数;数据数据1数据数据n:甲机将向乙机发送的:甲机将向乙机发送的n个字节
21、数据;个字节数据;累加校验和:字节数累加校验和:字节数n,数据,数据1,数据,数据n,这(,这(n+1)的算术累加和(向高位进位丢失)。的算术累加和(向高位进位丢失)。乙机根据接收到的乙机根据接收到的“校验和校验和”判断收到的数据是否正确。判断收到的数据是否正确。若接收正确,向甲机发若接收正确,向甲机发“0F”信号,否则回发信号,否则回发“F0”信号。信号。 二二、串行口在其它方式下的应用串行口在其它方式下的应用(1)甲机查询方式发送子程序)甲机查询方式发送子程序发送程序约定:发送程序约定:波特率设置初始化:波特率设置初始化: 定时器定时器T1模式模式2工作,计数初值工作,计数初值F3H, S
22、MOD=1; 串行口初始化:串行口初始化: 方式方式1工作,启动发送;工作,启动发送;片内片内RAM和工作寄存器设置:和工作寄存器设置: 31H和和30H存放发送的数据块首地址;存放发送的数据块首地址; 2FH存放发送的数据块长度;存放发送的数据块长度; R6为累加和寄存器。为累加和寄存器。 甲机发送子程序框图如下:甲机发送子程序框图如下: 开始定时器,串行口初始化地址指针DPTR,长度计数器R7,校验寄存器R6置初值发送呼叫信号06H等待乙机回答是00H?发字节长度数发送数据发送完否?发送校验和等待乙机回答传送正确吗?返回FMT_RAM:TX_ACK:TX_BYTE:TX_NEW:TX_SU
23、M:NNYNY甲机发送子程序清单:甲机发送子程序清单:FMT_T_S:MOV TMOD,#20H ;波特率设置波特率设置MOV TH1,#0F3HMOV TL1,#0F3HSETB TR1MOV SCON,#50H ;串行口初始化,串行口初始化, 方式方式1并启动接收并启动接收MOV PCON,#80H ;置置SMOD=1FMT_RAM: MOV DPH,31H ;设置设置DPTR指针指针MOV DPL,30HMOV R7,2FH ;送字节数至送字节数至R7MOV R6,#00H ;清累加和寄存器清累加和寄存器TX_ACK:MOV A,#06H ;发呼叫信号发呼叫信号“06”MOV SBUF,
24、AWAIT1:JBCT1, RX_YES ;等待发送完一个字节等待发送完一个字节SJMP WAIT1RX_YES:JBCRI, NEXT1SJMP RX_YESNEXT1: MOV A,SBUF ;判断乙机是否同意接收,判断乙机是否同意接收, CJNEA,#00H,TX_ACK 不同意就继续呼叫不同意就继续呼叫TX_BYTES: MOV A,R7MOV SBUF,AADDA,R6 ;求累加和求累加和MOV R6,AWAIT2:JBCT1,TX_NEWSSJMP WAIT2TX_NEWS:MOVX A,DPTR ;发送数据发送数据MOV SBUF,AADDA,R6;形成累加和送形成累加和送R6M
25、OV R6,AINCDPTR;指针加指针加1WAIT3:JBCTI,NEXT2SJMP WAIT3NEXT2:DJNZ R7,TX_NEWS ;判发送结束判发送结束TX_SUM:MOV A,R6 ;数据已发送完,数据已发送完, 发累加和给乙机发累加和给乙机MOV SBUF,AWAIT4:JBCTI, RX_0FHSJMP WAIT4RX_0FH:JBCRI, IF_0FH;等待乙机回答等待乙机回答SJMP RX_0FHIF_0FH: MOV A, SBUF ;读入读入 CJNE A, #OFH, FMT_RAM ;判断传送则正确否判断传送则正确否 RET(2)乙机查询方式接收子程序乙机查询方式
26、接收子程序接收程序约定:接收程序约定:波特率设置初始化:同甲机发送子程序。波特率设置初始化:同甲机发送子程序。串行口初始化:同发送程序串行口初始化:同发送程序寄存器设置:寄存器设置:31H, 30H存放接收数据缓冲区首地址。存放接收数据缓冲区首地址。 R7数据块长度寄存器。数据块长度寄存器。 R6累加和寄存器。累加和寄存器。向甲机回答的状态信息:向甲机回答的状态信息:0FH为接收正常,为接收正常,FOH为传送出错,为传送出错,00H为同意接收数据。为同意接收数据。乙机接收子程序框图见下图乙机接收子程序框图见下图 开始定时器T1,串行口初始化地址指针赋值,校验和寄存器清0FMT_RAM:接收呼叫
27、信号是06H?向甲机回送15H接收数据块长度向甲机回送00HTX_15H:RX_BYTE:接收数据并存入片外RAMRX_NEW:地址指针DPTR加1数据接收完否?接收校验和RX_SUM:传送正确吗?向甲机回送FOH向甲机回送0FHTX_ERR:TX_RIG:返回YNNYYN乙机接收子程序清单:乙机接收子程序清单:FMT_T_S:MOV TMOD,#20H ;T1初始化初始化 MOV TH1,#0F3H MOV TL1,#0F3H SETB TR1 MOV SCON,#50H;串行口初始化方式串行口初始化方式1 , 并允许接收并允许接收 MOV PCON,#80H ;SMOD=1FMT_RAM:
28、 MOV DPH,31H;设置设置DPTR地址指针地址指针 MOV DPL,30H MOV R6,#00H;校验和寄存器清校验和寄存器清0RX_ACK:JBCRI,IF_06H;接收呼叫信号接收呼叫信号SJMP RX_ACKIF_06H:MOV A,SBUF ;判断呼叫信号是否有误判断呼叫信号是否有误CJNE A,#06H,TX_15HTX_00H:MOV A,#00H ;向甲机回送同意接收信号向甲机回送同意接收信号MOV SBUF,AWAIT1:JBCTI,RX_BYTES ;等待应答信号发送完等待应答信号发送完SJMP WAIT1TX_15H:MOV A,#15H ;向甲机报告接收的向甲机
29、报告接收的MOV SBUF,A 呼叫信号不正确呼叫信号不正确WAIT2:JBCTI,HAVE1SJMP WAIT2 HAVE1: LJMP RX_ACK;返回到开始接收呼叫返回到开始接收呼叫 信号状态信号状态RX_BYTES: JBCRI,HAVE2;接收数据块长度接收数据块长度SJMP RX_BYTESHAVE2: MOV A,SBUF;给长度寄存器赋值给长度寄存器赋值 MOV R7,A MOV R6,A;形成累加和形成累加和RX_NEWS: JBCRI,HAVE3;接收数据接收数据SJMP RX_NEWSHAVE3:MOV A,SBUF;将接收到的数据存放入将接收到的数据存放入 MOVX
30、DPTR,A外部外部RAMINCDPTRADDA,R6;形成累加和形成累加和MOV R6,ADJNZ R7,RX_NEWS ;判断是否接收完毕判断是否接收完毕RX_SUM:JBCRI,HAVE4;接收校验和接收校验和SJMP RX_SUMHAVE4:MOV A,SBUFCJNE A,R6,TX_ERRTX_RIGHT: MOV A,#0FH ;向甲机报告传输正确向甲机报告传输正确MOV SBUF,AWAIT3:JBCTI,GOODSJMP WAIT3TX_ERR:MOV A,#0F0H ;向甲机报告传送有误向甲机报告传送有误MOV SBUF,AWAIT4:JBCTI,AGAINSJMP WAI
31、T4AGAIN:LJMP FMT_RAM;返回重新接收数据返回重新接收数据GOOD:RET;返回被调用的主程序返回被调用的主程序(二二).串行口方式串行口方式1下的应用下的应用(中断方式中断方式)(1)主程序框图)主程序框图 ORG 2100HTBLOCK DATA 20H LEN DATA 14H START: MOV TMOD, #20H; T1方式方式2 MOV TL1,#0F4H ;2400pbs MOV TH1, #0F4H MOV PCON, #80H; SMOD=1 SETB TR1 MOV SCON, #40H; 串口方式串口方式1 MOV R0, #TBLOCK MOV A,
32、 LEN MOV R2, A MOV SBUF, A SETB EA WAIT: SETB ES SJMP WAIT 中断服务程序中断服务程序 ORG 0023H LJMP TXSVE ORG 2150HTXSVE: CLR RS; 串口关中断串口关中断 CLR TI MOV A, R0; 发送字符发送字符A MOV C, PSW.0; 形成奇校位形成奇校位 CPL C MOV ACC.7, C MOV SBUF, A DJNZ R2, NEXT SJMP $ NEXT: INC R0 NN: RETI END(2)乙机中断接收子程序)乙机中断接收子程序设置三个标志位来判断设置三个标志位来判断
33、所接收的信息所接收的信息 , 是数据是数据块长度,是数据还是校块长度,是数据还是校验和。验和。本例约定:本例约定:波特率:波特率:T1方式方式2工作,工作, 计数初值计数初值F4H, SMOD=1。串行口初始化:串行口初始化:方式方式1,启动接收。,启动接收。31H,30H存放在以存放在以 31H、30H (送(送DPTR)为地址)为地址 指针的片外指针的片外RAM中。中。32H数据块长度寄存单元。数据块长度寄存单元。33H累加校验和寄存单元。累加校验和寄存单元。(三三).串行口方式串行口方式3下的应用下的应用(中断方式中断方式)设甲机发送,乙机接收,串行接口工作方式设甲机发送,乙机接收,串行
34、接口工作方式3(每帧数据为(每帧数据为11位,第位,第9位用于奇偶校验),位用于奇偶校验),两机均选用两机均选用6MHz的振荡频率,波特率为的振荡频率,波特率为2400b/s,通信的功能为:通信的功能为:甲机:甲机:将片外将片外RAM 4000H407FH单元的内容向乙机发送,单元的内容向乙机发送,乙机乙机:对接收的信息进行奇偶校验对接收的信息进行奇偶校验(偶校验偶校验),P位值放位值放TB8中。中。若校验正确,则乙机向甲机回发(若校验正确,则乙机向甲机回发(00H)。)。若奇偶校验有错,则乙机发出信号(若奇偶校验有错,则乙机发出信号(FFH)。)。接收甲机发送的数据,并写入以接收甲机发送的数
35、据,并写入以4000H为首地址的片为首地址的片外外RAM中。中。(四四) 8051C语言通讯程序实例语言通讯程序实例1、通信协议的约定、通信协议的约定假定假定A机是发送者,机是发送者,B机是接收者。机是接收者。 当当A机开始发送时,先送一个机开始发送时,先送一个“AA”信号,信号, B机接收到后回答一个机接收到后回答一个“BB”,表示同意接收。表示同意接收。 当当A机收到机收到“BB”后,开始发送数据,每发送后,开始发送数据,每发送一次求一次求“校验和校验和”,数据块发送完后发送,数据块发送完后发送“校验校验和和”。B机每接收到一个数据便计算一次机每接收到一个数据便计算一次“校验和校验和”,当
36、收齐一个数据块后,当收齐一个数据块后,再接收再接收A机发来的校验和,并将它与机发来的校验和,并将它与B机求出的校验和进行比较。机求出的校验和进行比较。 若两者相等,说明接收正确,若两者相等,说明接收正确,B机回答机回答00H;若两者不等,说明接收不正确,若两者不等,说明接收不正确,B机回答机回答0FFH,请求重发。,请求重发。A机收到机收到00H回答结束发送;若收到的非零,则将数据再重发一次。回答结束发送;若收到的非零,则将数据再重发一次。 双方约定的传输速率若为双方约定的传输速率若为1200b/s,查表可知,查表可知,在双方的在双方的fosc=11.0592MHz下,下,T1工作在定时器模式
37、工作在定时器模式2,TH1=TL1=0E8H,PCON寄存器的寄存器的SMOD位为位为0。设置波特率启动定时器1设串行口工作方式发请求“AA”B机允许发送?指针初始化校验和清零发送一个数据字节并求校验和数据块已发送完发送检查和B机接收正确?返回NNNA机发送程序B机发送程序设置波特率启动定时器1设串行口工作方式等待A机联络A机请求发送发送应答信号“BB”指针初始化校验和清零接收一个数据字节并求校验和数据块收齐了吗?接受A机校验和并与B机校验和比较接收正确?发出错标志“FFH”返回NN2、点对点通信程序、点对点通信程序人为规定一个为发送,一个为接收。人为规定一个为发送,一个为接收。要求两机串行口
38、的波特率相同要求两机串行口的波特率相同。 A机发送程序机发送程序#include#defineucharunsigned char#defineTR 1 /发送接收差别值发送接收差别值TR=0发送发送uchar idata buf10;uchar pf;void init(void)/串行口初始化串行口初始化 TMOD=0 x20;/设设T1为定时器模式为定时器模式2TH1=0 xe8;/设定波特率设定波特率TL1=0 xe8;PCON=0 x00;TR1=1;/启动启动T1SCON=0 x50; /串行口工作在方式串行口工作在方式1并允许接收并允许接收void send(uchar idat
39、a *d) uchar i;do SBUF=0 xaa; /发送联络信号发送联络信号“AA” while(TI= =0); /等待发送出去等待发送出去 TI=0; while(RI= =0); /等待等待B机回答机回答 RI=0; while(SBUF0 xbb)!=0); /B机未准备好,机未准备好, 继续联络(收到继续联络(收到“BB”吗)吗)do pf=0; /清校验和清校验和for(i=0;i16;i+) SBUF=di; /发送一个数据发送一个数据 pf+=di; /求校验和求校验和 while(TI=0);TI=0; SBUF=pf; /发送校验和发送校验和 while(TI= =
40、0);TI=0; while(RI= =0);RI=0;/发送校验和发送校验和 while(SBUF!=0);/回答出错,则重发回答出错,则重发 void receive(uchar idata *d) uchar i; do while(RI=0);RI=0; while(SBUF0 xaa)!=0); /判判A机请求否机请求否 SBUF=0 xbb; while (TI=0);TI=0; while (1) pf = 0;/清校验和清校验和 for(i=0;i16;i+) while (RI= =0);RI=0; di=SBUF;/接收数据接收数据 pf + =di; /求校验和求校验和
41、while (RI= =0);RI=0; /接收接收A机校验和机校验和 if(SBUFpf) = = 0) /比较校验和比较校验和 SBUF=0 x00; /检验和相同发检验和相同发“00” break; else SBUF=0 xff; /出错发出错发“FF”,重新接收,重新接收 while (TI=0);TI=0; B机接收程序机接收程序void main(void)init();if (TR= =0) send(buf); else receive(buf); 第四节第四节 8051多机通讯技术多机通讯技术在许多场合,需要多台单片机互相配合才能完成某个过程在许多场合,需要多台单片机互相配
42、合才能完成某个过程或任务。以完成各种功能。或任务。以完成各种功能。 网络形式有网络形式有4种:种:星形网络、串行总线形网络、环形网络、树形网络结构星形网络、串行总线形网络、环形网络、树形网络结构. 串行总线形主从式多机通信全双工串行总线形主从式多机通信全双工 串行总线形主从式多机通信半双工结构串行总线形主从式多机通信半双工结构 (一)(一) 主从式多机通信主从式多机通信 1.特点:特点:1)一台是主机,其余的为从机,)一台是主机,其余的为从机,2)主机、从机均工作于方式)主机、从机均工作于方式2或方式或方式3。 2.原理原理1)主机)主机(SM2=0), TB8=1-发送地址标志发送地址标志
43、TB8=0- 命令、数据标志命令、数据标志 从机从机(SM2=1) 若若 RB8=1 则则 接收主机地址进入中断接收主机地址进入中断 RI=02)从机在中服完成)从机在中服完成本机本机 / 从机地址从机地址比较比较 若本机若本机接收地址,则本机未被选中,令接收地址,则本机未被选中,令SM2=1,退中断退中断3)若本机地址)若本机地址=接收地址,则本机被选中接收地址,则本机被选中令令SM2 = 0 ,回送所接收地址,完成主机,回送所接收地址,完成主机-从机通信。从机通信。4) 从机完成主机从机完成主机-从机间通讯后,令从机间通讯后,令SM2=1,退出中服,退出中服3。主机。主机给从机给从机1发地
44、址发地址地址符合地址符合(二)主从式多机通讯实例(二)主从式多机通讯实例主机通讯(主机通讯(1200bps)1)所用命令所用命令/状态字状态字(1)各从机均有自己的)各从机均有自己的 本机地址本机地址(2)控制字)控制字 00H-主机发和从机收命令主机发和从机收命令 01H-从机发和主机收命令从机发和主机收命令(3从机状态字从机状态字ERR00000TRDYRRDY0合法合法1非法非法0从机未准备好接收从机未准备好接收1从机准备好接收从机准备好接收0从机未准备好发送从机未准备好发送1从机准备好发送从机准备好发送2)主机通讯程序(装入主机)主机通讯程序(装入主机)R0主机发送数块始址主机发送数块
45、始址R1主机接收数块始址主机接收数块始址R2被寻址从机地址被寻址从机地址R3主机发出的命令主机发出的命令R4发送数块长度发送数块长度R5接收数块长度接收数块长度(1)主机主程序)主机主程序 ORG 2000HSTART:MOV TMOD , #20H ;T1方式方式2 MOV TH1, # 0F4H ;1200bps MOV TL1,#0F4H SETB TR1 ;启动启动T1 MOV SCON, #0D8H ;方式;方式3, MOV PCON, #00H ;接收;接收TB8=1 MOV R0,#40H ;发送数块始址发送数块始址 MOV R1,#20H ;接收数块始址接收数块始址 MOV R
46、2,#SLAVE ;被寻址从机地址被寻址从机地址 MOV R3,#00H/01H ;主机发出的命令主机发出的命令 MOV R4,#20 ;发送数块长度发送数块长度 MOV R5,#20 ;接收数块长度接收数块长度 ACALL MCOMMU ;调主机通讯程序;调主机通讯程序 SJMP $(2)主机通讯)主机通讯 程序框图程序框图(3)主机通讯程序)主机通讯程序 ORG 2100HMCOM: MOV A, R2 ; 从机地址送从机地址送A MOV SBUF,A ; 发送从机地址发送从机地址 JNB RI, $ ; 等待接收从机等待接收从机 CLR RI ; 应答地址应答地址 MOV A, SBUF
47、 ;从机应答地址送从机应答地址送A XRL A, R2 ;核对两个地址;核对两个地址 JZ MTXD2 ;相符,转相符,转MTXD2MTXD1: MOV SBUF ,#0FFH;从机复位命令;从机复位命令 SETB TB8 ;地址桢标志送;地址桢标志送TB8 SJMP MCOMMTXD2: CLR TB8 ;准备发送命令准备发送命令 MOV SBUF, R3 ;发送命令字发送命令字 JNB RI ,$;(00/01)等待从机应答)等待从机应答 CLR RI MOV A, SBUF;等待从机应答状态字;等待从机应答状态字 JNB ACC.7, MTXD3;正确,;正确,MTXD3 SJMP MT
48、XD1;错误,重新联络;错误,重新联络MTXD3: CJNZ R3,#00H,MRXD;若从机发;若从机发 ;主机收,主机收,MRXD JNB ACC.0 ,MTXD1;若从机接收;若从机接收 ;未就绪,未就绪,MTXD1MTXD4: MOV SBUF, R0 ;若从机接收就;若从机接收就 JNB TI, $ ;绪,则开始发送绪,则开始发送 CLR TI INC R0 DJNZ R4, MTXD4;若数块未发;若数块未发 RET 完,则继续完,则继续 MRXD: JNB ACC.1, MTXD1;从机发送未;从机发送未 ;就绪,重新联络就绪,重新联络MRXD1: JNB RI, $ ;等待接收
49、完毕;等待接收完毕 CLR RI MOV A, SBUF ;接收数据送;接收数据送A MOV R1,A INC R1 DJNZ R5, MRXD1若未接完,继续若未接完,继续 RET3)从机通讯程序(装入从机)从机通讯程序(装入从机)R0从机发送数块始址从机发送数块始址 R1从机接收数块始址从机接收数块始址 R2发送数块长度发送数块长度R3接收数块长度接收数块长度 ORG 1000HSTART: MOV TMOD, #20H;T1方式方式2 MOV TH1, #0F4H; 1200bps MOV TL1, #0F4H; SETB TR1 MOV SCON, #0F8H ; 方式方式3,允许,允
50、许 MOV PCON, #00H ; 接收,接收,TB8=1 MOV R0,# 20H; MOV R1, #40H; MOV R2, #20 MOV R3, #20 SETB EA SETB ES CLR RI SJMP $ ORG 0023H SJMP SINT ORG 0100HSINT:CLR RI PUSH ACC PUSH PSW MOV A,SBUF; 接收从机地接收从机地 XRL A,#SLAVE;址送址送A JZ RXD1 ;若呼叫本机若呼叫本机,继续继续RETN:POP PSW POP ACC RETIRXD1:CLR SM2 ; 接收数据接收数据/命令命令 MOV SBUF
51、,#SLAVE; 发回发回 JNB RI,$ ;本机地址本机地址,核对核对 CLR RI JNB RB8, RED2;若命令若命令 (TB8=0),则则RXD2 SETB SM2 ;若复位命令若复位命令,则则SM2=1 SJMP RETN ;返回主程序返回主程序RXD2:MOV A,SBUF ;收到命令送收到命令送A CJNE A,#02H,NEXT ;命令合法命令合法?NEXT:JC RXD3 ;若命令合法若命令合法,则则RXD3 CLR TI ;命令非法命令非法,则清则清TI MOV SBUF,#80H ;发发ERR=1的状态字的状态字 SETB SM2 SJMP RETN ;返回主程序返
52、回主程序RXD3:JZ SCRX ;若若00H(接收接收)命令命令,则则SCHRX JB F0H,STXD ;若本机发送就绪若本机发送就绪,则则STXD MOV SBUF, #00H ;本机发未就绪本机发未就绪, SETB SM2 ;则则TRDY=0 SJMP RETN ;返回主程序返回主程序STXD: MOV SBUF, #02H ;发发TRDY=1状态字状态字 JNB TI, $ ;等待发完等待发完 CLR TI ;发完清发完清TI INC R0 ;发送块指针加发送块指针加1 DJNZ R2, LOOP1 SETB SM2 ;发完令发完令SM2=1 SJMP RETN ;返回返回SCRX:
53、 JB PSW.1, SRXD ;接收就绪接收就绪,则则SRXD MOV SBUF, #00H ;未就绪未就绪, SETB SM2 ;发发RRDY=0 SJMP RETNSRXD: MOV SBUF, #01H;发发RRDY=1状态字状态字LOOP2: JNB RI, $ ;接收一个字符接收一个字符 CLR RI MOV R1, SBUF ; 存入内存存入内存 INC R1 ;数块指针加数块指针加1 DJNZ R3, LOOP2 SETB SM2 SJMP RETN END(三)(三) C语言多机通讯程序设计实例语言多机通讯程序设计实例主机采用查询方式,从机采用中断方式通信。主机采用查询方式,
54、从机采用中断方式通信。 1.通信协议通信协议(1)主机先发送一帧地址信息,其中前)主机先发送一帧地址信息,其中前8位为地址,第位为地址,第9位为地址位为地址/数据数据 信息的标志位,信息的标志位,1表示该帧为地址信息。表示该帧为地址信息。(2)所有从机接收到地址帧后,各自将接收的地址与本机的地址比较)所有从机接收到地址帧后,各自将接收的地址与本机的地址比较 地址相符的从机,使地址相符的从机,使SM2 = 0,以接收随后发来的所有信息;,以接收随后发来的所有信息; 地址不符的从机,仍地址不符的从机,仍SM2=1, 对发来的数据不予理睬。对发来的数据不予理睬。(3)从机发送结束后,发送一帧校验和,
55、并置第)从机发送结束后,发送一帧校验和,并置第9位(位(TB8)为)为1 , 作为从机数据传送结束标志。作为从机数据传送结束标志。(4)主机接收数据时,)主机接收数据时, 若若RB8=1,表示数据传送结束,比较此帧校验和,若正确,表示数据传送结束,比较此帧校验和,若正确, 则回送正确信号则回送正确信号00H,此信号令该机复位(即重新等待地址帧),此信号令该机复位(即重新等待地址帧) 若出错,则发送若出错,则发送0FFH,令该从机重发数据。,令该从机重发数据。 若若RB8=0,则原数据到缓冲区,并准备接收下帧信息。,则原数据到缓冲区,并准备接收下帧信息。跨过跨过(5)主机向从机发送数据时,)主机
56、向从机发送数据时, 从机比较地址相符后,从机令从机比较地址相符后,从机令SM2=0,同时把本站地址发回主机。,同时把本站地址发回主机。 作为应答之后才能收到主机发送来的数据。作为应答之后才能收到主机发送来的数据。 其他从机继续监听地址(其他从机继续监听地址(SM2=1),无法收到数据。无法收到数据。(6)主机收到从机的应答地址后,确认地址是否相符。如果地址)主机收到从机的应答地址后,确认地址是否相符。如果地址不不 符,发复位信号(数据帧中符,发复位信号(数据帧中TB8=1);如果地址相符,则清);如果地址相符,则清 TB8,开始发送数据。,开始发送数据。(7)从机收到复位命令后回到监听地址状态
57、()从机收到复位命令后回到监听地址状态(SM2=1),否则开始),否则开始 接收数据和命令。接收数据和命令。2通信程序通信程序 00H为主机地址为主机地址, 01H,02H为从机设备地址为从机设备地址.FFH是命令各从机恢复是命令各从机恢复SM2=1的状态及复位。的状态及复位。主机的命令编码为:主机的命令编码为:01H请求从机接收主机的数据命令请求从机接收主机的数据命令02H请求从机向主机发送数据命令请求从机向主机发送数据命令从机的状态字节格式为:从机的状态字节格式为:ERR00000TRDYRRDYRRDY=1,从机准备好接收主机的数据。从机准备好接收主机的数据。TRDY=1,从机准备好向主
58、机发送数据。从机准备好向主机发送数据。ERR=1,从机接收到的命令是非法的。从机接收到的命令是非法的。程序可分成主机程序和从机程序,程序可分成主机程序和从机程序,约定一次传送的数据为约定一次传送的数据为16个字节,以个字节,以02H地址的从机为例。地址的从机为例。(1)主机程序(查询方式)主机程序(查询方式)主机程序流程图:主机程序流程图:串 行 口 初 始 化发 送 地 址从 机 应 答应 答 地 址 相 符发 送 命 令 字从 机 应 答命 令 正 确命 令 分 类从 机 就 绪从 机 就 绪接 收 数 据 块发 送 数 据 块命 令 从 机 复 位入 口返 回NNNNNYYNY收 ( 0
59、 2 H )发 ( 0 1 H )主机程序master.c如下:#include#define uchar unsigned char#define SLAVE 0 x02/从机地址从机地址#define BN 16uchar idata rbuf16;uchar idata tbuf16=“master transmit”;void err(void) SBUF=0 xff; while(TI! = 1);TI = 0; uchar master (uchar addr,uchar command) uchar aa,i,p;while (1) SBUF=SLAVE;/发呼叫地址发呼叫地址
60、while(TI!=1);TI=0; while(RI!=1);RI=0;/等待从机回答等待从机回答 if (SBUF!=addr) err();/若地址错,发复位信号若地址错,发复位信号 else TB8=0;/清地址标志清地址标志 SBUF=command; /发命令发命令 while(TI!=1);TI=0; while(RI!=1);RI=0; aa=SBUF; if(aa&0 x80)= =0 x80) TB8=1;/若命令未接收,发复位信号若命令未接收,发复位信号 err(); else if (command= =0 x01)/是发送命令是发送命令 if(aa&0 x01)= =0 x
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度红酒年份酒限量版包装设计合同
- 2025年度股权质押借款合同债权转让协议
- 2025年度企业内部控制体系设计合同模板
- 2025年度智能仓储货物承包运输合同模板
- 现代工厂的安全文化培育与推广策略
- (湘教版)七年级数学下册:6.1.3《众数》听评课记录
- 注塑成型技术下的产品质量控制策略
- 2025年度康复理疗中心运营管理咨询合同范本
- 2025年度脚手架材料采购及施工监理合同模板
- 2025年城市排水系统建设开工合同样本
- 护理人文知识培训课件
- 国家综合性消防救援队伍消防员管理规定
- 河南省三门峡市各县区乡镇行政村村庄村名居民村民委员会明细
- 2023年全国各地高考英语试卷:完形填空汇编(9篇-含解析)
- 五年级上册数学习题课件 简便计算专项整理 苏教版 共21张
- 疼痛科的建立和建设
- 运动技能学习PPT课件
- 第六编元代文学
- 高考语文古诗词必背重点提纲
- 超星尔雅学习通《大学生心理健康教育(兰州大学版)》章节测试含答案
- 2020译林版高中英语选择性必修二单词默写表
评论
0/150
提交评论