发送指令XMT(Transmit)启动自由端口模式下数据缓冲区(TBL)的数据发送。通过指定的通信端口(PORT),发送存储在数据缓冲区(TBL)中的信息。 使ENO=0的错误条件:SM4.3(运行时间),0006(间接寻址),0009(在端口0同时执行XMT和RCV指令),000B(在端口1同时执行XMT和RCV指令)。 XMT指令可以方便地发送1~255个字符,如果有中断程序连接到发送结束事件上,在发送完缓冲区中的最后一个字符时,端口0会产生中断事件9,端口1会产生中断事件26。可以监视发送完成状态位SM4.5和SM4.6的变化,而不是用中断进行发送,如向打印机发送信息。TBL指定的发送缓冲区的格式如图所示,起始字符和结束字符是可选项,第一个字节“字符数”是要发送的字节数,它本身并不发送出去。 图 缓冲区格式 如果将字符数设置为0,然后执行XMT指令,以当前的波特率在线路上产生一个16位的break(间断)条件。发送break与发送任何其他信息一样,采用相同的处理方式。完成break发送时产生一个XMT中断,SM4.5或SM4.6反映XMT的当前状态。 接收指令RCV(Receive)初始化或中止接收信息的服务。通过指定的通信端口(PORT),接收信息并存储在数据缓冲区(TBL)中。数据缓冲区(见图所示)中的第一个字节用来累计接收到的字节数,它本身不是接收到的,起始字符和结束字符是可选项。 使ENO=0的错误条件:SM86.6和SM186.6(RCV参数错误),SM4.3(运行时间),0006(间接寻址),0009(在端口0同时执行XMT和RCV指令),000B(在端口1同时执行XMT和RCV指令),CPU不是在自由端口模式。 RCV指令可以方便地接收一个或多个字符,最多可接收255个字符。如果有中断程序连接到接收结束事件上,则在接收完最后一个字符时,端口0将产生中断事件23,端口1将产生中断事件24。 可以监视SMB86或SMB186的变化,而不是用中断进行报文接收。SMB86或SMB186为非零时,RCV指令未被激活或接收已经结束。正在接收报文时,它们为0。 当超时或奇偶校验错误时,自动中止报文接收功能。必须为报文接收功能定义一个启动条件和一个结束条件。 也可以用字符中断而不是用接收指令来控制接收数据,每接收一个字符产生一个中断,在端口0或端口1接收一个字符时,分别产生中断事件8或中断事件25。 在执行连接到接收字符中断事件的中断程序之前,接收到的字符存储在自由端口模式的接收字符缓冲区SMB2中,奇偶状态(如果允许奇偶校验的话)存储在自由端口模式的奇偶校验错误标志位SM3.0中。奇偶校验出错时应丢弃接收到的信息,或产生一个出错的返回信号。端口0和端口1共用SMB2和SMB3。 |