delayms(100); init(); //初始化系统 delayms(100);
init_wdt(); //初始化看门狗
while(1) {
while(!RI_0) //是否收到数据 {
clr_wdt(); }
RI_0=0; //清除接收中断标志 buffer=S0BUF;
if(buffer==0x5a) //检测祯头0 start0=1;
if(buffer==0x54) //检测祯头1 start1=1;
if(buffer==0x5a) //检测祯尾0 end0=1;
if(buffer==0xfe) //检测祯尾1 end1=1;
if((start0==1)&(start1==1)) {
buff[i]=buffer; //从祯头1开始存储数据 i++; }
if((end0==1)&(end1==1)) //是否已经接收祯尾 {
count=i; //数据长度为count个 i=1;
if((buff[2]==0x03)&(count==107)) //是否422指令 {
buff[0]=0x5a; //重填祯头0 buff[count-4]=0; //校验和清零 for(k=2;k<(count-4);k++) //计算校验和 {
buff[count-4]+=buff[k]; }
for(k=0;k while(!TI_0); //等待发送完成 TI_0=0; //清除发送中断标志 } reset(); } else if((buff[2]==0x05)&(count==7)) //是否AD测试指令 { sendad(); reset(); } else if((buff[2]==0x18)&(count==7)) //是否发送时序信号指令 { sendpaulse(); reset(); } else //如果接收错误,则恢复各标志位为初始状态以便下次接收 { reset(); } } } } void reset() { start0=0; //祯头祯尾标志位清零 start1=0; end0=0; end1=0; for(k=0;k count=0; //计数清零 } 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuowenda.com 版权所有 湘ICP备2023022495号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务