使用自由口通信 SMB30(口 0)和 SMB130(口 1)定义通信口的工作模式。SMB30/SMB130 定义如下:(使用自有口通信,SM30.0 和 SM30.1(SM130.0 和 SM130.1=0)必须分开 1 和 0。) 发送指令 ( XMT )使用 XMT 发送指令可以一次发送一个或多个字节存储在缓冲区的数据 255 个。发送最后一个字符后,也可以连接到发送中断(端口 0 为 9,端口 1 位 26、见下表)。和 XMT 相关寄存器:SMB4 的 SM4.5 和 SM4.6。SM4.5=1 时,口0 发送完毕;SM4.6=1 时,口 1 发送完毕。从上面可以看出,检测端口有两种方法 0 或 1 数据发送状态:一种是使用中断,另一种是使用寄存器 SMB4 的第 5 位(口 0)和第 6 位(口 1)。说明:T 0:需要提前定义发送信息的字节数。T 1~T 255:要发送的数据字节接收指令 ( RCV )使用接收指令(RCV)可以从端口 0 或 1 接收一个或多个字节的数据(最多 255 数据缓冲区并存。接收最后一个字节后,可以连接到接收中断说明 :T 0:接收字符计数,接收到结束字符时自动清除T 1:开始字符,在 SMB88(口 0)或 SMB188(口 1)中定义T 2~T 244:接收到的数据字节T 255:结束字符,在 SMB89(口 0)或 SMB189(口 1)定义说明 :1、SMB86/SMB186:收到终止状态信息寄存器,包含收到终止原因的信息;2.SMB88/SMB188:信息起始字节(如果发送的信息有起始字节,将寄存器的内容与接收信息的每个字节进行比较,检测确认后续字节是否为信息。因此,在编程时,需要在通信初始化时将信息启动位字节传输到 SMB88 或 SMB188);3、SMB89/SMB189:信息停止字节(如果发送的信息有停止位,将寄存器的内容与接收信息的每个字节进行比较,检查确认信息是否已传输。因此,在编程时,需要在通信初始化时将信息启动位字节传输到 SMB89 或 SMB189);4、SMB90/SMB190:信息空闲时间(ms),空闲线时间后接受的第一个字节是信息的开始;5.SMB94/SMB194:最大字符数(1~255)。使用编程步骤  1 SM0.1  通信参数的初始化 。使用编程步骤  1 SM0.1  通信参数的初始化 。● 使用 SMB30(口 0)或 SMB130(口 1)选择自由口通信模式,选择自由口通信的波特率、数据位数和验证方法。● 定义接收格式 SMB87(口 0)或 SMB187(口 1)。包括启动信息接收(第(第) 7 位=1),是否有起始位(第一) 6 是否有结束位(第5位) 是否检测空闲状态(第一) 4 位)等。● 设定起始位(SMB88 或 SMB188)或结束位(SMB89 或 SMB189),空闲时间信息(SMB90 或 SMB190)以及接收到的最大字符数(SMB94 或SMB194)。● 如果使用中断连接(事件) 23)和发送(事件) 9)中断到中断程序并打开中断(ENI)。● 一般使用 SMB34 定义定时中断来定期发送数据(通常是 50ms,即间隔发送数据的时间)。编写主程序自由口通信主程序的任务是将要发送的数据放在发送区域,并将数据接收到接收区域。当然,这部分也可以用子程序完成。编写 4 SMB34  定时中断程序将要发送的数据传输到发送区域,一般包括发送的字节数、发送的数据和结束字符,最后使用 XMT 启动发送指令。编写发送中断和接收中断子程序● 发送中断子程序的主要任务是发送后断开 SMB34 定期中断和使用 RCV 准备接收数据的指令。● 接收中断子程序的任务是在接收数据后重新连接 SMB34 定期中断,准备发送数据。本例的主要功能是利用A机控制B机的电机星角起动,B机控制B机的电机星角起动。I/O 发送和接收数据缓冲区的分配如下所示 初始化子程序 A机星角运行子程序 中断程序 0 中断程序1中断程序 2