已阅读5页,还剩81页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第9章 串行通信,9.1 串行通讯基本知识,数据通讯 传输方式 同步通讯和异步通讯 波特率:表示每秒钟传送二进制代码的位数,单位b/s,并行通讯,串行通讯,单向(单工)配置,全双向(全双工)配置,半双向(半双工)配置,1、并行通信和串行通信 通信的基本方式: 并行通信:数据的各位同时送出。传送距离:小于30米。 串行通信:数据的各位逐位送出,只需一对传送线即可完成传送。传送距离:几米几千公里。,2、串行通信 (1)串行通信的数据传送方向。 单工、半双工、全双工三种方式 (2)串行通信的工作方式 同步方式:数据按块传送,包括同步字符、数据块。 异步方式:数据按字符传送,每一个字符均按固定的 字符格式传送,又被称为帧,如图。包含字符的起始位、数据位、校验位、停止位四个部分。,异步通讯的一帧数据格式,同步传送的数据格式,单片机系统中的串行接口及特点,串行通讯可以实现单片机与单片机、单片机与微机之间的数据交换。 串行通讯电路简单,实现远距离低成本的数据传输。缺点是传输速度慢。 在一些系统中, 采用串行通讯的形式将多微处理器连接起来,构成一个完整的多CPU控制系统。,9.2 MCS-51串行口及应用,串行(异步)通信应用示意图,MCS-51 TXD (甲) RXD,RXD MCS-51 TXD (乙),TXD RXD,RXD TXD,RS-232 或485,RS-232 或485,TXD RXD,RS-232,PC机 COM1,COM2,单片机甲、乙之间近距离的直接通讯,单片机甲乙两地之间远距离通讯,单片机与PC机之间的数据通讯,8051串行口结构,9.2.1 与串口有关的寄存器 数据缓冲寄存器 SBUF 地址:99H,SBUF是用来存放发送和接收数据的寄存器, 对应两个独立的缓冲器。 CPU写SBUF就是开始发送数据(MOV SBUF,A); CPU读SBUF就是读取接收到的数据到A (MOV A,SBUF)。 该结构在硬件设计上保证了51单片机串行口是一个可同时发送与接收的”全双工”串口。,接收SBUF 移位寄存器,发送SBUF 移位寄存器,内部总线,CPU,MCS-51,RXD P3.0,TXD P3.1,SBUF硬件电路: 发送:执行指令MOV SBUF,A 接收:当检测到起始位电路自动启动接收。,串行口控制寄存器SCON 地址:98H,SM0 SM1: 串行口工作模式选择位。,RI :完成一帧数据接收标志,应软件清零,接收完成RI=1并申请中断(如果中断开放,则引发中断); TI :完成一帧数据发送标志, 应软件清零,发送完成TI=1同时申请中断(如果中断开放,则引发中断); RB8:在9位数据传送的模式2、3中,接收到的第9位数据; TB8:在9位数据传送的模式2、3中,将要发送的第9位数据; REN:允许接收位,REN=1时允许接收.由软件置位或清零。,SM2 :多机通信使能位. 1,模式0、1时: SM2不用,应设为0。 2,模式2、3时: SM2=0,无论RB8如何,RI都能被激活(RI=1)。 若SM2=1,收到的第9位(RB8)=0时,则RI不会被激活; 若SM2=1且RB8=1时,RI才能被激活=1并引发中断。 在接收方式时:当SM2=1时,能否接收到数据取决于对方发送的第9位数据RB8,可由发送方来控制接收方的数据接收。 此种方式(SM2=1)用于多机通信。,如何使用RI,TI标志完成接收、发送?,通信双方不是同步工作的,数据交换由各自SBUF进行。CPU不参与通信过程,只能通过标志了解SBUF的发送、接收的状态,以便决定后续操作。 RI(SCON.0):接收完成标志。 当SUBF从RXD接收完一个完整的数据帧时,RI=1。如果串口中断是开放的,则RI=1时会自动引发中断。用户可以通过中断服务程序将SBUF中的数据取出送累加器A。 MOV A,SBUF 中断方式接收数据; 也可以使用查询的方式对RI进行检测,如果RI=1则执行: MOV A,SBUF 否则等待 查询方式接收数据。,TI (SCON.1):发送完成标志。 当CPU执行:MOV SBUF,A 后,SBUF开始通过TXD向外发送数据。当完成一帧数据的发送后,TI=1。 如果系统中断是开放的,则TI=1会自动引发中断。用户可以通过中断服务程序向SBUF输送下一个数据: MOV SBUF, A 中断方式发送数据; 也可以使用查询的方式对TI进行检测,如果TI=1则执行: MOV SBUF , A 。否则等待 查询方式发送。,使用查询RI、TI标志方式进行发送与接收N个数据,CLR SCON .TI,数据送累加器A 修改数据区指针,mov sbuf,a,TI=1?,N个数据发送完?,YES,NO,YES,NO,发送数据的程序框图,SETB SCON .REN,mov a,sbuf,RI=1?,N个数据接收完?,YES,NO,YES,NO,CLR SCON .RI,A送数据区 修改数据指针,接收数据程序框图,PCON 地址:87H,9.2.2 串行通信工作模式,模式0以8位数据为一帧,不设起始位和停止位,先发送或接收最低位,其帧格式如下 模式1以10位为一帧传输,设由1个起始位,8个数据位,1个停止位 模式2和模式3以11位为1帧传输,设有1个起始位,8个数据位,1个附加第9位和1个停止位,串行口的模式0,特点:同步移位寄存器方式。波特率:固定为 fosc/12. RXD(P3.0):数据口线(发送和接收);先移数据的低位。 TXD(P3.1):移位脉冲输出端。 (注意:移位脉冲的频率就是模式0的波特率) 主要功能:使用串行口扩展并行口, 理论上可以扩展 n*8 位的并行口。,MCS-51 RXD TXD,Data 外部移位寄存器 cp,移位脉冲,串行数据,并行的数据(8位),模式0 电路框图,51内部总线,SBUF,零检测器,移位 时钟,START SHIFT 发送控制器 TXCLOCK TI SEND,D S Q CP,START RI RECEIVE RX 接收控制器 SHIFT CLOCK 1 1 1 1 1 1 1 0,输入移位寄存器,SBUF,51内部总线,读SBUF,写SBUF,S6,串行口中断,P3.0 RXD,P3.1 TXD,装载SBUF,REN /RI,P3.0 RXD,MOV SBUF,A,1,S6P2,模式0的发送与接收,单片机执行mov sbuf,a指令启动“发送控制器”开始发送。完毕,TI被置位。 在满足REN=1且RI=0的条件下(实际上是一条写SCON指令),就会引发一次接收过程。完毕,RI置位,向CPU发中断申请。,模式0的时序信号(发送),写SBUF,SEND,D1,D0,D2,D3,D4,D5,D6,D7,RXD端数据,SHIFT,TXD端同步脉冲,TI中断标志,mov sbuf,a 指令从发送到结束的10个机器周期,模式0的时序信号(接收),写SCON(RI=0),RECEIVE,SHIFT,RI,对RXD采样,TXD同步脉冲,RI中断标志,串行口模式1,特点:10位传输格式 (1个起始位+8个数据位+1个停止位); 用于通讯的异步方式; 可变波特率(定时器T1的溢出率来确定,所以在此种模式下,首先要对T1进行初始化以确定串行口的波特率)。 发送操作:在TI=0,执行mov sbuf ,a 指令后从TXD端开始发送数据。当发送完8位数据后自动的添加一个高电平的停止位,并将TI置位。,接收操作:在REN=1且RI=0的条件下进行。 串行口的接收控制器对RXD线进行采样,其采样频率是接收时钟的16倍。当连续8次采集到RXD线上为低电平时,检测电路便认定RXD线上有了“起始位”,在此后,便开始在每次第7 、 8 、9三个脉冲时进行RXD采样,采取“三中取二”的原则来确定接收的数据(如图所示)。 数据装载条件: 当接收到停止位时,必须满足:RI=0且SM2=0,才能把接收的数据送到SBUF中(停止位送SCON的RB8中,并使RI=1),否则数据丢失。 要想得到接收的数据,在接收前必须事先清零RI。,串行口模式1时数据帧格式及接收采样示意图,起始位,8位数据,停止位,对RXD线的数据以16倍速度采样,当连续8次采集到低电 平时,便确认起始位到来,在每个第7,8,9个脉冲对RXD采样 并采用“以三取二”来确定采集的数据,7.8.9,串行口模式1时序图,串行口模式2、3,特点:模式2、3都是11位传输格式 (1个起始位+9个数据位+1个停止位),它们的不同之处是波特率。 波特率: 模式2:固定为fosc/64或fosc/32。 (具体由PCON中的SMOD位来确定)。 模式3:可变,由定时器T1的溢出波特率来确定。,起始位,8+1位数据,停止位,第9 位,模式2、3的发送过程类似于模式1,唯一的区别在于数据帧中数据是9位。这样,在发送一帧数据时,CPU除了要把8位数据送SBUF外(mov sbuf,a),还要事先将第9位数据送到SCON.TB8中。 如:第9位(TB8 )=1时,SETB SCON.TB8 若第9位(TB8 )=0时:CLR SCON.TB8 例如: SETB SCON.TB8 或: CLR SCON.TB8 MOV SBUF,A MOV SBUF,A,模式2、3的接收过程也类似于模式1,不同的是:模式1时,SCON中的RB8是接收到的停止位(“1”);而模式2、3时,RB8是接收到的第9位。 在模式1,接收操作只有在RI=0,且REN=1时数据可以接收。而模式2、3的接收装载条件是: a)RI=0且SM2=0(与RB8的状态无关); 或: b)RI=0且RB8=1(SM2=1时)。 只有满足a)或满足b)的条件时,接收到的数据才能送到SBUF,并使RI=1激活,否则接收无效且RI不能置位。,RI=0是保证SBUF空(每次取走数据时通过软件复位RI,如果没有取走数据则RI=1),保证接收到的数据不丢失。 利用后一个条件SM2和RB8来控制接收,可用于多机通信。 令SM2=1可以利用接收到的RB8控制接收是否有效。 即 RB8=1时接收有效;RB8=0时接收无效。 SM2也称“多机通讯使能位” 。 在没有多机通信的场合,RB8可用于奇偶效验,以防止串行通信出错。,串行口模式2、3时数据帧格式,发送时:将SCON中的TB8作为第9位数据发送; 接收时:将接收来的第9位送到SCON中的RB8中。,起始位,9位数据,停止位,串行口模式2和模式3时序图,模式2、3的应用之一 带奇偶校验位的数据传送,奇偶校验:收到的第9位RB8是发送方送来的奇偶校验位。 在这种情况下必须令SM2=0,否则接收的校验位RB8=0时,将影响数据的接收(因为RB8有时为“1”,而有时为“0”)。 当接收数据后,对 PSW.0(P标志)和 RB8位进行判断。检查结果是否与约定的相符合。,例如:发送、接收双方约定为奇校验(数据中1的个数为奇): 则发送方的第9位要根据前8位数据来确定。 若发送的8位数据是:00011010 ,则TB8为0。 发送程序如下: : MOV C,P CPL C MOV TB8,C MOV SBUF,A :,接收时将 PSW.0(P标志)位与RB8进行“异或”,结果为1,说明校验结果正确。,利用模式2,3进行带奇校验的串行通讯程序流程图,数据送累加器A,PSW.P=1 ?,SET SCON.TB8,CLR SCON.TB8,MOV SBUF,A,TI=1 ?,CLR SCON.TI,YES,NO,NO,YES,发送端程序(原始TI=0),使用“查询法”编制的发送、接收程序,RI=1 ?,MOV A,SBUF,PSW.PRB8=1?,出错处理,CLR SCON.RI,YES,NO,接收端程序(原始RI=0),N,Y,数据送内存,模式2、3的应用之二 多机通信,如果系统采用多CPU结构,并且有一个做主机,其它为从机时,它们之间可以通过多机通信的方式进行数据交换。如:多路数据采集系统。 我们选一台单片机作为主机,专门负责接收从机传回的数据,并进行数据的后期处理(保存、打印和显示等); 而从机则完成对传感器的信号检测、A/D转换,最后将数据采用串行通讯的形式上传给主机。,传统方式的多路数据采集系统,单片机系统 或 微型计算机系统,传感器 1,传感器 2,传感器 3,传感器 4,传感器 N,接口 电路,引线 (模拟信号),机房 或 仪表室,检测现场,采用“智能传感器”组成的多路数据采集系统,主机,从机 N,从机 4,从机 3,从机 2,从机 1,串行数据线(2条),RXD,TXD,TXD,RXD,从机做智能传感器,多机通讯中SM2的设定,在模式2、3中, 1,SM2=0时:RB8=1或RB8=0 都可以激活RI。 2,SM2=1时:RB8=1才能激活RI。 RB8=0时,RI不能激活。,主从式多机通信原理,主机是通信的发起者,主机发送的数据可以传送到各个从机,从机发送的数据只能为主机接收,从机之间不能直接通讯。 主机和从机的串口设置为模式2或3,其中主机的SM2=0,从机的SM2=1。 第九位数据用来作为地址数据标识位, RB8=1时为地址帧, RB8=0时为数据帧。从机的SM2=1时,当收到的RB8=1(地址帧)时,RI可以激活;如果RB8=0(数据帧),则RI不能激活。,主机首先通过发送地址码来寻找从机(地址码的特征是第9位数据为“1” ),所以所有的从机都能接收到主机发出的地址码(因为从机的RI=0,SM2=1,RB8=1),并使RI=1引发中断。从机在中断服务程序中,将接收到地址码与自己的地址进行比较,被选中的从机将自己的SM2=0;而未被选中的从机仍保持SM2=1,并退出中断服务程序。 当主机找到从机后,开始向从机发数据、命令(其特征为第9位=0)。由于被选中的从机SM2=0,所以尽管接收到的RB8=0,同样可以激活从机的RI,使其以查询的方式接收主机发出的数据或命令。当主机与从机的通讯完成后,从机再将其SM2=1,并退出中断服务程序。主机重新发出另一个从机的地址,所有从机可以马上响应并接收地址信息 。,通信过程,模式2、3使用时要注意的问题,在模式2、3中,可以实现较为特殊的通信方式,如带校验位的9位传送、多机通讯。注意:当SM2=0时,只能采用查询方式?,9.2.3波特率的设计,模式0的波特率=fosc/12 模式2的波特率= 模式1和模式3的波特率=,波特率及定时器T1的设定,在异步通信中,发送方与接收方是两个互相独立的系统,它们的系统时钟可以各不相同,此时确保通信正确的条件是: 1、要有相同的字符帧格式; 2、要有相同的波特率。 MCS-51单片机的串行口四种模式其波特率各不相同。其中模式1、3的波特率就是由定时器T1的溢出率来决定的(PCON中的SMOD=1波特率加倍)。,如何设定波特率?,在编制串行口通讯(模式1、3)程序时,在程序的初始化中,通过T1进行波特率的设定,既对T1进行初始化。 T1初始化的主要任务是: 1、设置T1的工作方式为定时(C/T=0); 工作模式为模式2 :自动重装。 2、计算定时常数并分别送给TH1、TL1。 波特率计算公式: T1溢出率:=(计数速率)/ 256-(TH1) = (fosc/12) / 256-(TH1),根据波特率求定时器T1初值计算公式,设:fosc为系统时钟频率,TH1为定时器T1的初值,B为波特率。 可以推出初值: TH1=256- fosc/(384B) ; (SMOD=0时) 或: TH1=256- fosc/(192B) ; (SMOD=1时) 【举例】设系统时钟为11.059MHz,要求波特率为1200Hz,求TH1。 【解】设:SMOD=0,用上述公式 TH1=256-11.059MHz /(384X1200)=232=0E8H 注意:1、根据波特率计算定时器初值会存在一定的误差。 2、选用11.0592MHz晶振是为了产生精确的波特率。,9.2.4 串行口的应用,在编制串行通信程序时,通信双方必须保证: 1、相同的“波特率” ; 2、相同的“字符帧格式”格式。 若采用1和3模式,则波特率可变且由定时器T1来作波特率发生器,所以根据波特率计算T1的初值,是串口程序初始化任务之一。 在通信过程中,对标志(RI、TI)的判断是控制通信全过程的关键环节。,串行口模式0的应用扩展并行接口,外接串入-并出或并入-串出器件可实现I/O的扩展,74LS164 (串人/并出),74LS165(并入/串出),例9-2: 8031串行口外接CD4049或164串入-并出移位寄存器扩展8位并行口,8位并行口的每位都接一个发光二极管,要求发光二极管从左到右以一定延迟轮流显示,并不断循环. 电路参见 P195 图9-17,例9-2程序 ORG 0023H AJMP SBR ;转中断服务 ORG 2000H MOV SCON #00H MOV A,#80H ;最左一位LED先亮 CLR P1.0 ; 关闭并行输出 MOV SBUF,A LOOP: SJMP $ SBR: SETB P1.0 ;启动并行输出 ACALL DELAY CLR TI RR A CLR P1.0 MOV SBUF,A RETI,例9-3: 用8051串行口外加移位寄存器CD4014(或165,166)扩展8位输入口,输入数据由8个开关提供,另有一个开关K提供联络信号,当K=0时,表示要求输入数据,输入的8位为开关量,提供逻辑模拟子程序的输入信号. 电路参见 P196 图9-18,用 8051 串行口外接 74LS165 移位寄存器扩展8位输入口, 输入数据由 8 个开关提供, 另有一个开关 K提供联络信号。电路示意如图 所示。当开关K合上时, 表示要求输入数据。输入 8 位开关量, 处理不同的程序。,程序如下: START: JB P1.0, $ ; 开关K未合上, 等待 SETB P1.1 ; 165并行输入数据 CLR P1.1 ; 开始串行移位 MOV SCON, 10H ; 串行口模式 0并启动接收 JNB RI, $ ; 查询RI CLR RI ; 查询结束, 清RI MOV A, SBUF ; 输入数据 ; 根据 A处理不同任务 SJMP START ; 准备下一次接收。,例9-3程序 START: MOV SCON,#10H;模式0,允许接收 JB P1.1,$ ;开关K未闭合,等待 SETB P1.0 ;并行置入数据 CLR P1.0 ;开始串行移位 JNB RI,$ CLR RI MOV A,SBUF ACALL LOGSIM ;进行逻辑模拟 SJMP START,串行口模式1的发送和接收 例9-4:8031串行口按双工方式收发ASCII码,最高位用来作奇偶校验位,采用奇检验模式,要求传送的波特率为1200b/s.编写有关通讯程序. 已知:fosc=6MHz,例9-4: MOV TMOD,#20H MOV TL1,#0F3H MOV TH1,#0F3H SETB TR1 MOV SCON,#50H MOV R0,#20H MOV R1,#40H ACLALL SOUT SETB ES SETB EA LOOP: SJMP $ ;Interrupt server ORG 0023H AJMP SBR1 ORG 0100H SBR1: JNB RI,SEND ACALL SIN SJMP NEXT SEND: ACALL SOUT NEXT: RETI,SOUT: CLR TI MOV A,R0 MOV C,P CPL C MOV ACC.7 INC R0 MOV SBUF,A RET SIN: CLR RI MOV A,SBUF MOV C,P CPL C ;没有检查奇偶校验是否正确 ANL A,#7FH MOV R1,A INC R1 RET,例9-5: 采用查询方式由串行口发送带奇偶校验位的数据块 ASCII码、32字节 1200b/s fosc=11.059MHZ 例9-6: 采用查询方式由串行口接收带奇偶校验位的数据块,要求同上。,例9-5: MOV TMOD,#20H MOV TL1,#0E8H MOV TH1,#0E8H ;波特率的设定 SETB TR1 MOV SCON,#01000000B MOV R0,#20H ;数据块起始地址 MOV R7,#32 LOOP: MOV A,R0 ACALL SP_OUT JNB P,ERROR ;发送程序该判断可不要? INC R0 DJNZ R7,LOOP SP_OUT: MOV C,P CPL C ;奇校验 MOV ACC.7,C MOV SBUF,A ;发送数据 JNB TI,$ CLR TI RET,MOV TMOD,#20H MOV TL1,#0E8H MOV TH1,#0E8H SETB TR1 MOV SCON,#01010000B MOV R0,#20H MOV R7,#32 LOOP:ACALL SP_IN JC ERROR MOV R0,A INC R0 DJNZ R7,LOOP,接收子程: SP_IN: JNB RI,$ CLR RI MOV A,SBUF MOV C,P CPL C ANL A,#7FH RET ERROR: (略),例9-6:,串行口模式2、模式3的发送和接收 例9-8: 用第9个数据位作奇偶校验位,编写串行口模式2的发送程序 例9-9: 用第9个数据位作奇偶校验位,编写串行口模式2的接收程序,例9-8:,TRT: MOV SCON,#80H MOV PCON,#80H MOV R0,#50H ;首地址 MOV R7,#10H ;长度 LOOP:MOV A,R0 MOV C,PSW.0 MOV TB8,C ;偶校验 MOV SBUF,A WAIT: JBC TI,CONT SJMP WAIT CONT:INC R0 DJNZ R7,LOOP RET,例9-9:,RRR: MOV SCON,#90H MOV PCON,#80H LOOP: JBC RI,RECEIV SJMP LOOP RECIEV: MOV A,SBUF JB PSW.0,ONE JB RB8,ERR SJMP RIGHT ONE: JNB RB8,ERR ;? RIGHT: ERR:,思考:多机通信中第9位不能用于校验,应采用何种校验方式?,如累加和校验 累加和:对所有要发送的数据在发送的同时进行累加。取其累加和的低8位(大于255的舍去),即单字节。 发送方在发送完所有数据后,将单字节的累加和也发出。 接收方在接收数据时,对接收到的每一个数据也进行累加操作。数据接收完成后,将自行计算的累加和与最后收到的发送方送来的发送累加和进行比较。如果两个累加和一致,则认为数据传送正确。,应用举例:使用模式3进行多机通讯,主机,从机 N,从机 4,从机 3,从机 2,从机 1,串行数据线(2条),主机可以与所有从机通讯,而从机之间不能通讯。,多机通讯中主机与从机之间的控制、状态信息,主机的控制命令: 00H 主机发送,从机接收; (控制从机的操作) 01H 主机接收,从机发送。 从机状态字:从机向主机发送的用于表征从机工作状态的信息(如下图)。,0:合法命令 0:发送未就绪 0:接收未就绪 1:非法命令 1:发送就绪 1:接收就绪,从机返回的状态字,主机程序框图,T1为定时,模式2,B=1200,启动T1,设串口为模式3 REN=1,SM2=0 TB8=1,设定程序数据: R0R5,停机,MCOMMU,从机应答?,地址相符?,发送命令字(TB8=0),从机应答?,命令正确?,命令分类,从机接收就绪?,从机发送就绪?,RET,命令从 机复位 发FFH,N,N,Y,Y,N,N,Y,Y,N,N,Y,Y,接收,发送,调用MCOMMU,接收数据块,发送数据块,发送从机地址,一:主机程序(初始化部分),ORG 2000H START:MOV TMOD,#20H ;定时器T1为模式2(8位自动重装) MOV TH1,#0F4H MOV TL1,#0F4H ;波特率为1200(设外接MHz晶体) SETB TR1 ;启动T1 MOV SCON,#0D8H ;串口为模式3,REN=1,SM2=0,TB8=1 MOV PCON,#00H ;设PCON中的SMOD=0 MOV R0,#40H ;发送数据块首地址送R0指针 MOV R1,#20H ;接收数据块首地址送R1指针 MOV R2,#SLAVE ;被寻从机地址送R2 MOV R3,#00H ;主发、从收命令。或主收、从发命令/#01H MOV R4,#14H ;发送数据块长度送R4(20)计数器 MOV R5,#14H ;接收数据块长度送R5(20)计数器 ACALL MCOM ;调用主机通讯子程序 SJMP $,二:主机通讯子程序( MCOM),ORG 2100H MCOM: MOV A,R2 ;取从机地址 MOV SBUF,A JNB RI,$ ;注意:为什么判断RI而不是TI ? CLR RI MOV A,SBUF ;取从机的返回地址 XRL A,R2 ;核对两个地址 JZ MTXD2 ;相符时,转MTXD2 MTXD1:MOV SBUF,#0FFH ;返回地址错误时,发送从机复位信号 SETB TB8 ;设定地址标志 SJMP MCOM ; 重发从机地址,所有从机重新判断地址 MTXD2:CLR TB8 ;将TB8=0,准备发送命令 MOV SBUF,R3 ;送出命令 JNB RI,$ ;等待从机应答 CLR RI ;从机应答后清标志 MOV A,SBUF ;接收从机应答命令 JNB ACC.7,MTXD3 ;命令无错时,则命令分类 SJMP MTXD1 ;命令错返回重新联络,MTXD3:CJNE R3,#00H,MRXD ;从机发送主机接收时,转MRXD JNB ACC.0,MTXD1 ;从机接收时,若从机未准备好转回 MTXD4:MOV SBUF,R0 ;若从机准备好,则开始发送 JNB TI,$ CLR TI INC R0 DJNZ R4,MTXD4 RET MRXD: JNB ACC.1,MTXD1 ;从机发送未准备好返回 MRXD1:JNB RI,$ ;等待接收 CLR RI MOV A,SBUF INC R1 ;接收数据区指针加一 DJNZ R5,MRXD1 ;未接收完则继续(R5接收数据计数器) RET END,0:合法命令 0:发送未就绪 0:接收未就绪 1:非法命令 1:发送就绪 1:接收就绪,从机主程序框图,T1为定时,模式2,B=1200,启动T1,设串口为模式3 REN=1,SM2=1 TB8=1,设定程序参数: R0R3,开串行口中断,动态停机 等待主机发送地址码,保护现场,接收地址符合本机?,向主机回送本机地址,接收下一字符,是命令吗?,命令分类,本机发送准备就绪?,本机接收准备就绪?,发TRDY=1状态字,发RRDY=1状态字,发送数据,接收数据,发送完?,接收完?,恢复现场返回,N,N,Y,Y,发送命令,接收命令,非法命令,送TRDY=0,送RRDY=0,N,N,N,Y,中断服务程序,N,Y,接收FFH时,ORG 0000H LJMP START ORG 0023H LJMP 0100H ORG 0040H START:MOV TMOD,#20H ;设定定时器T1为模式2 MOV TH1,#0F4H ;设定波特率为1200 MOV TL1,#0F4H SETB TR1 ;启动定时器T1 MOV SCON,#0F8H ;设串口模式3,REN=1,SM2=1,TB8=1 MOV PCON,#00H MOV R0,#20H ;R0指向发送数据块首地址 MOV R1,#40H ;R1指向接收数据块首址 MOV R2,#14H ;R2赋发送数据块长度 MOV R3,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度五方合伙投资项目选择协议
- 2024年商务出行租赁车协议
- 北师大版五年级下册数学期中考试试卷及答案
- 数学-杭州二中2024学年第一学期高一年级期中考试试卷和解析
- 2024年家用设施维修保养服务合同
- 2024年度智能仓储物流安防系统部署合同
- 2024年影视作品改编权许可使用协议
- 2024年二手房诚意金合同填写指南
- DB4117T 301-2020 马铃薯机械化设施栽培技术规程
- DB41T 1163-2015 球茎甘蓝种植技术规程
- 气液两相流-第2章-两相流的基本理论课件
- 学会宽容善待他人
- 算法及其描述-高中信息技术粤教版(2019)必修1
- RITTAL威图空调中文说明书
- 生物质能发电技术应用中存在的问题及优化方案
- GA 1809-2022城市供水系统反恐怖防范要求
- 幼儿园绘本故事:《老虎拔牙》 课件
- 2021年上半年《系统集成项目管理工程师》真题
- GB/T 706-2008热轧型钢
- 实验六 双子叶植物茎的初生结构和单子叶植物茎的结构
- GB/T 25032-2010生活垃圾焚烧炉渣集料
评论
0/150
提交评论