单片机第七章串行通信.ppt_第1页
单片机第七章串行通信.ppt_第2页
单片机第七章串行通信.ppt_第3页
单片机第七章串行通信.ppt_第4页
单片机第七章串行通信.ppt_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

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

文档简介

第7章串行接口与应用 7 1串行通信的基本知识7 2MCS 51单片机串行口的结构与工作原理7 3串行口工作寄存器7 4串行口工作方式7 5应用举例7 6多机通信 退出 7 1串行通信的基本知识 1 通信方式1 并行通信各数据位同时传送 其传送速度快 效率高 但并行数据传送有多少数据位就需要多少根数据线 成本高 比较适合近距离通信 2 串行通信则是数据传送按位顺序进行 最少只需一根传输线即可 成本低 速度慢 计算机与远程终端或终端与终端之间的数据传送通常部是串行的 图7 1所示为两种通信方式示意图 1 并行通信 2 串行通信 2 异步通信与同步通信方式异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程 为使双方的收发协调 要求发送和接收设备的时钟尽可能一致 同步通信时要建立发送方时钟对接收方时钟的直接控制 使双方达到完全同步 此时 传输数据的位之间的距离均为 位间隔 的整数倍 同时传送的字符间不留间隙 即保持位同步关系 也保持字符同步关系 发送方对接收方的同步可以通过这两种方法实现 异步通信是以字符 构成的帧 为单位进行传输 字符与字符之间的间隙 时间间隔 是任意的 但每个字符中的各位是以固定的时间传送的 即字符之间是异步的 字符之间不一定有 位间隔 的整数倍的关系 但同一字符内的各位是同步的 各位之间的距离均为 位间隔 的整数倍 异步传送的字符帧格式如图所示 一帧字符格式包括1位起始位 5 8位数据位 奇偶校验位和1位停止位 起始位为0 用于表示一个字符的开始 起始位之后传送数据位 在数据位中 低位在前 左 高位在后 右 数据位可以是5 6 7或8位 奇偶校验位用于对字符传送作正确性检查 有3种可能供选择 奇校验 偶校验和无校验 由用户根据需要选定 停止位在最后 用以标志一个字符传送的结束 它对应于1状态 停止位可能是1 1 5或2位 在实际使用根据需要确定 异步传送可以是连续的 也可以是断续的 且间隔时间可任意改变 间隔用空闲位1填充 在89S51单片机系统中 第九位数据D8可以用作奇偶校验位 也可以用作地址 数据帧标志 图7 2串行异步通信字符帧格式 异步通信有固定的字符帧 通信双方只需按约定的帧格式进行发送和接收数据 硬件结构比较简单 当平时不发送数据时 发送端应保持为1 数据接收端将不断检测接收的数据 若连续检测到1之后检测到0 则为新发送来的数据 应立即接收 在同步串行通信中 每一数据块开头时发送1至2个同步字符 使发送方与接收方保持同步 数据块的各个字符间去掉了起始位和停止位 其通信速度比较高 但其硬件结构也比较复杂 同步通信时 如果发送的数据块之间有间隔时间 则发送同步字符填充 2 数据传送方向1 单工单工是指数据传输仅能沿一个方向 不能实现反向传输 2 半双工半双工是指数据传输可以沿两个方向 但需要分时进行 3 全双工全双工是指数据可以同时进行双向传输 4 串行通信的传送速率比特率是每秒钟传输二进制代码的位数 单位是 位 秒 bps 如每秒钟传送240个字符 而每个字符格式包含10位 1个起始位 1个停止位 8个数据位 这时的比特率为 10位 240个 秒 2400bps波特率表示每秒钟调制信号变化的次数 单位是 波特 Baud 波特率和比特率不总是相同的 对于将数字信号1或0直接用两种不同电压表示的所谓基带传输 比特率和波特率是相同的 所以 我们也经常用波特率表示数据的传输速率 在串行通信中 数据位的发送和接收分别由发送时钟脉冲和接收时钟脉冲进行定时控制 时钟频率高 则波特率也高 通信速度就快 反之 时钟频率低 则波特率也低 通信速度就慢 7 2MCS 51单片机串行口的结构与工作原理 1 串行口的结构MCS 51单片机内部的串行接口是全双工的 即它能同时发送和接收数据 发送缓冲器只能写入不能读出 接收缓冲器只能读出不能写入 串行口还有接收缓冲作用 即从接收寄存器中读出前一个已收到的字节之前就能开始接收第二字节 两个串行口数据缓冲器 实际上是两个寄存器 通过特殊功能寄存器SBUF来访问 写入SBUF的数据储存在发送缓冲器 用于串行发送 从SBUF读出的数据来自接收缓冲器 两个缓冲器共用一个地址99H 特殊功能寄存器SBUF的地址 在串行口发送数据时 将CPU送来的并行数据转换成一定格式的串行数据 从引脚TXD P3 1 上按规定的波特率逐位输出 接收数据时 外部信号通过引脚RXD P3 0 输入 再将发送来的串行数据转换成并行数据 等待CPU读入 它的帧格式有8位 10位和11位 可以设置为固定波特率和可变波特率 给使用者带来很大的灵活性 在单片机中 主要适用异步传送方式 图7 3串行口结构框图 7 3串行口控制寄存器SCON和电源控制寄存器PCON1 串行口控制寄存器SCON串行口控制寄存器SCON决定串行口通信工作方式 控制数据的接收和发送 并标示串行口的工作状态等 其位格式为 1 SM0 SM1 串行口工作方式控制位 两位对应四种工作方式 如表7 1所示 fosc是晶振频率 2 SM2 多机通信控制位因多机通信是在方式2和方式3下进行 因此SM2位主要用于方式2和方式3 当串行口以方式2或方式3接收时 如果SM2 1 则只有当接收到的第九位数据 RB8 为1 才将接收到的前8位数据送SBUF 并置位RI产生中断请求 否则 将接收到的前8位数据丢弃 而当SM2 0 则不论第九位数据为0还是1 都将前8位数据装入SBUF中 并产生中断请求 在方式1时 当处于接收时 若SM2 1 则只有收到有效的停止位时 RI才置1 在方式0时 SM2必须为0 3 REN 允许串行口接收位REN 0 禁止串行口接收数据REN 1 允许串行口接收数据该位由软件置位或复位 4 TB8 发送数据第9位在方式2和方式3时 TB8的内容是要发送的第9位数据 在双机通信时 TB8一般作为奇偶校验位使用 在多机通信中 以TB8位的状态表示主机发送的是地址帧还是数据帧 且一般约定 TB8 0为数据帧 TB8 1为地址帧 该位由软件置位或复位 5 RB8 接收数据位8在方式2或方式3时 RB8存放接收到的第9位数据 代表着接收数据的某种特征 与TB8的功能类似 故应根据其状态对接收数据进行操作 6 TI 发送中断标志当方式0时 发送完第8位数据后 该位由硬件置位 在其它方式下 于发送停止位之前 该位由硬件置位 因此TI 1 表示帧发送结束 其状态既可供软件查询使用 也可请求中断 TI位须由软件清0 7 RI 接收中断标志当方式0时 接收完第8位数据后 该位由硬件置位 在其它方式下 当接收到停止位时 该位由硬件置位 因此RI 1 表示帧接收结束 其状态既可供软件查询使用 也可以请求中断 RI须由软件清0 2 电源控制寄存器PCON电源控制寄存器PCON中只有一位SMOD与串行口工作有关 它的位格式为 SMOD 波特率倍增位 串行口工作在方式1 方式2 方式3时 若SMOD 1 则波特率提高一倍 若SMOD 0 则波特率不提高一倍 单片机复位时 SMOD 0 7 4串行口工作方式89S51 S52单片机中的异步通信串行接口能方便地与其他计算机或传送信息的外围设备 如串行打印机 CPU终端等 实现双机 多机通信 单片机的串行口共有4种工作方式 工作方式0移位寄存器方式 可以通过外接移位寄存器芯片实现扩展并行I O接口的功能 工作方式1 工作方式2 工作方式3都是异步通信方式 工作方式1是8位异步通信接口 一帧信息由10位组成 用于双机串行通信 工作方式2 工作方式3都是9位异步通信接口 一帧信息中包括9位数据 1位起始位 1位停止位 工作方式2 工作方式3的区别在于波特率不同 主要用于多机通信 也可用于双机通信 7 4 1工作方式0在方式0下 串行口是作为同步移位寄存器使用 主要用于扩展并行I O口 波特率固定为fosc 12 这时数据由RXD P3 0 端输入和输出 由TXD P3 1 端提供移位时钟脉冲 移位数据的发送和接收以8位为一帧 低位在前高位在后 不设起始位和停止位 1 数据发送与接收在使用方式0进行数据的发送时 CPU将一个字节写入发送缓冲器SBUF TXD端输出同步时钟信号 串行口即以fosc 12的波特率将8位数据从RXD口输出 低位在前 高位在后 发送完后置位中断标志TI 在继续发送之前须由软件将中断标志位清0 在使用方式0进行数据的接收时 数据从RXD端输入 TXD端输出同步时钟信号 接收缓冲器以fosc 12的波特率接收数据 当接收缓冲器接收完8位数据后置位中断标志RI 在继续接收之前须由软件将中断标志位清0 REN位用于允许接收的控制 REN 0 禁止接收数据 REN l 允许接收数据 在方式0下不使用串行口控制寄存器SCON中的TB8位和RB8位 即发送或接收数据的第9位 且SM2位必须为0 方式0接收和发送电路 波特率的计算在串行通信中 收发双方对发送或接收数据的速率要有约定 通过软件可对单片机串行口编程为四种工作方式 其中方式0和方式2的波特率是固定的 而方式1和方式3的波特率是可变的 由定时器T1的溢出率来决定 串行口的四种工作方式对应三种波特率 由于输入的移位时钟的来源不同 所以 各种方式的波特率计算公式也不相同 方式0时 移位操作的波特率是固定的 为fosc 12 即一个机器周期进行一次移位 发送或接收一位数据 如fosc 12MHz 则波特率为1M bps 即1 s移位一次 方式0下波特率不受SMOD位的影响 7 4 2工作方式1方式l是10位为一帧的串行异步通信方式 共包括1个起始位 8个数据位和l个停止位 外部数据从引脚RXD输入 送入到接收缓冲器 需要发送的数据经过引脚TXD输出 方式1输出 1 数据发送与接收方式l的数据发送将数据写入发送缓冲器SBUF 随后在串行口由硬件自动加入起始位和停止位 构成一个完整的帧格式 然后在移位脉冲的作用下 由TXD端串行输出 一个字符帧发送完后 将SCON寄存器的TI置l 在中断方式下将申请中断 通知CPU可以发送下一个字符帧 接收数据时 SCON的REN位应处于允许接收数据状态下 串行口采样引脚RXD端 当采样到从l到0的状态跳变时 就认定是接收到起始位 随后在移位脉冲的控制下 把接收到的数据位移入接收缓冲器SBUF中 直到停止位到来之后将停止位送入到RB8中 并置位中断标志位RI 在中断方式下将申请中断 通知CPU从接收缓冲器SBUF取走接收到的一个字符 不管中断方式还是查询方式 硬件都不会自动清除RI和TI中断标志 须由用户用软件清0 方式1输入 2 方式2的波特率工作方式2时 移位脉冲由振荡频率fosc的第二节拍P2时钟 即fosc 2 给出 所以 方式2波特率取决于PCON中的SMOD位的值 当SMOD 0时 波特率为fosc的1 64 当SMOD 1时 波特率为fosc的1 32 用公式表示为 工作方式2波特率 2SMOD 64 fosc 2 波特率方式l的波特率则是可变的 以定时器T1作为波特率发生器使用 其波特率值由定时器1的计数溢出率来决定 其公式为 串行口方式1的波特率 定时器T1的溢出率其中SMOD为电源控制寄存器PCON的最高位 是串行口波特率的倍增位 当SMOD 1时 串行口波特率加倍 定时器T1的溢出率取决于计数速率和定时器的初值 计数速率与特殊功能寄存器TMOD中的C 位的状态有关 当C 0时 T1作为定时器 计数速率 fosc 12 当C 1时 T1作为计数器使用 计数速率取决于外部输入脉冲时钟频率 当定时器T1作波特率发生器使用时 通常选用工作方式2 即8位自动重加载方式 方便为定时器T1赋初值 在方式2下 TL1作为计数器使用 而预置初值放在TH1中 设计数初值为X 则每过 256 X 个机器周期 定时器T1就产生一次溢出 此时应禁止T1中断 则计数溢出周期为 256一X 溢出率为溢出周期的倒数 则波特率为 波特率 实际使用时 需要先确定波特率 再根据波特率计算定时器T1的计数初值 然后进行定时器的初始化 根据上述波特率计算公式 得出计数初值的计算公式为 X 256 选择定时器T1工作在方式2下 是因为方式2具有自动重载入功能 可避免通过程序反复装入初值所引起的定时误差 使波特率更加稳定 也更方便 表7 5列出了在选择定时器T1作为波特率发生器使用时 各种常用的波特率以及相应的控制位和时间常数 表7 5定时器T1的常用波特率 C 7 4 3工作方式2工作方式2是11位为一字符帧的串行异步通信方式 帧格式包括1个起始位 9个数据位和1个停止位 在方式2下 字符还是8个数据位 而第9数据位既可作奇偶校验位使用 也可作控制位使用 发送之前应先在串行口控制寄存器SCON的TB8位中准备好 其波特率与SMOD位有关 当将第9位数据写入TB8之后 向SBUF写入字符帧的8个数据位 启动串行口发送数据 一个字符帧发送完毕后 将TI位置1 方式2的接收过程与方式1基本类似 所不同的是在第9位数据上 串行口把接收到的8个数据送入SBUF 而把接收的第9数据送到RB8 根据SM2的状态和RB8的值确定串行口是否会置位中断标志位RI 如果SM2 0 则不论第九位数据为0还是1 都将前8位数据装入SBUF中 并产生中断请求 如果SM2 1 且接收到的第九位数据RB8 1时 将接收到的前8位数据送SBUF 并置位RI产生中断请求 这表示在多机通信时 接收到的信息为地址帧 此时将RI置1 接收发来的地址帧 如果SM2 1 且接收到的第九位数据RB8 0时 将接收到的前8位数据丢弃 这表示接收到的信息为数据帧 但不是发给本机的 此时RI不置1 串行口工作在方式2和方式3时会在多机通信一节讲述 在工作方式2和工作方式3时的情况如下表7 6所示 2 波特率方式2的波特率是固定的 且有两种 这与电源控制寄存器PCON中波特率倍增位SMOD的值有关 当SMOD 1时 波特率为晶振频率的1 32 当SMOD 0时 波特率为晶振频率1 64 用公式表示为 波特率 7 4 4工作方式3方式3同样是11位为一帧的串行通信方式 其通信过程与方式2完全相同 所不同的仅在于波特率 方式2的波特率只有固定的两种 而方式3的波特率则可由用户根据需要设定 其设定方法与方式l是一样的 即通过设置定时器T1的初值和波特率倍增位SMOD来设定波特率 7 5串行口应用举例 例7 1 设计一个发送程序 将片内RAM中50H 5FH中的数据串行发送 串行口设定为方式2状态 TB8作奇偶校验位 在数据写入发送缓冲器之前 先将数据的奇偶位P写入TB8 这时第9位数据作奇偶校验用 程序清单如下TRT MOVSCON 80H 方式2设定MOVPCON 80H 取波特率为fosc 32MOVR0 50HMOVR7 10H 数据长度10HLOOP MOVA R0 取数据送AMOVC PSW 0 MOVTB8 CMOVSBUF A 数据送SBUF 启动发送WAIT JBCTI CONT 判断发送中断标志SJMPWAITCONT INCR0DJNZR7 LOOPRET 例7 2 设计一个接收程序 将接收的16个字节数据送入片内RAM中50H 5FH单元中 设串行口方式3状态工作 波特率为2400 定时器 计数器1作波特率发生器时 SMOD 0 计数常数为0F4H 程序清单如下 RVE MOVTMOD 20H T1编程为方式2定时状态MOVTH1 0F4H 计数常数送T1MOVT11 0F4HSETBTR1 启动T1MOVR0 50HMOVR7 10H 数据长度lOH R7MOVSCON 0D0H 串行口编程方式3接收MOVPCON 00H 置SMOD 0WAIT JBCRI PRI 等待接收到数据SJMPWAIT PRI MOVA SBUF 奇偶校验判P RB8 JNBPSW 0 PNPJNBRB8 PERSJMPRIGHTPNP JBRB8 PERRIGHT MOV R0 A 数据送缓冲器INCR0DJNZR7 WAIT 判断数据块接收完否 CLRPSW 5 正确接收完16个字节置标志位RET 串行通信实例有两台8031单片机相距很近 直接将它们的串行口相连 1 机的TXD接2 机的RXD 2 机的TXD接1 机的RXD 二机的GND相连 二机的晶振频率均为11 0592MHZ 通信的波特率为4800bps 现将第一台8031单片机片内RAM40H 5FH单元内的数据 串行发送到第二台8031单片机片内RAM60H 7FH单元中 发送与接收的参考程序如下 1 单片机发送程序 ORG1000HTX MOVTMOD 02HMOVTH1 0FAHMOVTL1 0FAHMOVSCON 80H 设定工作方式2MOVPCON 00H 波特率为fosc 64SETBTR0 MOVR0 40H 设发送数据的地址指针MOVR2 20H 设发送数据长度LOOP MOVA R0 取发送数据送AMOVC PSW 0MOVTB8 C 奇偶位送TB8MOVSBUF A 启动发送WAIT JBCTI LL1 判发送中断标志SJMPWAIT LL1 INCR0DJNZR2 LOOPRET2 单片机接收程序 ORG1000HRX MOVTMOD 02HMOVTH1 0FAHMOVTL1 0FAHMOVSCON 90H 设定工作方式2 并允许接收 MOVPCON 00HSETBTR0MOVR0 60HMOVR2 20HLOOP JBCRI MM1 等待接收数据SJMPLOOPMM1 MOVA SBUF 读入一帧数据JBPSW 0 PP1 判接收端奇偶JBRB8 ERROR 判发送端奇偶SJMPRIGHT PP1 JNBRB8 ERROR 接收出错RIGHT MOV R0 A 接收正确INCR0DJNZR2 LOOPERROR SETBPSW 5 置出错标志RET 7 6多机通信单片机的多机通信是指一台主机和多台从机之间的通信 其连接如图7 12所示 89S51 S52单片机串行口方式2与方式3专门应用于多机通信 主机发送的信息可传送到各个从机或指定的从机 而各从机发送的信息只能被主机接收 各从机应当编址 以便主机能按地址寻找从机 多机通信主要靠主 从机之间正确地设置与判断多级通信控制位SM2和发送 接收到的第9位数据 多机通信时 主机向从机发送的信息分地址和数据两类 以第9数据位作区分标志 为0时表示数据 为1时表示地址 多机通信之前 需要给各个从机编址 以方便主机寻址 1 硬件连接单片机构成的多机系统常采用总线型主从式结构 所谓主从式 即在数个单片机中 有一个是主机 其余的是从机 从机要服从主机的调度 支配 80C31单片机的串行口方式2和方式3适于这种主从式的通信结构 当然采用不同的通信标准时 还需进行相应的电平转换 有时还要对信号进行光电隔离 在实际的多机应用系统中 常采用RS 485串行标准总线进行数据传输 通信开始 当主机欲与某个从机之间通信时 首先发送一个地址帧 主机发送时 通过设置TB8位的状态来表明发送的是地址还是数据 当TB8 1时 表示地址帧 当TB8 0时 表示数据帧 而在从机方面 为了接收信息 初始化时应把SCON的SM2位置l 由于SM2 1 此时接收到的第9数据位 即为主机发出的TB8 状态为1 即RB8 1 所以各从机都分别将数据送SBUF 并置位RI 发出中断请求 通过中断服务程序来判断主机发送的地址与本从机地址是否相符 若相符 则把该从机的SM2位清0 以准备接收其后传送来的数据 其余从机由于地址不符 则仍然保持SM2 1状态 此后主机发送数据帧 使TB8 0 虽然各从机都能接收到 但只有SM2 0的那个被寻址的从机才把数据送接收缓冲器SBUF 其余各从机皆因SM2 l和RB8 0 表示接收的信息为主机发给其他从机的数据 而将数据舍弃 这就是多机通信中主从机的通信情况 通信只能在主从机之间进行 如若进行两个从机之间的通信 需通过主机作中介才能实现 综上所述 把多机通信的过程总结如下 1 全部主 从机均初始化为工作方式2或方式3 置位SM2 1 允许串行口中断 2 主机置位TB8 1 发送要寻址的从机地址 3 所有从机均接收主机发送的地址 并各自进入中断服务程序 进行地址比较 4 被寻址的从机确认地址后 置本机SM2 0 并向主机返回地址供主机核对 如果地址不符合 该从机SM2位不变 5 主机核对无误后 向被寻址的从机发送命令 通知从机是进行数据接收或者数据发送 6 主从机之间进行数据通信 7 通信结束后 主 从机重置SM2 1 再进行下一次多机通信 2 软件实现主机程序清单 设从机地址号存于40H单元 命令存于41H单元 MAIN MOVTMOD 20H T1方式2MOVTH1 0FDH 初始化波特率9600MOVTL1 0FDHMOVPCON 00HSETBTR1MOVSCON 0F0H 串口方式3 多机 准备接收应答LOOP1 SETBTB8MOVSBUF 40H 发送预通信从机地址JNBTI CLRTIJNBRI 等待从机对联络应答CLRRIMOVA SBUF 接收应答 读至AXRLA 40H 判应答的地址是否正确JZAD OK AD ERR MOVSBUF 0FFH 应答错误 发命令FFHJNBTI CLRTISJMPLOOP1 返回重新发送联络信号AD OK CLRTB8 应答正确MOVSBUF 41H 发送命令字JNBTI CLRTIJNBRI 等待从机对命令应答CLRRIMOVA SBUF 接收应答 读至AXRLA 80H 判断应答是否正确JNZCO OKSETBTB8SJMPAD ERR 错误处理 CO OK MOVA SBUF 应答正确 判是发送还是接收命令XRLA 01HJZSE DATA 从机准备好接收 可以发送MOVA SBUFXRLA 02HJZRE DATA 从机准备好发送 可以接收LJMPSE DATARE DATA MOVR6 00H 清校验和接收16个字节数据MOVR0 30HMOVR7 10H LOOP2 JNBRI CLRRIMOVA SBUFMOV R0 AINCR0ADDA R6MOVR6 ADJNZR7 LOOP2JNBRI CLRRIMOVA SBUF 接收校验和并判断XRLA R6JZXYOK 校验正确MOVSBUF 0FFH 校验错误JNBTI CLRTILJMPRE DATA XYOK MOVSBUF 00H 校验和正确 发00HJNBTI CLRTISETBTB8 置地址标志LJMPRETENDSE DATA MOVR6 00H 发送16个字节数据MOVR0 30HMOVR7 10HLOOP3 MOVA R0MOVSBUF AJNBTI CLRTIINCR0ADDA R6MOVR6 ADJNZR7 LOOP3 MOVA R6MOVSBUF A 发校验和JNBTI CLRTIJNBRI CLRRIMOVA SBUFXRLA 00HJZRET END 从机接收正确SJMPSE DATA 从机接收不正确 重新发送RET END RET 从机程序清单 设本机号存于40H单元 41H单元存放 发送 命令 42H单元存放 接收 命令 MAIN MOVTMOD 20H 初始化串行口MOVTH1 0FDHMOVTL1 0FDHMOVPCON 00HSETBTR1MOVSCON 0F0HLOOP1 SETBEA 开中断SETBESSETBRRDY 发送与接收准备就绪SETBTRDYSJMPLOOP1 SERVE PUSHPSW 中断服务程序PUSHACCCLRESCLRRIMOVA SBUFXRLA 40H 判断是否本机地址JZSER OKLJMPENDI 非本机地址 继续监听SER OK CLRSM2 是本机地址 取消监听状态MOVSBUF 40H 本机地址发回JNBTI CLRTIJNBRI CLRRIJBRB8 ENDII 是复位命令 恢复监听MOVA SBUF 不是复位命令 判是 发送 还是 接收 XRLA 41HJZSERISE 收到 发送 命令 发送处理MOVA SBUFXRLA 42HJZSERIRE 收到 接收 命令 接收处理SJMPFFML 非法命令 转非法处理 SERISE JBTRDY SEND 从机发送是否准备好MOVSBUF 00HSJMPWAIT01SEND MOVSBUF 02H 返回 发送准备好 WAIT01 JNBTI CLRTIJNBRI CLRRIJBRB8 ENDII 主机接收是否准备就绪LCALLSE DATA 发送数据LJMPENDFFML MOVSBUF 80H 发非法命令 恢复监听JNBTI CLRTILJMPENDIISERIRE JBRRDY RECE 从机接收是否准备好MOVSBUF 00HSJMPWAIT02 RECE MOVSBUF 01H 返回 接收准备好 WEIT02 JNBTI CLRTIJNBRI CLRRIJBRB8 ENDII 主机发送是否就绪LCALLRE DATA 接收数据LJMPENDENDII SETBSM2ENDI SETBESEND POPACCPOPPSWRETI SE DATA CLRTRDY 发送数据块子程序MOVR6 00HMOVR0 30HMOVR7 10HLOOP2 MOVA R0MOVSBUF AJNBTI CLRTIINCR0ADDA R6MOVR6 ADJNZR7 LOOP2 数据块发送完毕 MOVA R6MOVSBUF AJNBTI 发送校验和CLRTIJNBRI CLRRIMOVA SBUFXRLA 00H 判发送是否正确JZSEND OKSJMPSE DATA 发送错误 重发 SEND OK SETBSM2 发送正确 继续监听SETBESRETRE DATA CLRRRDY 接收数据块子程序MOVR6 00HMOVR0 30HMOVR7 10H LOOP3 JNBRI CLRRIMOVA SBUFMOV R0 AINCR0ADDA R6MOVR6 ADJNZR7 LOOP3 接收数据块完毕 JNBRI 接收校验和CLRRIMOVA SBUFXRLA R6 判断校验和是否正确JZRECE OKMOVSBUF 0FFH 校验和错误 发FFHJNBTI CLRTILJMPRE DATA 重新接收 RECE OK MOVA 00H 校验和正确 发00HMOVSBUF AJNBTI CLRTISETBSM2 继续监听SETBESRET 6 3 2单片机与PC机的

温馨提示

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

评论

0/150

提交评论