系统软件设计new.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
系统软件设计new.doc

系统软件设计、 4.1通讯协议 在多机通讯中,要保证主机与从机间可靠的通讯,必须保证通讯接口具有识别功能,在第二章里已经介绍了串行控制寄存器SCON中用来实现多机通讯的控制为SM2,所以可以规定软件编程的具体要求如下:使所有从机的SM2位置1,处于只接受地址的帧的状态;主机发送1帧地址信息,其中包含8位地址,第9位为1,以表示发送的是地址;从机接收地址帧后,各自将接收到的地址帧与其本身地址相比较;被寻址的从机清除其SM2,未被寻址的其它从机仍维持SM=1不变;主机发送数据或控制信息(第9位为0),对于已被寻址的从机,因为SM=0,故可以接收主机发来的信息。而对于其它从机,因SM仍为1,对主机发来的数据信息不加理睬;当主机改为与其它从机联系时,可再发送地址帧寻址其它机,而先前被寻址过的从机在分析出主机是对其它从机寻址时,恢复其SM=1,对随后主机发来的数据帧不加理睬。再加上之前介绍的多机通讯原理,在编程的时候的我们只要编写合适的软件协议就可着手编写程序,下面就软件协议做具体说明: (1)系统中允许有32台从机,其地址分别为01H~20H。 (2)通讯波特率为4800. (3)主机发送的控制命令编码及含义: 01H:要求从机接收数据块。 02H:要求从机发送数据块。 其他为非法命令。 (4)主机和从机的联络过程:主机首先发送地址帧,被寻址从机返回本机地址给主机,在判断地址相符后主机给被寻址从机发送控制命令,之后主机和被寻址从机根据命令开始接收或发送数据。 (5)数据格式: 字节数N 数据1 … 数据N 累加校验和 字节数:主机或从机要发送的数据个数。 数据1~数据N:要传送的N个数据。 累加校验和:为字节数,数据1,…,数据N这N+1个字节内容的算术累加和。 被寻址从机根据接收到的“校验和”判断已接收到的数据是否正确。若接收正确,向主机回发F0H信号,主机根据回发信号决定是否重发数据。当主机接收从机数据时,主机根据收到的“校验和”判断已收到的是数据是否正确,从而决定是否让被寻址从机重新发送数据。 (6)采用累加和校验方式。 4.2 PC机软件设计 由于在编程方面,高级语言如C语言等,具有编程简单,调试容易,制图作表能力强,以及汇编语言执行速度快,对硬件可以直接控制等优点,所以在本文中PC机软件采用C程序调用汇编子程序的方法编制,即PC机的主程序由C语言编写,通讯子程序采用由汇编语言编制。C语言调用汇编子程序的关键是参数传递,参数传递是通过C语言的堆栈进行的,堆栈传递的可以是参数的地址,也可以是参数本身。 设PC机的串行口位COM1,对串行口初始化的C语言程序: int com addr ; unsigned char comm1, addr1, n1, a1[256],error1; char *comm., *addr, *n, *a, *error; com addr=0x3f8; comm1=0;addr1=1;n1=0;error1=0; comm.=comm1;addr=addr1;n=n1;a=a1;error=error1; PC485(com addr, comm., addr, n, a, error); 主机向1号从机发送数据的C语言程序: comm1=1;addr1=1, n1=32;error1=0; comm.=comm1;addr=addr1;n=n1; error=error1; PC485(com addr, comm., addr, n, a, error); 主机要求1号从机发送数据给主机的C语言程序: comm1=2;addr1=1, n1=32;error1=0; comm.=comm1;addr=addr1;n=n1; error=error1; PC485(com addr, comm., addr, n, a, error); comm1=1;addr1=1;n1=32;error1=0; comm.=comm1;addr=addr1;n=n1; error=error1; PC485(com addr, comm., addr, n, a, error); 对PC485函数的说明: PC485(com addr, comm., addr, n, a, error); com addr为串行口基地址,COM1为3F8H,COM2为2F8H。 comm为字符变量comm1的指针变量。当comm1=0时,对串行口初始化;当comm1=1时,主机向从机发送数据;当comm1=2时,主机接收从机的数据。 addr为字符变量addr1的指针变量。addr取值范围为1~32,表示从机的地址。 n为字符变量n1的指针变量。n1的值是数据块的个数

文档评论(0)

dreamzhangning + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档