您好,欢迎光临本网站![请登录][注册会员]  
文件名称: c8051f120的程序
  所属分类: C
  开发工具:
  文件大小: 5kb
  下载次数: 0
  上传时间: 2010-03-18
  提 供 者: zhm2****
 详细说明: 2008-01-11 | C8051F120里我常用的数据包通信程序(自己编写的) /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ @ @ 串行传送收/发子程序 @ @ @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/ /*=========================================================================== 函数名:Senonedata_rs485(uchar x) 功能:向485口发 送一字节数据 输入:发送变量X 输出:无 其他说明:无 ============================================================================*/ void Senonedata_rs485(uchar x) { SFRPAGE=0; TI0=0; SBUF0=x; while(TI0==0); TI0=0; // delay_us(100); //延时100us } /*------------------------------------------------------------------ 函数名:Sendatabag_rs485(pcs,addr_rev,command) 功能: 向RS485口发送个数据包 数据包格式: 0xaa,0xaa,lengh,addr_rev,command,data0,data1....datan,crc 其中:pcs:要发送有效数据个数 addr_rev:(接收)对方地址 commadn:指令 0xaa,0xaa:校验引头 lengh:数据包总数据长度(数据包全部字节数) addr_sen:发送方地址 addr_rev:接收方地址 command:指令 uart0sen_Buffer[256]:串行口发送256个数据缓存 crc:是在CRC前的所有已发送数据的累加和 其他说明:无 ------------------------------------------------------------------*/ void sendatabag_rs485(uchar pcs,addr_rev,command) { uchar i,x,y; uchar lengh; uchar crc; //使MAX485处于发送状态 SFRPAGE=0x0f; RENTEN_RS485=1; // crc=0; lengh=pcs+6; //发送0xaa crc+=0xaa; Senonedata_rs485(0xaa); //发送0xaa crc+=0xaa; Senonedata_rs485(0xaa); //发送lengh数据包总长度(包含由0xaa~crc) crc+=lengh; Senonedata_rs485(lengh); //发送addr_rev crc+=addr_rev; Senonedata_rs485(addr_rev); //发送command指令 crc+=command; Senonedata_rs485(command); //发送有效数据 if(pcs!=0) { i=lengh-6; i--; for(x=0;x<=i;x++) { y=uart0sen_Buffer[x]; crc+=y; Senonedata_rs485(y); } } //发送crc,crc不包含crc在内的累加和 Senonedata_rs485(crc); //使MAX485处于接收状态 SFRPAGE=0x0f; RENTEN_RS485=0; // SFRPAGE=0; } /*------------------------------------------------------------------ 函数名:Receive_RS485() 功能: 处理RS485接收到的数据包 格式: 0xaa,0xaa,lengh,addr_rev,command,data0,data1....datan,crc 其中:0xaa,0xaa:校验引头 lengh:数据包总数据长度(个数) addr_rev:接收方地址 command:指令 Sen_Buffer[256]:串行口发送256个数据缓存 crc:是在CRC前的所有已发送数据的累加和 其他说明:无 ----------------------------------------------------------------*/ void Receive_RS485() { uchar data_rev; uchar i,j,crc; uchar m; // data_rev=SBUF; //----------接收"0xaa+0xaa"索引头-------------- if((Two0xaaOK_flag==0)&&(NewReceiveBag_flag==0)) //如果2个0xaa已接收表记=0 { Count_Rev=0; if(data_rev==0xaa) { Two0xaa_Count++; if(Two0xaa_Count==2) { Count_Rev=2; Two0xaaOK_flag=1; } } // return; } //---------接收有效数据------------ if(Two0xaaOK_flag==1) { Count_Rev++; //----Lengh数据包长度变量--- if(Count_Rev==3) { Lengh=data_rev; return; } //-----Addrev接收方地址---- if(Count_Rev==4) { Addrev=data_rev; return; } //-----Command指令----- if(Count_Rev==5) { Command=data_rev; return; } //-----有效数据------ if(Count_Rev>5) { m=Count_Rev-6; if(Count_Rev
(系统自动生成,下载前可以参看下载内容)

下载文件列表

相关说明

  • 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
  • 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度
  • 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
  • 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
  • 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
  • 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.
 相关搜索: c8051f120
 输入关键字,在本站1000多万海量源码库中尽情搜索: