第6章 串行接口.ppt_第1页
第6章 串行接口.ppt_第2页
第6章 串行接口.ppt_第3页
第6章 串行接口.ppt_第4页
第6章 串行接口.ppt_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

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

文档简介

基本概念MCS 51的串行接口单片机之间的通信程序设计RS 232接口 第6章串行接口 本章内容 SingleChipMicrocomputer 6 1串行通信基础 串行通信和并行通信 并行通信 数据的各位同时传送 串行通信 数据一位一位顺序传送 与并行通信相比 串行通信的优势 传输距离长 可达到数千公里抗干扰能力强 串行通信信号间的互相干扰完全可以忽略 费用低 串行通信数据传输形式 异步 AsynchronousCommunication 同步 SynchronousCommunication 串行通信的方式 单工 a 半双工 b 和全双工 c simplexhalfduplexfullduplex 串行通信的数据传输形式 异步通信方式 单片机的串行通信使用的是异步串行通信 异步通信是指发送方和接收方采用独立的时钟 即双方没有一个相同的参考时钟作为基准 在异步通信中数据一般以一个字符为单位进行传送 用一帧来表示一个字符 一帧信息由起始位 为0信号 占1位 数据位 传输时低位在先 高位在后 奇偶较验位 可要可不要 和停止位 为1信号 可1位 1位半或2位 组成 同步通信方式 在同步通信中 每个数据块的开头以同步字符SYN加以指示 使发送与接受双方取得同步 数据块的各字符之间没有起始位和停止位 提高了通信的速度 但为了能保持同步传送 在同步通信中须用一个时钟来协调收发器的工作 这就增加了设备的复杂性 字符格式双方要事先约定字符的编码形式 奇偶校验形式及起始位和停止位的规定 例如用ASCII码通信 有效数据为7位 加一个奇偶校验位 一个起始位和一个停止位共10位 波特率波特率就是数据的传送速率 即每秒钟传送的二进制位数 单位为位 秒 它与字符的传送速率 字符 秒 之间有以下关系 波特率 1个字符的二进制编码位数 字符 秒注 在异步通信中 通信双方必须事先约定字符格式和波特率 异步串行通信基础 异步串行通信协议 串行通信的基本特征是数据逐位顺序进行传送串行通信的格式及约定 如 同步方式 通讯速率 数据块格式 信号电平 等 不同 形成了多种串行通信的协议与接口标准 常见的有 通用异步收发器 UART 通用串行总线 USB I2C总线 CAN总线 SPI总线 RS 485 RS 232C RS422A标准 等等 6 2MCS 51的串行接口 概述有一个可编程全双工串行通信接口 UART UniversalAsychronousReceiver Transmitter 管脚 TXD P3 1 RXD P3 0 可同时发送 接收数据 Transmit Receive 有四种工作方式 帧格式有8 10 11位 波特率 Baudrate 可设置波特率 每秒钟传送二进制数码的位数 也叫比特数 单位为b s 即位 秒 MCS 51串行接口的结构 MCS 51串行接口寄存器 SBUF 串行口数据缓冲器共两个 一个发送寄存器SBUF 一个接收SBUF 二者共用一个地址99H SCON 串行口控制寄存器PCON 电源及波特率选择寄存器 发送时 只需将发送数据输入SBUF CPU将自动启动和完成串行数据的发送 接收时 CPU将自动把接收到的数据存入SBUF 用户只需从SBUF中读出接收数据 1 串行数据缓冲器SBUF 在逻辑上只有一个 既表示发送寄存器 又表示接收寄存器 具有同一个单元地址99H 用同一寄存器名SBUF 在物理上有两个 一个是发送缓冲寄存器 另一个是接收缓冲寄存器 指令MOVSBUF A启动一次数据发送 可向SBUF再发送下一个数指令MOVA SBUF完成一次数据接收 SBUF可再接收下一个数 2 串行控制寄存器SCON SM0SM1 串行口工作方式选择位 SM2 多机通信控制位 REN 允许接收控制位 REN 1 允许接收 TB8 方式2和方式3中要发送的第9位数据 RB8 方式2和方式3中要接收的第9位数据 TI 发送中断标志 RI 接收中断标志 SM0SM1 串行口工作方式选择位 其状态组合所对应的工作方式如表7 5所示 SM2 多机通信控制位 在方式2和方式3中 若SM2 1 且RB8 接收到的第9位数据 1时 将接收到的前8位数据送入SBUF 并置位RI产生中断请求 否则 将接收到的8位数据丢弃 而当SM2 0时 则不论第9位数据为0还是为1 都将前8位数据装入SBUF中 并产生中断请求 在方式0时 SM2必须为0 REN 允许接收控制位 REN位用于对串行数据的接收进行控制 REN 0 禁止接收 REN 1 允许接收 该位由软件置位或复位 TB8 方式2和方式3中要发送的第9位数据 在方式2和方式3时 TB8是发送的第9位数据 在多机通信中 以TB8位的状态表示主机发送的是地址还是数据 TB8 0表示数据 TB8 1表示地址 该位由软件置位或复位 TB8还可用于奇偶校验位 RB8 方式2和方式3中要接收的第9位数据 在方式2或方式3时 RB8存放接收到的第9位数据 TI 发送中断标志 当方式0时 发送完第8位数据后 该位由硬件置位 在其他方式下 遇发送停止位时 该位由硬件置位 因此TI 1 表示帧发送结束 可软件查询TI位标志 也可以请求中断 TI位必须由软件清0 RI 接收中断标志 当方式0时 接收完第8位数据后 该位由硬件置位 在其他方式下 当接收到停止位时 该位由硬件置位 因此RI 1 表示帧接收结束 可软件查询RI位标志 也可以请求中断 RI位也必须由软件清0 接收 发送数据 无论是否采用中断方式工作 每接收 发送一个数据都必须用指令对RI TI清0 以备下一次收 发 3 电源控制寄存器PCON 1 SMOD 1 串行口波特率加倍 PCON寄存器不能进行位寻址 SMOD 在串行口工作方式1 2 3中 是波特率加倍位 1时 波特率加倍 0时 波特率不加倍 在PCON中只有这一个位与串口有关 6 3 串行口的工作方式80C51串行通信共有4种工作方式 由串行控制寄存器SCON中SM0SM1决定 1 串行工作方式0 同步移位寄存器工作方式 以RXD P3 0 端作为数据移位的输入 输出端 以TXD P3 1 端输出移位脉冲 移位数据的发送和接收以8位为一帧 不设起始位和停止位 无论输入 输出 均低位在前高位在后 其帧格式为 1 发送数据将数据写入发送缓冲器SBUF后 TXD端输出移位脉冲 串行口把SBUF中的数据依次由低到高以fosc 12的波特率从RXD端输出 一帧数据发送完毕后硬件置发送中断标志位TI为1 若要再次发送数据 必须用指令将TI清零 接收数据在RI 0的条件下 用指令置REN 1即可开始串行接收 TXD端输出移位脉冲 数据依次由低到高以fosc 12的波特率经RXD端接收到SBUF中 一帧数据接收完成后硬件置接收中断标志位RI为1 若要再次接收一帧数据 应该用指令MOVA SBUF将上一帧数据取走 并用指令将RI清零 方式0工作时 多用查询方式编程 发送 MOVSBUF AJNBTI CLRTI 接收 JNBRI CLRRIMOVA SBUF 注 复位时 SCON被清零 工作方式的缺省值为方式0 接收前 务必先置位REN 1方允许接收数据 数据发送 在移位时钟脉冲 TXD 的控制下 数据从串行口RXD端逐位移入74HC164SA SB端 当8位数据全部移出后 SCON寄存器的TI位被自动置1 其后74HC164的内容即可并行输出 74HC164CLR为清0端 输出时CLR必须为1 否则74HC164Q0 Q7输出为0 串行口作为并行输出口使用时 要有 串入并出 的移位寄存器配合 例如CD4094或74HCl64 4 方式0可将串行输入输出数据转换成并行输入输出数据 2 数据接收 串行口作为并行输入口使用时 要有 并入串出 的移位寄存器配合 例如CD4014或74HCl65 74HC165S L端为移位 置入端 当S L 0时 从Q0 Q7并行置入数据 当S L 1时 允许从QH端移出数据 在80C51串行控制寄存器SCON中的REN 1时 TXD端发出移位时钟脉冲 从RXD端串行输入8位数据 当接收到第8位数据D7后 置位中断标志RI 表示一帧数据接收完成 应用举例 例6 1 电路如图所示 试编制程序按下列顺序要求每隔0 5秒循环操作 从右向左依次点亮 每次亮一个 从左向右依次点亮 每次增加一个 直至全部点亮 返回从 不断循环 8个发光二极管全部点亮 从左向右依次暗灭 每次减少一个 直至全灭 从左向右依次点亮 每次亮一个 解 编程如下 LIGHT MOVSCON 00H 串行口方式0CLRES 禁止串行中断MOVDPTR TAB 置发光二极管亮暗控制字表首址LP1 MOVR7 0 置顺序编号0LP2 MOVA R7 读顺序编号MOVCA A DPTR 读控制字CLRP1 0 关闭并行输出 STR O时 关闭并行输出 MOVSBUF A 启动串行发送JNBTI 等待发送完毕CLRTI 清发送中断标志SETBP1 0 开启并行输出 STR 1时 开启并行输出 LCALLDLY500ms 调用延时0 5秒子程序INCR7 指向下一控制字CJNER7 30 LP2 判循环操作完否 未完继续SJMPLP1 顺序编号0 29依次操作完毕 从0开始重新循环 TAB DB0FFH 7FH 3FH 1FH 0FH 07H 03H 01H 00H 从左向右依次暗灭 每次减少一个 直至全灭 DB80H 40H 20H 10H 08H 04H 02H 01H 从左向右依次点亮 每次亮一个DB02H 04H 08H 10H 20H 40H 80H 从右向左依次点亮 每次亮一个DB0C0H 0E0H 0F0H 0F8H 0FCH 0FEH 从左向右依次点亮 每次增加一个 直至全部点亮 例 电路如图所示 试编制程序输入K1 K8状态数据 并存入内RAM40H 解 编程如下 KIN MOVSCON 00H 串行口方式0CLRES 禁止串行中断CLRP1 0 锁存并行输入数据SETBP1 0 允许串行移位操作SETBREN 允许并启动接收 TXD发送移位脉冲 JNBRI 等待接收完毕MOV40H SBUF 存入K1 K8状态数据RET 工作方式 一帧数据有1O位 1位起始位 低电平信号 8位数据位 先低位后高位 1位停止位 高电平信号 波特率可变 由定时器 计数器T1的溢出率和SMOD PCON 7 决定 其格式如下 1 发送数据将数据写入发送缓冲器SBUF后 在串行口由硬件自动加入起始位和停止位来构成完整的字符帧 并在移位脉冲的作用下将其通过TXD端向外串行发送 一帧数据发送完毕后硬件自动置TI 1 再次发送数据前 用指令将TI清零 接收数据在REN 1的条件下 串行口采样RXD端 当采样到从1向0的状态跳变时 就认定为已接收到起始位 随后在移位脉冲的控制下 数据从RXD端输入 在方式1接收数据时 必须同时满足以下两个条件 RI 0 SM2 0或接收数据的停止位为1 若有任一条件不满足 则所接收的数据帧就会丢失 在满足上述接收条件时 接收到的8位数据位进入接收缓冲器SBUF 停止位送入RB8 并置中断标志位RI 1 再次接收数据前 需用指令将RI清零 在实际应用时 通常是先确定波特率 后根据波特率求T1定时初值 因此上式又可写为 波特率 方式1波特率可变 由定时 计数器T1的计数溢出率来决定 波特率 2SMOD T1溢出率 32 其中SMOD为PCON寄存器中最高位的值 SMOD 1表示波特率倍增 当定时 计数器T1用作波特率发生器时 通常选用定时初值自动重装的工作方式2 其计数结构为8位 假定计数初值为X 单片机的机器周期为T 则定时时间为 256 X T 从而在1s内发生溢出的次数 即溢出率 为 波特率 2SMOD 32 T1的溢出率 波特率 2SMOD 32 T1的溢出率 溢出率 T1溢出的频繁程度即 T1溢出一次所需时间的倒数 初值X 2n 2SMOD fosc32 波特率 12 波特率 2SMOD fosc32 12 2n X 其中 X是定时器初值 应用举例 例6 3 设甲乙机以串行方式1进行数据传送 fosc 11 0592MHz 波特率为1200b s 甲机发送的16个数据存在内RAM40H 4FH单元中 乙机接收后存在内RAM50H为首地址的区域中 T1初值 256 232 E8H 32 12 1200 解 串行方式1波特率取决于T1溢出率 设SMOD 0 计算T1定时初值 11059200 20 甲机发送子程序 MOVTMOD 20H 置T1定时器工作方式2MOVTL1 0E8H 置T1计数初值MOVTH1 0E8H 置T1计数重装值CLRET1 禁止T1中断SETBTR1 T1启动MOVSCON 40H 置串行方式1 禁止接收MOVPCON 00H 置SMOD 0 SMOD不能位操作 CLRES 禁止串行中断MOVR0 40H 置发送数据区首地址MOVR2 16 置发送数据长度MOVA R0 读一个数据MOVSBUF A 发送JNBTI 等待一帧数据发送完毕CLRTI 清发送中断标志INCR0 指向下一字节单元DJNZR2 TRSA 判16个数据发完否 未完继续RET TXDA TRSA MOVTMOD 20H 置T1定时器工作方式2MOVTL1 0E8H 置T1计数初值MOVTH1 0E8H 置T1计数重装值CLRET1 禁止T1中断SETBTR1 T1启动MOVSCON 40H 置串行方式1 禁止接收MOVPCON 00H 置SMOD 0 SMOD不能位操作 CLRES 禁止串行中断MOVR0 50H 置接收数据区首地址MOVR2 16 置接收数据长度SETBREN 启动接收JNBRI 等待一帧数据接收完毕CLRRI 清接收中断标志MOVA SBUF 读接收数据MOV R0 A 存接收数据INCR0 指向下一数据存储单元DJNZR2 RDSB 判16个数据接收完否 未完继续RET 乙机接收子程序 RXDB RDSB 方式2是一帧11位的串行通信方式 3 串行工作方式2 当SMOD 0时 波特率 20 fosc 64 fosc 64当SMOD 1时 波特率 21 fosc 64 fosc 32 数据发送和接收与方式1基本相同 区别在于方式2把发送 接收到的第9位内容送入TB8 RB8 波特率 方式2波特率固定 如用公式表示则为 波特率 2SMOD fosc 64 例6 4 设计一个串行方式2发送子程序 SMOD 1 将片内RAM50H 5FH中的数据串行发送 第9数据位作为奇偶校验位 接到接收方核对正确的回复信号 用FFH表示 后 再发送下一字节数据 否则再重发一遍 解 程序如下 MOVA R0 读数据MOVC PSW 0 奇偶标志送TB8MOVTB8 C MOVSBUF A 启动发送JNBTI 等待一帧数据发送完毕CLRTI 清发送中断标志SETBREN 允许接收CLRRI 清接收中断标志JNBRI 等待接收回复信号MOVA SBUF 读回复信号CPLA 回复信号取反JNZTRLP 非全0 回复信号 FFH 错误 转重发INCR0 全0 回复信号 FFH 正确 指向下一数据存储单元CJNER0 60H TRLP 判16个数据发送完否 未完继续RET TRLP MOVSCON 80H 置串行方式2 禁止接收MOVPCON 80H 置SMOD 1MOVR0 50H 置发送数据区首址 TRS2 例6 5 编制一个串行方式2接收子程序 接收上例发送的16个数据 存首址为40H的内RAM中 并核对奇偶校验位 接收核对正确 发出回复信号FFH 发现错误 发出回复信号00H 并等待重新接收 RXD2 MOVSCON 80H 置串行方式2 禁止接收MOVPCON 80H 置SMOD 1MOVR0 40H 置接收数据区首址SETBREN 启动接收RWAP JNBRI 等待一帧数据接收完毕CLRRI 清接收中断标志MOVA SBUF 读接收数据 并在PSW中产生接收数据的奇偶值JBPSW 0 ONE P 1 转另判JBRB8 ERR P 0 RB8 1 接收有错 P 0 RB8 0 接收正确 继续接收RLOP MOV R0 A 存接收数据INCR0 指向下一数据存储单元RIT MOVA 0FFH 置回复信号正确FDBK MOVSBUF A 发送回复信号CJNER0 50H RWAP 判16个数据接收完否 未完继续CLRREN 16个数据正确接收完毕 禁止接收RET ONE JNBRB8 ERR P 1 RB8 0 接收有错SJMPRLOP P 1 RB8 1 接收正确 继续接收ERR CLRA 接收有错 置回复信号错误标志SJMPFDBK 转发送回复信号 解 程序如下 方式3同样是一帧11位的串行通信方式 其通信过程与方式2完全相同 所不同的仅在于波特率 方式2的波特率只有固定的两种 而方式3的波特率则与方式1相同 即通过设置T1的初值来设定波特率 4 串行工作方式3 5 串行口四种工作方式的比较 四种工作方式的区别主要表现在帧格式及波特率两个方面 表6 2四种工作方式比较 解决的方法只有调整单片机的时钟频率fosc 通常采用11 0592MHz晶振 6 常用波特率及其产生条件 常用波特率通常按规范取1200 2400 4800 9600 若采用晶振12MHz和6MHz 则计算得出的T1定时初值将不是一个整数 产生波特率误差而影响串行通信的同步性能 MCS 51串行口的波特率 1 方式0和方式2的波特率是固定的 在方式0中 波特率为时钟频率的1 12 即fosc 12 固定不变 2 方式1和方式3的波特率可变 由定时器1的溢出率决定 波特率 串行接口RS 232C标准串行通信系统数据终端设备DTE 数据源和目的地数据通信设备DCE 使数据符合线路要求 串行通信的接口标准 1机械特性 2常用的RS 232C信号线 信号代号中第一个字母表示信号类型 A为地线 B为数据线 C为控制线 D为时钟信号 3常用的RS 232C连接1 使用MODEM 2 不使用MODEM 3 最简单连接 4电气特性 1 应保证电平在 5 15 V之间对于数据线 逻辑 1 3V 15V 逻辑 0 3V 15V对于控制信号 接通状态 ON 即信号有效的电平 3V 15V断开状态 OUT 即信号无效的电平 3 15V 2 电平转换 RS 232C接口采用的是负逻辑 其逻辑电平与TTL电平不一样 不能兼容 因此 为了实现与TTL电路的连接 必须进行电平转换 目前可以使用新型电平转换芯片MAX232和MAX232A 高速 双组RS 232C发送 接收器 实现TTL电平与RS 232C电平双向转换 3 最大传输速率和最大传输线长度的关系 一般应用情况下 RS 232C的最高传输速率为20Kb s 最大传输线长度为30m RS423 RS422 RS485 RS232单端驱动 单端接收 单端双极性RS423单端驱动 双端差分接收 双极性10MB S15m90KB S1200m RS423双端驱动 双端差分接收 平衡方式10MB S15m90KB S1200m一个发送器 多个接收器 RS485双端驱动 双端差分接收 平衡方式10MB S15m100KB S1200m多个发送器 多个接收器 最多32个 单片机之间的通信 双机异步通信接口电路 双机通信软件编程 查询方式1 甲机发送编程将甲机片外1000H 101FH单元的数据块从串行口输出 定义方式2发送 TB8为奇偶校验位 发送波特率375kb s 晶振为12MHz SMOD 1 参考发送子程序如下 MOVSCON 80H 设置串行口为方式2MOVPCON 80H SMOD 1MOVDPTR 1000H 设数据块指针MOVR7 20H 设数据块长度START MOVXA DPTR 取数据给AMOVC PMOVTB8 C 奇偶位P送给TB8MOVSBUF A 数据送SBUF 启动发送WAIT JBCTI CONT 判断一帧是否发送完 若送完 清TI 取下一个数据AJMPWAIT 未完等待CONT INCDPTR 更新数据单元DJNZR7 START 循环发送至结束RET 2 乙机接收编程使乙机接收甲机发送过来的数据块 并存入片内50H 6FH单元 接收过程要求判断RB8 若出错置F0标志为1 正确则置F0标志为0 然后返回 在进行双机通信时 两机应采用相同的工作方式和波特率 参考接收子程序如下 MOVSCON 80H 设置串行口为方式2MOVPCON 80H SMOD 1MOVR0 50H 设置数据块指针MOVR7 20H 设置数据块长度SETBREN 启动接收WAIT JBCRI READ 判断是否接收完一帧 若完 清RI 读入数据AJMPWAIT 未完等待READ MOVA SBUF 读入一帧数据aJNBPSW 0 PZ 奇偶位为0则转JNBRB8 ERR P 1 RB8 0 则出错SJMPRIGHT 二者全为1 则正确PZ JBRB8 ERR P 0 RB8 1 则出错RIGHT MOV R0 A 正确 存放数据INCR0 更新地址指针DJNZR7 WAIT 判断数据块是否接收完CLRPSW 5 接收正确 且接收完清F0标志RET 返回ERR SETBPSW 5 出错 置F0标志为1RET 返回 例6 7 甲 乙两单片机以工作方式1进行串行数据通信 波特率为1200 甲机发送 发送数据在甲机外部RAM的1000H 101FH单元中 乙机接收 并把接收数据依次放入乙机外部RAM的1000H 101FH单元中 甲 乙机晶振频率均为11 0592MHz 连接方式如图7 33所示 图7 33硬件连接图 分析 甲 乙机定时用工作方式1 查表7 13 教材p162 得初值为E8H SMOD 0 即波特率不倍增 用查询传送方式 SCON 01000000B 40H 甲机发送主程序如下 ORG0000HAJMPMAIN 复位入口转主程序ORG0100HMAIN MOVTMOD 20H 设定时器1工作方式2MOVTL1 0E8H 设置定时器初值MOVTH1 0E8H 设置重装值CLREA 禁止中断MOVPCON 00H SMOD 0MOVSCON 40H 设串行工作方式1 禁止接收MOVDPTR 1000H 建立发送数据地址指针初值MOVR7 20H 建立计数指针SETBTR1 启动定时器1 SEND MOVXA DPTR 取数据MOVSBUF A 启动数据传送操作JNBTI 等待一帧发送完毕CLRTI 清TI标志INCDPTR 指向下一单元DJNZR7 SEND 数据块传送结束 CLRTR1 传送结束 停止定时器1工作END 乙机接收主程序如下 多机通信 MCS 51单片机工作在串行方式2 3时 具有多机通信功能 可以实现一台主机与多台从机的信息交流 通信只在主从机之间进行 而从机与从机之间不可以直接通信 下图为8051单片机的主从式多机通讯系统 RXD TXD 主机8051 RXDTXD80510 从机 RXDTXD80511 从机 RXDTXD8051N 从机 主从多机通信的过程如下 使所有的从机工作在方式2或方式3 且SM2位置1 REN 1 以便接收主机发来的地址 主机发出要寻址的从机的一帧地址信息 其中包括8位需要与之通信的从机地址 第9位TB8 1 所有从机接收到地址帧后 置RI 1 各从机相应中断 进入中断服务程序 进行地址比较 对于地址相同的从机 使SM2 0 准备接收主机随后发来的数据信息 对于地址不符合的从机 仍保持SM2 1的状态 对主机随后发来的数据不予理睬 直至发送新的地址帧 主机给已被寻址的从机发送控制指令和数据 数据帧的第9位为0 实现主从通信 主从式多机通信应用举例 1 主机向02号从机发送50H一5FH单元内的数据 串行工作方式2 ORG2000HMAIN MOVSCON 98H 串行口方式2 令SM2 0 REN 1 RTB8 1M1 MOVSBUF 02H 呼叫02号从机L1 JBCTI L2SJMPL1L2 JBCRI S1 等待从机应答SJMPL2S1 MOVA SBUF 取出应答地址 XRLA 02H 判断是否02号机应答JZRIGHT 若02从机 转发送AJMPM1 若不是 重新呼叫RIGHT CLRTB8 联络成功 清除地址标志MOVR0 50H 数据区首址送R0MOVR7 10H 字节数送R7LOOP MOVA R0 取发送数据MOVSBUF A 启动发送WA JBCTI CON 判发送中断标志SJMPWACON INCR0DJNZR7 LOOPAJMPMAINEND 2 从机 02号 响应主机呼叫的联络程序ORG2000HMOVR0 50H 从机数据区首址MOVR7 10H 字节长度SI MOVSCON 0B0H 串行口工作方式2 SM 1 REN 1SR1 JBCRI SR2 等待主机发送SJMPSR1SR2 MOVA SBUF 取出呼叫地址XRLA 02H 判断是否呼叫本机JNZSR1 若不是本机 继续等待CLRSM2 是本机 清SM2MOVSBUF 02H 向主机发应答地址 WT JBCTI SR3 发完地址转SJMPWT 未发送完继续SR3 JBCRI SR4 等待主机发送数据SJMPSR3SR4 JNBRB8 RIGHT 再判断联络成功否SETBSM2 未联络成功 恢复等待主机发送SJMPSR1RIGHT MOVA SBUF 联络成功 取主机发来的信息MOV R0 A 数据送缓冲区INCR0DJNZR7 SR3 未接收完继续AJMPSIEND 举例 P167 主机发送的地址联络信号为00H 01H 02H 地址为FFH时命令各从机复位 即恢复SM 1主机命令编码为 01H 主机命令从机接收数据02H 主机命令从机发送数据程序分为主机程序和从机程序 约定一次传递的数据为16字节 以01H地址的从机为例 主机程序如下 ORG0000HAJMPMAINORG0030HMAIN MOVTMOD 20 T1 方式2MOVTH1 0FDH 波特率MOVTL1 0FDHMOVPCON 00HSETBTR1MOVSCON 0F0H 方式3LOOP1 SETBTB8MOVSBUF 40JNBTI CLRTI JNBRI 等待从机对联络应答CLRRIMOVA SBUFXRLA 40JZAD OKMOVSBUF 0FFH 应答错误JNBTI CLRTISJMPLOOP1 CLRTB8MOVSBUF 41H 发送命令字JNBTI CLRTIJNBRI CLRRI AD ERR AD OK MOVA SBUF 接收应答到AXRLA 80JNZCO OKSETBTB8SJMPADD ERRCO OK MOVA SBUF XRLA 01JZSE DATA 可以发送数据MOVA SBUF XRLA 02JZRE DATA 可以接收数据SJMPSE DATARE DATA MOVR6 00MOVR0 30MOVR7 10JNBRI CLRRIMOVA SBUFMOV R0 AINCR0ADDA R6MOVR6 ADJNZR7 LOOP2JNBRI CLRRIMOVA SBUFXRLA R6JZXYOK 校验正确MOVSBUF 0FF 校验错误JNBTI CLRTILJMPRE DATA

温馨提示

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

评论

0/150

提交评论